mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-01 17:39:39 +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`
|
||||
- `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
|
||||
|
||||
- Status: migrated, root-verified, committed, and pushed.
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
import { Client } from "@modelcontextprotocol/sdk/client/index.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 {
|
||||
|
|
@ -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* (
|
||||
config: Record<string, unknown>,
|
||||
version: number,
|
||||
|
|
@ -165,11 +204,12 @@ const invokeConfiguredTool = Effect.fn("McpToolRuntime.invokeTool")(function* (
|
|||
url,
|
||||
{ requestInit: { headers } },
|
||||
);
|
||||
const clientTransport = transportAdapter(transport);
|
||||
const client = new Client({ name: "trustgraph-mcp-client", version: "1.0.0" });
|
||||
|
||||
const result = yield* Effect.acquireUseRelease(
|
||||
Effect.tryPromise({
|
||||
try: () => client.connect(transport as unknown as Parameters<Client["connect"]>[0]),
|
||||
try: () => client.connect(clientTransport),
|
||||
catch: (cause) => mcpToolError("connect", cause, name),
|
||||
}).pipe(Effect.as(client)),
|
||||
(connectedClient) =>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue