mcproof 0.3.0-alpha.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.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +266 -0
  3. package/bin/mcproof.js +12 -0
  4. package/dist/assertions.d.ts +81 -0
  5. package/dist/assertions.d.ts.map +1 -0
  6. package/dist/assertions.js +300 -0
  7. package/dist/assertions.js.map +1 -0
  8. package/dist/autoSetup.d.ts +2 -0
  9. package/dist/autoSetup.d.ts.map +1 -0
  10. package/dist/autoSetup.js +6 -0
  11. package/dist/autoSetup.js.map +1 -0
  12. package/dist/cli.d.ts +2 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +346 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/env.d.ts +3 -0
  17. package/dist/env.d.ts.map +1 -0
  18. package/dist/env.js +100 -0
  19. package/dist/env.js.map +1 -0
  20. package/dist/index.d.ts +6 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +22 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/jestPreset.d.ts +18 -0
  25. package/dist/jestPreset.d.ts.map +1 -0
  26. package/dist/jestPreset.js +26 -0
  27. package/dist/jestPreset.js.map +1 -0
  28. package/dist/mcpTestClient.d.ts +40 -0
  29. package/dist/mcpTestClient.d.ts.map +1 -0
  30. package/dist/mcpTestClient.js +500 -0
  31. package/dist/mcpTestClient.js.map +1 -0
  32. package/dist/protocol.d.ts +8 -0
  33. package/dist/protocol.d.ts.map +1 -0
  34. package/dist/protocol.js +133 -0
  35. package/dist/protocol.js.map +1 -0
  36. package/dist/reporting.d.ts +53 -0
  37. package/dist/reporting.d.ts.map +1 -0
  38. package/dist/reporting.js +239 -0
  39. package/dist/reporting.js.map +1 -0
  40. package/dist/sharedClient.d.ts +9 -0
  41. package/dist/sharedClient.d.ts.map +1 -0
  42. package/dist/sharedClient.js +101 -0
  43. package/dist/sharedClient.js.map +1 -0
  44. package/dist/types.d.ts +83 -0
  45. package/dist/types.d.ts.map +1 -0
  46. package/dist/types.js +3 -0
  47. package/dist/types.js.map +1 -0
  48. package/package.json +49 -0
