@k08200/mcp-probe 1.5.0 → 1.8.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.
Files changed (50) hide show
  1. package/README.md +86 -517
  2. package/dist/checker.d.ts.map +1 -1
  3. package/dist/checker.js +54 -56
  4. package/dist/checker.js.map +1 -1
  5. package/dist/cli.js +42 -10
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +30 -1
  9. package/dist/config.js.map +1 -1
  10. package/dist/doctor.d.ts +5 -0
  11. package/dist/doctor.d.ts.map +1 -1
  12. package/dist/doctor.js +270 -29
  13. package/dist/doctor.js.map +1 -1
  14. package/dist/exit-code.d.ts +3 -0
  15. package/dist/exit-code.d.ts.map +1 -0
  16. package/dist/exit-code.js +8 -0
  17. package/dist/exit-code.js.map +1 -0
  18. package/dist/init.d.ts.map +1 -1
  19. package/dist/init.js +1 -118
  20. package/dist/init.js.map +1 -1
  21. package/dist/issues.d.ts.map +1 -1
  22. package/dist/issues.js +33 -14
  23. package/dist/issues.js.map +1 -1
  24. package/dist/protocols/mcp-client.d.ts.map +1 -1
  25. package/dist/protocols/mcp-client.js +36 -17
  26. package/dist/protocols/mcp-client.js.map +1 -1
  27. package/dist/scaffold.d.ts +17 -0
  28. package/dist/scaffold.d.ts.map +1 -0
  29. package/dist/scaffold.js +145 -0
  30. package/dist/scaffold.js.map +1 -0
  31. package/dist/sidecar.d.ts +6 -0
  32. package/dist/sidecar.d.ts.map +1 -0
  33. package/dist/sidecar.js +76 -0
  34. package/dist/sidecar.js.map +1 -0
  35. package/dist/types.d.ts +7 -1
  36. package/dist/types.d.ts.map +1 -1
  37. package/dist/version.d.ts +2 -0
  38. package/dist/version.d.ts.map +1 -0
  39. package/dist/version.js +5 -0
  40. package/dist/version.js.map +1 -0
  41. package/examples/fixtures/stdio-mcp-server.js +68 -0
  42. package/examples/github-actions/fleet.yml +1 -0
  43. package/examples/github-actions/remote-server.yml +1 -0
  44. package/examples/github-actions/single-server.yml +1 -0
  45. package/examples/self-check.config.json +3 -1
  46. package/examples/self-check.strict.config.json +16 -0
  47. package/examples/self-check.strict.tools.json +29 -0
  48. package/package.json +1 -1
  49. package/schemas/mcp-probe.config.schema.json +15 -0
  50. package/schemas/mcp-probe.sidecar.schema.json +1 -1
package/dist/issues.js CHANGED
@@ -1,4 +1,9 @@
1
1
  const DOCS_BASE = 'https://github.com/k08200/mcp-probe#';
2
+ const DOCS = {
3
+ commands: `${DOCS_BASE}commands`,
4
+ config: `${DOCS_BASE}config`,
5
+ sidecarInputs: `${DOCS_BASE}sidecar-inputs`,
6
+ };
2
7
  function lower(value) {
3
8
  return (value ?? '').toLowerCase();
4
9
  }
@@ -15,34 +20,34 @@ export function issueForToolCall(result) {
15
20
  return {
16
21
  code: 'CONTRACT_ASSERTION_FAILED',
17
22
  hint: 'The tool call completed, but its output did not satisfy the sidecar contract. Check required metadata, row limits, stable error codes, and leak assertions.',
18
- docsUrl: `${DOCS_BASE}tool-call-contract-assertions`,
23
+ docsUrl: DOCS.sidecarInputs,
19
24
  };
20
25
  }
21
26
  if (isAuthLike(result.error)) {
22
27
  return {
23
28
  code: 'TOOL_CALL_AUTH',
24
29
  hint: 'The server registered this tool, but the call path hit auth or permission handling. Check OAuth/browser handoff, service tokens, and CI secrets.',
25
- docsUrl: `${DOCS_BASE}tool-call-dry-runs`,
30
+ docsUrl: DOCS.sidecarInputs,
26
31
  };
27
32
  }
28
33
  if (isTimeout(result.error)) {
29
34
  return {
30
35
  code: 'TOOL_CALL_TIMEOUT',
31
36
  hint: 'The tool call timed out. Increase --timeout if the downstream service is slow, or add a safer sidecar input that reaches a fast read-only path.',
32
- docsUrl: `${DOCS_BASE}tool-call-dry-runs`,
37
+ docsUrl: DOCS.sidecarInputs,
33
38
  };
34
39
  }
35
40
  if (result.source === 'auto') {
36
41
  return {
37
42
  code: 'AUTO_DRY_RUN_INPUT',
38
43
  hint: 'The auto-generated schema-minimum input failed. Add a .mcp-probe.json sidecar with realistic read-only sample inputs for this tool.',
39
- docsUrl: `${DOCS_BASE}tool-call-dry-runs`,
44
+ docsUrl: DOCS.sidecarInputs,
40
45
  };
41
46
  }
