agentfootprint 11.4.0 → 12.0.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 (198) hide show
  1. package/CAPABILITIES.md +3 -1
  2. package/dist/adapters/code/agentcore.js +295 -214
  3. package/dist/adapters/code/agentcore.js.map +1 -1
  4. package/dist/adapters/code/agentcoreClient.js +178 -0
  5. package/dist/adapters/code/agentcoreClient.js.map +1 -0
  6. package/dist/adapters/code/agentcoreWire.js +348 -0
  7. package/dist/adapters/code/agentcoreWire.js.map +1 -0
  8. package/dist/adapters/code/fileName.js +100 -0
  9. package/dist/adapters/code/fileName.js.map +1 -0
  10. package/dist/adapters/code/local.js +529 -183
  11. package/dist/adapters/code/local.js.map +1 -1
  12. package/dist/adapters/code/output.js +140 -0
  13. package/dist/adapters/code/output.js.map +1 -0
  14. package/dist/adapters/mcp/agentcoreRuntime/invoke.js +7 -6
  15. package/dist/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
  16. package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js +36 -2
  17. package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -1
  18. package/dist/adapters/mcp/agentcoreRuntime/transport.js +3 -1
  19. package/dist/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
  20. package/dist/core/codeRunnerTool.js +52 -7
  21. package/dist/core/codeRunnerTool.js.map +1 -1
  22. package/dist/doors/providers.js.map +1 -1
  23. package/dist/esm/adapters/code/agentcore.d.ts +65 -68
  24. package/dist/esm/adapters/code/agentcore.js +293 -212
  25. package/dist/esm/adapters/code/agentcore.js.map +1 -1
  26. package/dist/esm/adapters/code/agentcoreClient.d.ts +193 -0
  27. package/dist/esm/adapters/code/agentcoreClient.js +173 -0
  28. package/dist/esm/adapters/code/agentcoreClient.js.map +1 -0
  29. package/dist/esm/adapters/code/agentcoreWire.d.ts +119 -0
  30. package/dist/esm/adapters/code/agentcoreWire.js +334 -0
  31. package/dist/esm/adapters/code/agentcoreWire.js.map +1 -0
  32. package/dist/esm/adapters/code/fileName.d.ts +43 -0
  33. package/dist/esm/adapters/code/fileName.js +96 -0
  34. package/dist/esm/adapters/code/fileName.js.map +1 -0
  35. package/dist/esm/adapters/code/local.d.ts +91 -12
  36. package/dist/esm/adapters/code/local.js +528 -182
  37. package/dist/esm/adapters/code/local.js.map +1 -1
  38. package/dist/esm/adapters/code/output.d.ts +70 -0
  39. package/dist/esm/adapters/code/output.js +129 -0
  40. package/dist/esm/adapters/code/output.js.map +1 -0
  41. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.d.ts +7 -6
  42. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js +7 -6
  43. package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
  44. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +32 -1
  45. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js +35 -1
  46. package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -1
  47. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +4 -2
  48. package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
  49. package/dist/esm/core/codeRunnerTool.d.ts +15 -3
  50. package/dist/esm/core/codeRunnerTool.js +52 -7
  51. package/dist/esm/core/codeRunnerTool.js.map +1 -1
  52. package/dist/esm/doors/providers.d.ts +1 -1
  53. package/dist/esm/doors/providers.js.map +1 -1
  54. package/dist/esm/events/payloads.d.ts +144 -29
  55. package/dist/esm/index.d.ts +2 -0
  56. package/dist/esm/index.js +5 -0
  57. package/dist/esm/index.js.map +1 -1
  58. package/dist/esm/mcp/callLifetime.d.ts +57 -14
  59. package/dist/esm/mcp/callLifetime.js +67 -19
  60. package/dist/esm/mcp/callLifetime.js.map +1 -1
  61. package/dist/esm/mcp/callMarker.d.ts +43 -0
  62. package/dist/esm/mcp/callMarker.js +69 -0
  63. package/dist/esm/mcp/callMarker.js.map +1 -0
  64. package/dist/esm/mcp/connectionRefusals.js +7 -0
  65. package/dist/esm/mcp/connectionRefusals.js.map +1 -1
  66. package/dist/esm/mcp/index.d.ts +2 -0
  67. package/dist/esm/mcp/index.js +3 -0
  68. package/dist/esm/mcp/index.js.map +1 -1
  69. package/dist/esm/mcp/mcpClient.js +93 -26
  70. package/dist/esm/mcp/mcpClient.js.map +1 -1
  71. package/dist/esm/mcp/replay.d.ts +291 -0
  72. package/dist/esm/mcp/replay.js +405 -0
  73. package/dist/esm/mcp/replay.js.map +1 -0
  74. package/dist/esm/mcp/replayUnavailable.d.ts +68 -0
  75. package/dist/esm/mcp/replayUnavailable.js +87 -0
  76. package/dist/esm/mcp/replayUnavailable.js.map +1 -0
  77. package/dist/esm/mcp/requestLedger.d.ts +115 -32
  78. package/dist/esm/mcp/requestLedger.js +193 -52
  79. package/dist/esm/mcp/requestLedger.js.map +1 -1
  80. package/dist/esm/mcp/seriesEvidence.d.ts +73 -15
  81. package/dist/esm/mcp/seriesEvidence.js +114 -21
  82. package/dist/esm/mcp/seriesEvidence.js.map +1 -1
  83. package/dist/esm/mcp/throttleRetry.d.ts +86 -42
  84. package/dist/esm/mcp/throttleRetry.js +158 -50
  85. package/dist/esm/mcp/throttleRetry.js.map +1 -1
  86. package/dist/esm/mcp/toolResult.d.ts +6 -0
  87. package/dist/esm/mcp/toolResult.js +15 -0
  88. package/dist/esm/mcp/toolResult.js.map +1 -1
  89. package/dist/esm/mcp/types.d.ts +73 -8
  90. package/dist/esm/provider-contract/codeSandbox.d.ts +89 -0
  91. package/dist/esm/provider-contract/codeSandbox.js +119 -0
  92. package/dist/esm/provider-contract/codeSandbox.js.map +1 -0
  93. package/dist/esm/provider-contract/sessionExpired.d.ts +31 -0
  94. package/dist/esm/provider-contract/sessionExpired.js +40 -0
  95. package/dist/esm/provider-contract/sessionExpired.js.map +1 -0
  96. package/dist/esm/provider-contract/types.d.ts +166 -17
  97. package/dist/esm/provider-contract/types.js +9 -0
  98. package/dist/esm/provider-contract/types.js.map +1 -1
  99. package/dist/esm/redaction/knownStrings.js +16 -0
  100. package/dist/esm/redaction/knownStrings.js.map +1 -1
  101. package/dist/esm/tool-providers/index.d.ts +2 -2
  102. package/dist/esm/tool-providers/index.js +4 -0
  103. package/dist/esm/tool-providers/index.js.map +1 -1
  104. package/dist/esm/tools/requestEvidence.js +60 -0
  105. package/dist/esm/tools/requestEvidence.js.map +1 -1
  106. package/dist/index.js +12 -4
  107. package/dist/index.js.map +1 -1
  108. package/dist/mcp/callLifetime.js +66 -18
  109. package/dist/mcp/callLifetime.js.map +1 -1
  110. package/dist/mcp/callMarker.js +74 -0
  111. package/dist/mcp/callMarker.js.map +1 -0
  112. package/dist/mcp/connectionRefusals.js +7 -0
  113. package/dist/mcp/connectionRefusals.js.map +1 -1
  114. package/dist/mcp/index.js +5 -1
  115. package/dist/mcp/index.js.map +1 -1
  116. package/dist/mcp/mcpClient.js +91 -24
  117. package/dist/mcp/mcpClient.js.map +1 -1
  118. package/dist/mcp/replay.js +415 -0
  119. package/dist/mcp/replay.js.map +1 -0
  120. package/dist/mcp/replayUnavailable.js +92 -0
  121. package/dist/mcp/replayUnavailable.js.map +1 -0
  122. package/dist/mcp/requestLedger.js +193 -52
  123. package/dist/mcp/requestLedger.js.map +1 -1
  124. package/dist/mcp/seriesEvidence.js +116 -22
  125. package/dist/mcp/seriesEvidence.js.map +1 -1
  126. package/dist/mcp/throttleRetry.js +160 -51
  127. package/dist/mcp/throttleRetry.js.map +1 -1
  128. package/dist/mcp/toolResult.js +17 -1
  129. package/dist/mcp/toolResult.js.map +1 -1
  130. package/dist/provider-contract/codeSandbox.js +125 -0
  131. package/dist/provider-contract/codeSandbox.js.map +1 -0
  132. package/dist/provider-contract/sessionExpired.js +44 -0
  133. package/dist/provider-contract/sessionExpired.js.map +1 -0
  134. package/dist/provider-contract/types.js +12 -1
  135. package/dist/provider-contract/types.js.map +1 -1
  136. package/dist/redaction/knownStrings.js +16 -0
  137. package/dist/redaction/knownStrings.js.map +1 -1
  138. package/dist/tool-providers/index.js +5 -1
  139. package/dist/tool-providers/index.js.map +1 -1
  140. package/dist/tools/requestEvidence.js +60 -0
  141. package/dist/tools/requestEvidence.js.map +1 -1
  142. package/dist/types/adapters/code/agentcore.d.ts +65 -68
  143. package/dist/types/adapters/code/agentcore.d.ts.map +1 -1
  144. package/dist/types/adapters/code/agentcoreClient.d.ts +194 -0
  145. package/dist/types/adapters/code/agentcoreClient.d.ts.map +1 -0
  146. package/dist/types/adapters/code/agentcoreWire.d.ts +120 -0
  147. package/dist/types/adapters/code/agentcoreWire.d.ts.map +1 -0
  148. package/dist/types/adapters/code/fileName.d.ts +44 -0
  149. package/dist/types/adapters/code/fileName.d.ts.map +1 -0
  150. package/dist/types/adapters/code/local.d.ts +91 -12
  151. package/dist/types/adapters/code/local.d.ts.map +1 -1
  152. package/dist/types/adapters/code/output.d.ts +71 -0
  153. package/dist/types/adapters/code/output.d.ts.map +1 -0
  154. package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts +7 -6
  155. package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts.map +1 -1
  156. package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +32 -1
  157. package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts.map +1 -1
  158. package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts.map +1 -1
  159. package/dist/types/core/codeRunnerTool.d.ts +15 -3
  160. package/dist/types/core/codeRunnerTool.d.ts.map +1 -1
  161. package/dist/types/doors/providers.d.ts +1 -1
  162. package/dist/types/doors/providers.d.ts.map +1 -1
  163. package/dist/types/events/payloads.d.ts +144 -29
  164. package/dist/types/events/payloads.d.ts.map +1 -1
  165. package/dist/types/index.d.ts +2 -0
  166. package/dist/types/index.d.ts.map +1 -1
  167. package/dist/types/mcp/callLifetime.d.ts +57 -14
  168. package/dist/types/mcp/callLifetime.d.ts.map +1 -1
  169. package/dist/types/mcp/callMarker.d.ts +44 -0
  170. package/dist/types/mcp/callMarker.d.ts.map +1 -0
  171. package/dist/types/mcp/index.d.ts +2 -0
  172. package/dist/types/mcp/index.d.ts.map +1 -1
  173. package/dist/types/mcp/mcpClient.d.ts.map +1 -1
  174. package/dist/types/mcp/replay.d.ts +292 -0
  175. package/dist/types/mcp/replay.d.ts.map +1 -0
  176. package/dist/types/mcp/replayUnavailable.d.ts +69 -0
  177. package/dist/types/mcp/replayUnavailable.d.ts.map +1 -0
  178. package/dist/types/mcp/requestLedger.d.ts +115 -32
  179. package/dist/types/mcp/requestLedger.d.ts.map +1 -1
  180. package/dist/types/mcp/seriesEvidence.d.ts +73 -15
  181. package/dist/types/mcp/seriesEvidence.d.ts.map +1 -1
  182. package/dist/types/mcp/throttleRetry.d.ts +86 -42
  183. package/dist/types/mcp/throttleRetry.d.ts.map +1 -1
  184. package/dist/types/mcp/toolResult.d.ts +6 -0
  185. package/dist/types/mcp/toolResult.d.ts.map +1 -1
  186. package/dist/types/mcp/types.d.ts +73 -8
  187. package/dist/types/mcp/types.d.ts.map +1 -1
  188. package/dist/types/provider-contract/codeSandbox.d.ts +90 -0
  189. package/dist/types/provider-contract/codeSandbox.d.ts.map +1 -0
  190. package/dist/types/provider-contract/sessionExpired.d.ts +32 -0
  191. package/dist/types/provider-contract/sessionExpired.d.ts.map +1 -0
  192. package/dist/types/provider-contract/types.d.ts +166 -17
  193. package/dist/types/provider-contract/types.d.ts.map +1 -1
  194. package/dist/types/redaction/knownStrings.d.ts.map +1 -1
  195. package/dist/types/tool-providers/index.d.ts +2 -2
  196. package/dist/types/tool-providers/index.d.ts.map +1 -1
  197. package/dist/types/tools/requestEvidence.d.ts.map +1 -1
  198. package/package.json +1 -1
