(input: {
transport: string;
createTransport: () => Parameters<Client["connect"]>[0];
})
| 245 | }; |
| 246 | |
| 247 | const connectClient = (input: { |
| 248 | transport: string; |
| 249 | createTransport: () => Parameters<Client["connect"]>[0]; |
| 250 | }): Effect.Effect<McpConnection, McpConnectionError | McpOAuthReauthorizationRequired> => |
| 251 | Effect.gen(function* () { |
| 252 | const client = createClient(); |
| 253 | const transportInstance = input.createTransport(); |
| 254 | |
| 255 | yield* Effect.tryPromise({ |
| 256 | try: () => client.connect(transportInstance), |
| 257 | catch: (cause) => |
| 258 | connectionFailure(input.transport, `Failed connecting via ${input.transport}`, cause), |
| 259 | }).pipe( |
| 260 | Effect.withSpan("plugin.mcp.connection.handshake", { |
| 261 | attributes: { "plugin.mcp.transport": input.transport }, |
| 262 | }), |
| 263 | ); |
| 264 | |
| 265 | return connectionFromClient(client); |
| 266 | }); |
| 267 | |
| 268 | // --------------------------------------------------------------------------- |
| 269 | // Public factory |
no test coverage detected