42
47
  return {
43
48
  code: 'TOOL_CALL_FAILED',
44
49
  hint: 'The sidecar input reached tools/call but returned an error. Verify the sample input is safe, valid for this environment, and exercises a real read-only path.',
45
- docsUrl: `${DOCS_BASE}tool-call-dry-runs`,
50
+ docsUrl: DOCS.sidecarInputs,
46
51
  };
47
52
  }
48
53
  export function issueForCheck(check) {
@@ -53,14 +58,28 @@ export function issueForCheck(check) {
53
58
  return {
54
59
  code: 'NO_TOOLS',
55
60
  hint: 'The server responded but did not expose tools. If this is expected, it may be a resources/prompts-only server; otherwise check the server registration code.',
56
- docsUrl: `${DOCS_BASE}what-it-checks`,
61
+ docsUrl: DOCS.commands,
57
62
  };
58
63
  }
59
64
  if (check.name === 'Tool schema validation') {
60
65
  return {
61
66
  code: 'TOOL_SCHEMA_INVALID',
62
67
  hint: 'At least one discovered tool has an invalid schema. Make sure every MCP tool has a stable name and valid input schema.',
63
- docsUrl: `${DOCS_BASE}what-it-checks`,
68
+ docsUrl: DOCS.commands,
69
+ };
70
+ }
71
+ if (check.name === 'Tool catalog policy') {
72
+ return {
73
+ code: 'TOOL_CATALOG_MISMATCH',
74
+ hint: 'The discovered tool catalog does not match the configured policy. Check expectedTools, allowedTools, and forbiddenTools in mcp-probe.config.json.',
75
+ docsUrl: DOCS.config,
76
+ };
77
+ }
78
+ if (check.name === 'Tool dry-run coverage') {
79
+ return {
80
+ code: 'TOOL_DRY_RUN_COVERAGE_MISSING',
81
+ hint: 'At least one expected tool is not covered by a sidecar sample input. Add it to the toolsFile so CI verifies the real tools/call path.',
82
+ docsUrl: DOCS.sidecarInputs,
64
83
  };
65
84
  }
66
85
  if (check.name === 'Tool sidecar') {
@@ -68,13 +87,13 @@ export function issueForCheck(check) {
68
87
  return {
69
88
  code: 'SIDECAR_MISSING',
70
89
  hint: 'The configured tools file does not exist. Run mcp-probe init --discover or fix the --tools-file / toolsFile path.',
71
- docsUrl: `${DOCS_BASE}tool-call-dry-runs`,
90
+ docsUrl: DOCS.sidecarInputs,
72
91
  };
73
92
  }
74
93
  return {
75
94
  code: 'SIDECAR_INVALID',
76
95
  hint: 'The tools sidecar is not valid JSON or does not match the expected shape. Validate it against schemas/mcp-probe.sidecar.schema.json.',
77
- docsUrl: `${DOCS_BASE}batch-ci-gate`,
96
+ docsUrl: DOCS.config,
78
97
  };
79
98
  }
80
99
  if (check.name === 'MCP protocol handshake') {
@@ -82,27 +101,27 @@ export function issueForCheck(check) {
82
101
  return {
83
102
  code: 'HANDSHAKE_TIMEOUT',
84
103
  hint: 'The server did not complete initialize before the timeout. Increase --timeout or inspect server startup latency and dependency loading.',
85
- docsUrl: `${DOCS_BASE}usage`,
104
+ docsUrl: DOCS.commands,
86
105
  };
87
106
  }
88
107
  if (isAuthLike(check.message)) {
89
108
  return {
90
109
  code: 'HANDSHAKE_AUTH',
91
110
  hint: 'The server failed during initialization with an auth-like error. Check required environment variables, tokens, or remote headers.',
92
- docsUrl: `${DOCS_BASE}usage`,
111
+ docsUrl: DOCS.commands,
93
112
  };
94
113
  }
95
114
  if (message.includes('enoent') || message.includes('spawn') || message.includes('not found')) {
96
115
  return {
97
116
  code: 'TARGET_NOT_FOUND',
98
117
  hint: 'mcp-probe could not start the target. Check the package name, local path, executable, and server arguments.',
99
- docsUrl: `${DOCS_BASE}usage`,
118
+ docsUrl: DOCS.commands,
100
119
  };
101
120
  }
102
121
  return {
103
122
  code: 'HANDSHAKE_FAILED',
104
123
  hint: 'The target started but did not complete the MCP initialize handshake. Run with the same server arguments locally and inspect stderr.',
105
- docsUrl: `${DOCS_BASE}stderr-classification`,
124
+ docsUrl: DOCS.commands,
106
125
  };
107
126
  }
108
127
  if (check.name === 'Tool call dry-run') {
@@ -114,7 +133,7 @@ export function issueForCheck(check) {
114
133
  : check.status === 'warn'
115
134
  ? 'At least one tool call hit auth or permission handling. This often means CI needs tokens or the server needs non-browser auth.'
116
135
  : 'At least one tool call failed. Inspect toolCallResults in JSON output for the exact tool and add or refine sidecar inputs.',
117
- docsUrl: `${DOCS_BASE}${failedContract ? 'tool-call-contract-assertions' : 'tool-call-dry-runs'}`,
136
+ docsUrl: DOCS.sidecarInputs,
118
137
  };
119
138
  }
120
139
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"issues.js","sourceRoot":"","sources":["../src/issues.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../src/issues.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,sCAAsC,CAAC;AACzD,MAAM,IAAI,GAAG;IACX,QAAQ,EAAE,GAAG,SAAS,UAAU;IAChC,MAAM,EAAE,GAAG,SAAS,QAAQ;IAC5B,aAAa,EAAE,GAAG,SAAS,gBAAgB;CACnC,CAAC;AAEX,SAAS,KAAK,CAAC,KAAyB;IACtC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,OAA2B;IAC7C,OAAO,uDAAuD,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,SAAS,CAAC,OAA2B;IAC5C,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAE/C,IAAI,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,CAAC;QACxE,OAAO;YACL,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,6JAA6J;YACnK,OAAO,EAAE,IAAI,CAAC,aAAa;SAC5B,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,kJAAkJ;YACxJ,OAAO,EAAE,IAAI,CAAC,aAAa;SAC5B,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,iJAAiJ;YACvJ,OAAO,EAAE,IAAI,CAAC,aAAa;SAC5B,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,IAAI,EAAE,oBAAoB;YAC1B,IAAI,EAAE,qIAAqI;YAC3I,OAAO,EAAE,IAAI,CAAC,aAAa;SAC5B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,+JAA+J;QACrK,OAAO,EAAE,IAAI,CAAC,aAAa;KAC5B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAgB;IAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9C,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,8JAA8J;YACpK,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC5C,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,wHAAwH;YAC9H,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,mJAAmJ;YACzJ,OAAO,EAAE,IAAI,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;QAC3C,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,IAAI,EAAE,uIAAuI;YAC7I,OAAO,EAAE,IAAI,CAAC,aAAa;SAC5B,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACpC,OAAO;gBACL,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,mHAAmH;gBACzH,OAAO,EAAE,IAAI,CAAC,aAAa;aAC5B,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,sIAAsI;YAC5I,OAAO,EAAE,IAAI,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC5C,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,yIAAyI;gBAC/I,OAAO,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,mIAAmI;gBACzI,OAAO,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7F,OAAO;gBACL,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,6GAA6G;gBACnH,OAAO,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,sIAAsI;YAC5I,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACvC,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAC9D,OAAO;YACL,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,kBAAkB;YACpH,IAAI,EAAE,cAAc;gBAClB,CAAC,CAAC,wHAAwH;gBAC1H,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;oBACzB,CAAC,CAAC,gIAAgI;oBAClI,CAAC,CAAC,4HAA4H;YAChI,OAAO,EAAE,IAAI,CAAC,aAAa;SAC5B,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,SAAS,CAAuC,IAAO;IACrE,MAAM,KAAK,GAAG,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/protocols/mcp-client.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAe,YAAY,EAAE,WAAW,EAAiD,MAAM,aAAa,CAAC;AAuKzH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAgHhF"}
1
+ {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/protocols/mcp-client.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAe,YAAY,EAAE,WAAW,EAAiD,MAAM,aAAa,CAAC;AAqKzH,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAoIhF"}
@@ -5,7 +5,7 @@ import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
5
5
  import { assertionFailureMessage, evaluateToolAssertions } from '../assertions.js';
6
6
  import { withIssue } from '../issues.js';
7
7
  import { redactText } from '../redact.js';
8
- const VERSION = '1.5.0';
8
+ import { VERSION } from '../version.js';
9
9
  // Known startup warning patterns from official MCP servers — not fatal errors
10
10
  const STDERR_WARNING_PATTERNS = [
11
11
  /^warn(?:ing)?:/i,
@@ -189,9 +189,14 @@ export async function probeMcpServer(options) {
189
189
  const rawServerInfo = client.getServerVersion();
190
190
  const rawCaps = client.getServerCapabilities();
191
191
  const capabilities = Object.keys(rawCaps ?? {});
192
- const toolsStart = Date.now();
193
- const toolsResult = await withTimeout(client.listTools(), options.timeoutMs, 'tools/list');
194
- const toolsLatencyMs = Date.now() - toolsStart;
192
+ let toolsLatencyMs = 0;
193
+ let tools = [];
194
+ if (rawCaps?.tools) {
195
+ const toolsStart = Date.now();
196
+ const toolsResult = await withTimeout(client.listTools(), options.timeoutMs, 'tools/list');
197
+ toolsLatencyMs = Date.now() - toolsStart;
198
+ tools = toolsResult.tools;
199
+ }
195
200
  let resourcesLatencyMs;
196
201
  let promptsLatencyMs;
197
202
  const resourcesList = [];
@@ -213,31 +218,45 @@ export async function probeMcpServer(options) {
213
218
  }
214
219
  }
215
220
  let toolCallResults;
216
- if (options.probeTools && toolsResult.tools.length > 0) {
221
+ if (options.probeTools) {
217
222
  toolCallResults = [];
218
- for (const tool of toolsResult.tools) {
219
- const sidecarEntry = options.sidecar?.tools[tool.name];
220
- // Sidecar input beats auto-generated because it can reach the real call path.
221
- const input = sidecarEntry?.input ?? generateMinimalInput(tool.inputSchema);
222
- const source = sidecarEntry ? 'sidecar' : 'auto';
223
- const notErrorCodes = sidecarEntry?.expect?.not_error_code;
224
- const expectations = sidecarEntry?.expect;
223
+ const toolsByName = new Map(tools.map((tool) => [tool.name, tool]));
224
+ const toolsToCall = options.sidecar
225
+ ? Object.entries(options.sidecar.tools).map(([name, entry]) => ({ name, entry, tool: toolsByName.get(name) }))
226
+ : tools.map((tool) => ({ name: tool.name, entry: undefined, tool }));
227
+ for (const candidate of toolsToCall) {
228
+ if (!candidate.tool) {
229
+ toolCallResults.push(withIssue({
230
+ tool: candidate.name,
231
+ status: 'fail',
232
+ latencyMs: 0,
233
+ source: 'sidecar',
234
+ error: `Sidecar references a tool that was not discovered: ${candidate.name}`,
235
+ }));
236
+ continue;
237
+ }
238
+ // With a sidecar, only explicitly declared tools are called.
239
+ // Without a sidecar, fall back to schema-minimum inputs for broad smoke coverage.
240
+ const input = candidate.entry?.input ?? generateMinimalInput(candidate.tool.inputSchema);
241
+ const source = candidate.entry ? 'sidecar' : 'auto';
242
+ const notErrorCodes = candidate.entry?.expect?.not_error_code;
243
+ const expectations = candidate.entry?.expect;
225
244
  const start = Date.now();
226
245
  try {
227
- const result = await withTimeout(client.callTool({ name: tool.name, arguments: input }), options.timeoutMs, `callTool(${tool.name})`);
246
+ const result = await withTimeout(client.callTool({ name: candidate.tool.name, arguments: input }), options.timeoutMs, `callTool(${candidate.tool.name})`);
228
247
  const toolError = toolResultErrorMessage(result);
229
248
  if (toolError) {
230
249
  const error = redactText(toolError, secretValues);
231
250
  const status = isAuthError(error, notErrorCodes) ? 'warn' : 'fail';
232
- toolCallResults.push(finalToolResult(tool.name, status, Date.now() - start, source, expectations, result, error));
251
+ toolCallResults.push(finalToolResult(candidate.tool.name, status, Date.now() - start, source, expectations, result, error));
233
252
  continue;
234
253
  }
235
- toolCallResults.push(finalToolResult(tool.name, 'pass', Date.now() - start, source, expectations, result));
254
+ toolCallResults.push(finalToolResult(candidate.tool.name, 'pass', Date.now() - start, source, expectations, result));
236
255
  }
237
256
  catch (err) {
238
257
  const msg = redactText(err instanceof Error ? err.message : String(err), secretValues);
239
258
  const status = isAuthError(msg, notErrorCodes) ? 'warn' : 'fail';
240
- toolCallResults.push(finalToolResult(tool.name, status, Date.now() - start, source, expectations, undefined, msg));
259
+ toolCallResults.push(finalToolResult(candidate.tool.name, status, Date.now() - start, source, expectations, undefined, msg));
241
260
  }
242
261
  }
243
262
  }
@@ -247,7 +266,7 @@ export async function probeMcpServer(options) {
247
266
  version: rawServerInfo?.version ?? 'unknown',
248
267
  capabilities,
249
268
  },
250
- tools: toolsResult.tools.map((t) => ({
269
+ tools: tools.map((t) => ({
251
270
  name: t.name,
252
271
  description: t.description,
253
272
  inputSchema: t.inputSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/protocols/mcp-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,8EAA8E;AAC9E,MAAM,uBAAuB,GAAG;IAC9B,iBAAiB;IACjB,WAAW;IACX,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,mBAAmB;CACpB,CAAC;AAEF,SAAS,eAAe,CAAC,QAA8B;IACrD,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAmB;IACtD,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;WACnD,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,QAAgB,EAAE,KAAmB;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAC/D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE3C,MAAM,MAAM,GAAG,QAAQ,CAAC;IACxB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,IAAI,GAAG,iDAAiD,CAAC;IAC/D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;AACpF,CAAC;AAED,SAAS,WAAW,CAAI,OAAmB,EAAE,EAAU,EAAE,KAAa;IACpE,IAAI,SAAoD,CAAC;IACzD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACtD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;QAC1D,IAAI,SAAS;YAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,SAAS,oBAAoB,CAAC,MAAe;IAC3C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,CAAC,GAAG,MAAiC,CAAC;IAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,YAAY,CAAwC,CAAC;IACrE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAI,CAAC,CAAC,UAAU,CAA0B,IAAI,EAAE,CAAC;IAC/D,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAwC,CAAC;QAC/D,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,QAAQ,IAAI,CAAC,MAAM,CAAuB,EAAE,CAAC;YAC3C,KAAK,QAAQ;gBAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAAC,MAAM;YACvC,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAM;YACtC,KAAK,SAAS;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAAC,MAAM;YAC1C,KAAK,OAAO;gBAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAAC,MAAM;YACvC,KAAK,QAAQ;gBAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAAC,MAAM;YACvC,OAAO,CAAC,CAAQ,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,aAAwB;IAC5D,IAAI,iCAAiC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAe;IAC7C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAkD,CAAC;IACtE,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAElD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,+BAA+B,CAAC;IAC/E,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;SACjC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACxD,MAAM,SAAS,GAAI,IAA2B,CAAC,IAAI,CAAC;QACpD,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEnD,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,+BAA+B,CAAC;AACjE,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,YAAyB,EACzB,SAAiB,EACjB,MAAgC,EAChC,MAAoC,EACpC,MAAgB,EAChB,KAAc;IAEd,MAAM,UAAU,GAAG,sBAAsB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAC3D,MAAM,qBAAqB,GAAG,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,YAAY,KAAK,MAAM,CAAC,MAAM,CAAC;IAC7F,MAAM,WAAW,GAAgB,cAAc;QAC7C,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,qBAAqB;YACrB,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,YAAY,CAAC;IACnB,MAAM,UAAU,GAAG,cAAc;QAC/B,CAAC,CAAC,8BAA8B,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5F,CAAC,CAAC,WAAW,KAAK,MAAM;YACtB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC;IACZ,MAAM,OAAO,GAAmB;QAC9B,IAAI;QACJ,MAAM,EAAE,WAAW;QACnB,SAAS;QACT,MAAM;KACP,CAAC;IACF,IAAI,UAAU;QAAE,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC;IAC3C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAC3D,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC;IACvD,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACpE,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,OAAqB;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC;IAE1C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC;YACzC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YACxB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAA4B;YACjD,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,IAAI,KAAK,KAAK;QAC9B,CAAC,CAAC,IAAI,kBAAkB,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC;QAC9C,CAAC,CAAC,IAAI,6BAA6B,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAE5D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAqB;IACxD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,EACvC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CACpD,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,UAAU;YACvB,CAAC,CAAC,mBAAmB,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC;YAC3D,CAAC,CAAC,QAAQ,CAAC;QACb,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC/C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAEhD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC3F,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC;QAE/C,IAAI,kBAAsC,CAAC;QAC3C,IAAI,gBAAoC,CAAC;QACzC,MAAM,aAAa,GAA6B,EAAE,CAAC;QACnD,MAAM,WAAW,GAA2B,EAAE,CAAC;QAE/C,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YAC9F,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACpC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACjC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAC1F,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC/B,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,IAAI,eAA6C,CAAC;QAClD,IAAI,OAAO,CAAC,UAAU,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,eAAe,GAAG,EAAE,CAAC;YACrB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;gBACrC,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEvD,8EAA8E;gBAC9E,MAAM,KAAK,GAAG,YAAY,EAAE,KAAK,IAAI,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5E,MAAM,MAAM,GAA6B,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC3E,MAAM,aAAa,GAAG,YAAY,EAAE,MAAM,EAAE,cAAc,CAAC;gBAC3D,MAAM,YAAY,GAAG,YAAY,EAAE,MAAM,CAAC;gBAE1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EACtD,OAAO,CAAC,SAAS,EACjB,YAAY,IAAI,CAAC,IAAI,GAAG,CACzB,CAAC;oBACF,MAAM,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;oBACjD,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;wBAClD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;wBACnE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;wBAClH,SAAS;oBACX,CAAC;oBACD,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC7G,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;oBACvF,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;oBACjE,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,UAAU,EAAE;gBACV,IAAI,EAAE,aAAa,EAAE,IAAI,IAAI,SAAS;gBACtC,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,SAAS;gBAC5C,YAAY;aACb;YACD,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACnC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC;YACH,SAAS,EAAE,aAAa;YACxB,OAAO,EAAE,WAAW;YACpB,gBAAgB;YAChB,cAAc;YACd,kBAAkB;YAClB,gBAAgB;YAChB,eAAe;SAChB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../../src/protocols/mcp-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ToolInfo, TransportMode } from './types.js';
2
+ export declare const CONFIG_SCHEMA_URL = "https://raw.githubusercontent.com/k08200/mcp-probe/main/schemas/mcp-probe.config.schema.json";
3
+ export declare const SIDECAR_SCHEMA_URL = "https://raw.githubusercontent.com/k08200/mcp-probe/main/schemas/mcp-probe.sidecar.schema.json";
4
+ export type BuildConfigOptions = {
5
+ target: string;
6
+ name?: string;
7
+ toolsFile: string;
8
+ transport?: TransportMode;
9
+ headerEnv?: string;
10
+ };
11
+ export declare function json(value: unknown): string;
12
+ export declare function serverNameFromTarget(target: string): string;
13
+ export declare function buildConfig(options: BuildConfigOptions): unknown;
14
+ export declare function buildToolsFile(discoveredTools?: ToolInfo[]): unknown;
15
+ export declare function buildToolsFileFromNames(toolNames: string[]): unknown;
16
+ export declare function buildWorkflow(configFile: string): string;
17
+ //# sourceMappingURL=scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1D,eAAO,MAAM,iBAAiB,iGAAiG,CAAC;AAChI,eAAO,MAAM,kBAAkB,kGAAkG,CAAC;AAElI,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAuBhE;AAiDD,wBAAgB,cAAc,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,GAAG,OAAO,CAgBpE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAyBpE;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAwBxD"}
@@ -0,0 +1,145 @@
1
+ export const CONFIG_SCHEMA_URL = 'https://raw.githubusercontent.com/k08200/mcp-probe/main/schemas/mcp-probe.config.schema.json';
2
+ export const SIDECAR_SCHEMA_URL = 'https://raw.githubusercontent.com/k08200/mcp-probe/main/schemas/mcp-probe.sidecar.schema.json';
3
+ export function json(value) {
4
+ return JSON.stringify(value, null, 2) + '\n';
5
+ }
6
+ export function serverNameFromTarget(target) {
7
+ const withoutProtocol = target.replace(/^https?:\/\//i, '');
8
+ const last = withoutProtocol.split('/').filter(Boolean).pop() ?? 'mcp-server';
9
+ return last
10
+ .replace(/^@/, '')
11
+ .replace(/[^a-zA-Z0-9_-]+/g, '-')
12
+ .replace(/^-+|-+$/g, '')
13
+ || 'mcp-server';
14
+ }
15
+ export function buildConfig(options) {
16
+ const server = {
17
+ name: options.name ?? serverNameFromTarget(options.target),
18
+ target: options.target,
19
+ probeTools: true,
20
+ toolsFile: options.toolsFile,
21
+ };
22
+ if (options.transport) {
23
+ server.transport = options.transport;
24
+ }
25
+ if (options.headerEnv) {
26
+ server.headers = {
27
+ Authorization: `Bearer \${${options.headerEnv}}`,
28
+ };
29
+ }
30
+ return {
31
+ $schema: CONFIG_SCHEMA_URL,
32
+ timeoutMs: 10000,
33
+ servers: [server],
34
+ };
35
+ }
36
+ function minimalInputFromSchema(schema) {
37
+ if (!schema || typeof schema !== 'object')
38
+ return {};
39
+ const typed = schema;
40
+ const properties = typed.properties;
41
+ if (!properties)
42
+ return {};
43
+ const required = typed.required ?? Object.keys(properties);
44
+ const input = {};
45
+ for (const key of required) {
46
+ const property = properties[key];
47
+ const type = Array.isArray(property?.type) ? property?.type[0] : property?.type;
48
+ switch (type) {
49
+ case 'string':
50
+ input[key] = '';
51
+ break;
52
+ case 'number':
53
+ case 'integer':
54
+ input[key] = 0;
55
+ break;
56
+ case 'boolean':
57
+ input[key] = false;
58
+ break;
59
+ case 'array':
60
+ input[key] = [];
61
+ break;
62
+ case 'object':
63
+ input[key] = {};
64
+ break;
65
+ default:
66
+ input[key] = null;
67
+ }
68
+ }
69
+ return input;
70
+ }
71
+ function sidecarEntryForTool(tool) {
72
+ return {
73
+ input: minimalInputFromSchema(tool.inputSchema),
74
+ expect: {
75
+ not_error_code: [401, 403],
76
+ },
77
+ };
78
+ }
79
+ export function buildToolsFile(discoveredTools) {
80
+ const tools = discoveredTools && discoveredTools.length > 0
81
+ ? Object.fromEntries(discoveredTools.map((tool) => [tool.name, sidecarEntryForTool(tool)]))
82
+ : {
83
+ replace_with_tool_name: {
84
+ input: {},
85
+ expect: {
86
+ not_error_code: [401, 403],
87
+ },
88
+ },
89
+ };
90
+ return {
91
+ $schema: SIDECAR_SCHEMA_URL,
92
+ tools,
93
+ };
94
+ }
95
+ export function buildToolsFileFromNames(toolNames) {
96
+ const unique = [...new Set(toolNames)].filter(Boolean);
97
+ const tools = unique.length > 0
98
+ ? Object.fromEntries(unique.map((name) => [
99
+ name,
100
+ {
101
+ input: {},
102
+ expect: {
103
+ not_error_code: [401, 403],
104
+ },
105
+ },
106
+ ]))
107
+ : {
108
+ replace_with_tool_name: {
109
+ input: {},
110
+ expect: {
111
+ not_error_code: [401, 403],
112
+ },
113
+ },
114
+ };
115
+ return {
116
+ $schema: SIDECAR_SCHEMA_URL,
117
+ tools,
118
+ };
119
+ }
120
+ export function buildWorkflow(configFile) {
121
+ return `name: MCP Probe
122
+
123
+ on:
124
+ pull_request:
125
+ push:
126
+ branches: [main]
127
+
128
+ jobs:
129
+ mcp-probe:
130
+ runs-on: ubuntu-latest
131
+ timeout-minutes: 5
132
+
133
+ steps:
134
+ - uses: actions/checkout@v6
135
+
136
+ - name: Validate MCP readiness
137
+ run: |
138
+ npx @k08200/mcp-probe@latest \\
139
+ --config ${configFile} \\
140
+ --github-summary \\
141
+ --fail-on-warn \\
142
+ --badge-file mcp-probe-badge.json
143
+ `;
144
+ }
145
+ //# sourceMappingURL=scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,8FAA8F,CAAC;AAChI,MAAM,CAAC,MAAM,kBAAkB,GAAG,+FAA+F,CAAC;AAUlI,MAAM,UAAU,IAAI,CAAC,KAAc;IACjC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,YAAY,CAAC;IAC9E,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;WACrB,YAAY,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,MAAM,GAA4B;QACtC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;IAEF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,OAAO,GAAG;YACf,aAAa,EAAE,aAAa,OAAO,CAAC,SAAS,GAAG;SACjD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,iBAAiB;QAC1B,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,CAAC,MAAM,CAAC;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAe;IAC7C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,MAAiC,CAAC;IAChD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAiD,CAAC;IAC3E,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,QAAQ,GAAI,KAAK,CAAC,QAAiC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrF,MAAM,KAAK,GAA4B,EAAE,CAAC;IAE1C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAwC,CAAC;QACxE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC;QAEhF,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS;gBACZ,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACf,MAAM;YACR,KAAK,SAAS;gBACZ,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACnB,MAAM;YACR,KAAK,OAAO;gBACV,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM;YACR,KAAK,QAAQ;gBACX,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM;YACR;gBACE,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc;IACzC,OAAO;QACL,KAAK,EAAE,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/C,MAAM,EAAE;YACN,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;SAC3B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,eAA4B;IACzD,MAAM,KAAK,GAAG,eAAe,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC;QACzD,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3F,CAAC,CAAC;YACE,sBAAsB,EAAE;gBACtB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE;oBACN,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;iBAC3B;aACF;SACF,CAAC;IAEN,OAAO;QACL,OAAO,EAAE,kBAAkB;QAC3B,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAmB;IACzD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACtC,IAAI;YACJ;gBACE,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE;oBACN,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;iBAC3B;aACF;SACF,CAAC,CAAC;QACL,CAAC,CAAC;YACE,sBAAsB,EAAE;gBACtB,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE;oBACN,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;iBAC3B;aACF;SACF,CAAC;IAEN,OAAO;QACL,OAAO,EAAE,kBAAkB;QAC3B,KAAK;KACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,OAAO;;;;;;;;;;;;;;;;;;uBAkBc,UAAU;;;;CAIhC,CAAC;AACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ToolSidecar } from './types.js';
2
+ export declare const DEFAULT_SIDECAR_FILENAME = ".mcp-probe.json";
3
+ export declare function parseToolSidecar(parsed: unknown, label: string): ToolSidecar;
4
+ export declare function readToolSidecar(path: string): ToolSidecar;
5
+ export declare function loadOptionalSidecar(toolsFile?: string): ToolSidecar | undefined;
6
+ //# sourceMappingURL=sidecar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../src/sidecar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,eAAO,MAAM,wBAAwB,oBAAoB,CAAC;AAc1D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAgD5E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAQzD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAO/E"}
@@ -0,0 +1,76 @@
1
+ import { existsSync, readFileSync } from 'fs';
2
+ export const DEFAULT_SIDECAR_FILENAME = '.mcp-probe.json';
3
+ function isObject(value) {
4
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
5
+ }
6
+ function rejectUnknownKeys(value, allowed, label) {
7
+ const allowedSet = new Set(allowed);
8
+ const unknown = Object.keys(value).filter((key) => !allowedSet.has(key));
9
+ if (unknown.length > 0) {
10
+ throw new Error(`Invalid tools file: ${label} contains unknown field${unknown.length === 1 ? '' : 's'} ${unknown.join(', ')}`);
11
+ }
12
+ }
13
+ export function parseToolSidecar(parsed, label) {
14
+ if (!isObject(parsed)) {
15
+ throw new Error(`Invalid tools file: ${label} must be an object`);
16
+ }
17
+ rejectUnknownKeys(parsed, ['$schema', 'tools'], label);
18
+ if (!isObject(parsed.tools)) {
19
+ throw new Error(`Invalid tools file: ${label} must contain a tools object`);
20
+ }
21
+ for (const [toolName, entry] of Object.entries(parsed.tools)) {
22
+ if (!isObject(entry)) {
23
+ throw new Error(`Invalid tools file: ${toolName} entry must be an object`);
24
+ }
25
+ rejectUnknownKeys(entry, ['input', 'expect'], toolName);
26
+ if (!isObject(entry.input)) {
27
+ throw new Error(`Invalid tools file: ${toolName}.input must be an object`);
28
+ }
29
+ if (entry.expect !== undefined) {
30
+ if (!isObject(entry.expect)) {
31
+ throw new Error(`Invalid tools file: ${toolName}.expect must be an object`);
32
+ }
33
+ const expect = entry.expect;
34
+ rejectUnknownKeys(expect, ['status', 'not_error_code', 'requiredFields', 'maxRows', 'errorCode', 'contains', 'notContains'], `${toolName}.expect`);
35
+ if (expect.status !== undefined && expect.status !== 'pass' && expect.status !== 'fail' && expect.status !== 'warn') {
36
+ throw new Error(`Invalid tools file: ${toolName}.expect.status must be pass, fail, or warn`);
37
+ }
38
+ if (expect.not_error_code !== undefined && (!Array.isArray(expect.not_error_code) || !expect.not_error_code.every((code) => Number.isInteger(code)))) {
39
+ throw new Error(`Invalid tools file: ${toolName}.expect.not_error_code must be an integer array`);
40
+ }
41
+ for (const key of ['requiredFields', 'contains', 'notContains']) {
42
+ const value = expect[key];
43
+ if (value !== undefined && (!Array.isArray(value) || !value.every((item) => typeof item === 'string'))) {
44
+ throw new Error(`Invalid tools file: ${toolName}.expect.${key} must be a string array`);
45
+ }
46
+ }
47
+ if (expect.maxRows !== undefined && (typeof expect.maxRows !== 'number' || expect.maxRows < 0)) {
48
+ throw new Error(`Invalid tools file: ${toolName}.expect.maxRows must be a non-negative number`);
49
+ }
50
+ if (expect.errorCode !== undefined && typeof expect.errorCode !== 'string') {
51
+ throw new Error(`Invalid tools file: ${toolName}.expect.errorCode must be a string`);
52
+ }
53
+ }
54
+ }
55
+ return parsed;
56
+ }
57
+ export function readToolSidecar(path) {
58
+ let parsed;
59
+ try {
60
+ parsed = JSON.parse(readFileSync(path, 'utf8'));
61
+ }
62
+ catch {
63
+ throw new Error(`Invalid tools file JSON: ${path}`);
64
+ }
65
+ return parseToolSidecar(parsed, path);
66
+ }
67
+ export function loadOptionalSidecar(toolsFile) {
68
+ const path = toolsFile ?? DEFAULT_SIDECAR_FILENAME;
69
+ if (!existsSync(path)) {
70
+ if (!toolsFile)
71
+ return undefined;
72
+ throw new Error(`Cannot read tools file: ${path}`);
73
+ }
74
+ return readToolSidecar(path);
75
+ }
76
+ //# sourceMappingURL=sidecar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../src/sidecar.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export type CheckStatus = 'pass' | 'fail' | 'warn';
2
- export type IssueCode = 'NO_TOOLS' | 'TOOL_SCHEMA_INVALID' | 'TOOL_CALL_AUTH' | 'TOOL_CALL_FAILED' | 'TOOL_CALL_TIMEOUT' | 'CONTRACT_ASSERTION_FAILED' | 'AUTO_DRY_RUN_INPUT' | 'SIDECAR_MISSING' | 'SIDECAR_INVALID' | 'HANDSHAKE_TIMEOUT' | 'HANDSHAKE_AUTH' | 'HANDSHAKE_FAILED' | 'TARGET_NOT_FOUND';
2
+ export type IssueCode = 'NO_TOOLS' | 'TOOL_SCHEMA_INVALID' | 'TOOL_CATALOG_MISMATCH' | 'TOOL_DRY_RUN_COVERAGE_MISSING' | 'TOOL_CALL_AUTH' | 'TOOL_CALL_FAILED' | 'TOOL_CALL_TIMEOUT' | 'CONTRACT_ASSERTION_FAILED' | 'AUTO_DRY_RUN_INPUT' | 'SIDECAR_MISSING' | 'SIDECAR_INVALID' | 'HANDSHAKE_TIMEOUT' | 'HANDSHAKE_AUTH' | 'HANDSHAKE_FAILED' | 'TARGET_NOT_FOUND';
3
3
  export type Issue = {
4
4
  code: IssueCode;
5
5
  hint: string;
@@ -83,6 +83,9 @@ export type CheckOptions = {
83
83
  transport?: TransportMode;
84
84
  headers?: Record<string, string>;
85
85
  stderr?: StderrRules;
86
+ expectedTools?: string[];
87
+ allowedTools?: string[];
88
+ forbiddenTools?: string[];
86
89
  probeTools?: boolean;
87
90
  toolsFile?: string;
88
91
  };
@@ -94,6 +97,9 @@ export type ConfigServer = {
94
97
  transport?: TransportMode;
95
98
  headers?: Record<string, string>;
96
99
  stderr?: StderrRules;
100
+ expectedTools?: string[];
101
+ allowedTools?: string[];
102
+ forbiddenTools?: string[];
97
103
  probeTools?: boolean;
98
104
  toolsFile?: string;
99
105
  };