agentfootprint 11.2.0 → 11.4.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.
- package/AGENTS.md +1 -1
- package/CAPABILITIES.md +4 -0
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/adapters/identity/verify/claims.js +3 -3
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js +3 -2
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js +6 -5
- package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/transport.js +8 -6
- package/dist/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
- package/dist/answer-account/account.js +15 -3
- package/dist/answer-account/account.js.map +1 -1
- package/dist/answer-account/facts/howSure.js +10 -22
- package/dist/answer-account/facts/howSure.js.map +1 -1
- package/dist/core/Agent.js +26 -3
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +69 -12
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/assessment/assess.js +15 -4
- package/dist/core/agent/assessment/assess.js.map +1 -1
- package/dist/core/agent/assessment/compose.js +153 -15
- package/dist/core/agent/assessment/compose.js.map +1 -1
- package/dist/core/agent/assessment/reasons.js +35 -1
- package/dist/core/agent/assessment/reasons.js.map +1 -1
- package/dist/core/agent/assessment/sources.js +205 -0
- package/dist/core/agent/assessment/sources.js.map +1 -0
- package/dist/core/agent/assessment/stage.js +15 -4
- package/dist/core/agent/assessment/stage.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildToolRegistry.js +4 -1
- package/dist/core/agent/buildToolRegistry.js.map +1 -1
- package/dist/core/agent/evidence/evidenceIndex.js +30 -2
- package/dist/core/agent/evidence/evidenceIndex.js.map +1 -1
- package/dist/core/agent/evidence/extract.js +34 -5
- package/dist/core/agent/evidence/extract.js.map +1 -1
- package/dist/core/agent/evidence/figures.js +31 -3
- package/dist/core/agent/evidence/figures.js.map +1 -1
- package/dist/core/agent/evidence/numberPrecision.js +58 -2
- package/dist/core/agent/evidence/numberPrecision.js.map +1 -1
- package/dist/core/agent/honesty/mounts.js.map +1 -1
- package/dist/core/agent/stages/prepareFinal.js +33 -17
- package/dist/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/core/agent/stages/route.js +2 -1
- package/dist/core/agent/stages/route.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +14 -1
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/slots/buildToolsSlot.js +1 -1
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/adapters/identity/jwks.d.ts +2 -2
- package/dist/esm/adapters/identity/verify/claims.d.ts +3 -3
- package/dist/esm/adapters/identity/verify/claims.js +3 -3
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.d.ts +3 -2
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js +3 -2
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +6 -5
- package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js +6 -5
- package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.d.ts +3 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +9 -7
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
- package/dist/esm/answer-account/account.js +16 -4
- package/dist/esm/answer-account/account.js.map +1 -1
- package/dist/esm/answer-account/facts/howSure.js +10 -22
- package/dist/esm/answer-account/facts/howSure.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +2 -1
- package/dist/esm/core/Agent.js +26 -3
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +22 -1
- package/dist/esm/core/agent/AgentBuilder.js +69 -12
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/assessment/assess.js +15 -4
- package/dist/esm/core/agent/assessment/assess.js.map +1 -1
- package/dist/esm/core/agent/assessment/compose.d.ts +82 -5
- package/dist/esm/core/agent/assessment/compose.js +148 -14
- package/dist/esm/core/agent/assessment/compose.js.map +1 -1
- package/dist/esm/core/agent/assessment/reasons.d.ts +17 -1
- package/dist/esm/core/agent/assessment/reasons.js +35 -1
- package/dist/esm/core/agent/assessment/reasons.js.map +1 -1
- package/dist/esm/core/agent/assessment/sources.d.ts +66 -0
- package/dist/esm/core/agent/assessment/sources.js +201 -0
- package/dist/esm/core/agent/assessment/sources.js.map +1 -0
- package/dist/esm/core/agent/assessment/stage.d.ts +17 -4
- package/dist/esm/core/agent/assessment/stage.js +16 -5
- package/dist/esm/core/agent/assessment/stage.js.map +1 -1
- package/dist/esm/core/agent/assessment/types.d.ts +37 -0
- package/dist/esm/core/agent/buildAgentChart.d.ts +8 -0
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildToolRegistry.js +5 -2
- package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
- package/dist/esm/core/agent/evidence/evidenceIndex.d.ts +12 -2
- package/dist/esm/core/agent/evidence/evidenceIndex.js +30 -2
- package/dist/esm/core/agent/evidence/evidenceIndex.js.map +1 -1
- package/dist/esm/core/agent/evidence/extract.js +35 -6
- package/dist/esm/core/agent/evidence/extract.js.map +1 -1
- package/dist/esm/core/agent/evidence/figures.d.ts +6 -0
- package/dist/esm/core/agent/evidence/figures.js +32 -4
- package/dist/esm/core/agent/evidence/figures.js.map +1 -1
- package/dist/esm/core/agent/evidence/numberPrecision.d.ts +29 -1
- package/dist/esm/core/agent/evidence/numberPrecision.js +56 -1
- package/dist/esm/core/agent/evidence/numberPrecision.js.map +1 -1
- package/dist/esm/core/agent/honesty/mounts.d.ts +11 -2
- package/dist/esm/core/agent/honesty/mounts.js.map +1 -1
- package/dist/esm/core/agent/stages/prepareFinal.d.ts +19 -3
- package/dist/esm/core/agent/stages/prepareFinal.js +33 -17
- package/dist/esm/core/agent/stages/prepareFinal.js.map +1 -1
- package/dist/esm/core/agent/stages/route.js +2 -1
- package/dist/esm/core/agent/stages/route.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.js +14 -1
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +16 -2
- package/dist/esm/core/slots/buildToolsSlot.js +1 -1
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +194 -0
- package/dist/esm/events/registry.d.ts +3 -1
- package/dist/esm/events/registry.js +2 -0
- package/dist/esm/events/registry.js.map +1 -1
- package/dist/esm/hosting/doorGuard.d.ts +3 -3
- package/dist/esm/hosting/doorGuard.js +2 -2
- package/dist/esm/hosting/nodeHost.d.ts +1 -1
- package/dist/esm/lib/displayName.d.ts +81 -0
- package/dist/esm/lib/displayName.js +119 -0
- package/dist/esm/lib/displayName.js.map +1 -0
- package/dist/esm/mcp/callLifetime.d.ts +49 -0
- package/dist/esm/mcp/callLifetime.js +99 -0
- package/dist/esm/mcp/callLifetime.js.map +1 -0
- package/dist/esm/mcp/mcpClient.d.ts +4 -1
- package/dist/esm/mcp/mcpClient.js +70 -28
- package/dist/esm/mcp/mcpClient.js.map +1 -1
- package/dist/esm/mcp/requestLedger.d.ts +97 -0
- package/dist/esm/mcp/requestLedger.js +192 -0
- package/dist/esm/mcp/requestLedger.js.map +1 -0
- package/dist/esm/mcp/seriesEvidence.d.ts +102 -0
- package/dist/esm/mcp/seriesEvidence.js +246 -0
- package/dist/esm/mcp/seriesEvidence.js.map +1 -0
- package/dist/esm/mcp/throttleRetry.d.ts +70 -35
- package/dist/esm/mcp/throttleRetry.js +181 -54
- package/dist/esm/mcp/throttleRetry.js.map +1 -1
- package/dist/esm/mcp/types.d.ts +12 -7
- package/dist/esm/redaction/knownStrings.js +30 -0
- package/dist/esm/redaction/knownStrings.js.map +1 -1
- package/dist/esm/security/PermissionPolicy.d.ts +1 -1
- package/dist/esm/security/PermissionPolicy.js +1 -1
- package/dist/esm/semantics/coverage/answer.d.ts +9 -1
- package/dist/esm/semantics/coverage/answer.js +50 -10
- package/dist/esm/semantics/coverage/answer.js.map +1 -1
- package/dist/esm/strategies/defaults/chatBubbleLiveStatus.d.ts +1 -1
- package/dist/esm/strategies/defaults/chatBubbleLiveStatus.js +1 -1
- package/dist/esm/tool-lint/analyze.d.ts +1 -1
- package/dist/esm/tool-lint/analyze.js +1 -1
- package/dist/esm/tool-lint/rules.d.ts +3 -3
- package/dist/esm/tool-lint/rules.js +3 -3
- package/dist/esm/tools/requestEvidence.d.ts +78 -0
- package/dist/esm/tools/requestEvidence.js +331 -0
- package/dist/esm/tools/requestEvidence.js.map +1 -0
- package/dist/esm/tools/tools.d.ts +30 -0
- package/dist/esm/tools/tools.js +16 -0
- package/dist/esm/tools/tools.js.map +1 -1
- package/dist/events/registry.js +2 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/hosting/doorGuard.js +2 -2
- package/dist/lib/displayName.js +125 -0
- package/dist/lib/displayName.js.map +1 -0
- package/dist/mcp/callLifetime.js +103 -0
- package/dist/mcp/callLifetime.js.map +1 -0
- package/dist/mcp/mcpClient.js +69 -27
- package/dist/mcp/mcpClient.js.map +1 -1
- package/dist/mcp/requestLedger.js +196 -0
- package/dist/mcp/requestLedger.js.map +1 -0
- package/dist/mcp/seriesEvidence.js +251 -0
- package/dist/mcp/seriesEvidence.js.map +1 -0
- package/dist/mcp/throttleRetry.js +184 -55
- package/dist/mcp/throttleRetry.js.map +1 -1
- package/dist/redaction/knownStrings.js +30 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/security/PermissionPolicy.js +1 -1
- package/dist/semantics/coverage/answer.js +49 -9
- package/dist/semantics/coverage/answer.js.map +1 -1
- package/dist/strategies/defaults/chatBubbleLiveStatus.js +1 -1
- package/dist/tool-lint/analyze.js +1 -1
- package/dist/tool-lint/rules.js +3 -3
- package/dist/tools/requestEvidence.js +337 -0
- package/dist/tools/requestEvidence.js.map +1 -0
- package/dist/tools/tools.js +18 -1
- package/dist/tools/tools.js.map +1 -1
- package/dist/types/adapters/identity/jwks.d.ts +2 -2
- package/dist/types/adapters/identity/verify/claims.d.ts +3 -3
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts +3 -2
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +6 -5
- package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts +3 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts.map +1 -1
- package/dist/types/answer-account/account.d.ts.map +1 -1
- package/dist/types/answer-account/facts/howSure.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +2 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +22 -1
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/assess.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/compose.d.ts +82 -5
- package/dist/types/core/agent/assessment/compose.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/reasons.d.ts +17 -1
- package/dist/types/core/agent/assessment/reasons.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/sources.d.ts +67 -0
- package/dist/types/core/agent/assessment/sources.d.ts.map +1 -0
- package/dist/types/core/agent/assessment/stage.d.ts +17 -4
- package/dist/types/core/agent/assessment/stage.d.ts.map +1 -1
- package/dist/types/core/agent/assessment/types.d.ts +37 -0
- package/dist/types/core/agent/assessment/types.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +8 -0
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildToolRegistry.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/evidenceIndex.d.ts +12 -2
- package/dist/types/core/agent/evidence/evidenceIndex.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/extract.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/figures.d.ts +6 -0
- package/dist/types/core/agent/evidence/figures.d.ts.map +1 -1
- package/dist/types/core/agent/evidence/numberPrecision.d.ts +29 -1
- package/dist/types/core/agent/evidence/numberPrecision.d.ts.map +1 -1
- package/dist/types/core/agent/honesty/mounts.d.ts +11 -2
- package/dist/types/core/agent/honesty/mounts.d.ts.map +1 -1
- package/dist/types/core/agent/stages/prepareFinal.d.ts +19 -3
- package/dist/types/core/agent/stages/prepareFinal.d.ts.map +1 -1
- package/dist/types/core/agent/stages/route.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +16 -2
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +194 -0
- package/dist/types/events/payloads.d.ts.map +1 -1
- package/dist/types/events/registry.d.ts +3 -1
- package/dist/types/events/registry.d.ts.map +1 -1
- package/dist/types/hosting/doorGuard.d.ts +3 -3
- package/dist/types/hosting/nodeHost.d.ts +1 -1
- package/dist/types/lib/displayName.d.ts +82 -0
- package/dist/types/lib/displayName.d.ts.map +1 -0
- package/dist/types/mcp/callLifetime.d.ts +50 -0
- package/dist/types/mcp/callLifetime.d.ts.map +1 -0
- package/dist/types/mcp/mcpClient.d.ts +4 -1
- package/dist/types/mcp/mcpClient.d.ts.map +1 -1
- package/dist/types/mcp/requestLedger.d.ts +98 -0
- package/dist/types/mcp/requestLedger.d.ts.map +1 -0
- package/dist/types/mcp/seriesEvidence.d.ts +103 -0
- package/dist/types/mcp/seriesEvidence.d.ts.map +1 -0
- package/dist/types/mcp/throttleRetry.d.ts +70 -35
- package/dist/types/mcp/throttleRetry.d.ts.map +1 -1
- package/dist/types/mcp/types.d.ts +12 -7
- package/dist/types/mcp/types.d.ts.map +1 -1
- package/dist/types/redaction/knownStrings.d.ts.map +1 -1
- package/dist/types/security/PermissionPolicy.d.ts +1 -1
- package/dist/types/semantics/coverage/answer.d.ts +9 -1
- package/dist/types/semantics/coverage/answer.d.ts.map +1 -1
- package/dist/types/strategies/defaults/chatBubbleLiveStatus.d.ts +1 -1
- package/dist/types/tool-lint/analyze.d.ts +1 -1
- package/dist/types/tool-lint/rules.d.ts +3 -3
- package/dist/types/tools/requestEvidence.d.ts +79 -0
- package/dist/types/tools/requestEvidence.d.ts.map +1 -0
- package/dist/types/tools/tools.d.ts +30 -0
- package/dist/types/tools/tools.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/events/registry.js
CHANGED
|
@@ -94,6 +94,7 @@ exports.EVENT_NAMES = {
|
|
|
94
94
|
coverageDeclared: 'agentfootprint.tools.coverage_declared',
|
|
95
95
|
semanticsDeclared: 'agentfootprint.tools.semantics_declared',
|
|
96
96
|
codeRun: 'agentfootprint.tools.code_run',
|
|
97
|
+
requestAttempts: 'agentfootprint.tools.request_attempts',
|
|
97
98
|
},
|
|
98
99
|
skill: {
|
|
99
100
|
activated: 'agentfootprint.skill.activated',
|
|
@@ -269,6 +270,7 @@ exports.ALL_EVENT_TYPES = [
|
|
|
269
270
|
'agentfootprint.tools.repeated_call',
|
|
270
271
|
'agentfootprint.tools.absent',
|
|
271
272
|
'agentfootprint.tools.code_run',
|
|
273
|
+
'agentfootprint.tools.request_attempts',
|
|
272
274
|
'agentfootprint.tools.coverage_declared',
|
|
273
275
|
'agentfootprint.tools.semantics_declared',
|
|
274
276
|
'agentfootprint.validation.args_invalid',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/events/registry.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/events/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* hosting/doorGuard — what a request has to be before any handler sees it.
|
|
4
4
|
*
|
|
5
|
-
* const guard = doorGuard({ name: 'auth', allowedHosts: ['
|
|
5
|
+
* const guard = doorGuard({ name: 'auth', allowedHosts: ['bot.corp.example'] });
|
|
6
6
|
* const refusal = guard.check(req); // an IncomingMessage works as-is
|
|
7
7
|
* if (refusal) return answer(refusal.status, refusal.message, refusal.code);
|
|
8
8
|
*
|
|
@@ -205,7 +205,7 @@ exports.checkSessionId = checkSessionId;
|
|
|
205
205
|
* - **A reverse proxy on the same machine that forwards the PUBLIC name** in
|
|
206
206
|
* `Host` (nginx `proxy_set_header Host $host`) — the common case, and the
|
|
207
207
|
* recommended "bind 127.0.0.1 behind nginx" setup. The proxy's requests
|
|
208
|
-
* arrive on loopback carrying `
|
|
208
|
+
* arrive on loopback carrying `bot.corp.example`, which the socket cannot
|
|
209
209
|
* tell from a rebinding page. List that name in `allowedHosts`; the 421
|
|
210
210
|
* says so, naming this default (`HostNotAllowedError` · `rule`).
|
|
211
211
|
* - A hosts-file alias for a loopback address — the same fix.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* displayName — the ONE rule for a tool's `displayName` (the app's own words
|
|
4
|
+
* for what a call of the tool does, read by a person), and the ONE way the
|
|
5
|
+
* library names a set of calls in those words: the declared ones named, the
|
|
6
|
+
* rest counted.
|
|
7
|
+
*
|
|
8
|
+
* Pattern: two pure functions and one small reader, no state.
|
|
9
|
+
* Role: Leaf. Asked for the RULE by `tools/tools.ts` · `defineTool` and by
|
|
10
|
+
* the registration funnel (`core/agent/buildToolRegistry.ts`), and for
|
|
11
|
+
* the NAMING by the two texts the library appends after an answer —
|
|
12
|
+
* the standing line (`core/agent/assessment/compose.ts`) and the
|
|
13
|
+
* limits block (`semantics/coverage/answer.ts`). Those two cannot
|
|
14
|
+
* import each other, so the naming lives here and they cannot name
|
|
15
|
+
* the same calls in two different ways.
|
|
16
|
+
* Emits: N/A.
|
|
17
|
+
*
|
|
18
|
+
* ## Why only the app's words
|
|
19
|
+
*
|
|
20
|
+
* A tool's registered name is the MODEL's vocabulary (`load_attachment`), and
|
|
21
|
+
* an app may forbid showing it to the people it serves. This module never
|
|
22
|
+
* prints it: a call is named only by the words its tool declared, and a call
|
|
23
|
+
* whose tool declared none is counted ("and 1 other call"), never named. A
|
|
24
|
+
* caller that gets `undefined` back says what it always said. Not every
|
|
25
|
+
* surface asks this module yet — the time layer's limits lines and the
|
|
26
|
+
* answer account's rows still print the registered name (a known follow-up).
|
|
27
|
+
*
|
|
28
|
+
* ## Why the plain-line rule
|
|
29
|
+
*
|
|
30
|
+
* The words reach a person verbatim, after an answer, so they are held to the
|
|
31
|
+
* rule every declared label a report prints is held to (`lib/plainLine.ts` ·
|
|
32
|
+
* `plainLineProblem`: no control, line or paragraph separator, or invisible
|
|
33
|
+
* format character — a bidi override would reverse what the person reads),
|
|
34
|
+
* judged BEFORE the length, and capped at the 60 characters a skill's `title`
|
|
35
|
+
* and an account label are capped at.
|
|
36
|
+
*/
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
exports.namedCalls = exports.readDisplayName = exports.displayNameProblem = exports.MAX_NAMED_CALLS = exports.MAX_DISPLAY_NAME_CHARS = void 0;
|
|
39
|
+
const plainLine_js_1 = require("./plainLine.js");
|
|
40
|
+
/** The longest display name a person reads — the cap every declared label a report prints has. */
|
|
41
|
+
exports.MAX_DISPLAY_NAME_CHARS = 60;
|
|
42
|
+
/**
|
|
43
|
+
* At most this many declared names in one phrase; any further call is counted
|
|
44
|
+
* with the calls whose tools declared none. A line for a person, not a list.
|
|
45
|
+
*/
|
|
46
|
+
exports.MAX_NAMED_CALLS = 3;
|
|
47
|
+
/**
|
|
48
|
+
* Why `value` is not a display name, or `undefined` when it is — judged on the
|
|
49
|
+
* trimmed text (the text a person would read). `label` names the field in the
|
|
50
|
+
* sentence, so a refusal says where it was written.
|
|
51
|
+
*/
|
|
52
|
+
function displayNameProblem(label, value) {
|
|
53
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
54
|
+
return (`${label} must be a non-empty string — the app's own words for what a call of this ` +
|
|
55
|
+
`tool does, read by a person (got ${typeof value === 'string' ? JSON.stringify(value) : typeof value}). Omit it to ` +
|
|
56
|
+
'leave the call unnamed.');
|
|
57
|
+
}
|
|
58
|
+
const text = value.trim();
|
|
59
|
+
const notPlain = (0, plainLine_js_1.plainLineProblem)(label, text);
|
|
60
|
+
if (notPlain !== undefined)
|
|
61
|
+
return notPlain;
|
|
62
|
+
if (text.length > exports.MAX_DISPLAY_NAME_CHARS) {
|
|
63
|
+
return `${label} is ${text.length} characters; the limit is ${exports.MAX_DISPLAY_NAME_CHARS}.`;
|
|
64
|
+
}
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
exports.displayNameProblem = displayNameProblem;
|
|
68
|
+
/**
|
|
69
|
+
* The display name a person may read — trimmed — or `undefined`. A value the
|
|
70
|
+
* rule refuses is never printed: a tool assembled by hand, or served by a
|
|
71
|
+
* ToolProvider after the agent was built, is read through this too.
|
|
72
|
+
*/
|
|
73
|
+
function readDisplayName(value) {
|
|
74
|
+
return displayNameProblem('displayName', value) === undefined
|
|
75
|
+
? value.trim()
|
|
76
|
+
: undefined;
|
|
77
|
+
}
|
|
78
|
+
exports.readDisplayName = readDisplayName;
|
|
79
|
+
/**
|
|
80
|
+
* The calls, named in the app's words — each distinct declared name once, in
|
|
81
|
+
* the calls' order, at most {@link MAX_NAMED_CALLS}; every other call counted,
|
|
82
|
+
* with `alsoUnnamed` (calls the record does not name at all). `calls` holds one
|
|
83
|
+
* entry per CALL (the caller has already said each call once), each with its
|
|
84
|
+
* tool's registered name — the key a declared name is looked up by, never
|
|
85
|
+
* printed:
|
|
86
|
+
*
|
|
87
|
+
* - `loading the attached data`
|
|
88
|
+
* - `loading the attached data and searching the catalog`
|
|
89
|
+
* - `loading the attached data and 1 other call`
|
|
90
|
+
*
|
|
91
|
+
* `undefined` when no call's tool declared a name: the caller then says what
|
|
92
|
+
* it always said — the registered name is never the fallback.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```ts
|
|
96
|
+
* namedCalls(
|
|
97
|
+
* [{ toolCallId: 'c1', toolName: 'load_attachment' }, { toolCallId: 'c2', toolName: 'list_runs' }],
|
|
98
|
+
* 0,
|
|
99
|
+
* (tool) => (tool === 'load_attachment' ? 'loading the attached data' : undefined),
|
|
100
|
+
* ); // 'loading the attached data and 1 other call'
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
function namedCalls(calls, alsoUnnamed, displayNameOf) {
|
|
104
|
+
const named = [];
|
|
105
|
+
let rest = alsoUnnamed;
|
|
106
|
+
for (const call of calls) {
|
|
107
|
+
const words = displayNameOf(call.toolName);
|
|
108
|
+
if (words === undefined)
|
|
109
|
+
rest += 1;
|
|
110
|
+
else if (named.includes(words))
|
|
111
|
+
continue;
|
|
112
|
+
else if (named.length < exports.MAX_NAMED_CALLS)
|
|
113
|
+
named.push(words);
|
|
114
|
+
else
|
|
115
|
+
rest += 1;
|
|
116
|
+
}
|
|
117
|
+
if (named.length === 0)
|
|
118
|
+
return undefined;
|
|
119
|
+
const parts = rest > 0 ? [...named, `${rest} other ${rest === 1 ? 'call' : 'calls'}`] : named;
|
|
120
|
+
return parts.length === 1
|
|
121
|
+
? parts[0]
|
|
122
|
+
: `${parts.slice(0, -1).join(', ')} and ${parts[parts.length - 1]}`;
|
|
123
|
+
}
|
|
124
|
+
exports.namedCalls = namedCalls;
|
|
125
|
+
//# sourceMappingURL=displayName.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"displayName.js","sourceRoot":"","sources":["../../src/lib/displayName.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;;;AAEH,iDAAkD;AAElD,kGAAkG;AACrF,QAAA,sBAAsB,GAAG,EAAE,CAAC;AAEzC;;;GAGG;AACU,QAAA,eAAe,GAAG,CAAC,CAAC;AAEjC;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAa,EAAE,KAAc;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,OAAO,CACL,GAAG,KAAK,4EAA4E;YACpF,oCACE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAC7D,gBAAgB;YAChB,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAA,+BAAgB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,IAAI,IAAI,CAAC,MAAM,GAAG,8BAAsB,EAAE,CAAC;QACzC,OAAO,GAAG,KAAK,OAAO,IAAI,CAAC,MAAM,6BAA6B,8BAAsB,GAAG,CAAC;IAC1F,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAjBD,gDAiBC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,kBAAkB,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,SAAS;QAC3D,CAAC,CAAE,KAAgB,CAAC,IAAI,EAAE;QAC1B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAJD,0CAIC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAgB,UAAU,CACxB,KAA+C,EAC/C,WAAmB,EACnB,aAAuD;IAEvD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,IAAI,GAAG,WAAW,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,KAAK,KAAK,SAAS;YAAE,IAAI,IAAI,CAAC,CAAC;aAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;aACpC,IAAI,KAAK,CAAC,MAAM,GAAG,uBAAe;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YACtD,IAAI,IAAI,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9F,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;QACvB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC;AAnBD,gCAmBC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* callLifetime — one MCP tool call, from the moment it is sent until it settles:
|
|
4
|
+
* what cancels it while it runs, and what its settling stops.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: open / close around `callTool` (`mcpClient.ts` · `wrapMcpTool`).
|
|
7
|
+
* Role: The call's side of the evidence seam (`requestLedger.ts` is the
|
|
8
|
+
* transport's). Three things are true of a call while it runs, and
|
|
9
|
+
* none of them may outlive it:
|
|
10
|
+
*
|
|
11
|
+
* 1. ITS CANCELLATION reaches the SDK. The call's context signal (the run's,
|
|
12
|
+
* for a call the agent dispatched) and the client's own `signal` are linked
|
|
13
|
+
* into one signal the SDK request is given — so a cancelled run makes the
|
|
14
|
+
* SDK reject the call, drop its response handler and send the server
|
|
15
|
+
* `notifications/cancelled`, whether or not the request could be matched to
|
|
16
|
+
* the call. The link is undone when the call settles: the SDK keeps its
|
|
17
|
+
* abort listener on the signal it was given, and a link that outlived the
|
|
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.
|
|
21
|
+
* 3. ITS SETTLING ENDS ITS SERIES. However `callTool` settles — answered,
|
|
22
|
+
* failed, or given up by the SDK (its own timeout) — a retry series still
|
|
23
|
+
* sending the request is cut there and then, inside the call: it files
|
|
24
|
+
* `cancelled` before the call's result is read, and sends nothing more.
|
|
25
|
+
*
|
|
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`).
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.openCall = void 0;
|
|
34
|
+
const footprintjs_1 = require("footprintjs");
|
|
35
|
+
const abort_js_1 = require("../lib/abort.js");
|
|
36
|
+
const requestEvidence_js_1 = require("../tools/requestEvidence.js");
|
|
37
|
+
/**
|
|
38
|
+
* Open one call.
|
|
39
|
+
*
|
|
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.
|
|
42
|
+
* @param ctx the call's context: its signal, and the run's evidence port if any.
|
|
43
|
+
* @param clientSignal the client's own `signal` (`McpClientOptions.signal`).
|
|
44
|
+
* @param ledger the connection's ledger, when the library built its transport.
|
|
45
|
+
* @param server the client's name, for the dev-mode note.
|
|
46
|
+
*/
|
|
47
|
+
function openCall(params, ctx, clientSignal, ledger, server) {
|
|
48
|
+
const own = signalOf(ctx);
|
|
49
|
+
const link = own === undefined ? undefined : (0, abort_js_1.linkedController)(own, clientSignal);
|
|
50
|
+
const signal = link?.controller.signal ?? clientSignal;
|
|
51
|
+
const sink = ledger === undefined ? undefined : (0, requestEvidence_js_1.requestEvidenceOf)(ctx);
|
|
52
|
+
const settled = sink === undefined ? undefined : new AbortController();
|
|
53
|
+
const ticket = sink === undefined
|
|
54
|
+
? undefined
|
|
55
|
+
: { sink, signal: (0, abort_js_1.eitherSignal)(signal, settled?.signal) };
|
|
56
|
+
const sentBefore = ledger?.toolCallsSent ?? 0;
|
|
57
|
+
if (ticket !== undefined)
|
|
58
|
+
ledger?.issue(params, ticket);
|
|
59
|
+
return {
|
|
60
|
+
...(signal !== undefined && { signal }),
|
|
61
|
+
close: () => {
|
|
62
|
+
settled?.abort(callSettled());
|
|
63
|
+
link?.unlink();
|
|
64
|
+
if (ticket !== undefined && ledger !== undefined) {
|
|
65
|
+
noteUnbound(ledger, ticket, sentBefore, server);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
exports.openCall = openCall;
|
|
71
|
+
/** The call's own signal, when its context carries a real one. */
|
|
72
|
+
function signalOf(ctx) {
|
|
73
|
+
if (ctx === null || typeof ctx !== 'object' || typeof AbortSignal === 'undefined') {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
let signal;
|
|
77
|
+
try {
|
|
78
|
+
signal = ctx.signal;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
return signal instanceof AbortSignal ? signal : undefined;
|
|
84
|
+
}
|
|
85
|
+
/** Why a series is cut when its call settled first — a fixed sentence. */
|
|
86
|
+
function callSettled() {
|
|
87
|
+
return Object.assign(new Error('The tool call settled before its MCP request series did.'), {
|
|
88
|
+
name: 'AbortError',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/** 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)
|
|
94
|
+
return;
|
|
95
|
+
if (!ledger.firstUnbound())
|
|
96
|
+
return;
|
|
97
|
+
// eslint-disable-next-line no-console
|
|
98
|
+
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.');
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=callLifetime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callLifetime.js","sourceRoot":"","sources":["../../src/mcp/callLifetime.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/mcpClient.js
CHANGED
|
@@ -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
|
|
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(
|
|
164
|
+
await client.connect(built.transport, { signal });
|
|
159
165
|
else
|
|
160
|
-
await client.connect(
|
|
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
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
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
|
-
|
|
253
|
-
|
|
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
|
-
|
|
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
|
-
...(
|
|
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
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
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
|
|
1
|
+
{"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../../src/mcp/mcpClient.ts"],"names":[],"mappings":"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"}
|