@frontmcp/testing 1.7.2 → 1.8.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/client/index.d.ts +1 -1
- package/client/index.d.ts.map +1 -1
- package/client/mcp-test-client.builder.d.ts +2 -1
- package/client/mcp-test-client.builder.d.ts.map +1 -1
- package/client/mcp-test-client.d.ts +11 -3
- package/client/mcp-test-client.d.ts.map +1 -1
- package/client/mcp-test-client.types.d.ts +17 -3
- package/client/mcp-test-client.types.d.ts.map +1 -1
- package/esm/fixtures/index.mjs +670 -458
- package/esm/index.mjs +780 -569
- package/esm/matchers/index.mjs +5 -6
- package/esm/package.json +6 -6
- package/esm/perf/index.mjs +600 -426
- package/esm/setup.mjs +5 -6
- package/fixtures/fixture-types.d.ts +34 -3
- package/fixtures/fixture-types.d.ts.map +1 -1
- package/fixtures/index.js +670 -458
- package/fixtures/test-fixture.d.ts.map +1 -1
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js +780 -569
- package/matchers/index.js +5 -6
- package/matchers/matcher-types.d.ts +3 -2
- package/matchers/matcher-types.d.ts.map +1 -1
- package/matchers/mcp-matchers.d.ts +1 -1
- package/matchers/mcp-matchers.d.ts.map +1 -1
- package/package.json +6 -6
- package/perf/index.js +600 -426
- package/setup.js +5 -6
- package/transport/index.d.ts +1 -1
- package/transport/index.d.ts.map +1 -1
- package/transport/streamable-http.transport.d.ts +18 -2
- package/transport/streamable-http.transport.d.ts.map +1 -1
- package/transport/transport.interface.d.ts +17 -1
- package/transport/transport.interface.d.ts.map +1 -1
package/setup.js
CHANGED
|
@@ -368,18 +368,17 @@ var toBeError = function(received, expectedCode) {
|
|
|
368
368
|
message: () => `Expected a result wrapper object with isError property`
|
|
369
369
|
};
|
|
370
370
|
}
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
}
|
|
371
|
+
const receivedCode = typeof expectedCode === "string" ? result.raw?._meta?.["code"] : result.error?.code;
|
|
372
|
+
const codeMatches = expectedCode === void 0 || receivedCode === expectedCode;
|
|
373
|
+
const pass = result.isError && codeMatches;
|
|
375
374
|
return {
|
|
376
375
|
pass,
|
|
377
376
|
message: () => {
|
|
378
377
|
if (!result.isError) {
|
|
379
378
|
return "Expected result to be an error, but it was successful";
|
|
380
379
|
}
|
|
381
|
-
if (
|
|
382
|
-
return `Expected error code ${expectedCode}, but got ${
|
|
380
|
+
if (!codeMatches) {
|
|
381
|
+
return `Expected error code ${expectedCode}, but got ${String(receivedCode)}`;
|
|
383
382
|
}
|
|
384
383
|
return "Expected result not to be an error";
|
|
385
384
|
}
|
package/transport/index.d.ts
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
* @file transport/index.ts
|
|
3
3
|
* @description Transport layer exports
|
|
4
4
|
*/
|
|
5
|
-
export type { McpTransport, TransportConfig, TransportState, JsonRpcRequest, JsonRpcResponse, } from './transport.interface';
|
|
5
|
+
export type { McpTransport, TransportConfig, TransportState, JsonRpcRequest, JsonRpcResponse, NotificationHandler, } from './transport.interface';
|
|
6
6
|
export { StreamableHttpTransport } from './streamable-http.transport';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/transport/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
* @file streamable-http.transport.ts
|
|
3
3
|
* @description StreamableHTTP transport implementation for MCP Test Client
|
|
4
4
|
*/
|
|
5
|
-
import type { McpTransport, TransportConfig, TransportState, JsonRpcRequest, JsonRpcResponse } from './transport.interface';
|
|
6
|
-
import type { InterceptorChain } from '../interceptor';
|
|
7
5
|
import type { ElicitationHandler } from '../client/mcp-test-client.types';
|
|
6
|
+
import type { InterceptorChain } from '../interceptor';
|
|
7
|
+
import type { JsonRpcRequest, JsonRpcResponse, McpTransport, TransportConfig, TransportState } from './transport.interface';
|
|
8
8
|
/**
|
|
9
9
|
* StreamableHTTP transport for MCP communication
|
|
10
10
|
*
|
|
@@ -22,6 +22,10 @@ export declare class StreamableHttpTransport implements McpTransport {
|
|
|
22
22
|
private interceptors?;
|
|
23
23
|
private readonly publicMode;
|
|
24
24
|
private elicitationHandler?;
|
|
25
|
+
private readonly notificationHandler?;
|
|
26
|
+
private notificationStream?;
|
|
27
|
+
private notificationProtocolVersion;
|
|
28
|
+
private notificationStreamReopenTimer?;
|
|
25
29
|
constructor(config: TransportConfig);
|
|
26
30
|
connect(): Promise<void>;
|
|
27
31
|
/**
|
|
@@ -34,6 +38,7 @@ export declare class StreamableHttpTransport implements McpTransport {
|
|
|
34
38
|
}>;
|
|
35
39
|
notify(message: JsonRpcRequest): Promise<void>;
|
|
36
40
|
sendRaw(data: string): Promise<JsonRpcResponse>;
|
|
41
|
+
openNotificationStream(protocolVersion: string): Promise<void>;
|
|
37
42
|
close(): Promise<void>;
|
|
38
43
|
isConnected(): boolean;
|
|
39
44
|
getState(): TransportState;
|
|
@@ -48,6 +53,11 @@ export declare class StreamableHttpTransport implements McpTransport {
|
|
|
48
53
|
getLastRequestHeaders(): Record<string, string>;
|
|
49
54
|
simulateDisconnect(): Promise<void>;
|
|
50
55
|
waitForReconnect(timeoutMs: number): Promise<void>;
|
|
56
|
+
private closeNotificationStream;
|
|
57
|
+
/** Opens the stream without holding up the caller past the request timeout; close() aborts it at any point. */
|
|
58
|
+
private connectNotificationStream;
|
|
59
|
+
private releaseNotificationStream;
|
|
60
|
+
private readNotificationStream;
|
|
51
61
|
/**
|
|
52
62
|
* Handle SSE response with elicitation support.
|
|
53
63
|
*
|
|
@@ -71,6 +81,12 @@ export declare class StreamableHttpTransport implements McpTransport {
|
|
|
71
81
|
* Send an elicitation response back to the server
|
|
72
82
|
*/
|
|
73
83
|
private sendElicitationResponse;
|
|
84
|
+
/**
|
|
85
|
+
* The MCP endpoint URL. `entryPath` is where the server mounts MCP; the
|
|
86
|
+
* trailing slash is kept because both hosts normalize it and the original
|
|
87
|
+
* behaviour (`${baseUrl}/`) relied on it (issue #543).
|
|
88
|
+
*/
|
|
89
|
+
private mcpUrl;
|
|
74
90
|
private buildHeaders;
|
|
75
91
|
private ensureConnected;
|
|
76
92
|
private log;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamable-http.transport.d.ts","sourceRoot":"","sources":["../../src/transport/streamable-http.transport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"streamable-http.transport.d.ts","sourceRoot":"","sources":["../../src/transport/streamable-http.transport.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAwC,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,YAAY,EAEZ,eAAe,EACf,cAAc,EACf,MAAM,uBAAuB,CAAC;AAK/B;;;;;GAKG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAMrB;IACF,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,YAAY,CAAC,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IACrC,OAAO,CAAC,kBAAkB,CAAC,CAAqB;IAChD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAsB;IAC3D,OAAO,CAAC,kBAAkB,CAAC,CAAkB;IAC7C,OAAO,CAAC,2BAA2B,CAAM;IACzC,OAAO,CAAC,6BAA6B,CAAC,CAAgC;gBAE1D,MAAM,EAAE,eAAe;IAmB7B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9B;;;OAGG;YACW,qBAAqB;IAqC7B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC;IA8HxF,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyC9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmD/C,sBAAsB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,WAAW,IAAI,OAAO;IAItB,QAAQ,IAAI,cAAc;IAI1B,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B,eAAe,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI;IAIrD,eAAe,IAAI,gBAAgB,GAAG,SAAS;IAI/C,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI;IAIpE,kBAAkB,IAAI,MAAM;IAI5B,iBAAiB,IAAI,MAAM;IAI3B,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIzC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxD,OAAO,CAAC,uBAAuB;IAM/B,+GAA+G;YACjG,yBAAyB;IAiCvC,OAAO,CAAC,yBAAyB;YAInB,sBAAsB;IA6BpC;;;;;OAKG;YACW,gCAAgC;IA+F9C;;OAEG;IACH,OAAO,CAAC,cAAc;IAiDtB;;OAEG;YACW,cAAc;IA+C5B;;OAEG;YACW,wBAAwB;IAqCtC;;OAEG;YACW,uBAAuB;IA8BrC;;;;OAIG;IACH,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,GAAG;IAMX;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,2BAA2B;CAsDpC"}
|
|
@@ -20,6 +20,7 @@ export interface JsonRpcResponse {
|
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
export type TransportState = 'disconnected' | 'connecting' | 'connected' | 'error';
|
|
23
|
+
export type NotificationHandler = (notification: JsonRpcRequest) => void;
|
|
23
24
|
/**
|
|
24
25
|
* Interface that all MCP transports must implement
|
|
25
26
|
*/
|
|
@@ -104,13 +105,26 @@ export interface McpTransport {
|
|
|
104
105
|
* this handler is called to provide the user's response.
|
|
105
106
|
*/
|
|
106
107
|
setElicitationHandler?(handler: ElicitationHandler | undefined): void;
|
|
108
|
+
/**
|
|
109
|
+
* Open the session's standalone GET stream, where the server sends
|
|
110
|
+
* notifications that are not tied to a request's own response.
|
|
111
|
+
* @param protocolVersion - The version negotiated at initialize, sent as `MCP-Protocol-Version`
|
|
112
|
+
*/
|
|
113
|
+
openNotificationStream?(protocolVersion: string): Promise<void>;
|
|
107
114
|
}
|
|
108
115
|
/**
|
|
109
116
|
* Configuration for transport implementations
|
|
110
117
|
*/
|
|
111
118
|
export interface TransportConfig {
|
|
112
|
-
/** Base URL of the MCP server */
|
|
119
|
+
/** Base URL of the MCP server (its root, not the MCP endpoint). */
|
|
113
120
|
baseUrl: string;
|
|
121
|
+
/**
|
|
122
|
+
* The server's `http.entryPath` — the path MCP itself is mounted at
|
|
123
|
+
* (`''` / `/` for the root, `/mcp`, …). Applied to the MCP endpoint only;
|
|
124
|
+
* OAuth and discovery endpoints stay at the server root, which is where the
|
|
125
|
+
* server mounts them (issue #543).
|
|
126
|
+
*/
|
|
127
|
+
entryPath?: string;
|
|
114
128
|
/** Request timeout in milliseconds */
|
|
115
129
|
timeout?: number;
|
|
116
130
|
/** Authentication configuration */
|
|
@@ -132,5 +146,7 @@ export interface TransportConfig {
|
|
|
132
146
|
clientInfo?: ClientInfo;
|
|
133
147
|
/** Handler for server→client elicitation requests during tool execution */
|
|
134
148
|
elicitationHandler?: ElicitationHandler;
|
|
149
|
+
/** Handler for server notifications streamed during a request */
|
|
150
|
+
notificationHandler?: NotificationHandler;
|
|
135
151
|
}
|
|
136
152
|
//# sourceMappingURL=transport.interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.interface.d.ts","sourceRoot":"","sources":["../../src/transport/transport.interface.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAGtF,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,OAAO,CAAC;KAChB,CAAC;CACH;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAEnF;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;OAEG;IACH,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG;QAAE,MAAM,CAAC,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAEzF;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAEhD;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,IAAI,cAAc,CAAC;IAE3B;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;IAEnC;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAI7B;;OAEG;IACH,kBAAkB,CAAC,IAAI,MAAM,GAAG,SAAS,CAAC;IAE1C;;OAEG;IACH,kBAAkB,CAAC,IAAI,MAAM,CAAC;IAE9B;;OAEG;IACH,iBAAiB,CAAC,IAAI,MAAM,CAAC;IAE7B;;OAEG;IACH,qBAAqB,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjD;;OAEG;IACH,kBAAkB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;OAEG;IACH,gBAAgB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;OAEG;IACH,eAAe,CAAC,CAAC,YAAY,EAAE,OAAO,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAEhF;;OAEG;IACH,eAAe,CAAC,IAAI,OAAO,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAE1E;;;;OAIG;IACH,qBAAqB,CAAC,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.interface.d.ts","sourceRoot":"","sources":["../../src/transport/transport.interface.ts"],"names":[],"mappings":"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"}
|