mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-01 09:29:38 +02:00
Remove MCP transport type assertion
This commit is contained in:
parent
3378b79fbc
commit
21620cbf8d
2 changed files with 57 additions and 1 deletions
|
|
@ -465,6 +465,22 @@ Notes:
|
||||||
- `bun run --cwd ts/packages/flow test -- src/__tests__/text-completion-common.test.ts`
|
- `bun run --cwd ts/packages/flow test -- src/__tests__/text-completion-common.test.ts`
|
||||||
- `cd ts && bun run check:tsgo`
|
- `cd ts && bun run check:tsgo`
|
||||||
|
|
||||||
|
### 2026-06-04: MCP Tool Transport Adapter Slice
|
||||||
|
|
||||||
|
- Status: migrated and package-verified.
|
||||||
|
- Completed:
|
||||||
|
- `ts/packages/flow/src/agent/mcp-tool/service.ts` no longer uses an
|
||||||
|
`as unknown as Parameters<Client["connect"]>[0]` assertion when connecting
|
||||||
|
the MCP SDK client.
|
||||||
|
- The concrete `StreamableHTTPClientTransport` is wrapped in a small
|
||||||
|
`Transport` adapter that forwards callbacks, send, close, and protocol
|
||||||
|
version updates while avoiding the SDK's exact-optional `sessionId` type
|
||||||
|
mismatch.
|
||||||
|
- The transport release path still closes the concrete SDK transport.
|
||||||
|
- Verification:
|
||||||
|
- `bun run --cwd ts/packages/flow test`
|
||||||
|
- `cd ts && bun run check:tsgo`
|
||||||
|
|
||||||
### 2026-06-02: RAG And Agent Requestor Bridge Slice
|
### 2026-06-02: RAG And Agent Requestor Bridge Slice
|
||||||
|
|
||||||
- Status: migrated, root-verified, committed, and pushed.
|
- Status: migrated, root-verified, committed, and pushed.
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
||||||
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
||||||
|
import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
||||||
import { NodeRuntime } from "@effect/platform-node";
|
import { NodeRuntime } from "@effect/platform-node";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
|
@ -100,6 +101,44 @@ const closeTransport = (
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const transportAdapter = (transport: StreamableHTTPClientTransport): Transport => {
|
||||||
|
const clientTransport: Transport = {
|
||||||
|
start: () => {
|
||||||
|
const onclose = clientTransport.onclose;
|
||||||
|
if (onclose === undefined) {
|
||||||
|
delete transport.onclose;
|
||||||
|
} else {
|
||||||
|
transport.onclose = onclose;
|
||||||
|
}
|
||||||
|
|
||||||
|
const onerror = clientTransport.onerror;
|
||||||
|
if (onerror === undefined) {
|
||||||
|
delete transport.onerror;
|
||||||
|
} else {
|
||||||
|
transport.onerror = onerror;
|
||||||
|
}
|
||||||
|
|
||||||
|
const onmessage = clientTransport.onmessage;
|
||||||
|
if (onmessage === undefined) {
|
||||||
|
delete transport.onmessage;
|
||||||
|
} else {
|
||||||
|
transport.onmessage = (message) => onmessage(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
return transport.start();
|
||||||
|
},
|
||||||
|
send: (message, options) =>
|
||||||
|
transport.send(message, {
|
||||||
|
...(options?.resumptionToken === undefined ? {} : { resumptionToken: options.resumptionToken }),
|
||||||
|
...(options?.onresumptiontoken === undefined ? {} : { onresumptiontoken: options.onresumptiontoken }),
|
||||||
|
}),
|
||||||
|
close: () => transport.close(),
|
||||||
|
setProtocolVersion: (version) => transport.setProtocolVersion(version),
|
||||||
|
};
|
||||||
|
|
||||||
|
return clientTransport;
|
||||||
|
};
|
||||||
|
|
||||||
const loadMcpServices = Effect.fn("McpToolRuntime.loadMcpServices")(function* (
|
const loadMcpServices = Effect.fn("McpToolRuntime.loadMcpServices")(function* (
|
||||||
config: Record<string, unknown>,
|
config: Record<string, unknown>,
|
||||||
version: number,
|
version: number,
|
||||||
|
|
@ -165,11 +204,12 @@ const invokeConfiguredTool = Effect.fn("McpToolRuntime.invokeTool")(function* (
|
||||||
url,
|
url,
|
||||||
{ requestInit: { headers } },
|
{ requestInit: { headers } },
|
||||||
);
|
);
|
||||||
|
const clientTransport = transportAdapter(transport);
|
||||||
const client = new Client({ name: "trustgraph-mcp-client", version: "1.0.0" });
|
const client = new Client({ name: "trustgraph-mcp-client", version: "1.0.0" });
|
||||||
|
|
||||||
const result = yield* Effect.acquireUseRelease(
|
const result = yield* Effect.acquireUseRelease(
|
||||||
Effect.tryPromise({
|
Effect.tryPromise({
|
||||||
try: () => client.connect(transport as unknown as Parameters<Client["connect"]>[0]),
|
try: () => client.connect(clientTransport),
|
||||||
catch: (cause) => mcpToolError("connect", cause, name),
|
catch: (cause) => mcpToolError("connect", cause, name),
|
||||||
}).pipe(Effect.as(client)),
|
}).pipe(Effect.as(client)),
|
||||||
(connectedClient) =>
|
(connectedClient) =>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue