@slbdn/mcp-tester 1.0.2 → 1.2.0

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.
@@ -2,15 +2,46 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
2
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
3
3
  // Note: Server process is managed by StdioClientTransport, no manual spawn needed
4
4
  import { ListToolsResultSchema, CallToolResultSchema, ListResourcesResultSchema, ReadResourceResultSchema, ListPromptsResultSchema, GetPromptResultSchema, ElicitRequestSchema, LoggingMessageNotificationSchema, ResourceListChangedNotificationSchema, CreateMessageResultSchema, } from '@modelcontextprotocol/sdk/types.js';
5
- import { ConsoleLogger, NoOpLogger } from '../utils/logger.js';
5
+ import { ConsoleLogger, NoOpLogger, startTimer, prettyPrint, } from '../utils/logger.js';
6
6
  import { mergeEnvironments } from '../utils/env.js';
7
- import { MCPClientError, MCPNotStartedError, MCPAlreadyStartedError, MCPServerError, } from '../utils/errors.js';
7
+ import { MCPClientError, MCPNotStartedError, MCPAlreadyStartedError, MCPConnectionError, MCPTimeoutError, MCPServerError, } from '../utils/errors.js';
8
8
  const DEFAULT_RETRY_OPTIONS = {
9
9
  maxAttempts: 3,
10
10
  baseDelay: 1000,
11
11
  maxDelay: 10000,
12
12
  backoffMultiplier: 2,
13
13
  };
