agentfootprint 11.2.0 → 11.3.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 (157) hide show
  1. package/AGENTS.md +1 -1
  2. package/CAPABILITIES.md +2 -0
  3. package/ai-instructions/claude-code/SKILL.md +1 -1
  4. package/dist/adapters/identity/verify/claims.js +3 -3
  5. package/dist/adapters/mcp/agentcoreRuntime/invoke.js +3 -2
  6. package/dist/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
  7. package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js +6 -5
  8. package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -1
  9. package/dist/adapters/mcp/agentcoreRuntime/transport.js +8 -6
  10. package/dist/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
  11. package/dist/core/agent/buildToolRegistry.js +1 -1
  12. package/dist/core/agent/buildToolRegistry.js.map +1 -1
  13. package/dist/core/agent/evidence/evidenceIndex.js +30 -2
  14. package/dist/core/agent/evidence/evidenceIndex.js.map +1 -1
  15. package/dist/core/agent/evidence/extract.js +34 -5
  16. package/dist/core/agent/evidence/extract.js.map +1 -1
  17. package/dist/core/agent/evidence/figures.js +31 -3
  18. package/dist/core/agent/evidence/figures.js.map +1 -1
  19. package/dist/core/agent/evidence/numberPrecision.js +58 -2
  20. package/dist/core/agent/evidence/numberPrecision.js.map +1 -1
  21. package/dist/core/agent/stages/route.js +2 -1
  22. package/dist/core/agent/stages/route.js.map +1 -1
  23. package/dist/core/agent/stages/toolCalls.js +14 -1
  24. package/dist/core/agent/stages/toolCalls.js.map +1 -1
  25. package/dist/core/slots/buildToolsSlot.js +1 -1
  26. package/dist/core/slots/buildToolsSlot.js.map +1 -1
  27. package/dist/esm/adapters/identity/jwks.d.ts +2 -2
  28. package/dist/esm/adapters/identity/verify/claims.d.ts +3 -3
  29. package/dist/esm/adapters/identity/verify/claims.js +3 -3
  30. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.d.ts +3 -2
  31. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js +3 -2
  32. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
  33. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +6 -5
  34. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js +6 -5
  35. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -1
  36. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.d.ts +3 -1
  37. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +9 -7
  38. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
  39. package/dist/esm/core/agent/buildToolRegistry.js +1 -1
  40. package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
  41. package/dist/esm/core/agent/evidence/evidenceIndex.d.ts +12 -2
  42. package/dist/esm/core/agent/evidence/evidenceIndex.js +30 -2
  43. package/dist/esm/core/agent/evidence/evidenceIndex.js.map +1 -1
  44. package/dist/esm/core/agent/evidence/extract.js +35 -6
  45. package/dist/esm/core/agent/evidence/extract.js.map +1 -1
  46. package/dist/esm/core/agent/evidence/figures.d.ts +6 -0
  47. package/dist/esm/core/agent/evidence/figures.js +32 -4
  48. package/dist/esm/core/agent/evidence/figures.js.map +1 -1
  49. package/dist/esm/core/agent/evidence/numberPrecision.d.ts +28 -1
  50. package/dist/esm/core/agent/evidence/numberPrecision.js +56 -1
  51. package/dist/esm/core/agent/evidence/numberPrecision.js.map +1 -1
  52. package/dist/esm/core/agent/stages/route.js +2 -1
  53. package/dist/esm/core/agent/stages/route.js.map +1 -1
  54. package/dist/esm/core/agent/stages/toolCalls.js +14 -1
  55. package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
  56. package/dist/esm/core/slots/buildToolsSlot.js +1 -1
  57. package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
  58. package/dist/esm/events/payloads.d.ts +185 -0
  59. package/dist/esm/events/registry.d.ts +3 -1
  60. package/dist/esm/events/registry.js +2 -0
  61. package/dist/esm/events/registry.js.map +1 -1
  62. package/dist/esm/hosting/doorGuard.d.ts +3 -3
  63. package/dist/esm/hosting/doorGuard.js +2 -2
  64. package/dist/esm/hosting/nodeHost.d.ts +1 -1
  65. package/dist/esm/mcp/callLifetime.d.ts +49 -0
  66. package/dist/esm/mcp/callLifetime.js +99 -0
  67. package/dist/esm/mcp/callLifetime.js.map +1 -0
  68. package/dist/esm/mcp/mcpClient.d.ts +4 -1
  69. package/dist/esm/mcp/mcpClient.js +70 -28
  70. package/dist/esm/mcp/mcpClient.js.map +1 -1
  71. package/dist/esm/mcp/requestLedger.d.ts +97 -0
  72. package/dist/esm/mcp/requestLedger.js +192 -0
  73. package/dist/esm/mcp/requestLedger.js.map +1 -0
  74. package/dist/esm/mcp/seriesEvidence.d.ts +102 -0
  75. package/dist/esm/mcp/seriesEvidence.js +246 -0
  76. package/dist/esm/mcp/seriesEvidence.js.map +1 -0
  77. package/dist/esm/mcp/throttleRetry.d.ts +70 -35
  78. package/dist/esm/mcp/throttleRetry.js +181 -54
  79. package/dist/esm/mcp/throttleRetry.js.map +1 -1
  80. package/dist/esm/mcp/types.d.ts +12 -7
  81. package/dist/esm/redaction/knownStrings.js +29 -0
  82. package/dist/esm/redaction/knownStrings.js.map +1 -1
  83. package/dist/esm/security/PermissionPolicy.d.ts +1 -1
  84. package/dist/esm/security/PermissionPolicy.js +1 -1
  85. package/dist/esm/strategies/defaults/chatBubbleLiveStatus.d.ts +1 -1
  86. package/dist/esm/strategies/defaults/chatBubbleLiveStatus.js +1 -1
  87. package/dist/esm/tool-lint/analyze.d.ts +1 -1
  88. package/dist/esm/tool-lint/analyze.js +1 -1
  89. package/dist/esm/tool-lint/rules.d.ts +3 -3
  90. package/dist/esm/tool-lint/rules.js +3 -3
  91. package/dist/esm/tools/requestEvidence.d.ts +78 -0
  92. package/dist/esm/tools/requestEvidence.js +331 -0
  93. package/dist/esm/tools/requestEvidence.js.map +1 -0
  94. package/dist/events/registry.js +2 -0
  95. package/dist/events/registry.js.map +1 -1
  96. package/dist/hosting/doorGuard.js +2 -2
  97. package/dist/mcp/callLifetime.js +103 -0
  98. package/dist/mcp/callLifetime.js.map +1 -0
  99. package/dist/mcp/mcpClient.js +69 -27
  100. package/dist/mcp/mcpClient.js.map +1 -1
  101. package/dist/mcp/requestLedger.js +196 -0
  102. package/dist/mcp/requestLedger.js.map +1 -0
  103. package/dist/mcp/seriesEvidence.js +251 -0
  104. package/dist/mcp/seriesEvidence.js.map +1 -0
  105. package/dist/mcp/throttleRetry.js +184 -55
  106. package/dist/mcp/throttleRetry.js.map +1 -1
  107. package/dist/redaction/knownStrings.js +29 -0
  108. package/dist/redaction/knownStrings.js.map +1 -1
  109. package/dist/security/PermissionPolicy.js +1 -1
  110. package/dist/strategies/defaults/chatBubbleLiveStatus.js +1 -1
  111. package/dist/tool-lint/analyze.js +1 -1
  112. package/dist/tool-lint/rules.js +3 -3
  113. package/dist/tools/requestEvidence.js +337 -0
  114. package/dist/tools/requestEvidence.js.map +1 -0
  115. package/dist/types/adapters/identity/jwks.d.ts +2 -2
  116. package/dist/types/adapters/identity/verify/claims.d.ts +3 -3
  117. package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts +3 -2
  118. package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts.map +1 -1
  119. package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +6 -5
  120. package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts.map +1 -1
  121. package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts +3 -1
  122. package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts.map +1 -1
  123. package/dist/types/core/agent/evidence/evidenceIndex.d.ts +12 -2
  124. package/dist/types/core/agent/evidence/evidenceIndex.d.ts.map +1 -1
  125. package/dist/types/core/agent/evidence/extract.d.ts.map +1 -1
  126. package/dist/types/core/agent/evidence/figures.d.ts +6 -0
  127. package/dist/types/core/agent/evidence/figures.d.ts.map +1 -1
  128. package/dist/types/core/agent/evidence/numberPrecision.d.ts +28 -1
  129. package/dist/types/core/agent/evidence/numberPrecision.d.ts.map +1 -1
  130. package/dist/types/core/agent/stages/route.d.ts.map +1 -1
  131. package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
  132. package/dist/types/events/payloads.d.ts +185 -0
  133. package/dist/types/events/payloads.d.ts.map +1 -1
  134. package/dist/types/events/registry.d.ts +3 -1
  135. package/dist/types/events/registry.d.ts.map +1 -1
  136. package/dist/types/hosting/doorGuard.d.ts +3 -3
  137. package/dist/types/hosting/nodeHost.d.ts +1 -1
  138. package/dist/types/mcp/callLifetime.d.ts +50 -0
  139. package/dist/types/mcp/callLifetime.d.ts.map +1 -0
  140. package/dist/types/mcp/mcpClient.d.ts +4 -1
  141. package/dist/types/mcp/mcpClient.d.ts.map +1 -1
  142. package/dist/types/mcp/requestLedger.d.ts +98 -0
  143. package/dist/types/mcp/requestLedger.d.ts.map +1 -0
  144. package/dist/types/mcp/seriesEvidence.d.ts +103 -0
  145. package/dist/types/mcp/seriesEvidence.d.ts.map +1 -0
  146. package/dist/types/mcp/throttleRetry.d.ts +70 -35
  147. package/dist/types/mcp/throttleRetry.d.ts.map +1 -1
  148. package/dist/types/mcp/types.d.ts +12 -7
  149. package/dist/types/mcp/types.d.ts.map +1 -1
  150. package/dist/types/redaction/knownStrings.d.ts.map +1 -1
  151. package/dist/types/security/PermissionPolicy.d.ts +1 -1
  152. package/dist/types/strategies/defaults/chatBubbleLiveStatus.d.ts +1 -1
  153. package/dist/types/tool-lint/analyze.d.ts +1 -1
  154. package/dist/types/tool-lint/rules.d.ts +3 -3
  155. package/dist/types/tools/requestEvidence.d.ts +79 -0
  156. package/dist/types/tools/requestEvidence.d.ts.map +1 -0
  157. package/package.json +1 -1