@@ -16,29 +16,55 @@
16
16
  * the call. The link is undone when the call settles: the SDK keeps its
17
17
  * abort listener on the signal it was given, and a link that outlived the
18
18
  * call would cancel a request that had already finished.
19
- * 2. ITS TICKET is issued, when the call carries the run's evidence port and
20
- * the connection has a ledger, keyed by the request's params object.
19
+ * 2. ITS MARKER is issued when the connection has a ledger, with its ticket
20
+ * when the call carries the run's evidence port: a library-private string
21
+ * in the request's `_meta` (`callMarker.ts`), which ties the request to
22
+ * the call even when the SDK copies the params, and which the transport
23
+ * takes out before anything is sent.
21
24
  * 3. ITS SETTLING ENDS ITS SERIES. However `callTool` settles — answered,
22
25
  * failed, or given up by the SDK (its own timeout) — a retry series still
23
26
  * sending the request is cut there and then, inside the call: it files
24
27
  * `cancelled` before the call's result is read, and sends nothing more.
28
+ * 4. ITS VERDICT REACHES ITS RECORD. A series that has ended waits for the
29
+ * call to settle before it files, because only the call can say whether
30
+ * the answer completed — a 200 can carry a tool error. The call leaves its
31
+ * verdict in the request's shared replay facts (`replay.ts` ·
32
+ * `RequestReplay`) before it settles the series' wait.
33
+ * 5. "MAY HAVE RUN" IS RAISED HERE — footprintjs's law, under the
34
+ * `'app-authorized'` policy (`replay.ts` · `RequestReplay`, its
35
+ * `uncertain`). A received refusal or error is preserved: a 429, a 503,
36
+ * a JSON-RPC or tool error — or a chain in which every attempt received
37
+ * one — keeps the server's error as it came, its effect still `unknown`.
38
+ * A call that genuinely lacked an answer somewhere — an attempt with no
39
+ * response at all, or a request the HTTP layer accepted whose JSON-RPC
40
+ * answer never came — and then fails, fails with footprintjs's
41
+ * `UnknownEffectError`, its final error (a later refusal's, or the
42
+ * timeout) as the `cause`: that error alone would read as "failed, try
43
+ * again". A call that completes returns normally. Under `'compatibility'`
44
+ * the caller sees the error it always did; the record still says the
45
+ * effect is unknown. A cancellation never raises it: a call its caller
46
+ * cancelled ends with the caller's reason, as it always did.
25
47
  *
