@frontmcp/sdk 1.5.7 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -5
- package/auth/flows/oauth.authorize.flow.d.ts +8 -0
- package/auth/flows/oauth.authorize.flow.d.ts.map +1 -1
- package/auth/flows/oauth.callback.flow.d.ts +8 -0
- package/auth/flows/oauth.callback.flow.d.ts.map +1 -1
- package/auth/flows/oauth.provider-callback.flow.d.ts +1 -0
- package/auth/flows/oauth.provider-callback.flow.d.ts.map +1 -1
- package/auth/flows/oauth.register.flow.d.ts +4 -0
- package/auth/flows/oauth.register.flow.d.ts.map +1 -1
- package/auth/flows/well-known.oauth-authorization-server.flow.d.ts.map +1 -1
- package/auth/instances/instance.local-primary-auth.d.ts +38 -0
- package/auth/instances/instance.local-primary-auth.d.ts.map +1 -1
- package/common/interfaces/tool.interface.d.ts +33 -1
- package/common/interfaces/tool.interface.d.ts.map +1 -1
- package/common/metadata/front-mcp.metadata.d.ts +34 -0
- package/common/metadata/front-mcp.metadata.d.ts.map +1 -1
- package/common/types/options/transport/interfaces.d.ts +14 -0
- package/common/types/options/transport/interfaces.d.ts.map +1 -1
- package/common/types/options/transport/schema.d.ts +4 -0
- package/common/types/options/transport/schema.d.ts.map +1 -1
- package/common/utils/decide-request-intent.utils.d.ts +3 -3
- package/common/utils/decide-request-intent.utils.d.ts.map +1 -1
- package/context/frontmcp-context.d.ts +46 -1
- package/context/frontmcp-context.d.ts.map +1 -1
- package/elicitation/helpers/elicit.helper.d.ts.map +1 -1
- package/elicitation/helpers/index.d.ts +1 -0
- package/elicitation/helpers/index.d.ts.map +1 -1
- package/elicitation/helpers/mrtr-request.helper.d.ts +83 -0
- package/elicitation/helpers/mrtr-request.helper.d.ts.map +1 -0
- package/errors/index.d.ts +1 -0
- package/errors/index.d.ts.map +1 -1
- package/errors/mrtr.error.d.ts +55 -0
- package/errors/mrtr.error.d.ts.map +1 -0
- package/esm/index.mjs +2862 -470
- package/front-mcp/front-mcp.providers.d.ts +4 -0
- package/front-mcp/front-mcp.providers.d.ts.map +1 -1
- package/index.d.ts +10 -4
- package/index.d.ts.map +1 -1
- package/index.js +3134 -731
- package/package.json +11 -11
- package/remote-mcp/mcp-client.service.d.ts +7 -0
- package/remote-mcp/mcp-client.service.d.ts.map +1 -1
- package/remote-mcp/mcp-client.types.d.ts +19 -6
- package/remote-mcp/mcp-client.types.d.ts.map +1 -1
- package/remote-mcp/mcp-stateless-client.adapter.d.ts +85 -0
- package/remote-mcp/mcp-stateless-client.adapter.d.ts.map +1 -0
- package/scope/flows/http.request.flow.d.ts +9 -3
- package/scope/flows/http.request.flow.d.ts.map +1 -1
- package/task/helpers/task-runner.d.ts.map +1 -1
- package/task/task.types.d.ts +16 -0
- package/task/task.types.d.ts.map +1 -1
- package/tool/flows/call-tool.flow.d.ts.map +1 -1
- package/transport/flows/handle.mcp-20260728.flow.d.ts +77 -0
- package/transport/flows/handle.mcp-20260728.flow.d.ts.map +1 -0
- package/transport/mcp-20260728/client/header-params.d.ts +22 -0
- package/transport/mcp-20260728/client/header-params.d.ts.map +1 -0
- package/transport/mcp-20260728/client/index.d.ts +8 -0
- package/transport/mcp-20260728/client/index.d.ts.map +1 -0
- package/transport/mcp-20260728/client/mcp-stateless.client.d.ts +157 -0
- package/transport/mcp-20260728/client/mcp-stateless.client.d.ts.map +1 -0
- package/transport/mcp-20260728/discover.d.ts +28 -0
- package/transport/mcp-20260728/discover.d.ts.map +1 -0
- package/transport/mcp-20260728/dispatcher.d.ts +77 -0
- package/transport/mcp-20260728/dispatcher.d.ts.map +1 -0
- package/transport/mcp-20260728/header-codec.d.ts +32 -0
- package/transport/mcp-20260728/header-codec.d.ts.map +1 -0
- package/transport/mcp-20260728/index.d.ts +22 -0
- package/transport/mcp-20260728/index.d.ts.map +1 -0
- package/transport/mcp-20260728/mrtr.d.ts +143 -0
- package/transport/mcp-20260728/mrtr.d.ts.map +1 -0
- package/transport/mcp-20260728/protocol-20260728.constants.d.ts +46 -0
- package/transport/mcp-20260728/protocol-20260728.constants.d.ts.map +1 -0
- package/transport/mcp-20260728/request-notifications.d.ts +70 -0
- package/transport/mcp-20260728/request-notifications.d.ts.map +1 -0
- package/transport/mcp-20260728/request-state.d.ts +76 -0
- package/transport/mcp-20260728/request-state.d.ts.map +1 -0
- package/transport/mcp-20260728/request-validation.d.ts +83 -0
- package/transport/mcp-20260728/request-validation.d.ts.map +1 -0
- package/transport/mcp-20260728/result-decorator.d.ts +62 -0
- package/transport/mcp-20260728/result-decorator.d.ts.map +1 -0
- package/transport/mcp-20260728/subscriptions.d.ts +47 -0
- package/transport/mcp-20260728/subscriptions.d.ts.map +1 -0
- package/transport/mcp-20260728/tasks-extension.d.ts +90 -0
- package/transport/mcp-20260728/tasks-extension.d.ts.map +1 -0
- package/transport/mcp-handlers/call-tool-request.handler.d.ts.map +1 -1
- package/transport/mcp-handlers/index.d.ts +556 -556
- package/transport/mcp-handlers/index.d.ts.map +1 -1
- package/transport/transport.registry.d.ts.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontmcp/sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"description": "FrontMCP SDK",
|
|
5
5
|
"author": "AgentFront <info@agentfront.dev>",
|
|
6
6
|
"homepage": "https://docs.agentfront.dev",
|
|
@@ -89,9 +89,9 @@
|
|
|
89
89
|
},
|
|
90
90
|
"peerDependencies": {
|
|
91
91
|
"@anthropic-ai/sdk": "^0.30.0 || ^0.78.0",
|
|
92
|
-
"@enclave-vm/core": "^2.15.
|
|
93
|
-
"@frontmcp/observability": "1.
|
|
94
|
-
"@frontmcp/storage-sqlite": "1.
|
|
92
|
+
"@enclave-vm/core": "^2.15.2",
|
|
93
|
+
"@frontmcp/observability": "1.6.1",
|
|
94
|
+
"@frontmcp/storage-sqlite": "1.6.1",
|
|
95
95
|
"@opentelemetry/api": "^1.9.0",
|
|
96
96
|
"@opentelemetry/sdk-trace-base": "^2.8.0",
|
|
97
97
|
"@vercel/kv": "^3.0.0",
|
|
@@ -132,13 +132,13 @@
|
|
|
132
132
|
}
|
|
133
133
|
},
|
|
134
134
|
"dependencies": {
|
|
135
|
-
"@frontmcp/auth": "1.
|
|
136
|
-
"@frontmcp/di": "1.
|
|
137
|
-
"@frontmcp/guard": "1.
|
|
138
|
-
"@frontmcp/lazy-zod": "1.
|
|
139
|
-
"@frontmcp/protocol": "1.
|
|
140
|
-
"@frontmcp/uipack": "1.
|
|
141
|
-
"@frontmcp/utils": "1.
|
|
135
|
+
"@frontmcp/auth": "1.6.1",
|
|
136
|
+
"@frontmcp/di": "1.6.1",
|
|
137
|
+
"@frontmcp/guard": "1.6.1",
|
|
138
|
+
"@frontmcp/lazy-zod": "1.6.1",
|
|
139
|
+
"@frontmcp/protocol": "1.6.1",
|
|
140
|
+
"@frontmcp/uipack": "1.6.1",
|
|
141
|
+
"@frontmcp/utils": "1.6.1",
|
|
142
142
|
"@types/cors": "^2.8.17",
|
|
143
143
|
"ioredis": "^5.8.0",
|
|
144
144
|
"jose": "^6.1.3",
|
|
@@ -110,6 +110,13 @@ export declare class McpClientService {
|
|
|
110
110
|
* Note: For HTTP transport with fallback, the initial transport is Streamable HTTP.
|
|
111
111
|
* If connection fails with Streamable HTTP, use createFallbackTransport() to get SSE.
|
|
112
112
|
*/
|
|
113
|
+
/**
|
|
114
|
+
* Build a 2026-07-28 connection when the remote is on that revision.
|
|
115
|
+
*
|
|
116
|
+
* Returns `undefined` for every other case so the legacy path below runs
|
|
117
|
+
* completely untouched — the default for an unconfigured remote.
|
|
118
|
+
*/
|
|
119
|
+
private tryConnect2026;
|
|
113
120
|
private createTransport;
|
|
114
121
|
/**
|
|
115
122
|
* Create fallback SSE transport when Streamable HTTP fails
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client.service.d.ts","sourceRoot":"","sources":["../../src/remote-mcp/mcp-client.service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAIL,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,IAAI,EAEV,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-client.service.d.ts","sourceRoot":"","sources":["../../src/remote-mcp/mcp-client.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
* @file mcp-client.types.ts
|
|
3
3
|
* @description Types for MCP client connections to remote servers
|
|
4
4
|
*/
|
|
5
|
-
import type
|
|
6
|
-
import type { Transport } from '@frontmcp/protocol';
|
|
7
|
-
import type { Tool, Resource, ResourceTemplate, Prompt, ServerCapabilities, CallToolResult, ReadResourceResult, GetPromptResult } from '@frontmcp/protocol';
|
|
8
|
-
import type { AuthInfo } from '@frontmcp/protocol';
|
|
5
|
+
import { type AuthInfo, type CallToolResult, type Client, type GetPromptResult, type Prompt, type ReadResourceResult, type Resource, type ResourceTemplate, type ServerCapabilities, type Tool, type Transport } from '@frontmcp/protocol';
|
|
9
6
|
/**
|
|
10
7
|
* Connection status for a remote MCP server
|
|
11
8
|
*/
|
|
@@ -16,8 +13,14 @@ export type McpConnectionStatus = 'connecting' | 'connected' | 'disconnected' |
|
|
|
16
13
|
export interface McpClientConnection {
|
|
17
14
|
/** The MCP client instance */
|
|
18
15
|
client: Client;
|
|
19
|
-
/**
|
|
20
|
-
|
|
16
|
+
/**
|
|
17
|
+
* The transport used for communication.
|
|
18
|
+
*
|
|
19
|
+
* Absent for protocol 2026-07-28 connections: that revision is stateless, so
|
|
20
|
+
* the adapter issues an independent HTTP request per call and there is no
|
|
21
|
+
* long-lived transport object to hold.
|
|
22
|
+
*/
|
|
23
|
+
transport?: Transport;
|
|
21
24
|
/** Session ID assigned by the remote server (if any) */
|
|
22
25
|
sessionId?: string;
|
|
23
26
|
/** Current connection status */
|
|
@@ -61,6 +64,16 @@ export interface McpHttpTransportOptions {
|
|
|
61
64
|
fallbackToSSE?: boolean;
|
|
62
65
|
/** Additional headers to include in all requests */
|
|
63
66
|
headers?: Record<string, string>;
|
|
67
|
+
/**
|
|
68
|
+
* Which MCP revision to speak to this remote.
|
|
69
|
+
*
|
|
70
|
+
* - omitted / `'legacy'` — the session + `initialize` transports (default, and
|
|
71
|
+
* what every existing deployment keeps doing).
|
|
72
|
+
* - `'2026-07-28'` — the stateless revision, via FrontMCP's own client.
|
|
73
|
+
* - `'auto'` — probe `server/discover` first and fall back to legacy when the
|
|
74
|
+
* remote does not answer it, per the spec's backward-compatibility guidance.
|
|
75
|
+
*/
|
|
76
|
+
protocolVersion?: 'legacy' | '2026-07-28' | 'auto';
|
|
64
77
|
}
|
|
65
78
|
/**
|
|
66
79
|
* Options for Worker subprocess transport
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client.types.d.ts","sourceRoot":"","sources":["../../src/remote-mcp/mcp-client.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"mcp-client.types.d.ts","sourceRoot":"","sources":["../../src/remote-mcp/mcp-client.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter presenting an {@link McpStatelessClient} through the subset of the upstream
|
|
3
|
+
* `Client` API that {@link McpClientService} uses.
|
|
4
|
+
*
|
|
5
|
+
* The remote-proxy is built around `@modelcontextprotocol/sdk`'s `Client`, which
|
|
6
|
+
* cannot speak 2026-07-28 — it opens with `initialize` and assumes a session.
|
|
7
|
+
* Rather than fork the proxy, this adapter satisfies the eight methods the
|
|
8
|
+
* service actually calls, so a remote server on either revision looks the same
|
|
9
|
+
* to everything downstream.
|
|
10
|
+
*
|
|
11
|
+
* @module remote-mcp/mcp-stateless-client.adapter
|
|
12
|
+
*/
|
|
13
|
+
import { type ServerCapabilities } from '@frontmcp/protocol';
|
|
14
|
+
import { type McpStatelessClientOptions } from '../transport/mcp-20260728';
|
|
15
|
+
/** The `Client` surface `McpClientService` depends on. */
|
|
16
|
+
export interface RemoteClientLike {
|
|
17
|
+
listTools(): Promise<{
|
|
18
|
+
tools: unknown[];
|
|
19
|
+
}>;
|
|
20
|
+
callTool(params: {
|
|
21
|
+
name: string;
|
|
22
|
+
arguments?: Record<string, unknown>;
|
|
23
|
+
}): Promise<unknown>;
|
|
24
|
+
listResources(): Promise<{
|
|
25
|
+
resources: unknown[];
|
|
26
|
+
}>;
|
|
27
|
+
readResource(params: {
|
|
28
|
+
uri: string;
|
|
29
|
+
}): Promise<unknown>;
|
|
30
|
+
listPrompts(): Promise<{
|
|
31
|
+
prompts: unknown[];
|
|
32
|
+
}>;
|
|
33
|
+
getPrompt(params: {
|
|
34
|
+
name: string;
|
|
35
|
+
arguments?: Record<string, string>;
|
|
36
|
+
}): Promise<unknown>;
|
|
37
|
+
getServerCapabilities(): ServerCapabilities | undefined;
|
|
38
|
+
close(): Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
export declare class McpStatelessClientAdapter implements RemoteClientLike {
|
|
41
|
+
private readonly client;
|
|
42
|
+
private capabilities;
|
|
43
|
+
constructor(options: McpStatelessClientOptions);
|
|
44
|
+
/**
|
|
45
|
+
* Probe the remote with `server/discover` and cache its capabilities.
|
|
46
|
+
*
|
|
47
|
+
* Replaces `initialize` as the connect step: it is the only round trip this
|
|
48
|
+
* revision defines for learning what a server offers.
|
|
49
|
+
*/
|
|
50
|
+
connect(): Promise<void>;
|
|
51
|
+
getServerCapabilities(): ServerCapabilities | undefined;
|
|
52
|
+
listTools(): Promise<{
|
|
53
|
+
tools: unknown[];
|
|
54
|
+
}>;
|
|
55
|
+
callTool(params: {
|
|
56
|
+
name: string;
|
|
57
|
+
arguments?: Record<string, unknown>;
|
|
58
|
+
}): Promise<unknown>;
|
|
59
|
+
listResources(): Promise<{
|
|
60
|
+
resources: unknown[];
|
|
61
|
+
}>;
|
|
62
|
+
readResource(params: {
|
|
63
|
+
uri: string;
|
|
64
|
+
}): Promise<unknown>;
|
|
65
|
+
listPrompts(): Promise<{
|
|
66
|
+
prompts: unknown[];
|
|
67
|
+
}>;
|
|
68
|
+
getPrompt(params: {
|
|
69
|
+
name: string;
|
|
70
|
+
arguments?: Record<string, string>;
|
|
71
|
+
}): Promise<unknown>;
|
|
72
|
+
close(): Promise<void>;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Decide which revision to speak to a remote server.
|
|
76
|
+
*
|
|
77
|
+
* `'auto'` runs the spec's own backward-compatibility probe: ask for
|
|
78
|
+
* `server/discover` first. ANY failure — a transport error, a timeout, a
|
|
79
|
+
* non-2026 server, or a response that does not advertise `2026-07-28` — selects
|
|
80
|
+
* the legacy path. Anything other than `'auto'` is an explicit choice by the
|
|
81
|
+
* operator, and the default stays on the legacy path so existing deployments are
|
|
82
|
+
* untouched.
|
|
83
|
+
*/
|
|
84
|
+
export declare function negotiateRemoteProtocol(url: string, configured: string | undefined, headers: Record<string, string> | undefined, fetchImpl?: typeof fetch): Promise<'2026-07-28' | 'legacy'>;
|
|
85
|
+
//# sourceMappingURL=mcp-stateless-client.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-stateless-client.adapter.d.ts","sourceRoot":"","sources":["../../src/remote-mcp/mcp-stateless-client.adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAsB,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE/F,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,aAAa,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IACnD,YAAY,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/C,SAAS,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,qBAAqB,IAAI,kBAAkB,GAAG,SAAS,CAAC;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,qBAAa,yBAA0B,YAAW,gBAAgB;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,YAAY,CAAiC;gBAEzC,OAAO,EAAE,yBAAyB;IAI9C;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B,qBAAqB,IAAI,kBAAkB,GAAG,SAAS;IAIjD,SAAS,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAO1C,QAAQ,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzF,aAAa,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAKlD,YAAY,CAAC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC;IAK9C,SAAS,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC3C,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,YAAY,GAAG,QAAQ,CAAC,CAalC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { FlowBase, httpInputSchema, httpOutputSchema, type FlowRunOptions, type ScopeEntry, type ServerRequest } from '../../common';
|
|
2
2
|
declare const plan: {
|
|
3
3
|
readonly pre: ["traceRequest", "acquireQuota", "acquireSemaphore", "checkAuthorization", "router"];
|
|
4
|
-
readonly execute: ["handleWebFetch", "handleLegacySse", "handleSse", "handleStreamableHttp", "handleStatefulHttp", "handleStatelessHttp", "handleDeleteSession"];
|
|
4
|
+
readonly execute: ["handleMcp2026", "handleWebFetch", "handleLegacySse", "handleSse", "handleStreamableHttp", "handleStatefulHttp", "handleStatelessHttp", "handleDeleteSession"];
|
|
5
5
|
readonly finalize: ["audit", "metrics", "releaseSemaphore", "releaseQuota", "finalize"];
|
|
6
6
|
readonly error: [];
|
|
7
7
|
};
|
|
8
8
|
export declare const httpRequestStateSchema: import("@frontmcp/lazy-zod").ZodObject<{
|
|
9
9
|
decision: import("@frontmcp/lazy-zod").ZodObject<{
|
|
10
|
-
intent: import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodLiteral<"legacy-sse">, import("@frontmcp/lazy-zod").ZodLiteral<"sse">, import("@frontmcp/lazy-zod").ZodLiteral<"streamable-http">, import("@frontmcp/lazy-zod").ZodLiteral<"stateful-http">, import("@frontmcp/lazy-zod").ZodLiteral<"stateless-http">, import("@frontmcp/lazy-zod").ZodLiteral<"delete-session">, import("@frontmcp/lazy-zod").ZodLiteral<"unknown">]>;
|
|
10
|
+
intent: import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodLiteral<"legacy-sse">, import("@frontmcp/lazy-zod").ZodLiteral<"sse">, import("@frontmcp/lazy-zod").ZodLiteral<"streamable-http">, import("@frontmcp/lazy-zod").ZodLiteral<"stateful-http">, import("@frontmcp/lazy-zod").ZodLiteral<"stateless-http">, import("@frontmcp/lazy-zod").ZodLiteral<"delete-session">, import("@frontmcp/lazy-zod").ZodLiteral<"mcp-20260728">, import("@frontmcp/lazy-zod").ZodLiteral<"unknown">]>;
|
|
11
11
|
reasons: import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>;
|
|
12
12
|
recommendation: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
|
|
13
13
|
httpStatus: import("@frontmcp/lazy-zod").ZodNumber;
|
|
@@ -19,7 +19,7 @@ export declare const httpRequestStateSchema: import("@frontmcp/lazy-zod").ZodObj
|
|
|
19
19
|
flags: import("@frontmcp/lazy-zod").ZodNumber;
|
|
20
20
|
}, import("zod/v4/core").$strip>>;
|
|
21
21
|
}, import("zod/v4/core").$strip>;
|
|
22
|
-
intent: import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodLiteral<"legacy-sse">, import("@frontmcp/lazy-zod").ZodLiteral<"sse">, import("@frontmcp/lazy-zod").ZodLiteral<"streamable-http">, import("@frontmcp/lazy-zod").ZodLiteral<"stateful-http">, import("@frontmcp/lazy-zod").ZodLiteral<"stateless-http">, import("@frontmcp/lazy-zod").ZodLiteral<"delete-session">, import("@frontmcp/lazy-zod").ZodLiteral<"unknown">]>;
|
|
22
|
+
intent: import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodLiteral<"legacy-sse">, import("@frontmcp/lazy-zod").ZodLiteral<"sse">, import("@frontmcp/lazy-zod").ZodLiteral<"streamable-http">, import("@frontmcp/lazy-zod").ZodLiteral<"stateful-http">, import("@frontmcp/lazy-zod").ZodLiteral<"stateless-http">, import("@frontmcp/lazy-zod").ZodLiteral<"delete-session">, import("@frontmcp/lazy-zod").ZodLiteral<"mcp-20260728">, import("@frontmcp/lazy-zod").ZodLiteral<"unknown">]>;
|
|
23
23
|
verifyResult: import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodObject<{
|
|
24
24
|
kind: import("@frontmcp/lazy-zod").ZodLiteral<"unauthorized">;
|
|
25
25
|
prmMetadataHeader: import("@frontmcp/lazy-zod").ZodString;
|
|
@@ -126,6 +126,12 @@ export default class HttpRequestFlow extends FlowBase<typeof name> {
|
|
|
126
126
|
* execute), and the verified authorization is read from the request token.
|
|
127
127
|
*/
|
|
128
128
|
handleWebFetch(): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* MCP protocol 2026-07-28. Delegates to `handle:mcp-20260728`, which owns header
|
|
131
|
+
* validation, `server/discover`, `subscriptions/listen`, MRTR, and result
|
|
132
|
+
* decoration for that revision.
|
|
133
|
+
*/
|
|
134
|
+
handleMcp2026(): Promise<void>;
|
|
129
135
|
handleLegacySse(): Promise<void>;
|
|
130
136
|
handleSse(): Promise<void>;
|
|
131
137
|
handleStreamableHttp(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.request.flow.d.ts","sourceRoot":"","sources":["../../../src/scope/flows/http.request.flow.ts"],"names":[],"mappings":"AAYA,OAAO,EAKL,QAAQ,EAGR,eAAe,EACf,gBAAgB,EAShB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"http.request.flow.d.ts","sourceRoot":"","sources":["../../../src/scope/flows/http.request.flow.ts"],"names":[],"mappings":"AAYA,OAAO,EAKL,QAAQ,EAGR,eAAe,EACf,gBAAgB,EAShB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,cAAc,CAAC;AAKtB,QAAA,MAAM,IAAI;;;;;CAwC2B,CAAC;AAEtC,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAIjC,CAAC;AAEH,QAAA,MAAM,IAAI,EAAG,cAAuB,CAAC;AAcrC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,WAAW;QACnB,cAAc,EAAE,cAAc,CAC5B,eAAe,EACf,OAAO,IAAI,EACX,OAAO,eAAe,EACtB,OAAO,gBAAgB,EACvB,OAAO,sBAAsB,CAC9B,CAAC;KACH;CACF;AAYD,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,QAAQ,CAAC,OAAO,IAAI,CAAC;IAChE,MAAM,wCAA8C;IACpD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,SAAS,CAAM;IAEvB,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU;IActD,YAAY;IAkDZ,YAAY;IA8BZ,kBAAkB;IAsDxB;;;;;;;;;;;;;;;OAeG;YACW,yBAAyB;IAwCjC,MAAM;IAwSZ;;;;;;;;;;;;;;OAcG;IAEG,cAAc;IAgEpB;;;;OAIG;IAQG,aAAa;IAuBb,eAAe;IAuBf,SAAS;IAuBT,oBAAoB;IAuBpB,kBAAkB;IAuBlB,mBAAmB;IAuBnB,mBAAmB;IAgDnB,QAAQ;IAcd;;;OAGG;IACH,OAAO,CAAC,QAAQ;CA8CjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../../src/task/helpers/task-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"task-runner.d.ts","sourceRoot":"","sources":["../../../src/task/helpers/task-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAqC,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjH;AAED,MAAM,WAAW,aAAa;IAC5B,6DAA6D;IAC7D,MAAM,EAAE,UAAU,CAAC;IACnB,+EAA+E;IAC/E,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,oEAAoE;IACpE,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxE"}
|
package/task/task.types.d.ts
CHANGED
|
@@ -95,6 +95,22 @@ export interface TaskRecord {
|
|
|
95
95
|
* duration of the task per spec.
|
|
96
96
|
*/
|
|
97
97
|
progressToken?: string | number;
|
|
98
|
+
/**
|
|
99
|
+
* Server→client requests the task is blocked on, set when `status` is
|
|
100
|
+
* `input_required` (tasks extension, protocol 2026-07-28).
|
|
101
|
+
*
|
|
102
|
+
* The client reads these from `tasks/get` and answers them with
|
|
103
|
+
* `tasks/update` — the task equivalent of the MRTR round trip.
|
|
104
|
+
*/
|
|
105
|
+
inputRequests?: Record<string, {
|
|
106
|
+
method: string;
|
|
107
|
+
params?: Record<string, unknown>;
|
|
108
|
+
}>;
|
|
109
|
+
/**
|
|
110
|
+
* Answers accumulated from `tasks/update` calls, keyed the same way as
|
|
111
|
+
* {@link inputRequests}. Replayed into the tool when the task resumes.
|
|
112
|
+
*/
|
|
113
|
+
inputResponses?: Record<string, Record<string, unknown>>;
|
|
98
114
|
/**
|
|
99
115
|
* Identifies the runtime executing the task so we can orphan-detect and
|
|
100
116
|
* cross-process cancel.
|
package/task/task.types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.types.d.ts","sourceRoot":"","sources":["../../src/task/task.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task.types.d.ts","sourceRoot":"","sources":["../../src/task/task.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"call-tool.flow.d.ts","sourceRoot":"","sources":["../../../src/tool/flows/call-tool.flow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAA+C,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAYnC,OAAO,EAEL,QAAQ,EAIR,WAAW,EACX,SAAS,EAET,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"call-tool.flow.d.ts","sourceRoot":"","sources":["../../../src/tool/flows/call-tool.flow.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAA+C,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAKL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AAYnC,OAAO,EAEL,QAAQ,EAIR,WAAW,EACX,SAAS,EAET,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAsEtB,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;gCAIf,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAAuB,CAAC;AAE1C,QAAA,MAAM,WAAW;;;;;cAKiB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cASnB,CAAC,CAAC,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;;;;;;;;gCAoB1E,CAAC;AAEH,QAAA,MAAM,IAAI;;;;CAuB2B,CAAC;AAEtC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,WAAW;QACnB,iBAAiB,EAAE,cAAc,CAC/B,YAAY,EACZ,OAAO,IAAI,EACX,OAAO,WAAW,EAClB,OAAO,YAAY,EACnB,OAAO,WAAW,CACnB,CAAC;KACH;CACF;AAED,QAAA,MAAM,IAAI,EAAG,iBAA0B,CAAC;AAUxC,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,QAAQ,CAAC,OAAO,IAAI,CAAC;IAC7D,MAAM,wCAA0C;IAG1C,UAAU;IAsDhB;;;;OAIG;IAEG,wBAAwB;IA2CxB,QAAQ;IAkHd;;;;;;;;OAQG;IAEG,qBAAqB;IAqJ3B;;;;OAIG;IAEG,sBAAsB;IAiJ5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;;;OAIG;IAEG,qBAAqB;IAwDrB,qBAAqB;IAkE3B;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IAEG,oBAAoB;IA2DpB,YAAY;IA4CZ,gBAAgB;IA0ChB,aAAa;IAuBb,OAAO;IAwIP,cAAc;IAed,gBAAgB;IAgBhB,YAAY;IAOlB;;;;OAIG;IAEG,OAAO;IAyLb;;;;;;;;OAQG;IAEG,QAAQ;CAsGf"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { FlowBase, httpInputSchema, httpOutputSchema, type FlowRunOptions } from '../../common';
|
|
2
|
+
import { isProtocol20260728Request, MCP_HEADERS, readHeader } from '../mcp-20260728';
|
|
3
|
+
export declare const plan: {
|
|
4
|
+
readonly pre: ["parseInput", "validate", "router"];
|
|
5
|
+
readonly execute: ["handleNotification", "handleSubscriptions", "handleMessage"];
|
|
6
|
+
readonly post: [];
|
|
7
|
+
readonly finalize: ["cleanup"];
|
|
8
|
+
};
|
|
9
|
+
export declare const stateSchema: import("@frontmcp/lazy-zod").ZodObject<{
|
|
10
|
+
version: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
|
|
11
|
+
requestType: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
|
|
12
|
+
message: "message";
|
|
13
|
+
notification: "notification";
|
|
14
|
+
subscriptions: "subscriptions";
|
|
15
|
+
}>>;
|
|
16
|
+
isAnonymous: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodBoolean>;
|
|
17
|
+
}, import("zod/v4/core").$strip>;
|
|
18
|
+
declare const name: "handle:mcp-202607280728";
|
|
19
|
+
declare global {
|
|
20
|
+
interface ExtendFlows {
|
|
21
|
+
'handle:mcp-202607280728': FlowRunOptions<HandleMcp20260728Flow, typeof plan, typeof httpInputSchema, typeof httpOutputSchema, typeof stateSchema>;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export declare function extractTraceContext(meta: Record<string, unknown>): Record<string, string> | undefined;
|
|
25
|
+
export default class HandleMcp20260728Flow extends FlowBase<typeof name> {
|
|
26
|
+
name: "handle:mcp-202607280728";
|
|
27
|
+
private get log();
|
|
28
|
+
parseInput(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Enforce the transport rules of this revision BEFORE any handler runs.
|
|
31
|
+
*
|
|
32
|
+
* Header/body agreement is a security control, not a formality: an
|
|
33
|
+
* intermediary may route on `Mcp-Method` / `Mcp-Name` while the server
|
|
34
|
+
* executes on the body, so a disagreement must be refused rather than
|
|
35
|
+
* resolved in favour of one side.
|
|
36
|
+
*/
|
|
37
|
+
validate(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Resolve a tool's input JSON Schema so `x-mcp-header` annotations can be
|
|
40
|
+
* validated against the call arguments.
|
|
41
|
+
*
|
|
42
|
+
* Uses the SAME resolution `tools:call-tool` uses (`getTools(true)` matched on
|
|
43
|
+
* `fullName` or `name`, including hidden tools). Anything looser would let a
|
|
44
|
+
* header-validated call and the call that actually executes disagree about
|
|
45
|
+
* which tool they mean.
|
|
46
|
+
*/
|
|
47
|
+
/**
|
|
48
|
+
* Re-enter this request's `FrontMcpContext` for work deferred past the flow.
|
|
49
|
+
*
|
|
50
|
+
* A streamed response is drained by the renderer after the flow has unwound,
|
|
51
|
+
* so anything that runs there has lost the AsyncLocalStorage scope. Capturing
|
|
52
|
+
* the context here and re-entering it keeps every context-dependent API
|
|
53
|
+
* (`notify`, `progress`, `elicit`, provider resolution) behaving identically
|
|
54
|
+
* whether the response was buffered or streamed.
|
|
55
|
+
*/
|
|
56
|
+
private buildContextRunner;
|
|
57
|
+
private findToolSchema;
|
|
58
|
+
router(): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* A JSON-RPC notification POST is acknowledged with `202 Accepted` and no
|
|
61
|
+
* body. This revision defines no client→server notifications over HTTP
|
|
62
|
+
* (cancellation is signalled by closing the stream), so nothing is dispatched.
|
|
63
|
+
*/
|
|
64
|
+
handleNotification(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* `subscriptions/listen` owns its HTTP response for the life of the
|
|
67
|
+
* subscription, so it is answered with an SSE stream rather than a buffered
|
|
68
|
+
* result. The stream is an `AsyncIterable`, which the Node writer and the Web
|
|
69
|
+
* response renderer both know how to drain — no runtime-specific branch here.
|
|
70
|
+
*/
|
|
71
|
+
handleSubscriptions(): Promise<void>;
|
|
72
|
+
handleMessage(): Promise<void>;
|
|
73
|
+
cleanup(): Promise<void>;
|
|
74
|
+
}
|
|
75
|
+
/** Re-exported so the router stage of `http:request` can classify without importing the module. */
|
|
76
|
+
export { isProtocol20260728Request, MCP_HEADERS, readHeader };
|
|
77
|
+
//# sourceMappingURL=handle.mcp-20260728.flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle.mcp-20260728.flow.d.ts","sourceRoot":"","sources":["../../../src/transport/flows/handle.mcp-20260728.flow.ts"],"names":[],"mappings":"AAiBA,OAAO,EAEL,QAAQ,EAER,eAAe,EACf,gBAAgB,EAKhB,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAIL,yBAAyB,EACzB,WAAW,EACX,UAAU,EAKX,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,IAAI;;;;;CAKoB,CAAC;AAwBtC,eAAO,MAAM,WAAW;;;;;;;;gCAKtB,CAAC;AAEH,QAAA,MAAM,IAAI,EAAG,yBAAkC,CAAC;AAGhD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,WAAW;QACnB,yBAAyB,EAAE,cAAc,CACvC,qBAAqB,EACrB,OAAO,IAAI,EACX,OAAO,eAAe,EACtB,OAAO,gBAAgB,EACvB,OAAO,WAAW,CACnB,CAAC;KACH;CACF;AAuBD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAMrG;AA6ED,MAAM,CAAC,OAAO,OAAO,qBAAsB,SAAQ,QAAQ,CAAC,OAAO,IAAI,CAAC;IACtE,IAAI,4BAAQ;IAEZ,OAAO,KAAK,GAAG,GAEd;IAGK,UAAU;IAWhB;;;;;;;OAOG;IAEG,QAAQ;IA6Cd;;;;;;;;OAQG;IACH;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,cAAc;IAQhB,MAAM;IAYZ;;;;OAIG;IAIG,kBAAkB;IAIxB;;;;;OAKG;IAIG,mBAAmB;IA4DnB,aAAa;IAwFb,OAAO;CAKd;AAED,mGAAmG;AACnG,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface HeaderParamValidation {
|
|
2
|
+
valid: boolean;
|
|
3
|
+
reason?: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Validate every `x-mcp-header` annotation in a tool's input schema.
|
|
7
|
+
*
|
|
8
|
+
* Checks the constraints the spec places on annotation NAMES (non-empty, token
|
|
9
|
+
* syntax, no control characters, case-insensitively unique) and on the annotated
|
|
10
|
+
* property TYPES (primitive; `number` is excluded because it cannot round-trip
|
|
11
|
+
* exactly, integers must stay in the safe range).
|
|
12
|
+
*/
|
|
13
|
+
export declare function validateHeaderParams(inputSchema: unknown): HeaderParamValidation;
|
|
14
|
+
/**
|
|
15
|
+
* Build the `Mcp-Param-*` headers for a tool call.
|
|
16
|
+
*
|
|
17
|
+
* A header is emitted only when the annotated argument is actually present —
|
|
18
|
+
* the spec pairs "value provided" with "client MUST include the header" and
|
|
19
|
+
* "value absent/null" with "client MUST omit it".
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildParamHeaders(inputSchema: unknown, args: unknown, encode: (value: string) => string): Record<string, string>;
|
|
22
|
+
//# sourceMappingURL=header-params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-params.d.ts","sourceRoot":"","sources":["../../../../src/transport/mcp-20260728/client/header-params.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,GAAG,qBAAqB,CAgChF;AAwCD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/transport/mcp-20260728/client/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP client for protocol revision 2026-07-28.
|
|
3
|
+
*
|
|
4
|
+
* The upstream `@modelcontextprotocol/sdk` client speaks at most `2025-11-25`,
|
|
5
|
+
* so talking to a 2026 server needs its own implementation. It is small on
|
|
6
|
+
* purpose — the revision is stateless, so there is no session, no handshake and
|
|
7
|
+
* no reconnect logic to manage. What it DOES own is the three behaviours a
|
|
8
|
+
* conforming client must implement:
|
|
9
|
+
*
|
|
10
|
+
* - **Request metadata.** Per-request `_meta` plus the mirrored
|
|
11
|
+
* `MCP-Protocol-Version` / `Mcp-Method` / `Mcp-Name` / `Mcp-Param-*` headers.
|
|
12
|
+
* - **MRTR.** An `input_required` result is answered by gathering the requested
|
|
13
|
+
* input and re-issuing the ORIGINAL request — with a NEW JSON-RPC id and the
|
|
14
|
+
* `requestState` echoed back verbatim.
|
|
15
|
+
* - **Tasks.** A `resultType: "task"` handle is polled through `tasks/get`
|
|
16
|
+
* until it reaches a terminal state, answering `input_required` along the way
|
|
17
|
+
* via `tasks/update`.
|
|
18
|
+
*
|
|
19
|
+
* @module transport/mcp-20260728/client
|
|
20
|
+
*/
|
|
21
|
+
import { type Implementation } from '@frontmcp/protocol';
|
|
22
|
+
import { TERMINAL_TASK_STATUSES } from '../tasks-extension';
|
|
23
|
+
/** Answers the client supplies when a server asks for input via MRTR. */
|
|
24
|
+
export interface McpStatelessInputHandlers {
|
|
25
|
+
/** Handle an `elicitation/create` request. */
|
|
26
|
+
onElicit?: (params: Record<string, unknown>) => Promise<Record<string, unknown>> | Record<string, unknown>;
|
|
27
|
+
/** Handle a `sampling/createMessage` request. */
|
|
28
|
+
onSample?: (params: Record<string, unknown>) => Promise<Record<string, unknown>> | Record<string, unknown>;
|
|
29
|
+
/** Handle a `roots/list` request. */
|
|
30
|
+
onListRoots?: () => Promise<{
|
|
31
|
+
roots: Array<{
|
|
32
|
+
uri: string;
|
|
33
|
+
name?: string;
|
|
34
|
+
}>;
|
|
35
|
+
}> | {
|
|
36
|
+
roots: Array<{
|
|
37
|
+
uri: string;
|
|
38
|
+
name?: string;
|
|
39
|
+
}>;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export interface McpStatelessClientOptions {
|
|
43
|
+
/** The MCP endpoint URL. */
|
|
44
|
+
url: string;
|
|
45
|
+
clientInfo?: Implementation;
|
|
46
|
+
/** Capabilities declared on EVERY request (they are per-request in this revision). */
|
|
47
|
+
capabilities?: Record<string, unknown>;
|
|
48
|
+
/** Extra headers (e.g. `Authorization`) sent with every request. */
|
|
49
|
+
headers?: Record<string, string>;
|
|
50
|
+
/** Log level to opt into; omit to receive no `notifications/message`. */
|
|
51
|
+
logLevel?: string;
|
|
52
|
+
/** Called for every notification received on a response stream. */
|
|
53
|
+
onNotification?: (notification: {
|
|
54
|
+
method: string;
|
|
55
|
+
params?: Record<string, unknown>;
|
|
56
|
+
}) => void;
|
|
57
|
+
/** How the client answers MRTR input requests. */
|
|
58
|
+
handlers?: McpStatelessInputHandlers;
|
|
59
|
+
/** Maximum MRTR round trips before giving up, guarding against a server that never settles. */
|
|
60
|
+
maxInputRounds?: number;
|
|
61
|
+
/**
|
|
62
|
+
* Per-request timeout in milliseconds.
|
|
63
|
+
*
|
|
64
|
+
* Without one an unreachable or hung remote leaves every call pending
|
|
65
|
+
* forever — including the `server/discover` probe used to negotiate the
|
|
66
|
+
* protocol, which would then never fall back.
|
|
67
|
+
*/
|
|
68
|
+
requestTimeoutMs?: number;
|
|
69
|
+
/** Injected for tests. */
|
|
70
|
+
fetchImpl?: typeof fetch;
|
|
71
|
+
}
|
|
72
|
+
export declare class McpStatelessError extends Error {
|
|
73
|
+
readonly code: number;
|
|
74
|
+
readonly data?: unknown | undefined;
|
|
75
|
+
constructor(code: number, message: string, data?: unknown | undefined);
|
|
76
|
+
}
|
|
77
|
+
export declare class McpStatelessClient {
|
|
78
|
+
private nextId;
|
|
79
|
+
private readonly options;
|
|
80
|
+
/** Cached tool input schemas, needed to derive `Mcp-Param-*` headers. */
|
|
81
|
+
private toolSchemas;
|
|
82
|
+
constructor(options: McpStatelessClientOptions);
|
|
83
|
+
private get fetchImpl();
|
|
84
|
+
/** Ask the server which versions, capabilities and identity it offers. */
|
|
85
|
+
discover(): Promise<Record<string, unknown>>;
|
|
86
|
+
/**
|
|
87
|
+
* List tools, dropping any whose `x-mcp-header` annotations are invalid.
|
|
88
|
+
*
|
|
89
|
+
* The spec requires this: one malformed tool definition must not prevent the
|
|
90
|
+
* other tools from being used, so the offender is excluded and logged rather
|
|
91
|
+
* than failing the call.
|
|
92
|
+
*/
|
|
93
|
+
listTools(): Promise<Array<Record<string, unknown>>>;
|
|
94
|
+
callTool(name: string, args?: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
95
|
+
readResource(uri: string): Promise<Record<string, unknown>>;
|
|
96
|
+
listResources(): Promise<Record<string, unknown>>;
|
|
97
|
+
listPrompts(): Promise<Record<string, unknown>>;
|
|
98
|
+
getPrompt(name: string, args?: Record<string, string>): Promise<Record<string, unknown>>;
|
|
99
|
+
/**
|
|
100
|
+
* Issue a request, resolving MRTR round trips and task handles transparently.
|
|
101
|
+
*
|
|
102
|
+
* The caller sees a single promise for the FINAL result, which is the whole
|
|
103
|
+
* point of centralising this: every entry point would otherwise need its own
|
|
104
|
+
* retry loop.
|
|
105
|
+
*/
|
|
106
|
+
request(method: string, params?: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
107
|
+
/** Fulfil each `inputRequests` entry using the configured handlers. */
|
|
108
|
+
private gatherInputs;
|
|
109
|
+
/**
|
|
110
|
+
* Poll a task handle to a terminal state, answering mid-flight input requests.
|
|
111
|
+
*
|
|
112
|
+
* Honours the server's `pollIntervalMs` hint rather than picking our own
|
|
113
|
+
* cadence — the server knows how long its work takes.
|
|
114
|
+
*/
|
|
115
|
+
private awaitTask;
|
|
116
|
+
/** Cancel a running task. */
|
|
117
|
+
cancelTask(taskId: string): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* Open a `subscriptions/listen` stream.
|
|
120
|
+
*
|
|
121
|
+
* Resolves once the server acknowledges the subscription, so callers know
|
|
122
|
+
* which notification types were actually honoured before they start waiting
|
|
123
|
+
* on them.
|
|
124
|
+
*/
|
|
125
|
+
listen(notifications: Record<string, unknown>, onNotification: (notification: {
|
|
126
|
+
method: string;
|
|
127
|
+
params?: Record<string, unknown>;
|
|
128
|
+
}) => void): Promise<{
|
|
129
|
+
acknowledged: Record<string, unknown>;
|
|
130
|
+
close: () => void;
|
|
131
|
+
}>;
|
|
132
|
+
/** Build and issue one JSON-RPC request, returning its result. */
|
|
133
|
+
private send;
|
|
134
|
+
/** Assemble the JSON-RPC body and its mirrored HTTP headers. */
|
|
135
|
+
private buildRequest;
|
|
136
|
+
private deriveName;
|
|
137
|
+
/**
|
|
138
|
+
* Read either framing the server may choose.
|
|
139
|
+
*
|
|
140
|
+
* A JSON body is the response outright; an SSE body carries this request's
|
|
141
|
+
* notifications followed by the final response, so notifications are forwarded
|
|
142
|
+
* as they arrive and the terminating message is returned.
|
|
143
|
+
*/
|
|
144
|
+
private readResponse;
|
|
145
|
+
/** Drain an SSE body, handing each decoded JSON message to `onMessage`. */
|
|
146
|
+
private pumpSse;
|
|
147
|
+
private warn;
|
|
148
|
+
}
|
|
149
|
+
/** Convenience: the capability object a client declaring the tasks extension sends. */
|
|
150
|
+
export declare const TASKS_CLIENT_CAPABILITY: {
|
|
151
|
+
extensions: {
|
|
152
|
+
"io.modelcontextprotocol/tasks": {};
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
/** Re-exported so callers can check task terminality without importing the extension module. */
|
|
156
|
+
export { TERMINAL_TASK_STATUSES };
|
|
157
|
+
//# sourceMappingURL=mcp-stateless.client.d.ts.map
|