14
+ /**
15
+ * MCPClient is a wrapper around the Model Context Protocol SDK client.
16
+ *
17
+ * It provides a simplified API for testing MCP servers in CI/CD environments.
18
+ * The client manages the lifecycle of the server process and provides methods
19
+ * for calling tools, reading resources, and managing prompts.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const client = new MCPClient({
24
+ * name: 'my-test-client',
25
+ * version: '1.0.0',
26
+ * timeout: 30000,
27
+ * });
28
+ *
29
+ * await client.start({
30
+ * command: 'node',
31
+ * args: ['./server.js'],
32
+ * });
33
+ *
34
+ * const tools = await client.listTools();
35
+ * const result = await client.callTool({
36
+ * name: 'my-tool',
37
+ * arguments: { param: 'value' },
38
+ * });
39
+ *
40
+ * await client.stop();
41
+ * ```
42
+ *
43
+ * @see {@link https://spec.modelcontextprotocol.io | MCP Specification}
44
+ */
14
45
  export class MCPClient {
15
46
  client = null;
16
47
  transport = null;
@@ -18,6 +49,20 @@ export class MCPClient {
18
49
  notificationHandlers;
19
50
  logger;
20
51
  retryOptions;
52
+ /**
53
+ * Creates a new MCPClient instance.
54
+ *
55
+ * @param options - Configuration options for the client
56
+ * @example
57
+ * ```typescript
58
+ * const client = new MCPClient({
59
+ * name: 'test-client',
60
+ * version: '1.0.0',
61
+ * timeout: 60000,
62
+ * logLevel: 'debug',
63
+ * });
64
+ * ```
65
+ */
21
66
  constructor(options = {}) {
22
67
  this.options = {
23
68
  name: options.name || 'mcp-test-client',
@@ -40,6 +85,24 @@ export class MCPClient {
40
85
  ? new NoOpLogger()
41
86
  : new ConsoleLogger({ level: this.options.logLevel, prefix: 'MCPClient' });
42
87
  }
88
+ /**
89
+ * Starts the client and connects to the MCP server.
90
+ *
91
+ * Spawns the server process and establishes the MCP connection.
92
+ * The server process lifecycle is managed by StdioClientTransport.
93
+ *
94
+ * @param config - Server configuration including command and arguments
95
+ * @throws `MCPAlreadyStartedError` if client is already started
96
+ * @throws Error if server fails to start
97
+ * @example
98
+ * ```typescript
99
+ * await client.start({
100
+ * command: 'node',
101
+ * args: ['./server.js', '--production'],
102
+ * env: { NODE_ENV: 'production' },
103
+ * });
104
+ * ```
105
+ */
43
106
  async start(config) {
44
107
  if (this.client) {
45
108
  throw new MCPAlreadyStartedError();
@@ -47,6 +110,7 @@ export class MCPClient {
47
110
  this.logger.info(`Starting MCP client: ${this.options.name} v${this.options.version}`);
48
111
  this.logger.debug(`Server command: ${config.command}`, config.args || []);
49
112
  const mergedEnv = mergeEnvironments(process.env, config.env);
113
+ const commandStr = `${config.command}${config.args ? ' ' + config.args.join(' ') : ''}`;
50
114
  try {
51
115
  // Use StdioClientTransport to spawn the server process (single process)
52
116
  this.transport = new StdioClientTransport({
@@ -87,9 +151,23 @@ export class MCPClient {
87
151
  this.transport = null;
88
152
  }
89
153
  this.client = null;
90
- throw error;
154
+ if (error instanceof MCPClientError) {
155
+ throw error;
156
+ }
157
+ throw new MCPConnectionError(`Failed to connect to MCP server: ${error instanceof Error ? error.message : String(error)}`, commandStr);
91
158
  }
92
159
  }
160
+ /**
161
+ * Stops the client and disconnects from the MCP server.
162
+ *
163
+ * Closes the MCP connection and terminates the server process.
164
+ * Safe to call even if the client is not connected.
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * await client.stop();
169
+ * ```
170
+ */
93
171
  async stop() {
94
172
  this.logger.info('Stopping MCP client');
95
173
  if (this.client) {
@@ -128,31 +206,60 @@ export class MCPClient {
128
206
  this.logger.debug('Resource list changed notification received');
129
207
  });
130
208
  }
209
+ /**
210
+ * Lists all available tools from the MCP server.
211
+ *
212
+ * @returns Promise resolving to an array of Tool objects
213
+ * @throws `MCPNotStartedError` if client is not started
214
+ * @example
215
+ * ```typescript
216
+ * const tools = await client.listTools();
217
+ * console.log(tools.map(t => t.name)); // ['echo', 'add', 'calculate']
218
+ * ```
219
+ */
131
220
  async listTools() {
132
221
  if (!this.client) {
133
- throw new MCPNotStartedError();
222
+ throw new MCPNotStartedError('listTools');
134
223
  }
135
224
  const request = {
136
225
  method: 'tools/list',
137
226
  params: {},
138
227
  };
139
228
  if (this.options.enableProtocolLogging) {
140
- this.logger.debug('Request:', request);
229
+ this.logger.debug('Request:', prettyPrint(request));
141
230
  }
142
231
  try {
232
+ const elapsed = startTimer();
143
233
  const result = await this.withRetry(async () => this.client.request(request, ListToolsResultSchema));
144
234
  const tools = result.tools || [];
145
- this.logger.debug(`Listed ${tools.length} tools`);
235
+ this.logger.debug(`Listed ${tools.length} tools in ${elapsed()}ms`);
146
236
  return tools;
147
237
  }
148
238
  catch (error) {
149
239
  this.logger.error('Failed to list tools:', error);
150
- throw new MCPServerError(`Failed to list tools: ${error instanceof Error ? error.message : String(error)}`);
240
+ this.wrapError(error, 'List tools');
151
241
  }
152
242
  }
243
+ /**
244
+ * Calls a tool on the MCP server with optional arguments.
245
+ *
246
+ * @param options - Tool call options including name and arguments
247
+ * @returns Promise resolving to the tool result
248
+ * @throws `MCPNotStartedError` if client is not started
249
+ * @throws `MCPServerError` if the tool call fails
250
+ * @example
251
+ * ```typescript
252
+ * const result = await client.callTool({
253
+ * name: 'calculator',
254
+ * arguments: { a: 5, b: 3 },
255
+ * timeout: 10000,
256
+ * });
257
+ * console.log(result.content[0].text);
258
+ * ```
259
+ */
153
260
  async callTool(options) {
154
261
  if (!this.client) {
155
- throw new MCPNotStartedError();
262
+ throw new MCPNotStartedError('callTool');
156
263
  }
157
264
  const request = {
158
265
  method: 'tools/call',
@@ -162,44 +269,70 @@ export class MCPClient {
162
269
  },
163
270
  };
164
271
  if (this.options.enableProtocolLogging) {
165
- this.logger.debug(`Calling tool: ${options.name}`, options.arguments);
272
+ this.logger.debug(`Calling tool: ${options.name}`, prettyPrint(options.arguments));
166
273
  }
167
274
  try {
275
+ const elapsed = startTimer();
168
276
  const timeout = options.timeout ?? this.options.timeout;
169
277
  const result = await this.withRetry(async () => this.client.request(request, CallToolResultSchema, { timeout }), options.retries);
170
- this.logger.debug(`Tool ${options.name} executed successfully`);
278
+ this.logger.debug(`Tool ${options.name} executed in ${elapsed()}ms`);
171
279
  return result;
172
280
  }
173
281
  catch (error) {
174
282
  this.logger.error(`Failed to call tool ${options.name}:`, error);
175
- throw new MCPServerError(`Failed to call tool ${options.name}: ${error instanceof Error ? error.message : String(error)}`);
283
+ this.wrapError(error, `Call tool ${options.name}`, options.timeout ?? this.options.timeout);
176
284
  }
177
285
  }
286
+ /**
287
+ * Lists all available resources from the MCP server.
288
+ *
289
+ * @returns Promise resolving to an array of Resource objects
290
+ * @throws `MCPNotStartedError` if client is not started
291
+ * @example
292
+ * ```typescript
293
+ * const resources = await client.listResources();
294
+ * console.log(resources.map(r => r.uri)); // ['config://settings', 'data://users']
295
+ * ```
296
+ */
178
297
  async listResources() {
179
298
  if (!this.client) {
180
- throw new MCPNotStartedError();
299
+ throw new MCPNotStartedError('listResources');
181
300
  }
182
301
  const request = {
183
302
  method: 'resources/list',
184
303
  params: {},
185
304
  };
186
305
  if (this.options.enableProtocolLogging) {
187
- this.logger.debug('Request:', request);
306
+ this.logger.debug('Request:', prettyPrint(request));
188
307
  }
189
308
  try {
309
+ const elapsed = startTimer();
190
310
  const result = await this.withRetry(async () => this.client.request(request, ListResourcesResultSchema));
191
311
  const resources = result.resources || [];
192
- this.logger.debug(`Listed ${resources.length} resources`);
312
+ this.logger.debug(`Listed ${resources.length} resources in ${elapsed()}ms`);
193
313
  return resources;
194
314
  }
195
315
  catch (error) {
196
316
  this.logger.error('Failed to list resources:', error);
197
- throw new MCPServerError(`Failed to list resources: ${error instanceof Error ? error.message : String(error)}`);
317
+ this.wrapError(error, 'List resources');
198
318
  }
199
319
  }
320
+ /**
321
+ * Reads a specific resource by its URI.
322
+ *
323
+ * @param uri - The URI of the resource to read
324
+ * @returns Promise resolving to the resource contents
325
+ * @throws `MCPNotStartedError` if client is not started
326
+ * @throws Error if the resource is not found or cannot be read
327
+ * @example
328
+ * ```typescript
329
+ * const result = await client.readResource('config://settings');
330
+ * console.log(result.contents[0].text);
331
+ * ```
332
+ */
200
333
  async readResource(uri) {
201
334
  if (!this.client) {
202
- throw new MCPNotStartedError();
335
+ throw new MCPNotStartedError('readResource');
203
336
  }
204
337
  const request = {
205
338
  method: 'resources/read',
@@ -209,40 +342,67 @@ export class MCPClient {
209
342
  this.logger.debug(`Reading resource: ${uri}`);
210
343
  }
211
344
  try {
345
+ const elapsed = startTimer();
212
346
  const result = await this.withRetry(async () => this.client.request(request, ReadResourceResultSchema));
213
- this.logger.debug(`Resource ${uri} read successfully`);
347
+ this.logger.debug(`Resource ${uri} read in ${elapsed()}ms`);
214
348
  return result;
215
349
  }
216
350
  catch (error) {
217
351
  this.logger.error(`Failed to read resource ${uri}:`, error);
218
- throw new MCPServerError(`Failed to read resource ${uri}: ${error instanceof Error ? error.message : String(error)}`);
352
+ this.wrapError(error, `Read resource ${uri}`);
219
353
  }
220
354
  }
355
+ /**
356
+ * Lists all available prompts from the MCP server.
357
+ *
358
+ * @returns Promise resolving to an array of Prompt objects
359
+ * @throws `MCPNotStartedError` if client is not started
360
+ * @example
361
+ * ```typescript
362
+ * const prompts = await client.listPrompts();
363
+ * console.log(prompts.map(p => p.name)); // ['greet', 'summarize']
364
+ * ```
365
+ */
221
366
  async listPrompts() {
222
367
  if (!this.client) {
223
- throw new MCPNotStartedError();
368
+ throw new MCPNotStartedError('listPrompts');
224
369
  }
225
370
  const request = {
226
371
  method: 'prompts/list',
227
372
  params: {},
228
373
  };
229
374
  if (this.options.enableProtocolLogging) {
230
- this.logger.debug('Request:', request);
375
+ this.logger.debug('Request:', prettyPrint(request));
231
376
  }
232
377
  try {
378
+ const elapsed = startTimer();
233
379
  const result = await this.withRetry(async () => this.client.request(request, ListPromptsResultSchema));
234
380
  const prompts = result.prompts || [];
235
- this.logger.debug(`Listed ${prompts.length} prompts`);
381
+ this.logger.debug(`Listed ${prompts.length} prompts in ${elapsed()}ms`);
236
382
  return prompts;
237
383
  }
238
384
  catch (error) {
239
385
  this.logger.error('Failed to list prompts:', error);
240
- throw new MCPServerError(`Failed to list prompts: ${error instanceof Error ? error.message : String(error)}`);
386
+ this.wrapError(error, 'List prompts');
241
387
  }
242
388
  }
389
+ /**
390
+ * Gets a prompt template from the MCP server with optional arguments.
391
+ *
392
+ * @param name - Name of the prompt to retrieve
393
+ * @param args - Optional arguments for the prompt template
394
+ * @returns Promise resolving to the prompt messages
395
+ * @throws `MCPNotStartedError` if client is not started
396
+ * @throws Error if the prompt is not found
397
+ * @example
398
+ * ```typescript
399
+ * const messages = await client.getPrompt('greet', { name: 'Alice' });
400
+ * console.log(messages[0].content.text); // 'Hello Alice!'
401
+ * ```
402
+ */
243
403
  async getPrompt(name, args) {
244
404
  if (!this.client) {
245
- throw new MCPNotStartedError();
405
+ throw new MCPNotStartedError('getPrompt');
246
406
  }
247
407
  const request = {
248
408
  method: 'prompts/get',
@@ -252,21 +412,38 @@ export class MCPClient {
252
412
  },
253
413
  };
254
414
  if (this.options.enableProtocolLogging) {
255
- this.logger.debug(`Getting prompt: ${name}`, args);
415
+ this.logger.debug(`Getting prompt: ${name}`, prettyPrint(args));
256
416
  }
257
417
  try {
418
+ const elapsed = startTimer();
258
419
  const result = await this.withRetry(async () => this.client.request(request, GetPromptResultSchema));
259
- this.logger.debug(`Prompt ${name} retrieved successfully`);
420
+ this.logger.debug(`Prompt ${name} retrieved in ${elapsed()}ms`);
260
421
  return result;
261
422
  }
262
423
  catch (error) {
263
424
  this.logger.error(`Failed to get prompt ${name}:`, error);
264
- throw new MCPServerError(`Failed to get prompt ${name}: ${error instanceof Error ? error.message : String(error)}`);
425
+ this.wrapError(error, `Get prompt ${name}`);
265
426
  }
266
427
  }
428
+ /**
429
+ * Requests LLM sampling from the MCP server.
430
+ *
431
+ * @param request - Sampling request parameters including messages
432
+ * @returns Promise resolving to the sampling result
433
+ * @throws `MCPNotStartedError` if client is not started
434
+ * @throws Error if sampling is not supported or fails
435
+ * @example
436
+ * ```typescript
437
+ * const result = await client.requestSampling({
438
+ * messages: [{ role: 'user', content: { type: 'text', text: 'Hello' } }],
439
+ * maxTokens: 100,
440
+ * });
441
+ * console.log(result.content.text);
442
+ * ```
443
+ */
267
444
  async requestSampling(request) {
268
445
  if (!this.client) {
269
- throw new MCPNotStartedError();
446
+ throw new MCPNotStartedError('requestSampling');
270
447
  }
271
448
  if (this.options.enableProtocolLogging) {
272
449
  this.logger.debug('Sampling request:', request);
@@ -281,9 +458,24 @@ export class MCPClient {
281
458
  }
282
459
  catch (error) {
283
460
  this.logger.error('Failed to request sampling:', error);
284
- throw new MCPServerError(`Failed to request sampling: ${error instanceof Error ? error.message : String(error)}`);
461
+ this.wrapError(error, 'Request sampling');
285
462
  }
286
463
  }
464
+ /**
465
+ * Configures a handler for server elicitation requests.
466
+ *
467
+ * Elicitation requests are sent when the server needs user input.
468
+ *
469
+ * @param handler - Async function that handles elicitation requests
470
+ * @throws `MCPNotStartedError` if client is not started
471
+ * @example
472
+ * ```typescript
473
+ * await client.setElicitationHandler(async (request) => {
474
+ * console.log('Elicitation request:', request.params);
475
+ * return { action: 'accept', content: { userInput: 'test' } };
476
+ * });
477
+ * ```
478
+ */
287
479
  async setElicitationHandler(handler) {
288
480
  if (!this.client) {
289
481
  return;
@@ -291,20 +483,70 @@ export class MCPClient {
291
483
  this.client.setRequestHandler(ElicitRequestSchema, handler);
292
484
  this.logger.debug('Elicitation handler configured');
293
485
  }
486
+ /**
487
+ * Configures handlers for server-initiated notifications.
488
+ *
489
+ * @param handlers - Object containing notification handlers
490
+ * @example
491
+ * ```typescript
492
+ * client.setNotificationHandlers({
493
+ * onLoggingMessage: (level, data) => {
494
+ * console.log(`[${level}] ${data}`);
495
+ * },
496
+ * onResourceListChanged: () => {
497
+ * console.log('Resources updated');
498
+ * },
499
+ * });
500
+ * ```
501
+ */
294
502
  setNotificationHandlers(handlers) {
295
503
  this.notificationHandlers = handlers;
296
504
  this.setupNotificationHandlers();
297
505
  this.logger.debug('Notification handlers updated');
298
506
  }
507
+ /**
508
+ * Checks if the client is currently connected to an MCP server.
509
+ *
510
+ * @returns true if connected, false otherwise
511
+ * @example
512
+ * ```typescript
513
+ * if (client.isConnected()) {
514
+ * console.log('Client is connected');
515
+ * }
516
+ * ```
517
+ */
299
518
  isConnected() {
300
519
  return this.client !== null && this.transport !== null;
301
520
  }
521
+ /**
522
+ * Sets the logging level for the client.
523
+ *
524
+ * @param level - The log level to set
525
+ * @example
526
+ * ```typescript
527
+ * client.setLogLevel('debug');
528
+ * ```
529
+ */
302
530
  setLogLevel(level) {
303
531
  this.options.logLevel = level;
304
532
  this.logger =
305
533
  level === 'none' ? new NoOpLogger() : new ConsoleLogger({ level, prefix: 'MCPClient' });
306
534
  this.logger.debug(`Log level changed to ${level}`);
307
535
  }
536
+ wrapError(error, operation, timeout) {
537
+ if (error instanceof MCPClientError) {
538
+ throw error;
539
+ }
540
+ const message = error instanceof Error ? error.message : String(error);
541
+ if (message.toLowerCase().includes('timeout') || message.toLowerCase().includes('timed out')) {
542
+ const t = timeout ?? this.options.timeout ?? 30000;
543
+ throw new MCPTimeoutError(`${operation} timed out after ${t}ms`, t, operation);
544
+ }
545
+ // Extract MCP error code if present (e.g., "-32602" or "-32603")
546
+ const codeMatch = message.match(/code[:\s]+(-?\d+)/);
547
+ const serverCode = codeMatch ? parseInt(codeMatch[1], 10) : undefined;
548
+ throw new MCPServerError(`${operation} failed: ${message}`, operation, serverCode);
549
+ }
308
550
  async withRetry(operation, retries) {
309
551
  const maxAttempts = retries !== undefined ? retries + 1 : this.retryOptions.maxAttempts;
310
552
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
@@ -1 +1 @@
1
- {"version":3,"file":"MCPClient.js","sourceRoot":"","sources":["../../src/client/MCPClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,kFAAkF;AAClF,OAAO,EAEL,qBAAqB,EAErB,oBAAoB,EAEpB,yBAAyB,EAEzB,wBAAwB,EAExB,uBAAuB,EAEvB,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,qCAAqC,EAErC,yBAAyB,GAQ1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAoB,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,oBAAoB,CAAC;AAuC5B,MAAM,qBAAqB,GAAiB;IAC1C,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,KAAK;IACf,iBAAiB,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,OAAO,SAAS;IACZ,MAAM,GAAkB,IAAI,CAAC;IAC7B,SAAS,GAAgC,IAAI,CAAC;IAC9C,OAAO,CAAmB;IAC1B,oBAAoB,CAAsB;IAC1C,MAAM,CAAS;IACf,YAAY,CAAe;IAEnC,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iBAAiB;YACvC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;YACpC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,KAAK;YAC7D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC;YAC7B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;YACtC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,GAAG;SAC1C,CAAC;QAEF,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,qBAAqB;YACxB,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,qBAAqB,CAAC,SAAS;SACtE,CAAC;QAEF,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,MAAM;gBAC9B,CAAC,CAAC,IAAI,UAAU,EAAE;gBAClB,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAuB;QACjC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,sBAAsB,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAE1E,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,wEAAwE;YACxE,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC;gBACxC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,iBAAiB;gBAC5C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO;aACzC,EACD;gBACE,YAAY,EAAE;oBACZ,KAAK,EAAE;wBACL,WAAW,EAAE,IAAI;qBAClB;oBACD,QAAQ,EAAE,EAAE;oBACZ,WAAW,EAAE;wBACX,IAAI,EAAE,EAAE;qBACT;iBACF;aACF,CACF,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC,CAAC;YAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAEjC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACzC,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,gCAAgC,EAAE,CAAC,YAAY,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;gBAC/C,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CACxC,YAAY,CAAC,MAAM,CAAC,KAAK,EACzB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CACjC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACvF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnF,IAAI,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;gBACpD,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;YACpD,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAqB;YAChC,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,CACrD,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;YAClD,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,IAAI,cAAc,CACtB,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAoB;YAC/B,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;aACnC;SACF,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CACjC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,CAAC,EAC5E,OAAO,CAAC,OAAO,CAChB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,OAAO,CAAC,IAAI,wBAAwB,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,MAAM,IAAI,cAAc,CACtB,uBAAuB,OAAO,CAAC,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACjG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAyB;YACpC,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CACzD,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC;YAC1D,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,IAAI,cAAc,CACtB,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAwB;YACnC,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,EAAE,GAAG,EAAE;SAChB,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,wBAAwB,CAAC,CACxD,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,oBAAoB,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5D,MAAM,IAAI,cAAc,CACtB,2BAA2B,GAAG,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAuB;YAClC,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC,CACvD,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YACtD,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,IAAI,cAAc,CACtB,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAA6B;QACzD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAqB;YAChC,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE;gBACN,IAAI;gBACJ,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB;SACF,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,CACrD,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,yBAAyB,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,IAAI,cAAc,CACtB,wBAAwB,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC1F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,OAAmC;QACvD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACjC,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAClB;gBACE,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,OAAO;aAChB,EACD,yBAAyB,CAC1B,CACF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,IAAI,cAAc,CACtB,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,OAE6F;QAE7F,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACtD,CAAC;IAED,uBAAuB,CAAC,QAA6B;QACnD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;QACrC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IACzD,CAAC;IAED,WAAW,CAAC,KAAe;QACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,MAAM;YACT,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,SAAS,CAAI,SAA2B,EAAE,OAAgB;QACtE,MAAM,WAAW,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAExF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,OAAO,MAAM,SAAS,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC5B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,GAAG,CAAC,CAAC,EACxF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAC3B,CAAC;gBAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,wBAAwB,KAAK,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,IAAI,cAAc,CAAC,sCAAsC,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
1
+ {"version":3,"file":"MCPClient.js","sourceRoot":"","sources":["../../src/client/MCPClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,kFAAkF;AAClF,OAAO,EAEL,qBAAqB,EAErB,oBAAoB,EAEpB,yBAAyB,EAEzB,wBAAwB,EAExB,uBAAuB,EAEvB,qBAAqB,EACrB,mBAAmB,EACnB,gCAAgC,EAChC,qCAAqC,EAErC,yBAAyB,GAQ1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAGL,aAAa,EACb,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,cAAc,GACf,MAAM,oBAAoB,CAAC;AAwI5B,MAAM,qBAAqB,GAAiB;IAC1C,WAAW,EAAE,CAAC;IACd,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,KAAK;IACf,iBAAiB,EAAE,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAO,SAAS;IACZ,MAAM,GAAkB,IAAI,CAAC;IAC7B,SAAS,GAAgC,IAAI,CAAC;IAC9C,OAAO,CAAmB;IAC1B,oBAAoB,CAAsB;IAC1C,MAAM,CAAS;IACf,YAAY,CAAe;IAEnC;;;;;;;;;;;;;OAaG;IACH,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,OAAO,GAAG;YACb,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iBAAiB;YACvC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,MAAM;YACpC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,KAAK;YAC7D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC;YAC7B,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;YACtC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,GAAG;SAC1C,CAAC;QAEF,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,qBAAqB;YACxB,WAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,qBAAqB,CAAC,SAAS;SACtE,CAAC;QAEF,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,MAAM;gBAC9B,CAAC,CAAC,IAAI,UAAU,EAAE;gBAClB,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,KAAK,CAAC,MAAuB;QACjC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,sBAAsB,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAE1E,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAExF,IAAI,CAAC;YACH,wEAAwE;YACxE,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC;gBACxC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,GAAG,EAAE,SAAS;aACf,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,iBAAiB;gBAC5C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO;aACzC,EACD;gBACE,YAAY,EAAE;oBACZ,KAAK,EAAE;wBACL,WAAW,EAAE,IAAI;qBAClB;oBACD,QAAQ,EAAE,EAAE;oBACZ,WAAW,EAAE;wBACX,IAAI,EAAE,EAAE;qBACT;iBACF;aACF,CACF,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;gBAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC,CAAC;YAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAEjC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,wBAAwB;gBAC1B,CAAC;gBACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;gBACpC,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,kBAAkB,CAC1B,oCAAoC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC5F,UAAU,CACX,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACzC,CAAC;IAEO,yBAAyB;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,gCAAgC,EAAE,CAAC,YAAY,EAAE,EAAE;YACpF,IAAI,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,CAAC;gBAC/C,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CACxC,YAAY,CAAC,MAAM,CAAC,KAAK,EACzB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CACjC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACvF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnF,IAAI,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;gBACpD,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,CAAC;YACpD,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,GAAqB;YAChC,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,CACrD,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,MAAM,aAAa,OAAO,EAAE,IAAI,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,OAAO,GAAoB;YAC/B,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE;gBACN,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;aACnC;SACF,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CACjC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,CAAC,EAC5E,OAAO,CAAC,OAAO,CAChB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,OAAO,CAAC,IAAI,gBAAgB,OAAO,EAAE,IAAI,CAAC,CAAC;YACrE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,CAAC,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,OAAO,GAAyB;YACpC,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,yBAAyB,CAAC,CACzD,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,SAAS,CAAC,MAAM,iBAAiB,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5E,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,OAAO,GAAwB;YACnC,MAAM,EAAE,gBAAgB;YACxB,MAAM,EAAE,EAAE,GAAG,EAAE;SAChB,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,wBAAwB,CAAC,CACxD,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,YAAY,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5D,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,OAAO,GAAuB;YAClC,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,EAAE;SACX,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,uBAAuB,CAAC,CACvD,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,CAAC,MAAM,eAAe,OAAO,EAAE,IAAI,CAAC,CAAC;YACxE,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAA6B;QACzD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,GAAqB;YAChC,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE;gBACN,IAAI;gBACJ,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB;SACF,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,CACrD,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,iBAAiB,OAAO,EAAE,IAAI,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,eAAe,CAAC,OAAmC;QACvD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAC7C,IAAI,CAAC,MAAO,CAAC,OAAO,CAClB;gBACE,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,OAAO;aAChB,EACD,yBAAyB,CAC1B,CACF,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACxD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,qBAAqB,CACzB,OAE6F;QAE7F,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,uBAAuB,CAAC,QAA6B;QACnD,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;QACrC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACrD,CAAC;IAED;;;;;;;;;;OAUG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IACzD,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW,CAAC,KAAe;QACzB,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,MAAM;YACT,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IAEO,SAAS,CAAC,KAAc,EAAE,SAAiB,EAAE,OAAgB;QACnE,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;YACpC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7F,MAAM,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;YACnD,MAAM,IAAI,eAAe,CAAC,GAAG,SAAS,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QACjF,CAAC;QACD,iEAAiE;QACjE,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,MAAM,IAAI,cAAc,CAAC,GAAG,SAAS,YAAY,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACrF,CAAC;IAEO,KAAK,CAAC,SAAS,CAAI,SAA2B,EAAE,OAAgB;QACtE,MAAM,WAAW,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAExF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC;gBACH,OAAO,MAAM,SAAS,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC5B,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,GAAG,CAAC,CAAC,EACxF,IAAI,CAAC,YAAY,CAAC,QAAQ,CAC3B,CAAC;gBAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,wBAAwB,KAAK,OAAO,EAAE,KAAK,CAAC,CAAC;gBAChF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,IAAI,cAAc,CAAC,sCAAsC,CAAC,CAAC;IACnE,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,38 @@
1
- export * from './client/index.js';
1
+ /**
2
+ * MCP Tester - A minimal MCP client implementation for CI/CD testing.
3
+ *
4
+ * @packageDocumentation
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { MCPClient } from '@slbdn/mcp-tester';
9
+ *
10
+ * const client = new MCPClient({
11
+ * name: 'test-client',
12
+ * version: '1.0.0',
13
+ * });
14
+ *
15
+ * await client.start({
16
+ * command: 'node',
17
+ * args: ['./server.js'],
18
+ * });
19
+ *
20
+ * const tools = await client.listTools();
21
+ * const result = await client.callTool({
22
+ * name: 'my-tool',
23
+ * arguments: { input: 'test' },
24
+ * });
25
+ *
26
+ * await client.stop();
27
+ * ```
28
+ */
29
+ export { MCPClient, type MCPServerConfig, type MCPClientOptions, type ToolCallOptions, type NotificationHandler, type RetryOptions, } from './client/index.js';
2
30
  export { MCPClientError, MCPTimeoutError, MCPConnectionError, MCPNotStartedError, MCPAlreadyStartedError, MCPServerError, } from './utils/errors.js';
3
31
  export type { Logger, LoggerOptions, LogLevel } from './utils/logger.js';
32
+ export { startTimer, prettyPrint } from './utils/logger.js';
33
+ export { maskSecrets, maskValue, addSecretPattern, resetSecretPatterns, getSecretPatterns, getSensitiveEnvKeys, } from './utils/masking.js';
34
+ export type { SecretPattern } from './utils/masking.js';
35
+ export * as assert from './assert.js';
36
+ export { AssertionError } from './assert.js';
37
+ export { toHaveTool, toHaveResource, toHavePrompt, toHaveToolWithSchema, toHaveToolCount, toHaveResourceCount, toHavePromptCount, toHaveResourceByName, toHavePromptWithArgs, toReturnText, toReturnTextContaining, toReturnError, toReturnOk, toReturnJson, toReturnContentCount, toReturnImage, toReturnResourceText, toReturnResourceTextContaining, toReturnPromptTextContaining, toReturnPromptMessageCount, setupJestMatchers, setupVitestMatchers, setupCustomMatchers, assertToolText, assertToolTextContains, assertHasTool, assertHasResource, assertHasPrompt, } from './matchers.js';
4
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,UAAU,EACV,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,eAAe,GAChB,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,36 @@
1
- export * from './client/index.js';
1
+ /**
2
+ * MCP Tester - A minimal MCP client implementation for CI/CD testing.
3
+ *
4
+ * @packageDocumentation
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { MCPClient } from '@slbdn/mcp-tester';
9
+ *
10
+ * const client = new MCPClient({
11
+ * name: 'test-client',
12
+ * version: '1.0.0',
13
+ * });
14
+ *
15
+ * await client.start({
16
+ * command: 'node',
17
+ * args: ['./server.js'],
18
+ * });
19
+ *
20
+ * const tools = await client.listTools();
21
+ * const result = await client.callTool({
22
+ * name: 'my-tool',
23
+ * arguments: { input: 'test' },
24
+ * });
25
+ *
26
+ * await client.stop();
27
+ * ```
28
+ */
29
+ export { MCPClient, } from './client/index.js';
2
30
  export { MCPClientError, MCPTimeoutError, MCPConnectionError, MCPNotStartedError, MCPAlreadyStartedError, MCPServerError, } from './utils/errors.js';
31
+ export { startTimer, prettyPrint } from './utils/logger.js';
32
+ export { maskSecrets, maskValue, addSecretPattern, resetSecretPatterns, getSecretPatterns, getSensitiveEnvKeys, } from './utils/masking.js';
33
+ export * as assert from './assert.js';
34
+ export { AssertionError } from './assert.js';
35
+ export { toHaveTool, toHaveResource, toHavePrompt, toHaveToolWithSchema, toHaveToolCount, toHaveResourceCount, toHavePromptCount, toHaveResourceByName, toHavePromptWithArgs, toReturnText, toReturnTextContaining, toReturnError, toReturnOk, toReturnJson, toReturnContentCount, toReturnImage, toReturnResourceText, toReturnResourceTextContaining, toReturnPromptTextContaining, toReturnPromptMessageCount, setupJestMatchers, setupVitestMatchers, setupCustomMatchers, assertToolText, assertToolTextContains, assertHasTool, assertHasResource, assertHasPrompt, } from './matchers.js';
3
36
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,SAAS,GAMV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,UAAU,EACV,cAAc,EACd,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,0BAA0B,EAC1B,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,iBAAiB,EACjB,eAAe,GAChB,MAAM,eAAe,CAAC"}