26
- * In dev mode, a ticket that no request was bound to by the time the call
27
- * settled, when a `tools/call` request DID go out, is named once per connection: the SDK copied
28
- * the params, so the call's attempts could not be matched to it. Its
29
- * cancellation still reached the request (1, and the ledger's own watch on
30
- * `notifications/cancelled`).
48
+ * In dev mode, a ticket that no request was matched to by the time the call
49
+ * settled, when a `tools/call` request DID go out, is named once per
50
+ * connection: the SDK rebuilt the params without the marker, so the call's
51
+ * attempts could not be matched to it. Its cancellation still reached the
52
+ * request (1, and the ledger's own watch on `notifications/cancelled`). Under
53
+ * `'app-authorized'` such a request is never sent at all
54
+ * (`replayUnavailable.ts`).
31
55
  */
32
56
  Object.defineProperty(exports, "__esModule", { value: true });
33
57
  exports.openCall = void 0;
34
58
  const footprintjs_1 = require("footprintjs");
35
59
  const abort_js_1 = require("../lib/abort.js");
36
60
  const requestEvidence_js_1 = require("../tools/requestEvidence.js");
61
+ const callMarker_js_1 = require("./callMarker.js");
37
62
  /**
38
63
  * Open one call.
39
64
  *
40
- * @param params the request's params object — the SDK hands this very object to
41
- * the transport, which is how the ledger knows the request is this call's.
65
+ * @param params the request's params. The call sends them marked
66
+ * (`OpenCall.params`): the marker, not the object, is how the ledger knows
67
+ * the request is this call's — it survives an SDK that copies the params.
42
68
  * @param ctx the call's context: its signal, and the run's evidence port if any.
43
69
  * @param clientSignal the client's own `signal` (`McpClientOptions.signal`).
44
70
  * @param ledger the connection's ledger, when the library built its transport.
@@ -54,15 +80,37 @@ function openCall(params, ctx, clientSignal, ledger, server) {
54
80
  ? undefined
55
81
  : { sink, signal: (0, abort_js_1.eitherSignal)(signal, settled?.signal) };
56
82
  const sentBefore = ledger?.toolCallsSent ?? 0;
57
- if (ticket !== undefined)
58
- ledger?.issue(params, ticket);
83
+ // Every call on a watched connection gets a marker, ticket or not: under
84
+ // 'app-authorized' its request must be matched to it either way. The call
85
+ // holds its entry, so what it reads survives the connection closing.
86
+ const issued = ledger?.issue(ticket);
87
+ let mayHaveRun = false;
59
88
  return {
89
+ params: issued === undefined ? params : (0, callMarker_js_1.markParams)(params, issued.marker),
60
90
  ...(signal !== undefined && { signal }),
61
- close: () => {
91
+ failed: (error, verdict) => {
92
+ // A call its caller cancelled ends with the caller's reason, whatever its
93
+ // series did; the record still says what is known of its effect.
94
+ if (verdict === 'completed' || signal?.aborted === true)
95
+ return error;
96
+ const replay = issued?.request?.replay;
97
+ if (replay === undefined || !replay.uncertain)
98
+ return error;
99
+ mayHaveRun = true;
100
+ // The key, when one was sent, is an argument VALUE: it stays with the
101
+ // caller, who sent it, and never rides an error a run may record.
102
+ return new footprintjs_1.UnknownEffectError({ system: server, attempts: replay.sent, cause: error });
103
+ },
104
+ close: (verdict) => {
105
+ // The verdict first: settling the series' wait files its record.
106
+ issued?.request?.replay.settle(verdict, mayHaveRun);
107
+ // By its own entry, never the params object: a copy cannot keep a watch alive.
108
+ if (issued !== undefined)
109
+ ledger?.settle(issued);
62
110
  settled?.abort(callSettled());
63
111
  link?.unlink();
64
112
  if (ticket !== undefined && ledger !== undefined) {
65
- noteUnbound(ledger, ticket, sentBefore, server);
113
+ noteUnbound(ledger, issued?.request !== undefined, sentBefore, server);
66
114
  }
67
115
  },
68
116
  };
@@ -89,15 +137,15 @@ function callSettled() {
89
137
  });
90
138
  }
91
139
  /** Dev mode, once per connection: a request went out for this call, but the ledger never matched it. */
92
- function noteUnbound(ledger, ticket, sentBefore, server) {
93
- if (!(0, footprintjs_1.isDevMode)() || ledger.wasBound(ticket) || ledger.toolCallsSent <= sentBefore)
140
+ function noteUnbound(ledger, matched, sentBefore, server) {
141
+ if (!(0, footprintjs_1.isDevMode)() || matched || ledger.toolCallsSent <= sentBefore)
94
142
  return;
95
143
  if (!ledger.firstUnbound())
96
144
  return;
97
145
  // eslint-disable-next-line no-console
98
146
  console.warn(`[agentfootprint] mcpClient[${server}]: a tool call's request could not be matched to ` +
99
- 'the call, so its retry attempts were not recorded in the run. The MCP SDK copied the ' +
100
- "request's params before sending them. The call itself is unaffected, and its " +
101
- 'cancellation still reached the request.');
147
+ 'the call, so its retry attempts were not recorded in the run. The MCP SDK sent the ' +
148
+ "request without the call's `_meta` marker: it rebuilt the request's params. The call " +
149
+ 'itself is unaffected, and its cancellation still reached the request.');
102
150
  }
103
151
  //# sourceMappingURL=callLifetime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"callLifetime.js","sourceRoot":"","sources":["../../src/mcp/callLifetime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callLifetime.js","sourceRoot":"","sources":["../../src/mcp/callLifetime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * callMarker — a library-private marker that ties one MCP tool call to the one
4
+ * request the SDK sends for it, whatever the SDK copies on the way.
5
+ *
6
+ * Pattern: mark at the call, take at the transport.
7
+ * Role: The correlation hop of the request ledger (`requestLedger.ts`). The
8
+ * call puts its marker in the request's own `_meta` bag
9
+ * (`markParams`); the MCP SDK carries `_meta` through to the
10
+ * transport — the very object, or a copy of it (`structuredClone`, a
11
+ * spread) — and the ledger's watched `send` takes the marker out again
12
+ * (`takeMarker`) before the transport serializes the request. The
13
+ * server receives the bytes it always did: the marker never leaves the
14
+ * client.
15
+ *
16
+ * An object's identity does not survive a copy; a string inside it does. So an
17
+ * SDK that copies the params still delivers the marker, and the request is
18
+ * matched to its call by the call's own word, never by guessing from content
19
+ * (two calls with the same arguments are the case content matching gets wrong).
20
+ * An SDK that rebuilds the params and drops `_meta` delivers nothing: the
21
+ * request then matches no call, and the ledger says so (`requestLedger.ts`).
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.takeMarker = exports.markParams = exports.CALL_MARKER_KEY = void 0;
25
+ /** The `_meta` key the marker rides under. Never sent: `takeMarker` removes it. */
26
+ exports.CALL_MARKER_KEY = 'agentfootprint/call-ref';
27
+ /**
28
+ * `params` with `marker` added to its `_meta` bag: a new object, with every
29
+ * other key in its place; `params` itself is not changed. A `_meta` that was
30
+ * absent is added, after the other keys, so `takeMarker` can remove it whole.
31
+ */
32
+ function markParams(params, marker) {
33
+ const meta = recordOf(params._meta) ?? {};
34
+ return { ...params, _meta: { ...meta, [exports.CALL_MARKER_KEY]: marker } };
35
+ }
36
+ exports.markParams = markParams;
37
+ /**
38
+ * The marker a JSON-RPC message carries in `params._meta`, and the message
39
+ * without it. The message is never changed in place: the SDK's object stays
40
+ * the SDK's. Without the marker, the params are what they were before
41
+ * `markParams`: a `_meta` the marker alone filled is removed, and any other
42
+ * entry, the SDK's own included, keeps its place.
43
+ */
44
+ function takeMarker(message) {
45
+ const fields = recordOf(message);
46
+ const params = recordOf(fields?.['params']);
47
+ const meta = recordOf(params?.['_meta']);
48
+ if (fields === undefined ||
49
+ params === undefined ||
50
+ meta === undefined ||
51
+ !Object.prototype.hasOwnProperty.call(meta, exports.CALL_MARKER_KEY)) {
52
+ return { message };
53
+ }
54
+ const { [exports.CALL_MARKER_KEY]: marker, ...rest } = meta;
55
+ // A copy keeps every key in its place: `_meta` is replaced where it stood, or
56
+ // removed when the marker alone filled it.
57
+ const unmarked = { ...params };
58
+ if (Object.keys(rest).length > 0)
59
+ unmarked['_meta'] = rest;
60
+ else
61
+ delete unmarked['_meta'];
62
+ return {
63
+ ...(typeof marker === 'string' && { marker }),
64
+ message: { ...fields, params: unmarked },
65
+ };
66
+ }
67
+ exports.takeMarker = takeMarker;
68
+ /** A plain object's own fields, or `undefined` for anything else. */
69
+ function recordOf(value) {
70
+ return value !== null && typeof value === 'object' && !Array.isArray(value)
71
+ ? value
72
+ : undefined;
73
+ }
74
+ //# sourceMappingURL=callMarker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callMarker.js","sourceRoot":"","sources":["../../src/mcp/callMarker.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;AAEH,mFAAmF;AACtE,QAAA,eAAe,GAAG,yBAAyB,CAAC;AAEzD;;;;GAIG;AACH,SAAgB,UAAU,CAAmB,MAAS,EAAE,MAAc;IACpE,MAAM,IAAI,GAAG,QAAQ,CAAE,MAAuC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5E,OAAO,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,uBAAe,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;AACtE,CAAC;AAHD,gCAGC;AASD;;;;;;GAMG;AACH,SAAgB,UAAU,CAAC,OAAgB;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC,IACE,MAAM,KAAK,SAAS;QACpB,MAAM,KAAK,SAAS;QACpB,IAAI,KAAK,SAAS;QAClB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,uBAAe,CAAC,EAC5D,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC;IACrB,CAAC;IACD,MAAM,EAAE,CAAC,uBAAe,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IACpD,8EAA8E;IAC9E,2CAA2C;IAC3C,MAAM,QAAQ,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;IACxD,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;;QACtD,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO;QACL,GAAG,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,EAAE,MAAM,EAAE,CAAC;QAC7C,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;KACzC,CAAC;AACJ,CAAC;AAtBD,gCAsBC;AAED,qEAAqE;AACrE,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAA2C;QAC9C,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC"}
@@ -69,6 +69,13 @@ const BUILT_BY_THE_TRANSPORT = [
69
69
  '`agentfootprint/providers`) and hand THAT to your transport — it is the same ' +
70
70
  'implementation, applied where you build it.',
71
71
  ],
72
+ [
73
+ 'replay',
74
+ 'The replay declaration is asked by the retry series inside that transport, and a ' +
75
+ 'connection you built has none of ours: `retryingFetch` keeps the compatibility ' +
76
+ 'policy (a 429 retried for every tool, the assumption recorded nowhere). Pass ' +
77
+ '`transport` instead to have tool calls sent again only as you declare.',
78
+ ],
72
79
  [
73
80
  'clientInfo',
74
81
  'Pass it to the SDK `Client` constructor instead: `new Client(clientInfo, { capabilities: {} })`.',
@@ -1 +1 @@
1
- {"version":3,"file":"connectionRefusals.js","sourceRoot":"","sources":["../../src/mcp/connectionRefusals.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAIH,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAEvE;;;;;;;GAOG;AACH,SAAgB,wBAAwB,CACtC,IAA6C,EAC7C,IAAY;IAEZ,MAAM,EAAE,GAAG,aAAa,IAAI,GAAG,CAAC;IAChC,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,iCAAiC;IACjC,MAAM,KAAK,GAAG,IAAoD,CAAC;IAEnE,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,kFAAkF;gBACrF,oDAAoD,CACvD,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,sDAAsD;IACtD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,sBAAsB,EAAE,CAAC;QACrD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,0BAA0B,MAAM,6BAA6B;gBAChE,oEAAoE,MAAM,QAAQ;gBAClF,6DAA6D,KAAK,EAAE,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAhCD,4DAgCC;AAED;;;;;GAKG;AACH,MAAM,sBAAsB,GAExB;IACF;QACE,iBAAiB;QACjB,gFAAgF;YAC9E,+EAA+E;YAC/E,6CAA6C;KAChD;IACD;QACE,YAAY;QACZ,kGAAkG;KACnG;IACD;QACE,WAAW;QACX,gGAAgG;KACjG;IACD;QACE,KAAK;QACL,+EAA+E;YAC7E,wCAAwC;KAC3C;IACD;QACE,SAAS;QACT,uFAAuF;KACxF;CACF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CAAC,UAAmB,EAAE,EAAU;IACvD,MAAM,OAAO,GAAG,CAAC,UAAU,IAAI,EAAE,CAAsC,CAAC;IACxE,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,6BAA6B,MAAM,yCAAyC;gBAC/E,oFAAoF;gBACpF,kFAAkF;gBAClF,uDAAuD,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"connectionRefusals.js","sourceRoot":"","sources":["../../src/mcp/connectionRefusals.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAIH,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAU,CAAC;AAEvE;;;;;;;GAOG;AACH,SAAgB,wBAAwB,CACtC,IAA6C,EAC7C,IAAY;IAEZ,MAAM,EAAE,GAAG,aAAa,IAAI,GAAG,CAAC;IAChC,6EAA6E;IAC7E,6EAA6E;IAC7E,8EAA8E;IAC9E,iCAAiC;IACjC,MAAM,KAAK,GAAG,IAAoD,CAAC;IAEnE,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YACvE,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,kFAAkF;gBACrF,oDAAoD,CACvD,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,sDAAsD;IACtD,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,sBAAsB,EAAE,CAAC;QACrD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,0BAA0B,MAAM,6BAA6B;gBAChE,oEAAoE,MAAM,QAAQ;gBAClF,6DAA6D,KAAK,EAAE,CACvE,CAAC;QACJ,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC;AAhCD,4DAgCC;AAED;;;;;GAKG;AACH,MAAM,sBAAsB,GAExB;IACF;QACE,iBAAiB;QACjB,gFAAgF;YAC9E,+EAA+E;YAC/E,6CAA6C;KAChD;IACD;QACE,QAAQ;QACR,mFAAmF;YACjF,iFAAiF;YACjF,+EAA+E;YAC/E,wEAAwE;KAC3E;IACD;QACE,YAAY;QACZ,kGAAkG;KACnG;IACD;QACE,WAAW;QACX,gGAAgG;KACjG;IACD;QACE,KAAK;QACL,+EAA+E;YAC7E,wCAAwC;KAC3C;IACD;QACE,SAAS;QACT,uFAAuF;KACxF;CACF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,SAAS,gBAAgB,CAAC,UAAmB,EAAE,EAAU;IACvD,MAAM,OAAO,GAAG,CAAC,UAAU,IAAI,EAAE,CAAsC,CAAC;IACxE,KAAK,MAAM,MAAM,IAAI,kBAAkB,EAAE,CAAC;QACxC,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,GAAG,EAAE,6BAA6B,MAAM,yCAAyC;gBAC/E,oFAAoF;gBACpF,kFAAkF;gBAClF,uDAAuD,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/mcp/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.retryingFetch = exports.GatewayAuthorizationRequiredError = exports.gatewayTransport = exports.mockMcpClient = exports.MCP_TOOL_EXTRAS_KEY = exports.mcpServe = exports.mcpClient = void 0;
3
+ exports.McpReplayUnavailableError = exports.retryingFetch = exports.GatewayAuthorizationRequiredError = exports.gatewayTransport = exports.mockMcpClient = exports.MCP_TOOL_EXTRAS_KEY = exports.mcpServe = exports.mcpClient = void 0;
4
4
  /**
5
5
  * MCP — Model Context Protocol, both directions. `mcpClient` connects to
6
6
  * someone else's MCP server and registers its tools on your Agent;
@@ -25,4 +25,8 @@ Object.defineProperty(exports, "GatewayAuthorizationRequiredError", { enumerable
25
25
  // apply the SAME implementation instead of silently going without it.
26
26
  var throttleRetry_js_1 = require("./throttleRetry.js");
27
27
  Object.defineProperty(exports, "retryingFetch", { enumerable: true, get: function () { return throttleRetry_js_1.retryingFetch; } });
28
+ // A call under 'app-authorized' that a connection cannot honour is refused
29
+ // before it is sent, with a typed reason.
30
+ var replayUnavailable_js_1 = require("./replayUnavailable.js");
31
+ Object.defineProperty(exports, "McpReplayUnavailableError", { enumerable: true, get: function () { return replayUnavailable_js_1.McpReplayUnavailableError; } });
28
32
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAClB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AACjB,8EAA8E;AAC9E,0EAA0E;AAC1E,iDAA0E;AAAjE,oHAAA,mBAAmB,OAAA;AAC5B,uDAAgG;AAAvF,iHAAA,aAAa,OAAA;AACtB,6DAI+B;AAH7B,uHAAA,gBAAgB,OAAA;AAChB,wIAAA,iCAAiC,OAAA;AAGnC,6EAA6E;AAC7E,4EAA4E;AAC5E,sEAAsE;AACtE,uDAAmD;AAA1C,iHAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,+CAA2C;AAAlC,yGAAA,SAAS,OAAA;AAClB,6CAAyC;AAAhC,uGAAA,QAAQ,OAAA;AACjB,8EAA8E;AAC9E,0EAA0E;AAC1E,iDAA0E;AAAjE,oHAAA,mBAAmB,OAAA;AAC5B,uDAAgG;AAAvF,iHAAA,aAAa,OAAA;AACtB,6DAI+B;AAH7B,uHAAA,gBAAgB,OAAA;AAChB,wIAAA,iCAAiC,OAAA;AAGnC,6EAA6E;AAC7E,4EAA4E;AAC5E,sEAAsE;AACtE,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAgBtB,2EAA2E;AAC3E,0CAA0C;AAC1C,+DAAoG;AAA3F,iIAAA,yBAAyB,OAAA"}
@@ -45,12 +45,15 @@
45
45
  */
46
46
  Object.defineProperty(exports, "__esModule", { value: true });
47
47
  exports.mcpClient = void 0;
48
+ const footprintjs_1 = require("footprintjs");
48
49
  const toolExtras_js_1 = require("./toolExtras.js");
49
50
  const toolResult_js_1 = require("./toolResult.js");
50
51
  const gatewayTransport_js_1 = require("./gatewayTransport.js");
51
52
  const throttleRetry_js_1 = require("./throttleRetry.js");
52
53
  const requestLedger_js_1 = require("./requestLedger.js");
53
54
  const callLifetime_js_1 = require("./callLifetime.js");
55
+ const replayUnavailable_js_1 = require("./replayUnavailable.js");
56
+ const replay_js_1 = require("./replay.js");
54
57
  const connectionRefusals_js_1 = require("./connectionRefusals.js");
55
58
  const sdkLoadFailure_js_1 = require("./sdkLoadFailure.js");
56
59
  const transportUrl_js_1 = require("./transportUrl.js");
@@ -90,7 +93,12 @@ async function mcpClient(opts) {
90
93
  // Before anything connects: an option that names a behaviour which cannot
91
94
  // happen on the chosen arm is a defect, not a preference.
92
95
  (0, connectionRefusals_js_1.refuseConflictingOptions)(opts, name);
93
- const { connection, ledger } = await openConnection(opts);
96
+ // The app's replay declaration — who may send a tool call again — read and
97
+ // checked once, here, before anything connects (`replay.ts`).
98
+ const replay = (0, replay_js_1.replayDeclarationOf)(opts.replay, `mcpClient[${name}]`);
99
+ const strict = replay.policy === 'app-authorized';
100
+ const { connection, ledger } = await openConnection(opts, replay, name);
101
+ const unlisted = new Set();
94
102
  // Tool cache so consumers calling `.tools()` more than once don't
95
103
  // hammer the server. `.refresh()` invalidates it.
96
104
  let cache = null;
@@ -106,7 +114,8 @@ async function mcpClient(opts) {
106
114
  const listed = opts.signal
107
115
  ? await connection.listTools(undefined, { signal: opts.signal })
108
116
  : await connection.listTools();
109
- return listed.tools.map((t) => wrapMcpTool(name, connection, t, opts.signal, resultMode, ledger));
117
+ noteUnlisted(replay, listed.tools, name, unlisted);
118
+ return listed.tools.map((t) => wrapMcpTool(name, connection, t, opts.signal, resultMode, ledger, strict));
110
119
  };
111
120
  return {
112
121
  name,
@@ -126,7 +135,13 @@ async function mcpClient(opts) {
126
135
  return;
127
136
  closed = true;
128
137
  cache = null;
129
- await connection.close();
138
+ try {
139
+ await connection.close();
140
+ }
141
+ finally {
142
+ // Nothing this connection sent is awaited any more, however it closed.
143
+ ledger?.close();
144
+ }
130
145
  },
131
146
  };
132
147
  }
@@ -140,7 +155,7 @@ exports.mcpClient = mcpClient;
140
155
  * A call with neither `connection` nor `sdk` reaches `resolveClient` with two
141
156
  * `undefined` arguments and takes the identical path it always took.
142
157
  */
143
- async function openConnection(opts) {
158
+ async function openConnection(opts, replay, name) {
144
159
  if (opts.connection !== undefined)
145
160
  return { connection: opts.connection };
146
161
  if (opts._client !== undefined)
@@ -148,17 +163,17 @@ async function openConnection(opts) {
148
163
  // `refuseConflictingOptions` has already refused the case where this is
149
164
  // absent, so the assertion documents that guarantee rather than assuming it.
150
165
  const transport = opts.transport;
151
- return resolveClient(transport, opts.clientInfo, opts.signal, opts.retryOnThrottle, opts.sdk);
166
+ return resolveClient(transport, opts.clientInfo, opts.signal, opts.retryOnThrottle, opts.sdk, replay, name);
152
167
  }
153
168
  // ─── SDK construction (lazy require, unless the caller supplied it) ─
154
- async function resolveClient(transport, clientInfo, signal, retryOnThrottle, sdk) {
169
+ async function resolveClient(transport, clientInfo, signal, retryOnThrottle, sdk, replay, name = 'mcp') {
155
170
  if (sdk !== undefined)
156
171
  assertSdk(sdk, transport.transport);
157
172
  const mod = sdk ?? loadClientModule();
158
173
  const client = new mod.Client(clientInfo ?? DEFAULT_CLIENT_INFO, {
159
174
  capabilities: {},
160
175
  });
161
- const built = await buildTransport(transport, retryOnThrottle, sdk);
176
+ const built = await buildTransport(transport, retryOnThrottle, sdk, replay, name);
162
177
  // Same rule as callTool: options ride beside the transport, never inside it.
163
178
  if (signal)
164
179
  await client.connect(built.transport, { signal });
@@ -208,7 +223,7 @@ function loadClientModule() {
208
223
  }));
209
224
  }
210
225
  }
211
- async function buildTransport(t, retryOnThrottle, sdk) {
226
+ async function buildTransport(t, retryOnThrottle, sdk, replay, name = 'mcp') {
212
227
  if (t.transport === 'stdio') {
213
228
  // Deliberately NOT served by `sdk`: stdio spawns a subprocess, so it can
214
229
  // never run in a browser, and `client/stdio.js` is the SDK's one client
@@ -253,9 +268,23 @@ async function buildTransport(t, retryOnThrottle, sdk) {
253
268
  //
254
269
  // The ledger joins the same series, so each request a dispatched tool call
255
270
  // 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();
271
+ // watched to bind each request to its call (`requestLedger.ts`). The app's
272
+ // replay declaration joins with it: the series asks it before sending a tool
273
+ // call again (`replay.ts`). `retryOnThrottle: false` turns off the 429 rule
274
+ // and nothing else: when the declaration still needs a series — a tool
275
+ // declared repeatable on 'network', or the 'app-authorized' policy — the
276
+ // series stays, with that rule switched off (`seriesWithoutThrottle`).
277
+ // Otherwise a fetch that runs no series gets neither ledger nor declaration:
278
+ // there is nothing to file and nothing is sent again.
279
+ const retried = (inner) => retryOnThrottle === false && replay !== undefined && (0, replay_js_1.needsSeries)(replay)
280
+ ? (0, throttleRetry_js_1.seriesWithoutThrottle)(inner)
281
+ : (0, throttleRetry_js_1.retryingFetch)(inner, retryOnThrottle);
282
+ // Under 'app-authorized' the ledger refuses a request it cannot match to its
283
+ // call, and awaits each matched request's answer (`requestLedger.ts`).
284
+ const ledger = new requestLedger_js_1.RequestLedger({
285
+ server: name,
286
+ strict: replay?.policy === 'app-authorized',
287
+ });
259
288
  if (t.transport === 'gateway') {
260
289
  // The consumer's own `fetch` (9.32.0) goes UNDERNEATH the vending, not
261
290
  // beside it: `createVendingFetch` resolves the credential, applies it to
@@ -264,8 +293,8 @@ async function buildTransport(t, retryOnThrottle, sdk) {
264
293
  // credential is still vended per request. Passing `undefined` is the
265
294
  // default global `fetch`, which is byte-identical to every release before
266
295
  // the seam existed.
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);
296
+ const gatewayFetch = retried((0, gatewayTransport_js_1.createVendingFetch)(t, t.fetch));
297
+ const ledgered = gatewayFetch && (0, throttleRetry_js_1.ledgeredFetch)(gatewayFetch, ledger, replay);
269
298
  return watched(new httpMod.StreamableHTTPClientTransport((0, transportUrl_js_1.transportUrl)(t.url, 'mcpClient'), {
270
299
  fetch: ledgered ?? gatewayFetch,
271
300
  }), ledgered && ledger);
@@ -274,8 +303,8 @@ async function buildTransport(t, retryOnThrottle, sdk) {
274
303
  // are given. The SDK folds `requestInit.headers` into the `init.headers` it
275
304
  // hands the custom fetch, so a signer sees the static headers and has the
276
305
  // final word over the bytes — see `McpHttpTransport.fetch`.
277
- const httpFetch = (0, throttleRetry_js_1.retryingFetch)(t.fetch, retryOnThrottle);
278
- const ledgered = httpFetch && (0, throttleRetry_js_1.ledgeredFetch)(httpFetch, ledger);
306
+ const httpFetch = retried(t.fetch);
307
+ const ledgered = httpFetch && (0, throttleRetry_js_1.ledgeredFetch)(httpFetch, ledger, replay);
279
308
  const fetch = ledgered ?? httpFetch;
280
309
  return watched(new httpMod.StreamableHTTPClientTransport((0, transportUrl_js_1.transportUrl)(t.url, 'mcpClient'), {
281
310
  ...(t.headers && { requestInit: { headers: { ...t.headers } } }),
@@ -310,8 +339,26 @@ function loadHttpModule(transport) {
310
339
  }));
311
340
  }
312
341
  }
342
+ /**
343
+ * Dev mode, once per client and name: a replay entry for a tool the server does
344
+ * not list applies to nothing — a misspelled name would leave a tool that makes
345
+ * changes outside the side-effect guard, so it is named.
346
+ */
347
+ function noteUnlisted(replay, listed, server, noted) {
348
+ if (replay.tools.size === 0 || !(0, footprintjs_1.isDevMode)())
349
+ return;
350
+ const names = new Set(listed.map((tool) => tool.name));
351
+ for (const tool of replay.tools.keys()) {
352
+ if (names.has(tool) || noted.has(tool))
353
+ continue;
354
+ noted.add(tool);
355
+ // eslint-disable-next-line no-console
356
+ console.warn(`[agentfootprint] mcpClient[${server}]: \`replay.tools\` names ${JSON.stringify(tool)}, ` +
357
+ "which the server does not list, so the entry applies to nothing. Check the name against the server's tool list.");
358
+ }
359
+ }
313
360
  // ─── Tool wrapping ─────────────────────────────────────────────────
314
- function wrapMcpTool(serverName, connection, mcp, signal, resultMode, ledger) {
361
+ function wrapMcpTool(serverName, connection, mcp, signal, resultMode, ledger, strict = false) {
315
362
  const tool = {
316
363
  schema: {
317
364
  name: mcp.name,
@@ -353,20 +400,40 @@ function wrapMcpTool(serverName, connection, mcp, signal, resultMode, ledger) {
353
400
  ...(ctx?.time !== undefined && { _meta: (0, toolExtras_js_1.callMetaOf)(ctx.time) }),
354
401
  };
355
402
  // 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.
403
+ // client's cancel the SDK request while it runs; the call puts a private
404
+ // marker in its params' `_meta` (`call.params`), which ties the request
405
+ // the SDK sends to this call — through any copy the SDK makes — so the
406
+ // retry series that sends it files its attempts into the call's run; and
407
+ // however the call settles, a series still sending is cut, inside the
408
+ // call. The transport takes the marker out: the server receives the
409
+ // request it always did.
410
+ //
411
+ // How it settles is its verdict: `completed` when the server answered and
412
+ // not with an error (a result it then cannot decode still completed).
413
+ // Under 'app-authorized', a call that genuinely lacked an answer somewhere
414
+ // and does not complete fails as "may have run"; a received refusal or
415
+ // error is delivered as it came (`callLifetime.ts`). That contract needs
416
+ // each request matched to its call and each answer seen: a connection
417
+ // that cannot establish both refuses the call here, before anything is
418
+ // sent (`replayUnavailable.ts`).
419
+ const unavailable = strict ? (0, replayUnavailable_js_1.unavailableBeforeSending)(ledger) : undefined;
420
+ if (unavailable !== undefined) {
421
+ throw new replayUnavailable_js_1.McpReplayUnavailableError(unavailable, serverName, mcp.name);
422
+ }
361
423
  const call = (0, callLifetime_js_1.openCall)(params, ctx, signal, ledger, serverName);
424
+ let verdict = 'failed';
362
425
  try {
363
426
  const result = call.signal
364
- ? await connection.callTool(params, undefined, { signal: call.signal })
365
- : await connection.callTool(params);
427
+ ? await connection.callTool(call.params, undefined, { signal: call.signal })
428
+ : await connection.callTool(call.params);
429
+ verdict = (0, toolResult_js_1.isToolError)(result) ? 'tool-error' : 'completed';
366
430
  return (0, toolResult_js_1.readToolResult)(result, mcp.name, serverName, resultMode);
367
431
  }
432
+ catch (error) {
433
+ throw call.failed(error, verdict);
434
+ }
368
435
  finally {
369
- call.close();
436
+ call.close(verdict);
370
437
  }
371
438
  },
372
439
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../../src/mcp/mcpClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../../src/mcp/mcpClient.ts"],"names":[],"mappings":"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"}