@@ -34,7 +34,10 @@
34
34
  * `agentfootprint.stream.tool_start` / `tool_end` events
35
35
  * when the agent calls them. Add `name: '<mcp-server>'` to
36
36
  * `McpClientOptions` so observability surfaces can group
37
- * tool calls by server.
37
+ * tool calls by server. On a transport this module builds,
38
+ * a call the agent dispatched also gets its request's retry
39
+ * series as `agentfootprint.tools.request_attempts`, filed by
40
+ * the series through the call's own port (`requestLedger.ts`).
38
41
  *
39
42
  * Lazy-require pattern: the `@modelcontextprotocol/sdk` peer-dep
40
43
  * loads only when a consumer actually constructs a client. Tests
@@ -46,6 +49,8 @@ const toolExtras_js_1 = require("./toolExtras.js");
46
49
  const toolResult_js_1 = require("./toolResult.js");
47
50
  const gatewayTransport_js_1 = require("./gatewayTransport.js");
48
51
  const throttleRetry_js_1 = require("./throttleRetry.js");
52
+ const requestLedger_js_1 = require("./requestLedger.js");
53
+ const callLifetime_js_1 = require("./callLifetime.js");
49
54
  const connectionRefusals_js_1 = require("./connectionRefusals.js");
50
55
  const sdkLoadFailure_js_1 = require("./sdkLoadFailure.js");