@@ -0,0 +1,40 @@
1
+ import { McpPromptGet, McpPromptDescriptor, McpPromptResult, McpResourceRead, McpResourceDescriptor, McpResourceResult, McpServerInfo, McpTestClientOptions, McpToolCall, McpToolDescriptor, McpToolResult } from './types';
2
+ interface InvokeToolConfig {
3
+ timeout?: number;
4
+ }
5
+ export declare class McpTestClient {
6
+ private readonly baseUrl;
7
+ private readonly timeoutMs;
8
+ private readonly staticHeaders;
9
+ private readonly authHeaders;
10
+ private client?;
11
+ private transport?;
12
+ private requestCounter;
13
+ constructor(options: McpTestClientOptions);
14
+ getAuthHeaders(): Record<string, string>;
15
+ setAuthHeaders(auth: Record<string, string>): void;
16
+ clearAuthHeaders(): void;
17
+ private makeRequestId;
18
+ private buildHeaders;
19
+ private extractConnectionErrorMessage;
20
+ private isConnectionFailure;
21
+ private normalizeMcpError;
22
+ private ensureConnected;
23
+ private resetConnection;
24
+ private markConnectionDirty;
25
+ getServerInfo(): Promise<McpServerInfo>;
26
+ listTools(): Promise<McpToolDescriptor[]>;
27
+ listAvailableTools(): Promise<string[]>;
28
+ listResources(): Promise<McpResourceDescriptor[]>;
29
+ listPrompts(): Promise<McpPromptDescriptor[]>;
30
+ private extractToolErrorMessage;
31
+ private extractResourceErrorMessage;
32
+ private extractPromptErrorMessage;
33
+ invokeTool(toolCall: McpToolCall, config?: InvokeToolConfig): Promise<McpToolResult>;
34
+ readResource(resourceRead: McpResourceRead, config?: InvokeToolConfig): Promise<McpResourceResult>;
35
+ getPrompt(promptGet: McpPromptGet, config?: InvokeToolConfig): Promise<McpPromptResult>;
36
+ disconnect(): Promise<void>;
37
+ connect(): Promise<void>;
38
+ }
39
+ export {};
40
+ //# sourceMappingURL=mcpTestClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpTestClient.d.ts","sourceRoot":"","sources":["../src/mcpTestClient.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACd,MAAM,SAAS,CAAC;AAWjB,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,SAAS,CAAC,CAAgC;IAClD,OAAO,CAAC,cAAc,CAAK;gBAEf,OAAO,EAAE,oBAAoB;IAgBzC,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAIxC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAKlD,gBAAgB,IAAI,IAAI;IAMxB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,6BAA6B;IAYrC,OAAO,CAAC,mBAAmB;IAoF3B,OAAO,CAAC,iBAAiB;YAsBX,eAAe;YAkCf,eAAe;IAwB7B,OAAO,CAAC,mBAAmB;IAQrB,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;IAUvC,SAAS,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2BzC,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKvC,aAAa,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA6BjD,WAAW,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA4BnD,OAAO,CAAC,uBAAuB;IAwB/B,OAAO,CAAC,2BAA2B;IAyBnC,OAAO,CAAC,yBAAyB;IAyB3B,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAqDpF,YAAY,CAAC,YAAY,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmDlG,SAAS,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAoDvF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
@@ -0,0 +1,500 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.McpTestClient = void 0;
4
+ const client_1 = require("@modelcontextprotocol/sdk/client");
5
+ const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
6
+ const package_json_1 = require("../package.json");
7
+ const NETWORK_ERROR_CODES = new Set([
8
+ 'ECONNREFUSED',
9
+ 'ECONNRESET',
10
+ 'ENOTFOUND',
11
+ 'EAI_AGAIN',
12
+ 'ETIMEDOUT',
13
+ 'ERR_NETWORK',
14
+ ]);
15
+ class McpTestClient {
16
+ constructor(options) {
17
+ var _a, _b;
18
+ this.requestCounter = 1;
19
+ this.baseUrl = options.baseUrl.replace(/\/$/, '');
20
+ this.timeoutMs = (_a = options.timeoutMs) !== null && _a !== void 0 ? _a : 30000;
21
+ this.staticHeaders = {};
22
+ this.authHeaders = {};
23
+ Object.entries((_b = options.headers) !== null && _b !== void 0 ? _b : {}).forEach(([key, value]) => {
24
+ if (key === 'Authorization' || key === 'x-api-key') {
25
+ this.authHeaders[key] = value;
26
+ return;
27
+ }
28
+ this.staticHeaders[key] = value;
29
+ });
30
+ }
31
+ getAuthHeaders() {
32
+ return { ...this.authHeaders };
33
+ }
34
+ setAuthHeaders(auth) {
35
+ Object.assign(this.authHeaders, auth);
36
+ this.markConnectionDirty();
37
+ }
38
+ clearAuthHeaders() {
39
+ delete this.authHeaders.Authorization;
40
+ delete this.authHeaders['x-api-key'];
41
+ this.markConnectionDirty();
42
+ }
43
+ makeRequestId(preferred) {
44
+ if (preferred && preferred.trim().length > 0) {
45
+ return preferred;
46
+ }
47
+ const id = String(this.requestCounter);
48
+ this.requestCounter += 1;
49
+ return id;
50
+ }
51
+ buildHeaders() {
52
+ return {
53
+ ...this.staticHeaders,
54
+ ...this.authHeaders,
55
+ 'Content-Type': 'application/json',
56
+ Accept: 'application/json, text/event-stream',
57
+ };
58
+ }
59
+ extractConnectionErrorMessage(error) {
60
+ if (error instanceof Error && error.message) {
61
+ return error.message;
62
+ }
63
+ if (typeof error === 'string' && error.length > 0) {
64
+ return error;
65
+ }
66
+ return 'unknown network error';
67
+ }
68
+ isConnectionFailure(error) {
69
+ var _a, _b;
70
+ if (error instanceof streamableHttp_js_1.StreamableHTTPError && typeof error.code === 'number' && error.code >= 400) {
71
+ return false;
72
+ }
73
+ if (error && typeof error === 'object') {
74
+ const value = error;
75
+ if (value.code && NETWORK_ERROR_CODES.has(value.code)) {
76
+ return true;
77
+ }
78
+ if (value.cause && typeof value.cause === 'object') {
79
+ const causeWithCode = value.cause;
80
+ if (causeWithCode.code && NETWORK_ERROR_CODES.has(causeWithCode.code)) {
81
+ return true;
82
+ }
83
+ const causeMessage = String((_a = causeWithCode.message) !== null && _a !== void 0 ? _a : '').toLowerCase();
84
+ if (causeMessage.includes('econnrefused') ||
85
+ causeMessage.includes('enotfound') ||
86
+ causeMessage.includes('timed out') ||
87
+ causeMessage.includes('timeout') ||
88
+ causeMessage.includes('socket hang up') ||
89
+ causeMessage.includes('network') ||
90
+ causeMessage.includes('bad port')) {
91
+ return true;
92
+ }
93
+ }
94
+ }
95
+ if (!(error instanceof Error)) {
96
+ const message = this.extractConnectionErrorMessage(error).toLowerCase();
97
+ return (message.includes('fetch failed') ||
98
+ message.includes('econnrefused') ||
99
+ message.includes('enotfound') ||
100
+ message.includes('timed out') ||
101
+ message.includes('timeout') ||
102
+ message.includes('socket hang up') ||
103
+ message.includes('network') ||
104
+ message.includes('bad port'));
105
+ }
106
+ const withCode = error;
107
+ if (withCode.code && NETWORK_ERROR_CODES.has(withCode.code)) {
108
+ return true;
109
+ }
110
+ if (withCode.cause && typeof withCode.cause === 'object') {
111
+ const causeWithCode = withCode.cause;
112
+ if (causeWithCode.code && NETWORK_ERROR_CODES.has(causeWithCode.code)) {
113
+ return true;
114
+ }
115
+ const causeMessage = String((_b = causeWithCode.message) !== null && _b !== void 0 ? _b : '').toLowerCase();
116
+ if (causeMessage.includes('econnrefused') ||
117
+ causeMessage.includes('enotfound') ||
118
+ causeMessage.includes('timed out') ||
119
+ causeMessage.includes('timeout') ||
120
+ causeMessage.includes('socket hang up') ||
121
+ causeMessage.includes('network') ||
122
+ causeMessage.includes('bad port')) {
123
+ return true;
124
+ }
125
+ }
126
+ const message = error.message.toLowerCase();
127
+ return (message.includes('fetch failed') ||
128
+ message.includes('econnrefused') ||
129
+ message.includes('enotfound') ||
130
+ message.includes('timed out') ||
131
+ message.includes('timeout') ||
132
+ message.includes('socket hang up') ||
133
+ message.includes('network') ||
134
+ message.includes('bad port'));
135
+ }
136
+ normalizeMcpError(error) {
137
+ if (error instanceof streamableHttp_js_1.StreamableHTTPError && error.code === 404) {
138
+ throw new Error(`MCP server at ${this.baseUrl} received HTTP 404 for MCP requests. ` +
139
+ 'Check that MCPROOF_BASE_URL points to the correct MCP HTTP endpoint path (often ending in /mcp).');
140
+ }
141
+ if (this.isConnectionFailure(error)) {
142
+ const detail = this.extractConnectionErrorMessage(error);
143
+ throw new Error(`Could not connect to MCP server at ${this.baseUrl}. Ensure the server is running and reachable. Details: ${detail}`);
144
+ }
145
+ if (error instanceof Error) {
146
+ throw error;
147
+ }
148
+ throw new Error(String(error));
149
+ }
150
+ async ensureConnected() {
151
+ if (this.client && this.transport) {
152
+ return;
153
+ }
154
+ try {
155
+ const transport = new streamableHttp_js_1.StreamableHTTPClientTransport(new URL(this.baseUrl), {
156
+ requestInit: {
157
+ headers: this.buildHeaders(),
158
+ },
159
+ });
160
+ const client = new client_1.Client({
161
+ name: 'mcproof',
162
+ version: package_json_1.version,
163
+ }, {
164
+ capabilities: {},
165
+ });
166
+ await client.connect(transport, {
167
+ timeout: this.timeoutMs,
168
+ });
169
+ this.transport = transport;
170
+ this.client = client;
171
+ }
172
+ catch (error) {
173
+ await this.resetConnection();
174
+ this.normalizeMcpError(error);
175
+ }
176
+ }
177
+ async resetConnection() {
178
+ const client = this.client;
179
+ const transport = this.transport;
180
+ this.client = undefined;
181
+ this.transport = undefined;
182
+ if (transport) {
183
+ try {
184
+ await transport.close();
185
+ }
186
+ catch {
187
+ // Ignore transport cleanup failures during reset.
188
+ }
189
+ }
190
+ if (client) {
191
+ try {
192
+ await client.close();
193
+ }
194
+ catch {
195
+ // Ignore client cleanup failures during reset.
196
+ }
197
+ }
198
+ }
199
+ markConnectionDirty() {
200
+ if (!this.client && !this.transport) {
201
+ return;
202
+ }
203
+ void this.resetConnection();
204
+ }
205
+ async getServerInfo() {
206
+ var _a;
207
+ await this.ensureConnected();
208
+ const serverInfo = (_a = this.client) === null || _a === void 0 ? void 0 : _a.getServerVersion();
209
+ return {
210
+ name: serverInfo === null || serverInfo === void 0 ? void 0 : serverInfo.name,
211
+ version: serverInfo === null || serverInfo === void 0 ? void 0 : serverInfo.version,
212
+ };
213
+ }
214
+ async listTools() {
215
+ for (let attempt = 0; attempt < 2; attempt += 1) {
216
+ await this.ensureConnected();
217
+ try {
218
+ const response = await this.client.listTools(undefined, {
219
+ timeout: this.timeoutMs,
220
+ });
221
+ return response.tools.map(tool => ({
222
+ name: tool.name,
223
+ title: tool.title,
224
+ description: tool.description,
225
+ }));
226
+ }
227
+ catch (error) {
228
+ if (attempt === 0 && this.isConnectionFailure(error)) {
229
+ await this.resetConnection();
230
+ continue;
231
+ }
232
+ this.normalizeMcpError(error);
233
+ }
234
+ }
235
+ return [];
236
+ }
237
+ async listAvailableTools() {
238
+ const tools = await this.listTools();
239
+ return tools.map(tool => tool.name);
240
+ }
241
+ async listResources() {
242
+ for (let attempt = 0; attempt < 2; attempt += 1) {
243
+ await this.ensureConnected();
244
+ try {
245
+ const response = await this.client.listResources(undefined, {
246
+ timeout: this.timeoutMs,
247
+ });
248
+ return response.resources.map(resource => ({
249
+ name: resource.name,
250
+ uri: resource.uri,
251
+ mimeType: resource.mimeType,
252
+ title: resource.title,
253
+ description: resource.description,
254
+ }));
255
+ }
256
+ catch (error) {
257
+ if (attempt === 0 && this.isConnectionFailure(error)) {
258
+ await this.resetConnection();
259
+ continue;
260
+ }
261
+ return [];
262
+ }
263
+ }
264
+ return [];
265
+ }
266
+ async listPrompts() {
267
+ for (let attempt = 0; attempt < 2; attempt += 1) {
268
+ await this.ensureConnected();
269
+ try {
270
+ const response = await this.client.listPrompts(undefined, {
271
+ timeout: this.timeoutMs,
272
+ });
273
+ return response.prompts.map(prompt => {
274
+ var _a, _b;
275
+ return ({
276
+ name: prompt.name,
277
+ title: prompt.title,
278
+ description: prompt.description,
279
+ argumentCount: (_b = (_a = prompt.arguments) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0,
280
+ });
281
+ });
282
+ }
283
+ catch (error) {
284
+ if (attempt === 0 && this.isConnectionFailure(error)) {
285
+ await this.resetConnection();
286
+ continue;
287
+ }
288
+ return [];
289
+ }
290
+ }
291
+ return [];
292
+ }
293
+ extractToolErrorMessage(output) {
294
+ if (!output || typeof output !== 'object') {
295
+ return 'MCP tools/call failed';
296
+ }
297
+ const candidate = output;
298
+ if (Array.isArray(candidate.content)) {
299
+ const textPart = candidate.content.find(part => (part === null || part === void 0 ? void 0 : part.type) === 'text' && typeof part.text === 'string');
300
+ if (textPart === null || textPart === void 0 ? void 0 : textPart.text) {
301
+ return textPart.text;
302
+ }
303
+ }
304
+ if (candidate.toolResult && typeof candidate.toolResult === 'string') {
305
+ return candidate.toolResult;
306
+ }
307
+ return 'MCP tools/call failed';
308
+ }
309
+ extractResourceErrorMessage(output) {
310
+ if (output instanceof Error) {
311
+ return output.message;
312
+ }
313
+ if (typeof output === 'string' && output.length > 0) {
314
+ return output;
315
+ }
316
+ if (!output || typeof output !== 'object') {
317
+ return 'MCP resources/read failed';
318
+ }
319
+ const candidate = output;
320
+ if (typeof candidate.message === 'string' && candidate.message.length > 0) {
321
+ return candidate.message;
322
+ }
323
+ if (typeof candidate.error === 'string' && candidate.error.length > 0) {
324
+ return candidate.error;
325
+ }
326
+ return 'MCP resources/read failed';
327
+ }
328
+ extractPromptErrorMessage(output) {
329
+ if (output instanceof Error) {
330
+ return output.message;
331
+ }
332
+ if (typeof output === 'string' && output.length > 0) {
333
+ return output;
334
+ }
335
+ if (!output || typeof output !== 'object') {
336
+ return 'MCP prompts/get failed';
337
+ }
338
+ const candidate = output;
339
+ if (typeof candidate.message === 'string' && candidate.message.length > 0) {
340
+ return candidate.message;
341
+ }
342
+ if (typeof candidate.error === 'string' && candidate.error.length > 0) {
343
+ return candidate.error;
344
+ }
345
+ return 'MCP prompts/get failed';
346
+ }
347
+ async invokeTool(toolCall, config) {
348
+ var _a, _b, _c;
349
+ const startedAt = Date.now();
350
+ const requestId = this.makeRequestId(toolCall.requestId);
351
+ for (let attempt = 0; attempt < 2; attempt += 1) {
352
+ await this.ensureConnected();
353
+ try {
354
+ const response = await this.client.callTool({
355
+ name: toolCall.name,
356
+ arguments: (_a = toolCall.input) !== null && _a !== void 0 ? _a : {},
357
+ _meta: toolCall.metadata,
358
+ }, undefined, {
359
+ timeout: (_c = (_b = toolCall.timeoutMs) !== null && _b !== void 0 ? _b : config === null || config === void 0 ? void 0 : config.timeout) !== null && _c !== void 0 ? _c : this.timeoutMs,
360
+ });
361
+ if (response.isError) {
362
+ return {
363
+ status: 'error',
364
+ error: this.extractToolErrorMessage(response),
365
+ requestId,
366
+ durationMs: Date.now() - startedAt,
367
+ };
368
+ }
369
+ return {
370
+ status: 'success',
371
+ output: response,
372
+ requestId,
373
+ durationMs: Date.now() - startedAt,
374
+ };
375
+ }
376
+ catch (error) {
377
+ if (attempt === 0 && this.isConnectionFailure(error)) {
378
+ await this.resetConnection();
379
+ continue;
380
+ }
381
+ this.normalizeMcpError(error);
382
+ }
383
+ }
384
+ return {
385
+ status: 'error',
386
+ error: 'MCP tools/call failed',
387
+ requestId,
388
+ durationMs: Date.now() - startedAt,
389
+ };
390
+ }
391
+ async readResource(resourceRead, config) {
392
+ var _a, _b;
393
+ const startedAt = Date.now();
394
+ const requestId = this.makeRequestId(resourceRead.requestId);
395
+ for (let attempt = 0; attempt < 2; attempt += 1) {
396
+ await this.ensureConnected();
397
+ try {
398
+ const response = await this.client.readResource({
399
+ uri: resourceRead.uri,
400
+ }, {
401
+ timeout: (_b = (_a = resourceRead.timeoutMs) !== null && _a !== void 0 ? _a : config === null || config === void 0 ? void 0 : config.timeout) !== null && _b !== void 0 ? _b : this.timeoutMs,
402
+ });
403
+ return {
404
+ status: 'success',
405
+ output: response,
406
+ requestId,
407
+ durationMs: Date.now() - startedAt,
408
+ };
409
+ }
410
+ catch (error) {
411
+ if (attempt === 0 && this.isConnectionFailure(error)) {
412
+ await this.resetConnection();
413
+ continue;
414
+ }
415
+ if (error instanceof streamableHttp_js_1.StreamableHTTPError && typeof error.code === 'number' && error.code >= 400 && error.code < 500) {
416
+ return {
417
+ status: 'error',
418
+ error: this.extractResourceErrorMessage(error.message),
419
+ requestId,
420
+ durationMs: Date.now() - startedAt,
421
+ code: error.code,
422
+ };
423
+ }
424
+ this.normalizeMcpError(error);
425
+ }
426
+ }
427
+ return {
428
+ status: 'error',
429
+ error: 'MCP resources/read failed',
430
+ requestId,
431
+ durationMs: Date.now() - startedAt,
432
+ };
433
+ }
434
+ async getPrompt(promptGet, config) {
435
+ var _a, _b;
436
+ const startedAt = Date.now();
437
+ const requestId = this.makeRequestId(promptGet.requestId);
438
+ for (let attempt = 0; attempt < 2; attempt += 1) {
439
+ await this.ensureConnected();
440
+ try {
441
+ const response = await this.client.getPrompt({
442
+ name: promptGet.name,
443
+ arguments: promptGet.arguments,
444
+ }, {
445
+ timeout: (_b = (_a = promptGet.timeoutMs) !== null && _a !== void 0 ? _a : config === null || config === void 0 ? void 0 : config.timeout) !== null && _b !== void 0 ? _b : this.timeoutMs,
446
+ });
447
+ return {
448
+ status: 'success',
449
+ output: response,
450
+ requestId,
451
+ durationMs: Date.now() - startedAt,
452
+ };
453
+ }
454
+ catch (error) {
455
+ if (attempt === 0 && this.isConnectionFailure(error)) {
456
+ await this.resetConnection();
457
+ continue;
458
+ }
459
+ if (error instanceof streamableHttp_js_1.StreamableHTTPError && typeof error.code === 'number' && error.code >= 400 && error.code < 500) {
460
+ return {
461
+ status: 'error',
462
+ error: this.extractPromptErrorMessage(error.message),
463
+ requestId,
464
+ durationMs: Date.now() - startedAt,
465
+ code: error.code,
466
+ };
467
+ }
468
+ this.normalizeMcpError(error);
469
+ }
470
+ }
471
+ return {
472
+ status: 'error',
473
+ error: 'MCP prompts/get failed',
474
+ requestId,
475
+ durationMs: Date.now() - startedAt,
476
+ };
477
+ }
478
+ async disconnect() {
479
+ const transport = this.transport;
480
+ if (!this.client && !transport) {
481
+ return;
482
+ }
483
+ try {
484
+ if (transport) {
485
+ await transport.terminateSession();
486
+ }
487
+ }
488
+ catch (error) {
489
+ if (!(error instanceof streamableHttp_js_1.StreamableHTTPError && error.code === 405)) {
490
+ // No-op on disconnect failures.
491
+ }
492
+ }
493
+ await this.resetConnection();
494
+ }
495
+ async connect() {
496
+ return;
497
+ }
498
+ }
499
+ exports.McpTestClient = McpTestClient;
500
+ //# sourceMappingURL=mcpTestClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpTestClient.js","sourceRoot":"","sources":["../src/mcpTestClient.ts"],"names":[],"mappings":";;;AAAA,6DAAwD;AACxD,0FAAsH;AACtH,kDAA0D;AAe1D,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,cAAc;IACd,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,aAAa;CACd,CAAC,CAAC;AAMH,MAAa,aAAa;IASxB,YAAY,OAA6B;;QAFjC,mBAAc,GAAG,CAAC,CAAC;QAGzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,MAAA,OAAO,CAAC,SAAS,mCAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAEtB,MAAM,CAAC,OAAO,CAAC,MAAA,OAAO,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;YAC7D,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;gBACnD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC9B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,cAAc;QACZ,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,IAA4B;QACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QACtC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,aAAa,CAAC,SAAkB;QACtC,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,YAAY;QAClB,OAAO;YACL,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,IAAI,CAAC,WAAW;YACnB,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,qCAAqC;SAC9C,CAAC;IACJ,CAAC;IAEO,6BAA6B,CAAC,KAAc;QAClD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAC5C,OAAO,KAAK,CAAC,OAAO,CAAC;QACvB,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEO,mBAAmB,CAAC,KAAc;;QACxC,IAAI,KAAK,YAAY,uCAAmB,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAChG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,KAA6D,CAAC;YAC5E,IAAI,KAAK,CAAC,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACnD,MAAM,aAAa,GAAG,KAAK,CAAC,KAA4C,CAAC;gBACzE,IAAI,aAAa,CAAC,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtE,OAAO,IAAI,CAAC;gBACd,CAAC;gBAED,MAAM,YAAY,GAAG,MAAM,CAAC,MAAA,aAAa,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACvE,IACE,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;oBACrC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAClC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAClC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAChC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC;oBACvC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAChC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EACjC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;YACxE,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC7B,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,KAAmD,CAAC;QACrE,IAAI,QAAQ,CAAC,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAA4C,CAAC;YAC5E,IAAI,aAAa,CAAC,IAAI,IAAI,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtE,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,YAAY,GAAG,MAAM,CAAC,MAAA,aAAa,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACvE,IACE,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;gBACrC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAClC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAChC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBACvC,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAChC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EACjC,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC7B,CAAC;IACJ,CAAC;IAEO,iBAAiB,CAAC,KAAc;QACtC,IAAI,KAAK,YAAY,uCAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CACb,iBAAiB,IAAI,CAAC,OAAO,uCAAuC;gBAClE,kGAAkG,CACrG,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,CAAC,OAAO,0DAA0D,MAAM,EAAE,CACrH,CAAC;QACJ,CAAC;QAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,iDAA6B,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACzE,WAAW,EAAE;oBACX,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;iBAC7B;aACF,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,IAAI,eAAM,CACvB;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,sBAAc;aACxB,EACD;gBACE,YAAY,EAAE,EAAE;aACjB,CACF,CAAC;YAEF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;gBAC9B,OAAO,EAAE,IAAI,CAAC,SAAS;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAC7B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;YAC1B,CAAC;YAAC,MAAM,CAAC;gBACP,kDAAkD;YACpD,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAEO,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,aAAa;;QACjB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,MAAM,0CAAE,gBAAgB,EAAE,CAAC;QAEnD,OAAO;YACL,IAAI,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI;YACtB,OAAO,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO;SAC7B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,SAAS,EAAE;oBACvD,OAAO,EAAE,IAAI,CAAC,SAAS;iBACxB,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjC,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,WAAW,EAAE,IAAI,CAAC,WAAW;iBAC9B,CAAC,CAAC,CAAC;YACN,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7B,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAO,CAAC,aAAa,CAAC,SAAS,EAAE;oBAC3D,OAAO,EAAE,IAAI,CAAC,SAAS;iBACxB,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBACzC,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;iBAClC,CAAC,CAAC,CAAC;YACN,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7B,SAAS;gBACX,CAAC;gBAED,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAO,CAAC,WAAW,CAAC,SAAS,EAAE;oBACzD,OAAO,EAAE,IAAI,CAAC,SAAS;iBACxB,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;;oBAAC,OAAA,CAAC;wBACrC,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;wBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;wBAC/B,aAAa,EAAE,MAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,MAAM,mCAAI,CAAC;qBAC7C,CAAC,CAAA;iBAAA,CAAC,CAAC;YACN,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7B,SAAS;gBACX,CAAC;gBAED,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,uBAAuB,CAAC,MAAe;QAC7C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,uBAAuB,CAAC;QACjC,CAAC;QAED,MAAM,SAAS,GAAG,MAGjB,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;YACxG,IAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAC;gBACnB,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACrE,OAAO,SAAS,CAAC,UAAU,CAAC;QAC9B,CAAC;QAED,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEO,2BAA2B,CAAC,MAAe;QACjD,IAAI,MAAM,YAAY,KAAK,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,2BAA2B,CAAC;QACrC,CAAC;QAED,MAAM,SAAS,GAAG,MAAgD,CAAC;QACnE,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,OAAO,SAAS,CAAC,OAAO,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,CAAC;QAED,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAEO,yBAAyB,CAAC,MAAe;QAC/C,IAAI,MAAM,YAAY,KAAK,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,CAAC;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,wBAAwB,CAAC;QAClC,CAAC;QAED,MAAM,SAAS,GAAG,MAAgD,CAAC;QACnE,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1E,OAAO,SAAS,CAAC,OAAO,CAAC;QAC3B,CAAC;QAED,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,OAAO,SAAS,CAAC,KAAK,CAAC;QACzB,CAAC;QAED,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAqB,EAAE,MAAyB;;QAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAO,CAAC,QAAQ,CAC1C;oBACE,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,SAAS,EAAE,MAAA,QAAQ,CAAC,KAAK,mCAAI,EAAE;oBAC/B,KAAK,EAAE,QAAQ,CAAC,QAAQ;iBACzB,EACD,SAAS,EACT;oBACE,OAAO,EAAE,MAAA,MAAA,QAAQ,CAAC,SAAS,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,IAAI,CAAC,SAAS;iBACjE,CACF,CAAC;gBAEF,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;oBACrB,OAAO;wBACL,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;wBAC7C,SAAS;wBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;qBACnC,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,QAAQ;oBAChB,SAAS;oBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7B,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,uBAAuB;YAC9B,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAA6B,EAAE,MAAyB;;QACzE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE7D,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAO,CAAC,YAAY,CAC9C;oBACE,GAAG,EAAE,YAAY,CAAC,GAAG;iBACtB,EACD;oBACE,OAAO,EAAE,MAAA,MAAA,YAAY,CAAC,SAAS,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,IAAI,CAAC,SAAS;iBACrE,CACF,CAAC;gBAEF,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,QAAQ;oBAChB,SAAS;oBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7B,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,YAAY,uCAAmB,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;oBACpH,OAAO;wBACL,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,OAAO,CAAC;wBACtD,SAAS;wBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;wBAClC,IAAI,EAAE,KAAK,CAAC,IAAI;qBACjB,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,2BAA2B;YAClC,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAuB,EAAE,MAAyB;;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE1D,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAO,CAAC,SAAS,CAC3C;oBACE,IAAI,EAAE,SAAS,CAAC,IAAI;oBACpB,SAAS,EAAE,SAAS,CAAC,SAAS;iBAC/B,EACD;oBACE,OAAO,EAAE,MAAA,MAAA,SAAS,CAAC,SAAS,mCAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,mCAAI,IAAI,CAAC,SAAS;iBAClE,CACF,CAAC;gBAEF,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,QAAQ;oBAChB,SAAS;oBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;iBACnC,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC7B,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,YAAY,uCAAmB,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;oBACpH,OAAO;wBACL,MAAM,EAAE,OAAO;wBACf,KAAK,EAAE,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC;wBACpD,SAAS;wBACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;wBAClC,IAAI,EAAE,KAAK,CAAC,IAAI;qBACjB,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,OAAO;YACL,MAAM,EAAE,OAAO;YACf,KAAK,EAAE,wBAAwB;YAC/B,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,KAAK,YAAY,uCAAmB,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBAClE,gCAAgC;YAClC,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO;IACT,CAAC;CACF;AAnlBD,sCAmlBC"}
@@ -0,0 +1,8 @@
1
+ import { McpProtocolValidationResult } from './types';
2
+ export declare function validateMcpToolCall(call: unknown): McpProtocolValidationResult;
3
+ export declare function validateMcpToolResult(result: unknown): McpProtocolValidationResult;
4
+ export declare function validateMcpResourceRead(read: unknown): McpProtocolValidationResult;
5
+ export declare function validateMcpResourceResult(result: unknown): McpProtocolValidationResult;
6
+ export declare function validateMcpPromptGet(get: unknown): McpProtocolValidationResult;
7
+ export declare function validateMcpPromptResult(result: unknown): McpProtocolValidationResult;
8
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgG,2BAA2B,EAAC,MAAM,SAAS,CAAC;AAEnJ,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,2BAA2B,CA+B9E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,2BAA2B,CAqBlF;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,2BAA2B,CA0BlF;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,OAAO,GAAG,2BAA2B,CAqBtF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,2BAA2B,CA8B9E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,2BAA2B,CAqBpF"}