51
56
  const transportUrl_js_1 = require("./transportUrl.js");
@@ -85,7 +90,7 @@ async function mcpClient(opts) {
85
90
  // Before anything connects: an option that names a behaviour which cannot
86
91
  // happen on the chosen arm is a defect, not a preference.
87
92
  (0, connectionRefusals_js_1.refuseConflictingOptions)(opts, name);
88
- const connection = await openConnection(opts);
93
+ const { connection, ledger } = await openConnection(opts);
89
94
  // Tool cache so consumers calling `.tools()` more than once don't
90
95
  // hammer the server. `.refresh()` invalidates it.
91
96
  let cache = null;
@@ -101,7 +106,7 @@ async function mcpClient(opts) {
101
106
  const listed = opts.signal
102
107
  ? await connection.listTools(undefined, { signal: opts.signal })
103
108
  : await connection.listTools();
104
- return listed.tools.map((t) => wrapMcpTool(name, connection, t, opts.signal, resultMode));
109
+ return listed.tools.map((t) => wrapMcpTool(name, connection, t, opts.signal, resultMode, ledger));
105
110
  };
106
111
  return {
107
112
  name,
@@ -126,19 +131,20 @@ async function mcpClient(opts) {
126
131
  };
127
132
  }
128
133
  exports.mcpClient = mcpClient;
129
- // ─── Getting a connection ──────────────────────────────────────────
130
134
  /**
131
135
  * The one funnel every arm passes through, in precedence order: a connection
132
136
  * you handed over, the internal test seam, then the library building one.
137
+ * Only the last has a ledger: a connection built elsewhere has no retry series
138
+ * of ours to file a call's attempts.
133
139
  *
134
140
  * A call with neither `connection` nor `sdk` reaches `resolveClient` with two
135
141
  * `undefined` arguments and takes the identical path it always took.
136
142
  */
137
143
  async function openConnection(opts) {
138
144
  if (opts.connection !== undefined)
139
- return opts.connection;
145
+ return { connection: opts.connection };
140
146
  if (opts._client !== undefined)
141
- return opts._client;
147
+ return { connection: opts._client };
142
148
  // `refuseConflictingOptions` has already refused the case where this is
143
149
  // absent, so the assertion documents that guarantee rather than assuming it.
144
150
  const transport = opts.transport;
@@ -152,13 +158,13 @@ async function resolveClient(transport, clientInfo, signal, retryOnThrottle, sdk
152
158
  const client = new mod.Client(clientInfo ?? DEFAULT_CLIENT_INFO, {
153
159
  capabilities: {},
154
160
  });
155
- const transportImpl = await buildTransport(transport, retryOnThrottle, sdk);
161
+ const built = await buildTransport(transport, retryOnThrottle, sdk);
156
162
  // Same rule as callTool: options ride beside the transport, never inside it.
157
163
  if (signal)
158
- await client.connect(transportImpl, { signal });
164
+ await client.connect(built.transport, { signal });
159
165
  else
160
- await client.connect(transportImpl);
161
- return client;
166
+ await client.connect(built.transport);
167
+ return { connection: client, ...(built.ledger !== undefined && { ledger: built.ledger }) };
162
168
  }
163
169
  /**
164
170
  * An injected `sdk` is checked before anything is built, so a wrong import (a
@@ -222,12 +228,15 @@ async function buildTransport(t, retryOnThrottle, sdk) {
222
228
  "reach the server over `transport: { transport: 'http', url }` instead.",
223
229
  }));
224
230
  }
225
- return new stdioMod.StdioClientTransport({
226
- command: t.command,
227
- args: t.args ? [...t.args] : [],
228
- ...(t.env && { env: { ...t.env } }),
229
- ...(t.cwd !== undefined && { cwd: t.cwd }),
230
- });
231
+ // No fetch, so no retry series: a stdio call has no attempts to file.
232
+ return {
233
+ transport: new stdioMod.StdioClientTransport({
234
+ command: t.command,
235
+ args: t.args ? [...t.args] : [],
236
+ ...(t.env && { env: { ...t.env } }),
237
+ ...(t.cwd !== undefined && { cwd: t.cwd }),
238
+ }),
239
+ };
231
240
  }
232
241
  // http + gateway transports both ride Streamable HTTP. They differ only in
233
242
  // WHEN the auth headers are decided: `http` fixes them at construction,
@@ -241,6 +250,12 @@ async function buildTransport(t, retryOnThrottle, sdk) {
241
250
  // did before 8.11.0. A transport fetch that already runs a retry series of
242
251
  // its own (AgentCore Runtime's) is never wrapped: `retryingFetch` joins the
243
252
  // 429 rule to that series, so one call is one series.
253
+ //
254
+ // The ledger joins the same series, so each request a dispatched tool call
255
+ // sends files its attempts into that call's run; the transport's `send` is
256
+ // watched to bind each request to its call (`requestLedger.ts`). A fetch that
257
+ // runs no series (retry off) gets no ledger: there is nothing to file.
258
+ const ledger = new requestLedger_js_1.RequestLedger();
244
259
  if (t.transport === 'gateway') {
245
260
  // The consumer's own `fetch` (9.32.0) goes UNDERNEATH the vending, not
246
261
  // beside it: `createVendingFetch` resolves the credential, applies it to
@@ -249,19 +264,34 @@ async function buildTransport(t, retryOnThrottle, sdk) {
249
264
  // credential is still vended per request. Passing `undefined` is the
250
265
  // default global `fetch`, which is byte-identical to every release before
251
266
  // the seam existed.
252
- return new httpMod.StreamableHTTPClientTransport((0, transportUrl_js_1.transportUrl)(t.url, 'mcpClient'), {
253
- fetch: (0, throttleRetry_js_1.retryingFetch)((0, gatewayTransport_js_1.createVendingFetch)(t, t.fetch), retryOnThrottle),
254
- });
267
+ const gatewayFetch = (0, throttleRetry_js_1.retryingFetch)((0, gatewayTransport_js_1.createVendingFetch)(t, t.fetch), retryOnThrottle);
268
+ const ledgered = gatewayFetch && (0, throttleRetry_js_1.ledgeredFetch)(gatewayFetch, ledger);
269
+ return watched(new httpMod.StreamableHTTPClientTransport((0, transportUrl_js_1.transportUrl)(t.url, 'mcpClient'), {
270
+ fetch: ledgered ?? gatewayFetch,
271
+ }), ledgered && ledger);
255
272
  }
256
273
  // Both options ride the SAME SDK transport, and both are forwarded when both
257
274
  // are given. The SDK folds `requestInit.headers` into the `init.headers` it
258
275
  // hands the custom fetch, so a signer sees the static headers and has the
259
276
  // final word over the bytes — see `McpHttpTransport.fetch`.
260
277
  const httpFetch = (0, throttleRetry_js_1.retryingFetch)(t.fetch, retryOnThrottle);
261
- return new httpMod.StreamableHTTPClientTransport((0, transportUrl_js_1.transportUrl)(t.url, 'mcpClient'), {
278
+ const ledgered = httpFetch && (0, throttleRetry_js_1.ledgeredFetch)(httpFetch, ledger);
279
+ const fetch = ledgered ?? httpFetch;
280
+ return watched(new httpMod.StreamableHTTPClientTransport((0, transportUrl_js_1.transportUrl)(t.url, 'mcpClient'), {
262
281
  ...(t.headers && { requestInit: { headers: { ...t.headers } } }),
263
- ...(httpFetch && { fetch: httpFetch }),
264
- });
282
+ ...(fetch && { fetch }),
283
+ }), ledgered && ledger);
284
+ }
285
+ /**
286
+ * `transport` with its sends watched by `ledger` — the SAME object, its own
287
+ * `send` installed in place. As it is, with no ledger, when there is none or it
288
+ * cannot be watched: then no call expects its attempts filed.
289
+ */
290
+ function watched(transport, ledger) {
291
+ if (ledger === undefined || transport === null || typeof transport !== 'object') {
292
+ return { transport };
293
+ }
294
+ return ledger.watch(transport) === undefined ? { transport } : { transport, ledger };
265
295
  }
266
296
  /** The Node loader path for Streamable HTTP — reached only with no `sdk`. */
267
297
  function loadHttpModule(transport) {
@@ -281,7 +311,7 @@ function loadHttpModule(transport) {
281
311
  }
282
312
  }
283
313
  // ─── Tool wrapping ─────────────────────────────────────────────────
284
- function wrapMcpTool(serverName, connection, mcp, signal, resultMode) {
314
+ function wrapMcpTool(serverName, connection, mcp, signal, resultMode, ledger) {
285
315
  const tool = {
286
316
  schema: {
287
317
  name: mcp.name,
@@ -322,10 +352,22 @@ function wrapMcpTool(serverName, connection, mcp, signal, resultMode) {
322
352
  arguments: argsObj,
323
353
  ...(ctx?.time !== undefined && { _meta: (0, toolExtras_js_1.callMetaOf)(ctx.time) }),
324
354
  };
325
- const result = signal
326
- ? await connection.callTool(params, undefined, { signal })
327
- : await connection.callTool(params);
328
- return (0, toolResult_js_1.readToolResult)(result, mcp.name, serverName, resultMode);
355
+ // The call's lifetime (`callLifetime.ts`): its context's signal and the
356
+ // client's cancel the SDK request while it runs; a call the agent
357
+ // dispatched issues a ticket keyed by THIS params object — the one the
358
+ // SDK hands the transport — so the retry series that sends it files its
359
+ // attempts into the call's run; and however the call settles, a series
360
+ // still sending is cut, inside the call. Nothing is added to the request.
361
+ const call = (0, callLifetime_js_1.openCall)(params, ctx, signal, ledger, serverName);
362
+ try {
363
+ const result = call.signal
364
+ ? await connection.callTool(params, undefined, { signal: call.signal })
365
+ : await connection.callTool(params);
366
+ return (0, toolResult_js_1.readToolResult)(result, mcp.name, serverName, resultMode);
367
+ }
368
+ finally {
369
+ call.close();
370
+ }
329
371
  },
330
372
  };
331
373
  return tool;
@@ -1 +1 @@
1
- {"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../../src/mcp/mcpClient.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;;;AAaH,mDAA6D;AAC7D,mDAA+D;AAC/D,+DAA2D;AAC3D,yDAAyE;AACzE,mEAAmE;AACnE,2DAAqD;AACrD,uDAAiD;AACjD,0DAAoD;AAEpD,qEAAqE;AACrE,uEAAuE;AACvE,mEAAmE;AACnE,MAAM,mBAAmB,GAAG;IAC1B,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,KAAK,UAAU,SAAS,CAAC,IAA6C;IAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IAChC,MAAM,UAAU,GAAG,IAAA,4BAAY,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACvD,0EAA0E;IAC1E,0DAA0D;IAC1D,IAAA,gDAAwB,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAE9C,kEAAkE;IAClE,kDAAkD;IAClD,IAAI,KAAK,GAA2B,IAAI,CAAC;IACzC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,UAAU,GAAG,CAAC,EAAU,EAAQ,EAAE;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,aAAa,IAAI,KAAK,EAAE,+DAA+D,CACxF,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,KAAK,IAA8B,EAAE;QACtD,sEAAsE;QACtE,0CAA0C;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;YACxB,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAChE,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC;IAEF,OAAO;QACL,IAAI;QACJ,KAAK,CAAC,KAAK;YACT,UAAU,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,MAAM,UAAU,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,OAAO;YACX,UAAU,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,GAAG,MAAM,UAAU,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,KAAK;YACT,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,GAAG,IAAI,CAAC;YACb,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAjDD,8BAiDC;AAED,sEAAsE;AAEtE;;;;;;GAMG;AACH,KAAK,UAAU,cAAc,CAC3B,IAA6C;IAE7C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC;IAC1D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IACpD,wEAAwE;IACxE,6EAA6E;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,SAAyB,CAAC;IACjD,OAAO,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAChG,CAAC;AAED,uEAAuE;AAEvE,KAAK,UAAU,aAAa,CAC1B,SAAuB,EACvB,UAA8C,EAC9C,MAAoB,EACpB,eAAiC,EACjC,GAAY;IAEZ,IAAI,GAAG,KAAK,SAAS;QAAE,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAkB,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAErD,MAAM,MAAM,GAAiB,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,mBAAmB,EAAE;QAC7E,YAAY,EAAE,EAAE;KACjB,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;IAC5E,6EAA6E;IAC7E,IAAI,MAAM;QAAE,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;;QACvD,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAAC,GAAW,EAAE,SAAoC;IAClE,MAAM,MAAM,GACV,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,GAA0D,CAAC;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAC3B,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,UAAU,CACzF,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,OAAO,GAAiC;QAC5C,MAAM,EAAE,sEAAsE;QAC9E,6BAA6B,EAC3B,iDAAiD;YACjD,uDAAuD;KAC1D,CAAC;IACF,MAAM,IAAI,SAAS,CACjB,6BAA6B,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB;QAC1F,QAAQ,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,kBAAkB,IAAI;QAC7E,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QACnD,iBAAiB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAC5C,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,YAAY,GAChB,sFAAsF;IACtF,kEAAkE;IAClE,2EAA2E,CAAC;AAE9E,iFAAiF;AACjF,SAAS,gBAAgB;IACvB,IAAI,CAAC;QACH,OAAO,IAAA,4BAAW,EAAgB,2CAA2C,CAAC,CAAC;IACjF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,IAAA,kCAAc,EAAC,GAAG,EAAE;YAClB,YAAY,EACV,iDAAiD;gBACjD,qDAAqD;gBACrD,YAAY;YACd,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,2CAA2C;YACtD,OAAO,EACL,wEAAwE;gBACxE,oCAAoC;SACvC,CAAC,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,CAAe,EACf,eAAiC,EACjC,GAAY;IAEZ,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;QAC5B,yEAAyE;QACzE,wEAAwE;QACxE,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,QAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,QAAQ,GAAG,IAAA,4BAAW,EAAkB,2CAA2C,CAAC,CAAC;QACvF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,IAAA,kCAAc,EAAC,GAAG,EAAE;gBAClB,YAAY,EACV,wEAAwE;oBACxE,0EAA0E;gBAC5E,MAAM,EAAE,kBAAkB;gBAC1B,SAAS,EAAE,2CAA2C;gBACtD,OAAO,EACL,oEAAoE;oBACpE,wEAAwE;aAC3E,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,oBAAoB,CAAC;YACvC,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;YACnC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAC3E,wEAAwE;IACxE,uEAAuE;IACvE,MAAM,OAAO,GAAmB,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnE,0EAA0E;IAC1E,4EAA4E;IAC5E,6EAA6E;IAC7E,yEAAyE;IACzE,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,sDAAsD;IACtD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC9B,uEAAuE;QACvE,yEAAyE;QACzE,0EAA0E;QAC1E,sEAAsE;QACtE,qEAAqE;QACrE,0EAA0E;QAC1E,oBAAoB;QACpB,OAAO,IAAI,OAAO,CAAC,6BAA6B,CAAC,IAAA,8BAAY,EAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;YACjF,KAAK,EAAE,IAAA,gCAAa,EAAC,IAAA,wCAAkB,EAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;SACtE,CAAC,CAAC;IACL,CAAC;IACD,6EAA6E;IAC7E,4EAA4E;IAC5E,0EAA0E;IAC1E,4DAA4D;IAC5D,MAAM,SAAS,GAAG,IAAA,gCAAa,EAAC,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAC1D,OAAO,IAAI,OAAO,CAAC,6BAA6B,CAAC,IAAA,8BAAY,EAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;QACjF,GAAG,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC;QAChE,GAAG,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;KACvC,CAAC,CAAC;AACL,CAAC;AAED,6EAA6E;AAC7E,SAAS,cAAc,CAAC,SAA6B;IACnD,IAAI,CAAC;QACH,OAAO,IAAA,4BAAW,EAAiB,oDAAoD,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,IAAA,kCAAc,EAAC,GAAG,EAAE;YAClB,YAAY,EACV,aAAa,SAAS,kEAAkE;gBACxF,4EAA4E;gBAC5E,YAAY;YACd,MAAM,EAAE,aAAa,SAAS,GAAG;YACjC,SAAS,EAAE,oDAAoD;YAC/D,OAAO,EACL,wEAAwE;gBACxE,oCAAoC;SACvC,CAAC,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,sEAAsE;AAEtE,SAAS,WAAW,CAClB,UAAkB,EAClB,UAAyB,EACzB,GAAkB,EAClB,MAAoB,EACpB,UAA2C;IAE3C,MAAM,IAAI,GAAS;QACjB,MAAM,EAAE;YACN,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,aAAa,GAAG,CAAC,IAAI,EAAE;YACvD,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B;QACD,0EAA0E;QAC1E,yEAAyE;QACzE,oDAAoD;QACpD,MAAM,EAAE,UAAU;QAClB,wEAAwE;QACxE,uEAAuE;QACvE,0EAA0E;QAC1E,0EAA0E;QAC1E,2EAA2E;QAC3E,kEAAkE;QAClE,GAAG,IAAA,8BAAc,EAAC,GAAG,CAAC,KAAK,EAAE;YAC3B,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC3B,4DAA4D;YAC5D,+DAA+D;YAC/D,6BAA6B;YAC7B,MAAM,OAAO,GACX,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC/D,CAAC,CAAE,IAAgC;gBACnC,CAAC,CAAC,EAAE,CAAC;YACT,oEAAoE;YACpE,qEAAqE;YACrE,oEAAoE;YACpE,oEAAoE;YACpE,6DAA6D;YAC7D,4EAA4E;YAC5E,iFAAiF;YACjF,MAAM,MAAM,GAAG;gBACb,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,SAAS,EAAE,OAAO;gBAClB,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,IAAA,0BAAU,EAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aAChE,CAAC;YACF,MAAM,MAAM,GAAG,MAAM;gBACnB,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC;gBAC1D,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtC,OAAO,IAAA,8BAAc,EAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAClE,CAAC;KACF,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../../src/mcp/mcpClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ /**
3
+ * requestLedger — which dispatched tool call an MCP request belongs to, so the
4
+ * retry series that sends it files its attempts into THAT call's run; and when
5
+ * the MCP SDK cancels a request, so the series sending it stops.
6
+ *
7
+ * Pattern: a per-connection ledger + the SDK transport's `send`, watched in place.
8
+ * Role: The middle of the evidence seam (`tools/requestEvidence.ts` is its
9
+ * door). The retry series runs inside the transport's `fetch`, which
10
+ * the MCP SDK calls with a serialized body and nothing else — no tool
11
+ * call, no run. Three hops carry the call down to it, each by an
12
+ * identity the hop already holds:
13
+ *
14
+ * 1. call → params `issue`: the MCP tool keys its ticket by the request's
15
+ * params OBJECT. The SDK puts that very object into the
16
+ * JSON-RPC message it hands the transport.
17
+ * 2. params → id the watched `send` finds the ticket by `message.params`
18
+ * and keys it by the JSON-RPC `id` the SDK assigned, until
19
+ * that send settles.
20
+ * 3. id → series `claim`: the series reads the `id` back out of the body
21
+ * it is about to send.
22
+ *
23
+ * CANCELLATION DOES NOT WAIT ON ATTRIBUTION. Every `tools/call` in flight gets
24
+ * an entry, ticket or not, and the SDK says when it gives a request up: it sends
25
+ * `notifications/cancelled` naming the request's id — on its own timeout, or
26
+ * when the call's signal fires — through this same `send`. The ledger aborts
27
+ * that request's series there and then, so a request nobody waits for is never
28
+ * asked again, even when its params could not be matched to a call.
29
+ *
30
+ * Nothing is added to the wire: the request the server receives is
31
+ * byte-identical, and the SDK's own options keep their meanings. Ids are the
32
+ * client's, one ledger per connection, so concurrent calls — and concurrent
33
+ * runs sharing one client — can never claim each other's request. A request
34
+ * that is not a `tools/call` (a `tools/list`, a notification, a response)
35
+ * claims nothing.
36
+ *
37
+ * `send` is installed as an OWN property of the transport instance — the same
38
+ * object, its own `send` bound to it, so a transport class with `#private`
39
+ * fields works as it always did. Assigning `send` again afterwards THROWS: a
40
+ * send that bypassed the ledger would quietly lose every call's attempts.
41
+ *
42
+ * What it does NOT do: retry, wait, or decide anything. The series is the one
43
+ * retry owner; this only tells it whose attempts it is making, and when the SDK
44
+ * has stopped waiting for them.
45
+ */
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.RequestLedger = void 0;
48
+ /** The method whose requests a tool call issues tickets for. */
49
+ const TOOLS_CALL = 'tools/call';
50
+ /** The notification the SDK sends when it gives up one of its own requests. */
51
+ const CANCELLED = 'notifications/cancelled';
52
+ /** Per connection: the tickets issued and not yet sent, and the requests being sent. */
53
+ class RequestLedger {
54
+ /** Issued, not yet sent — keyed by the request's params object. Collected with it. */
55
+ issued = new WeakMap();
56
+ /** Tickets a request was bound to. */
57
+ bound = new WeakSet();
58
+ /** Every `tools/call` sent and not yet settled — keyed by its JSON-RPC id. */
59
+ sending = new Map();
60
+ calls = 0;
61
+ unboundNamed = false;
62
+ /** The call about to send `params` files its attempts through `ticket`. */
63
+ issue(params, ticket) {
64
+ this.issued.set(params, ticket);
65
+ }
66
+ /** Whether a request the transport sent was bound to `ticket`. */
67
+ wasBound(ticket) {
68
+ return this.bound.has(ticket);
69
+ }
70
+ /** How many `tools/call` requests the watched transport has sent — matched to a call or not. */
71
+ get toolCallsSent() {
72
+ return this.calls;
73
+ }
74
+ /** `true` the first time it is asked, then never again: an unmatched request is named once per connection. */
75
+ firstUnbound() {
76
+ if (this.unboundNamed)
77
+ return false;
78
+ this.unboundNamed = true;
79
+ return true;
80
+ }
81
+ /**
82
+ * Watch `transport`'s `send`: install a wrapped `send` as its OWN property, the
83
+ * original bound to the instance itself. Returns the SAME object — or
84
+ * `undefined` when it has no `send` to watch or refuses the property, and
85
+ * then nothing is watched and no call should expect its attempts filed.
86
+ */
87
+ watch(transport) {
88
+ const send = Reflect.get(transport, 'send');
89
+ if (typeof send !== 'function')
90
+ return undefined;
91
+ const original = send.bind(transport);
92
+ const watched = (message, options) => this.send(original, message, options);
93
+ try {
94
+ Object.defineProperty(transport, 'send', {
95
+ configurable: false,
96
+ enumerable: false,
97
+ get: () => watched,
98
+ set: () => {
99
+ throw new TypeError("mcpClient: this transport's `send` is watched by its request ledger, which " +
100
+ 'matches each tools/call request to the call that sent it. Assigning `send` ' +
101
+ 'again would send requests the ledger never sees, so it is refused.');
102
+ },
103
+ });
104
+ }
105
+ catch {
106
+ return undefined;
107
+ }
108
+ return transport;
109
+ }
110
+ /**
111
+ * The `tools/call` request `body` carries, while its send runs — its ticket
112
+ * when a call issued one, and the signal its cancellation fires. `undefined`
113
+ * for any other body. Parses only while some request is being sent.
114
+ */
115
+ claim(body) {
116
+ if (this.sending.size === 0 || typeof body !== 'string')
117
+ return undefined;
118
+ let message;
119
+ try {
120
+ message = JSON.parse(body);
121
+ }
122
+ catch {
123
+ return undefined;
124
+ }
125
+ const id = requestIdOf(message);
126
+ const entry = id === undefined ? undefined : this.sending.get(id);
127
+ if (entry === undefined)
128
+ return undefined;
129
+ return {
130
+ ...(entry.ticket !== undefined && { ticket: entry.ticket }),
131
+ cancelled: entry.cut.signal,
132
+ };
133
+ }
134
+ /** One message through the watched transport. */
135
+ send(original, message, options) {
136
+ this.cancelIfAsked(message);
137
+ const id = this.bind(message);
138
+ if (id === undefined)
139
+ return original(message, options);
140
+ const entry = this.sending.get(id);
141
+ const release = () => {
142
+ if (this.sending.get(id) === entry)
143
+ this.sending.delete(id);
144
+ };
145
+ try {
146
+ return Promise.resolve(original(message, options)).finally(release);
147
+ }
148
+ catch (err) {
149
+ release();
150
+ throw err;
151
+ }
152
+ }
153
+ /** Register a `tools/call` in flight, with the ticket its params were issued — if any. */
154
+ bind(message) {
155
+ const id = requestIdOf(message);
156
+ if (id === undefined)
157
+ return undefined;
158
+ this.calls += 1;
159
+ const params = message.params;
160
+ const ticket = params !== null && typeof params === 'object' ? this.issued.get(params) : undefined;
161
+ if (ticket !== undefined) {
162
+ // One request per ticket: a second message reusing these params is not this call's.
163
+ this.issued.delete(params);
164
+ this.bound.add(ticket);
165
+ }
166
+ this.sending.set(id, { ...(ticket !== undefined && { ticket }), cut: new AbortController() });
167
+ return id;
168
+ }
169
+ /** The SDK gave a request up: stop the series still sending it. */
170
+ cancelIfAsked(message) {
171
+ if (message === null || typeof message !== 'object' || Array.isArray(message))
172
+ return;
173
+ const { method, params } = message;
174
+ if (method !== CANCELLED || params === null || typeof params !== 'object')
175
+ return;
176
+ const requestId = params.requestId;
177
+ if (typeof requestId !== 'string' && typeof requestId !== 'number')
178
+ return;
179
+ this.sending.get(requestId)?.cut.abort(sdkCancelled());
180
+ }
181
+ }
182
+ exports.RequestLedger = RequestLedger;
183
+ /** The reason a series stops when the SDK cancelled its request — a fixed sentence. */
184
+ function sdkCancelled() {
185
+ return Object.assign(new Error('The MCP SDK cancelled this request.'), { name: 'AbortError' });
186
+ }
187
+ /** The id of a `tools/call` REQUEST — a response or a notification has none to claim. */
188
+ function requestIdOf(message) {
189
+ if (message === null || typeof message !== 'object' || Array.isArray(message))
190
+ return undefined;
191
+ const { method, id } = message;
192
+ if (method !== TOOLS_CALL)
193
+ return undefined;
194
+ return typeof id === 'string' || typeof id === 'number' ? id : undefined;
195
+ }
196
+ //# sourceMappingURL=requestLedger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestLedger.js","sourceRoot":"","sources":["../../src/mcp/requestLedger.ts"],"names":[],"mappings":"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"}