agentfootprint 12.1.0 → 12.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +1 -1
- package/CAPABILITIES.md +3 -1
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js +113 -7
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/session.js +21 -21
- package/dist/adapters/mcp/agentcoreRuntime/session.js.map +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/transport.js +79 -5
- package/dist/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
- package/dist/core/Agent.js +6 -0
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/stages/toolCalls.js +4 -0
- package/dist/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/core/slots/buildToolsSlot.js +8 -0
- package/dist/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.d.ts +23 -4
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js +112 -6
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/session.d.ts +20 -6
- package/dist/esm/adapters/mcp/agentcoreRuntime/session.js +21 -21
- package/dist/esm/adapters/mcp/agentcoreRuntime/session.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +81 -7
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js.map +1 -1
- package/dist/esm/core/Agent.js +6 -0
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/stages/toolCalls.js +4 -0
- package/dist/esm/core/agent/stages/toolCalls.js.map +1 -1
- package/dist/esm/core/slots/buildToolsSlot.d.ts +12 -0
- package/dist/esm/core/slots/buildToolsSlot.js +8 -0
- package/dist/esm/core/slots/buildToolsSlot.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +41 -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/identity/types.d.ts +7 -3
- package/dist/esm/identity/types.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/boundedJson.d.ts +14 -7
- package/dist/esm/lib/boundedJson.js +14 -7
- package/dist/esm/lib/boundedJson.js.map +1 -1
- package/dist/esm/mcp/callLifetime.js +5 -2
- package/dist/esm/mcp/callLifetime.js.map +1 -1
- package/dist/esm/mcp/clientPort.d.ts +78 -0
- package/dist/esm/mcp/clientPort.js +33 -0
- package/dist/esm/mcp/clientPort.js.map +1 -0
- package/dist/esm/mcp/gatewayTransport.js +13 -3
- package/dist/esm/mcp/gatewayTransport.js.map +1 -1
- package/dist/esm/mcp/index.d.ts +9 -1
- package/dist/esm/mcp/index.js +8 -0
- package/dist/esm/mcp/index.js.map +1 -1
- package/dist/esm/mcp/mcpClient.d.ts +18 -1
- package/dist/esm/mcp/mcpClient.js +203 -43
- package/dist/esm/mcp/mcpClient.js.map +1 -1
- package/dist/esm/mcp/mockMcpClient.js +13 -0
- package/dist/esm/mcp/mockMcpClient.js.map +1 -1
- package/dist/esm/mcp/pool/boundTool.d.ts +58 -0
- package/dist/esm/mcp/pool/boundTool.js +218 -0
- package/dist/esm/mcp/pool/boundTool.js.map +1 -0
- package/dist/esm/mcp/pool/clientSet.d.ts +73 -0
- package/dist/esm/mcp/pool/clientSet.js +152 -0
- package/dist/esm/mcp/pool/clientSet.js.map +1 -0
- package/dist/esm/mcp/pool/definitions.d.ts +103 -0
- package/dist/esm/mcp/pool/definitions.js +168 -0
- package/dist/esm/mcp/pool/definitions.js.map +1 -0
- package/dist/esm/mcp/pool/errors.d.ts +76 -0
- package/dist/esm/mcp/pool/errors.js +91 -0
- package/dist/esm/mcp/pool/errors.js.map +1 -0
- package/dist/esm/mcp/pool/identityKey.d.ts +57 -0
- package/dist/esm/mcp/pool/identityKey.js +94 -0
- package/dist/esm/mcp/pool/identityKey.js.map +1 -0
- package/dist/esm/mcp/pool/lease.d.ts +36 -0
- package/dist/esm/mcp/pool/lease.js +51 -0
- package/dist/esm/mcp/pool/lease.js.map +1 -0
- package/dist/esm/mcp/pool/listTools.d.ts +33 -0
- package/dist/esm/mcp/pool/listTools.js +146 -0
- package/dist/esm/mcp/pool/listTools.js.map +1 -0
- package/dist/esm/mcp/pool/mcpClientPool.d.ts +121 -0
- package/dist/esm/mcp/pool/mcpClientPool.js +151 -0
- package/dist/esm/mcp/pool/mcpClientPool.js.map +1 -0
- package/dist/esm/mcp/pool/options.d.ts +183 -0
- package/dist/esm/mcp/pool/options.js +119 -0
- package/dist/esm/mcp/pool/options.js.map +1 -0
- package/dist/esm/mcp/pool/plan.d.ts +77 -0
- package/dist/esm/mcp/pool/plan.js +134 -0
- package/dist/esm/mcp/pool/plan.js.map +1 -0
- package/dist/esm/mcp/pool/pool.d.ts +307 -0
- package/dist/esm/mcp/pool/pool.js +1071 -0
- package/dist/esm/mcp/pool/pool.js.map +1 -0
- package/dist/esm/mcp/pool/pooledClient.d.ts +93 -0
- package/dist/esm/mcp/pool/pooledClient.js +90 -0
- package/dist/esm/mcp/pool/pooledClient.js.map +1 -0
- package/dist/esm/mcp/pool/record.d.ts +80 -0
- package/dist/esm/mcp/pool/record.js +75 -0
- package/dist/esm/mcp/pool/record.js.map +1 -0
- package/dist/esm/mcp/pool/sessionEnded.d.ts +24 -0
- package/dist/esm/mcp/pool/sessionEnded.js +31 -0
- package/dist/esm/mcp/pool/sessionEnded.js.map +1 -0
- package/dist/esm/mcp/pool/work.d.ts +116 -0
- package/dist/esm/mcp/pool/work.js +213 -0
- package/dist/esm/mcp/pool/work.js.map +1 -0
- package/dist/esm/mcp/requestGuard.d.ts +70 -0
- package/dist/esm/mcp/requestGuard.js +98 -0
- package/dist/esm/mcp/requestGuard.js.map +1 -0
- package/dist/esm/mcp/requestLedger.d.ts +35 -1
- package/dist/esm/mcp/requestLedger.js +76 -3
- package/dist/esm/mcp/requestLedger.js.map +1 -1
- package/dist/esm/mcp/seriesEvidence.d.ts +10 -6
- package/dist/esm/mcp/seriesEvidence.js +16 -7
- package/dist/esm/mcp/seriesEvidence.js.map +1 -1
- package/dist/esm/mcp/terminate.d.ts +94 -0
- package/dist/esm/mcp/terminate.js +184 -0
- package/dist/esm/mcp/terminate.js.map +1 -0
- package/dist/esm/mcp/throttleRetry.js +71 -7
- package/dist/esm/mcp/throttleRetry.js.map +1 -1
- package/dist/esm/mcp/types.d.ts +85 -7
- package/dist/esm/redaction/knownStrings.js +34 -0
- package/dist/esm/redaction/knownStrings.js.map +1 -1
- package/dist/esm/tool-providers/index.d.ts +2 -2
- package/dist/esm/tool-providers/index.js +7 -1
- package/dist/esm/tool-providers/index.js.map +1 -1
- package/dist/esm/tools/mcpClientUse.d.ts +59 -0
- package/dist/esm/tools/mcpClientUse.js +216 -0
- package/dist/esm/tools/mcpClientUse.js.map +1 -0
- package/dist/esm/tools/toolProvider.d.ts +16 -0
- package/dist/esm/tools/toolSessions.d.ts +41 -0
- package/dist/esm/tools/toolSessions.js +41 -1
- package/dist/esm/tools/toolSessions.js.map +1 -1
- package/dist/events/registry.js +2 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/identity/types.js.map +1 -1
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/boundedJson.js +14 -7
- package/dist/lib/boundedJson.js.map +1 -1
- package/dist/mcp/callLifetime.js +5 -2
- package/dist/mcp/callLifetime.js.map +1 -1
- package/dist/mcp/clientPort.js +38 -0
- package/dist/mcp/clientPort.js.map +1 -0
- package/dist/mcp/gatewayTransport.js +13 -3
- package/dist/mcp/gatewayTransport.js.map +1 -1
- package/dist/mcp/index.js +16 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/mcpClient.js +207 -45
- package/dist/mcp/mcpClient.js.map +1 -1
- package/dist/mcp/mockMcpClient.js +13 -0
- package/dist/mcp/mockMcpClient.js.map +1 -1
- package/dist/mcp/pool/boundTool.js +223 -0
- package/dist/mcp/pool/boundTool.js.map +1 -0
- package/dist/mcp/pool/clientSet.js +157 -0
- package/dist/mcp/pool/clientSet.js.map +1 -0
- package/dist/mcp/pool/definitions.js +174 -0
- package/dist/mcp/pool/definitions.js.map +1 -0
- package/dist/mcp/pool/errors.js +96 -0
- package/dist/mcp/pool/errors.js.map +1 -0
- package/dist/mcp/pool/identityKey.js +99 -0
- package/dist/mcp/pool/identityKey.js.map +1 -0
- package/dist/mcp/pool/lease.js +55 -0
- package/dist/mcp/pool/lease.js.map +1 -0
- package/dist/mcp/pool/listTools.js +150 -0
- package/dist/mcp/pool/listTools.js.map +1 -0
- package/dist/mcp/pool/mcpClientPool.js +155 -0
- package/dist/mcp/pool/mcpClientPool.js.map +1 -0
- package/dist/mcp/pool/options.js +123 -0
- package/dist/mcp/pool/options.js.map +1 -0
- package/dist/mcp/pool/plan.js +140 -0
- package/dist/mcp/pool/plan.js.map +1 -0
- package/dist/mcp/pool/pool.js +1075 -0
- package/dist/mcp/pool/pool.js.map +1 -0
- package/dist/mcp/pool/pooledClient.js +94 -0
- package/dist/mcp/pool/pooledClient.js.map +1 -0
- package/dist/mcp/pool/record.js +80 -0
- package/dist/mcp/pool/record.js.map +1 -0
- package/dist/mcp/pool/sessionEnded.js +35 -0
- package/dist/mcp/pool/sessionEnded.js.map +1 -0
- package/dist/mcp/pool/work.js +219 -0
- package/dist/mcp/pool/work.js.map +1 -0
- package/dist/mcp/requestGuard.js +106 -0
- package/dist/mcp/requestGuard.js.map +1 -0
- package/dist/mcp/requestLedger.js +76 -3
- package/dist/mcp/requestLedger.js.map +1 -1
- package/dist/mcp/seriesEvidence.js +16 -7
- package/dist/mcp/seriesEvidence.js.map +1 -1
- package/dist/mcp/terminate.js +193 -0
- package/dist/mcp/terminate.js.map +1 -0
- package/dist/mcp/throttleRetry.js +71 -7
- package/dist/mcp/throttleRetry.js.map +1 -1
- package/dist/redaction/knownStrings.js +34 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/tool-providers/index.js +12 -1
- package/dist/tool-providers/index.js.map +1 -1
- package/dist/tools/mcpClientUse.js +225 -0
- package/dist/tools/mcpClientUse.js.map +1 -0
- package/dist/tools/toolSessions.js +44 -1
- package/dist/tools/toolSessions.js.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts +23 -4
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/session.d.ts +20 -6
- package/dist/types/adapters/mcp/agentcoreRuntime/session.d.ts.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/transport.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/stages/toolCalls.d.ts.map +1 -1
- package/dist/types/core/slots/buildToolsSlot.d.ts +12 -0
- package/dist/types/core/slots/buildToolsSlot.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +41 -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/identity/types.d.ts +7 -3
- package/dist/types/identity/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lib/boundedJson.d.ts +14 -7
- package/dist/types/lib/boundedJson.d.ts.map +1 -1
- package/dist/types/mcp/callLifetime.d.ts.map +1 -1
- package/dist/types/mcp/clientPort.d.ts +79 -0
- package/dist/types/mcp/clientPort.d.ts.map +1 -0
- package/dist/types/mcp/gatewayTransport.d.ts.map +1 -1
- package/dist/types/mcp/index.d.ts +9 -1
- package/dist/types/mcp/index.d.ts.map +1 -1
- package/dist/types/mcp/mcpClient.d.ts +18 -1
- package/dist/types/mcp/mcpClient.d.ts.map +1 -1
- package/dist/types/mcp/mockMcpClient.d.ts.map +1 -1
- package/dist/types/mcp/pool/boundTool.d.ts +59 -0
- package/dist/types/mcp/pool/boundTool.d.ts.map +1 -0
- package/dist/types/mcp/pool/clientSet.d.ts +74 -0
- package/dist/types/mcp/pool/clientSet.d.ts.map +1 -0
- package/dist/types/mcp/pool/definitions.d.ts +104 -0
- package/dist/types/mcp/pool/definitions.d.ts.map +1 -0
- package/dist/types/mcp/pool/errors.d.ts +77 -0
- package/dist/types/mcp/pool/errors.d.ts.map +1 -0
- package/dist/types/mcp/pool/identityKey.d.ts +58 -0
- package/dist/types/mcp/pool/identityKey.d.ts.map +1 -0
- package/dist/types/mcp/pool/lease.d.ts +37 -0
- package/dist/types/mcp/pool/lease.d.ts.map +1 -0
- package/dist/types/mcp/pool/listTools.d.ts +34 -0
- package/dist/types/mcp/pool/listTools.d.ts.map +1 -0
- package/dist/types/mcp/pool/mcpClientPool.d.ts +122 -0
- package/dist/types/mcp/pool/mcpClientPool.d.ts.map +1 -0
- package/dist/types/mcp/pool/options.d.ts +184 -0
- package/dist/types/mcp/pool/options.d.ts.map +1 -0
- package/dist/types/mcp/pool/plan.d.ts +78 -0
- package/dist/types/mcp/pool/plan.d.ts.map +1 -0
- package/dist/types/mcp/pool/pool.d.ts +308 -0
- package/dist/types/mcp/pool/pool.d.ts.map +1 -0
- package/dist/types/mcp/pool/pooledClient.d.ts +94 -0
- package/dist/types/mcp/pool/pooledClient.d.ts.map +1 -0
- package/dist/types/mcp/pool/record.d.ts +81 -0
- package/dist/types/mcp/pool/record.d.ts.map +1 -0
- package/dist/types/mcp/pool/sessionEnded.d.ts +25 -0
- package/dist/types/mcp/pool/sessionEnded.d.ts.map +1 -0
- package/dist/types/mcp/pool/work.d.ts +117 -0
- package/dist/types/mcp/pool/work.d.ts.map +1 -0
- package/dist/types/mcp/requestGuard.d.ts +71 -0
- package/dist/types/mcp/requestGuard.d.ts.map +1 -0
- package/dist/types/mcp/requestLedger.d.ts +35 -1
- package/dist/types/mcp/requestLedger.d.ts.map +1 -1
- package/dist/types/mcp/seriesEvidence.d.ts +10 -6
- package/dist/types/mcp/seriesEvidence.d.ts.map +1 -1
- package/dist/types/mcp/terminate.d.ts +95 -0
- package/dist/types/mcp/terminate.d.ts.map +1 -0
- package/dist/types/mcp/throttleRetry.d.ts.map +1 -1
- package/dist/types/mcp/types.d.ts +85 -7
- package/dist/types/mcp/types.d.ts.map +1 -1
- package/dist/types/redaction/knownStrings.d.ts.map +1 -1
- package/dist/types/tool-providers/index.d.ts +2 -2
- package/dist/types/tool-providers/index.d.ts.map +1 -1
- package/dist/types/tools/mcpClientUse.d.ts +60 -0
- package/dist/types/tools/mcpClientUse.d.ts.map +1 -0
- package/dist/types/tools/toolProvider.d.ts +16 -0
- package/dist/types/tools/toolProvider.d.ts.map +1 -1
- package/dist/types/tools/toolSessions.d.ts +41 -0
- package/dist/types/tools/toolSessions.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../../src/mcp/pool/pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* pooledClient — one client INCARNATION: the conversation it serves, the plan it
|
|
4
|
+
* was opened from, its leases, its own tool list, and where it is in its life.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: a plain record the pool owns; no behaviour beyond its own counters.
|
|
7
|
+
* Role: § 5 of the design. A client is OPENING until its open settles, OPEN
|
|
8
|
+
* while it can serve, ENDING from the decision to end it until that
|
|
9
|
+
* ending's work has settled, then ENDED. It is BUSY while any lease is
|
|
10
|
+
* open — the library's, one per operation, or the app's — while an
|
|
11
|
+
* operation that waited for its open has not yet taken its lease (a
|
|
12
|
+
* RESERVATION), and while it opens; IDLE otherwise. A busy client is
|
|
13
|
+
* never evicted, closed for idleness or ended. "Used" is the last lease
|
|
14
|
+
* taken or released.
|
|
15
|
+
*
|
|
16
|
+
* Its `clientId` is the pool's own random id; its `generation` counts the key's
|
|
17
|
+
* incarnations (1 = the key's first client). A replacement is a new record with
|
|
18
|
+
* a new id, a new list and a count of its own: nothing of an old incarnation
|
|
19
|
+
* can match it.
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.PooledClient = void 0;
|
|
23
|
+
const definitions_js_1 = require("./definitions.js");
|
|
24
|
+
/** A random id of the pool's own — never derived from an identity. */
|
|
25
|
+
function newClientId() {
|
|
26
|
+
return globalThis.crypto.randomUUID().replace(/-/g, '').slice(0, 16);
|
|
27
|
+
}
|
|
28
|
+
/** One client incarnation. */
|
|
29
|
+
class PooledClient {
|
|
30
|
+
key;
|
|
31
|
+
plan;
|
|
32
|
+
generation;
|
|
33
|
+
clientId = newClientId();
|
|
34
|
+
state = 'opening';
|
|
35
|
+
/** The ordinary `McpClient`, once opened. */
|
|
36
|
+
client;
|
|
37
|
+
/** The port back (`clientPort.ts`), once opened. */
|
|
38
|
+
port;
|
|
39
|
+
/** Open leases: one per library operation, one per app lease. */
|
|
40
|
+
leases = 0;
|
|
41
|
+
/**
|
|
42
|
+
* Operations waiting for its open, each holding it until it takes its lease —
|
|
43
|
+
* so between the open settling and that lease nothing can evict or end it.
|
|
44
|
+
*/
|
|
45
|
+
reserved = 0;
|
|
46
|
+
/** The last lease taken or released, on the pool's clock. */
|
|
47
|
+
usedAt;
|
|
48
|
+
/** No new lease: `terminate` named it, its session expired, or its handle was lost. */
|
|
49
|
+
closedToNew = false;
|
|
50
|
+
/** Its open ran past `initTimeoutMs`: refused to every waiter, still counted until it settles. */
|
|
51
|
+
abandoned = false;
|
|
52
|
+
/** Waiting for an ending slot and an operation slot, and why. */
|
|
53
|
+
deferredEnd;
|
|
54
|
+
/** This incarnation's own tool list. */
|
|
55
|
+
list = new definitions_js_1.DefinitionList();
|
|
56
|
+
/**
|
|
57
|
+
* The guard of the open, listing or ending in progress on this client — what
|
|
58
|
+
* a request that is not a pooled tool call is checked against and counted by.
|
|
59
|
+
*/
|
|
60
|
+
phase;
|
|
61
|
+
/** The open in flight, with the work it owns. */
|
|
62
|
+
opening;
|
|
63
|
+
/** How long the open took, once it settled within its deadline. */
|
|
64
|
+
initMs;
|
|
65
|
+
/** Why it left its key without an ordinary ending: its session expired, or its handle was lost. */
|
|
66
|
+
lost;
|
|
67
|
+
/** The outcome of its ending, once one started. */
|
|
68
|
+
endingOutcome;
|
|
69
|
+
/**
|
|
70
|
+
* The definitions context its tools are served under now. It starts as its
|
|
71
|
+
* plan's; the app's `share` is asked again at every use, and a changed answer
|
|
72
|
+
* moves it here — its connection, the plan's transport, never changes.
|
|
73
|
+
*/
|
|
74
|
+
definitions;
|
|
75
|
+
constructor(key, plan,
|
|
76
|
+
/** 1 = the key's first client, 2 = its first replacement, … */
|
|
77
|
+
generation, now) {
|
|
78
|
+
this.key = key;
|
|
79
|
+
this.plan = plan;
|
|
80
|
+
this.generation = generation;
|
|
81
|
+
this.usedAt = now;
|
|
82
|
+
this.definitions = { context: plan.context, shared: plan.shared };
|
|
83
|
+
}
|
|
84
|
+
/** Busy: a lease is open, an operation holds it between its open and its lease, or it is still opening. */
|
|
85
|
+
get busy() {
|
|
86
|
+
return this.leases > 0 || this.reserved > 0 || this.state === 'opening';
|
|
87
|
+
}
|
|
88
|
+
/** Can it serve a new lease right now? */
|
|
89
|
+
get serving() {
|
|
90
|
+
return this.state === 'open' && !this.closedToNew;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.PooledClient = PooledClient;
|
|
94
|
+
//# sourceMappingURL=pooledClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pooledClient.js","sourceRoot":"","sources":["../../../src/mcp/pool/pooledClient.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAKH,qDAAkD;AAkBlD,sEAAsE;AACtE,SAAS,WAAW;IAClB,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,8BAA8B;AAC9B,MAAa,YAAY;IA+CZ;IACA;IAEA;IAjDF,QAAQ,GAAG,WAAW,EAAE,CAAC;IAClC,KAAK,GAAgB,SAAS,CAAC;IAC/B,6CAA6C;IAC7C,MAAM,CAAwB;IAC9B,oDAAoD;IACpD,IAAI,CAAyB;IAC7B,iEAAiE;IACjE,MAAM,GAAG,CAAC,CAAC;IACX;;;OAGG;IACH,QAAQ,GAAG,CAAC,CAAC;IACb,6DAA6D;IAC7D,MAAM,CAAS;IACf,uFAAuF;IACvF,WAAW,GAAG,KAAK,CAAC;IACpB,kGAAkG;IAClG,SAAS,GAAG,KAAK,CAAC;IAClB,iEAAiE;IACjE,WAAW,CAAwB;IACnC,wCAAwC;IAC/B,IAAI,GAAG,IAAI,+BAAc,EAAE,CAAC;IACrC;;;OAGG;IACH,KAAK,CAA2B;IAChC,iDAAiD;IACjD,OAAO,CAEO;IACd,mEAAmE;IACnE,MAAM,CAAqB;IAC3B,mGAAmG;IACnG,IAAI,CAAwC;IAC5C,mDAAmD;IACnD,aAAa,CAA2C;IACxD;;;;OAIG;IACH,WAAW,CAAyD;IAEpE,YACW,GAAY,EACZ,IAAgB;IACzB,+DAA+D;IACtD,UAAkB,EAC3B,GAAW;QAJF,QAAG,GAAH,GAAG,CAAS;QACZ,SAAI,GAAJ,IAAI,CAAY;QAEhB,eAAU,GAAV,UAAU,CAAQ;QAG3B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACpE,CAAC;IAED,2GAA2G;IAC3G,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;IAC1E,CAAC;IAED,0CAA0C;IAC1C,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACpD,CAAC;CACF;AAlED,oCAkEC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* record — what the pool says about itself: one event per use in a run, and a
|
|
4
|
+
* report for what happens outside one.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: facts gathered while a use runs, filed once; reports delivered to the
|
|
7
|
+
* app's `onEvent`, which can never break the pool.
|
|
8
|
+
* Role: § 8 of the design. The record holds ids and outcomes. It never holds
|
|
9
|
+
* identity values, remote session ids or handles, header values, tool
|
|
10
|
+
* arguments, results, definitions, or a server's error text. In a run,
|
|
11
|
+
* every listing and every call files one `agentfootprint.tools.mcp_client`
|
|
12
|
+
* (`tools/mcpClientUse.ts`). Outside a run — idle ends, evictions,
|
|
13
|
+
* terminations, revoked leases, deferred ends and work that settled
|
|
14
|
+
* after its deadline — the pool reports to `onEvent`.
|
|
15
|
+
*
|
|
16
|
+
* Local settlement and remote resolution are different facts, reported apart:
|
|
17
|
+
* an ending can settle here and stay unresolved there.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.UseFacts = exports.Reporter = void 0;
|
|
21
|
+
/** Delivers reports to the app; a throwing handler is swallowed and changes nothing. */
|
|
22
|
+
class Reporter {
|
|
23
|
+
server;
|
|
24
|
+
onEvent;
|
|
25
|
+
constructor(server, onEvent) {
|
|
26
|
+
this.server = server;
|
|
27
|
+
this.onEvent = onEvent;
|
|
28
|
+
}
|
|
29
|
+
report(report) {
|
|
30
|
+
if (this.onEvent === undefined)
|
|
31
|
+
return;
|
|
32
|
+
try {
|
|
33
|
+
this.onEvent({ server: this.server, ...report });
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// The app's handler is not the pool's work: it changes nothing.
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.Reporter = Reporter;
|
|
41
|
+
/** The facts one pool use gathers while it runs, filed once when it settles. */
|
|
42
|
+
class UseFacts {
|
|
43
|
+
server;
|
|
44
|
+
at;
|
|
45
|
+
keyHash;
|
|
46
|
+
clientId;
|
|
47
|
+
generation;
|
|
48
|
+
client = 'refused';
|
|
49
|
+
previous;
|
|
50
|
+
evidence;
|
|
51
|
+
refusal;
|
|
52
|
+
initMs;
|
|
53
|
+
definitions;
|
|
54
|
+
definitionsAgeMs;
|
|
55
|
+
revalidated;
|
|
56
|
+
constructor(server, at) {
|
|
57
|
+
this.server = server;
|
|
58
|
+
this.at = at;
|
|
59
|
+
}
|
|
60
|
+
/** The use, as `tools/mcpClientUse.ts` files it. */
|
|
61
|
+
toUse() {
|
|
62
|
+
return {
|
|
63
|
+
server: this.server,
|
|
64
|
+
at: this.at,
|
|
65
|
+
client: this.client,
|
|
66
|
+
...(this.keyHash !== undefined && { keyHash: this.keyHash }),
|
|
67
|
+
...(this.clientId !== undefined && { clientId: this.clientId }),
|
|
68
|
+
...(this.generation !== undefined && { generation: this.generation }),
|
|
69
|
+
...(this.previous !== undefined && { previous: this.previous }),
|
|
70
|
+
...(this.evidence !== undefined && { evidence: this.evidence }),
|
|
71
|
+
...(this.refusal !== undefined && { refusal: this.refusal }),
|
|
72
|
+
...(this.initMs !== undefined && { initMs: this.initMs }),
|
|
73
|
+
...(this.definitions !== undefined && { definitions: this.definitions }),
|
|
74
|
+
...(this.definitionsAgeMs !== undefined && { definitionsAgeMs: this.definitionsAgeMs }),
|
|
75
|
+
...(this.revalidated !== undefined && { revalidated: this.revalidated }),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.UseFacts = UseFacts;
|
|
80
|
+
//# sourceMappingURL=record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/mcp/pool/record.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAyCH,wFAAwF;AACxF,MAAa,QAAQ;IAEA;IACA;IAFnB,YACmB,MAAc,EACd,OAAsD;QADtD,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAA+C;IACtE,CAAC;IAEJ,MAAM,CAAC,MAAqC;QAC1C,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO;QACvC,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;QAClE,CAAC;IACH,CAAC;CACF;AAdD,4BAcC;AAED,gFAAgF;AAChF,MAAa,QAAQ;IAaU;IAAiC;IAZ9D,OAAO,CAAqB;IAC5B,QAAQ,CAAqB;IAC7B,UAAU,CAAqB;IAC/B,MAAM,GAAoC,SAAS,CAAC;IACpD,QAAQ,CAAoC;IAC5C,QAAQ,CAAoC;IAC5C,OAAO,CAAmC;IAC1C,MAAM,CAAqB;IAC3B,WAAW,CAAuC;IAClD,gBAAgB,CAAqB;IACrC,WAAW,CAAuC;IAElD,YAA6B,MAAc,EAAmB,EAA+B;QAAhE,WAAM,GAAN,MAAM,CAAQ;QAAmB,OAAE,GAAF,EAAE,CAA6B;IAAG,CAAC;IAEjG,oDAAoD;IACpD,KAAK;QACH,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5D,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YACrE,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/D,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5D,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACzD,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;YACxE,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvF,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;CACF;AAjCD,4BAiCC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* sessionEnded — the MCP server ended a conversation's session: the library's
|
|
4
|
+
* one `SessionExpiredError`, said the pool's way.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: a subclass that keeps the class and changes only what the pool must.
|
|
7
|
+
* Role: § 5.5 of the design. There is ONE expired-session class
|
|
8
|
+
* (`provider-contract/sessionExpired.ts` · `SessionExpiredError`), so a
|
|
9
|
+
* caller catches a code session's expiry and an MCP session's with the
|
|
10
|
+
* same `instanceof`, under the same rule: only documented evidence
|
|
11
|
+
* raises it. Here the evidence is `'server-404'`: an MCP server answered
|
|
12
|
+
* HTTP 404 to a request that carried the session id it issued.
|
|
13
|
+
*
|
|
14
|
+
* What differs is what the pool may say. The model reads this error as the
|
|
15
|
+
* call's result, so its message is one fixed sentence; it names no remote
|
|
16
|
+
* session id (`sessionId` is the pool's own client id, which the record carries
|
|
17
|
+
* too) and never the server's text. The original error is `cause`, for the app.
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.ServerEndedSessionError = exports.SESSION_ENDED_SENTENCE = void 0;
|
|
21
|
+
const sessionExpired_js_1 = require("../../provider-contract/sessionExpired.js");
|
|
22
|
+
/** The one sentence a server-ended session reaches the model as. */
|
|
23
|
+
exports.SESSION_ENDED_SENTENCE = "The server had already ended the conversation's session when the call this result answers reached it.";
|
|
24
|
+
/** @internal An MCP server ended the session; raised by the pool. Catch `SessionExpiredError`. */
|
|
25
|
+
class ServerEndedSessionError extends sessionExpired_js_1.SessionExpiredError {
|
|
26
|
+
constructor(server, clientId, cause) {
|
|
27
|
+
super(server, clientId, 'server-404');
|
|
28
|
+
this.message = exports.SESSION_ENDED_SENTENCE;
|
|
29
|
+
this.name = 'SessionExpiredError';
|
|
30
|
+
if (cause !== undefined)
|
|
31
|
+
Object.defineProperty(this, 'cause', { value: cause, configurable: true, writable: true });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.ServerEndedSessionError = ServerEndedSessionError;
|
|
35
|
+
//# sourceMappingURL=sessionEnded.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionEnded.js","sourceRoot":"","sources":["../../../src/mcp/pool/sessionEnded.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;AAEH,iFAAgF;AAEhF,oEAAoE;AACvD,QAAA,sBAAsB,GACjC,uGAAuG,CAAC;AAE1G,kGAAkG;AAClG,MAAa,uBAAwB,SAAQ,uCAAmB;IAC9D,YAAY,MAAc,EAAE,QAAgB,EAAE,KAAc;QAC1D,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,8BAAsB,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/F,CAAC;CACF;AARD,0DAQC"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* work — an admitted operation's charge, and the work under it until that work
|
|
4
|
+
* has settled.
|
|
5
|
+
*
|
|
6
|
+
* Pattern: one object per unit of work that is at once the request guard
|
|
7
|
+
* (`mcp/requestGuard.ts`) and the count of what is still running.
|
|
8
|
+
* Role: The pool's third budget (`docs/design/2026-10-mcp-client-pool.md`
|
|
9
|
+
* § 5.3). The accounting unit is the admitted LOGICAL operation: a
|
|
10
|
+
* `tools/call`, a listing (one `list(ctx)` for one conversation), an
|
|
11
|
+
* `acquire` and an ending each take one slot at admission. Setup an
|
|
12
|
+
* operation performs for itself — the open of its key's client, the
|
|
13
|
+
* revalidating `tools/list` of a replacement — runs inside that slot.
|
|
14
|
+
*
|
|
15
|
+
* AN ABORT IS NOT SETTLEMENT. A slot is released only when the operation's
|
|
16
|
+
* logical request has its answer AND every piece of work under it has settled:
|
|
17
|
+
* the `send()` it made, a credential vend, an attempt's `fetch`, an AWS `send`,
|
|
18
|
+
* the open it owns. A caller's timeout answers the caller; it frees nothing.
|
|
19
|
+
* Work that never settles keeps its charge — `stats().unsettled` reports it,
|
|
20
|
+
* and the budget refuses new work rather than admit it against room that does
|
|
21
|
+
* not exist. There is no release that returns capacity sooner.
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.OperationBudget = exports.Operation = exports.Work = void 0;
|
|
25
|
+
const abort_js_1 = require("../../lib/abort.js");
|
|
26
|
+
/**
|
|
27
|
+
* One unit of pooled work: its requests are checked against it at every
|
|
28
|
+
* boundary (`check`), and every promise started for it is counted until it
|
|
29
|
+
* settles (`track`). It is SETTLED once its logical part has finished and the
|
|
30
|
+
* count is zero.
|
|
31
|
+
*/
|
|
32
|
+
class Work {
|
|
33
|
+
phase;
|
|
34
|
+
link;
|
|
35
|
+
pending = 0;
|
|
36
|
+
finished = false;
|
|
37
|
+
done = false;
|
|
38
|
+
/** Still running underneath when the caller was answered: it lingered. */
|
|
39
|
+
lingered = false;
|
|
40
|
+
listeners = [];
|
|
41
|
+
/** What `check` asks besides the abort — a call's binding. */
|
|
42
|
+
extra;
|
|
43
|
+
/** What the latest answered request proved, if anything. */
|
|
44
|
+
evidence;
|
|
45
|
+
constructor(
|
|
46
|
+
/** What it is doing now. */
|
|
47
|
+
phase, sources) {
|
|
48
|
+
this.phase = phase;
|
|
49
|
+
this.link = (0, abort_js_1.linkedController)(...sources);
|
|
50
|
+
}
|
|
51
|
+
/** What aborts its own work: its sources, its deadline, its caller detaching. */
|
|
52
|
+
get signal() {
|
|
53
|
+
return this.link.controller.signal;
|
|
54
|
+
}
|
|
55
|
+
/** True once its logical part finished and everything under it settled. */
|
|
56
|
+
get settled() {
|
|
57
|
+
return this.done;
|
|
58
|
+
}
|
|
59
|
+
/** Its caller was answered while work under it still ran. */
|
|
60
|
+
get unsettledPastAnswer() {
|
|
61
|
+
return this.finished && !this.done;
|
|
62
|
+
}
|
|
63
|
+
/** Abort its work with `reason` (a deadline, a detached caller). Idempotent. */
|
|
64
|
+
abort(reason) {
|
|
65
|
+
if (!this.link.controller.signal.aborted)
|
|
66
|
+
this.link.controller.abort(reason);
|
|
67
|
+
}
|
|
68
|
+
/** Ask `gate` too, each time a request is checked. */
|
|
69
|
+
guardWith(gate) {
|
|
70
|
+
this.extra = gate;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The send gate: refused once its caller was answered (nothing more is sent
|
|
74
|
+
* for an answered operation), once aborted, or when the extra gate refuses.
|
|
75
|
+
*/
|
|
76
|
+
check() {
|
|
77
|
+
if (this.finished)
|
|
78
|
+
throw workFinished();
|
|
79
|
+
const { signal } = this;
|
|
80
|
+
if (signal.aborted)
|
|
81
|
+
throw (0, abort_js_1.abortErrorOf)(signal);
|
|
82
|
+
this.extra?.();
|
|
83
|
+
}
|
|
84
|
+
/** Count `work` until it settles. Never throws; never surfaces its rejection. */
|
|
85
|
+
track(work) {
|
|
86
|
+
if (this.done)
|
|
87
|
+
return;
|
|
88
|
+
this.pending += 1;
|
|
89
|
+
const release = () => {
|
|
90
|
+
this.pending -= 1;
|
|
91
|
+
this.settleIfDone();
|
|
92
|
+
};
|
|
93
|
+
Promise.resolve(work).then(release, release);
|
|
94
|
+
}
|
|
95
|
+
/** Record what a request's answer proved. */
|
|
96
|
+
note(evidence) {
|
|
97
|
+
this.evidence = evidence;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Its logical part is over: the caller has its answer. It settles now, or —
|
|
101
|
+
* when work under it still runs — when that work does.
|
|
102
|
+
*/
|
|
103
|
+
finish() {
|
|
104
|
+
if (this.finished)
|
|
105
|
+
return;
|
|
106
|
+
this.finished = true;
|
|
107
|
+
if (this.pending > 0)
|
|
108
|
+
this.lingered = true;
|
|
109
|
+
// Nothing more may be sent for it: `check` refuses from here on. Its signal
|
|
110
|
+
// is left alone — a stream the SDK is still reading is not this work's to cut.
|
|
111
|
+
this.settleIfDone();
|
|
112
|
+
}
|
|
113
|
+
/** Did it linger — answered while work under it ran? Read once it settled. */
|
|
114
|
+
get settledLate() {
|
|
115
|
+
return this.lingered;
|
|
116
|
+
}
|
|
117
|
+
/** Call `listener` once it has settled (at once when it already has). */
|
|
118
|
+
onSettled(listener) {
|
|
119
|
+
if (this.done)
|
|
120
|
+
listener();
|
|
121
|
+
else
|
|
122
|
+
this.listeners.push(listener);
|
|
123
|
+
}
|
|
124
|
+
/** A promise that resolves once it has settled. */
|
|
125
|
+
whenSettled() {
|
|
126
|
+
return new Promise((resolve) => this.onSettled(resolve));
|
|
127
|
+
}
|
|
128
|
+
settleIfDone() {
|
|
129
|
+
if (this.done || !this.finished || this.pending > 0)
|
|
130
|
+
return;
|
|
131
|
+
this.done = true;
|
|
132
|
+
this.link.unlink();
|
|
133
|
+
for (const listener of this.listeners.splice(0)) {
|
|
134
|
+
try {
|
|
135
|
+
listener();
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// A listener is the pool's own bookkeeping; one failing must not stop the rest.
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.Work = Work;
|
|
144
|
+
/** The reason a finished operation refuses any later send — a fixed sentence. */
|
|
145
|
+
function workFinished() {
|
|
146
|
+
return Object.assign(new Error('This pooled operation has already been answered.'), {
|
|
147
|
+
name: 'AbortError',
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
/** An admitted operation: a unit of work that holds one slot of the budget. */
|
|
151
|
+
class Operation extends Work {
|
|
152
|
+
kind;
|
|
153
|
+
admittedAt;
|
|
154
|
+
constructor(kind, phase, sources,
|
|
155
|
+
/** When it was admitted, on the pool's clock. */
|
|
156
|
+
admittedAt) {
|
|
157
|
+
super(phase, sources);
|
|
158
|
+
this.kind = kind;
|
|
159
|
+
this.admittedAt = admittedAt;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
exports.Operation = Operation;
|
|
163
|
+
/**
|
|
164
|
+
* The pool-wide operation budget: at most `max` operations charged, each from
|
|
165
|
+
* its admission until it has SETTLED (see the module note). Admission is the
|
|
166
|
+
* only way in; settlement the only way out.
|
|
167
|
+
*/
|
|
168
|
+
class OperationBudget {
|
|
169
|
+
max;
|
|
170
|
+
charged = new Set();
|
|
171
|
+
onRelease = [];
|
|
172
|
+
constructor(max) {
|
|
173
|
+
this.max = max;
|
|
174
|
+
}
|
|
175
|
+
/** Operations charged now. */
|
|
176
|
+
get count() {
|
|
177
|
+
return this.charged.size;
|
|
178
|
+
}
|
|
179
|
+
/** Is there a free slot? */
|
|
180
|
+
get hasRoom() {
|
|
181
|
+
return this.charged.size < this.max;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Admit one operation, or `undefined` when the budget is full. The slot is
|
|
185
|
+
* charged from here until the operation settles.
|
|
186
|
+
*/
|
|
187
|
+
admit(kind, phase, sources, now) {
|
|
188
|
+
if (!this.hasRoom)
|
|
189
|
+
return undefined;
|
|
190
|
+
const operation = new Operation(kind, phase, sources, now);
|
|
191
|
+
this.charged.add(operation);
|
|
192
|
+
operation.onSettled(() => {
|
|
193
|
+
this.charged.delete(operation);
|
|
194
|
+
for (const listener of [...this.onRelease])
|
|
195
|
+
listener(operation);
|
|
196
|
+
});
|
|
197
|
+
return operation;
|
|
198
|
+
}
|
|
199
|
+
/** Call `listener` each time an operation settles and frees its slot. Returns the unsubscribe. */
|
|
200
|
+
whenReleased(listener) {
|
|
201
|
+
this.onRelease.push(listener);
|
|
202
|
+
return () => {
|
|
203
|
+
const at = this.onRelease.indexOf(listener);
|
|
204
|
+
if (at >= 0)
|
|
205
|
+
this.onRelease.splice(at, 1);
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/** Charged work whose caller was already answered and which has not settled, by what it is doing. */
|
|
209
|
+
unsettled() {
|
|
210
|
+
const counts = { open: 0, listing: 0, call: 0, ending: 0 };
|
|
211
|
+
for (const operation of this.charged) {
|
|
212
|
+
if (operation.unsettledPastAnswer)
|
|
213
|
+
counts[operation.phase] += 1;
|
|
214
|
+
}
|
|
215
|
+
return counts;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
exports.OperationBudget = OperationBudget;
|
|
219
|
+
//# sourceMappingURL=work.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work.js","sourceRoot":"","sources":["../../../src/mcp/pool/work.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* requestGuard — the last check a pooled operation's request meets at every
|
|
4
|
+
* boundary the library controls, and the count of the work under it until
|
|
5
|
+
* that work has settled.
|
|
6
|
+
*
|
|
7
|
+
* Pattern: one object per operation, carried on the request's `init` under a
|
|
8
|
+
* library-private symbol.
|
|
9
|
+
* Role: The send gate of the MCP client pool (`mcp/pool/`). The MCP SDK and
|
|
10
|
+
* the transport wait between a tool call and the network — `send()`
|
|
11
|
+
* awaits its own headers, a gateway vends a credential inside `fetch`,
|
|
12
|
+
* the AWS SDK signs inside `send` — so the last check cannot live in
|
|
13
|
+
* the tool. Each place that waits asks the request's guard after its
|
|
14
|
+
* wait and before it hands the request on:
|
|
15
|
+
*
|
|
16
|
+
* - the watched `send` (`requestLedger.ts`) — the last boundary on stdio,
|
|
17
|
+
* whose `send` writes without waiting;
|
|
18
|
+
* - the pool's own fetch, before the request enters the transport;
|
|
19
|
+
* - the retry series, before every attempt (`throttleRetry.ts`);
|
|
20
|
+
* - the vending fetch, once the credential has arrived (`gatewayTransport.ts`);
|
|
21
|
+
* - the AWS SDK command, after it is signed and before its request handler
|
|
22
|
+
* sends it (`adapters/mcp/agentcoreRuntime/invoke.ts`).
|
|
23
|
+
*
|
|
24
|
+
* A refusal there sends nothing. What no guard can recall is a request already
|
|
25
|
+
* handed on: to the network, or to an app's own `fetch`.
|
|
26
|
+
*
|
|
27
|
+
* The same object COUNTS the work under the request: every promise a boundary
|
|
28
|
+
* starts for it — an attempt's `fetch`, a credential vend, an AWS `send` — is
|
|
29
|
+
* tracked until it settles, whatever the caller was told. An abort is a
|
|
30
|
+
* signal, not proof that the work stopped, so the pool keeps an operation
|
|
31
|
+
* charged until this count says it has.
|
|
32
|
+
*
|
|
33
|
+
* The guard rides `init` under a symbol, so a layer that rebuilds `init` with
|
|
34
|
+
* a spread (`{ ...init, headers }`) carries it on, and nothing reaches the
|
|
35
|
+
* wire: `fetch` reads only the fields it knows. A request with no guard — every
|
|
36
|
+
* request of a client the pool did not build — is exactly what it always was.
|
|
37
|
+
*/
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.callGuardOf = exports.withCallGuard = exports.CALL_GUARD = exports.trackedBy = exports.withGuard = exports.guardOf = exports.REQUEST_GUARD = void 0;
|
|
40
|
+
/** @internal The `init` key a pooled request's guard rides under. */
|
|
41
|
+
exports.REQUEST_GUARD = Symbol('agentfootprint.mcp.request-guard');
|
|
42
|
+
/** The guard `init` carries, or `undefined` — a request no pool sent. Never throws. */
|
|
43
|
+
function guardOf(init) {
|
|
44
|
+
if (init === undefined || init === null || typeof init !== 'object')
|
|
45
|
+
return undefined;
|
|
46
|
+
let guard;
|
|
47
|
+
try {
|
|
48
|
+
guard = init[exports.REQUEST_GUARD];
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
if (guard === null || typeof guard !== 'object')
|
|
54
|
+
return undefined;
|
|
55
|
+
return typeof guard.check === 'function' &&
|
|
56
|
+
typeof guard.track === 'function'
|
|
57
|
+
? guard
|
|
58
|
+
: undefined;
|
|
59
|
+
}
|
|
60
|
+
exports.guardOf = guardOf;
|
|
61
|
+
/** `init` carrying `guard`: a new object, every other field in place. */
|
|
62
|
+
function withGuard(init, guard) {
|
|
63
|
+
return { ...init, [exports.REQUEST_GUARD]: guard };
|
|
64
|
+
}
|
|
65
|
+
exports.withGuard = withGuard;
|
|
66
|
+
/**
|
|
67
|
+
* Track `work` under `init`'s guard, when it has one, and hand `work` back
|
|
68
|
+
* unchanged. The one line every boundary uses.
|
|
69
|
+
*/
|
|
70
|
+
function trackedBy(init, work) {
|
|
71
|
+
guardOf(init)?.track(work);
|
|
72
|
+
return work;
|
|
73
|
+
}
|
|
74
|
+
exports.trackedBy = trackedBy;
|
|
75
|
+
// ─── The call's port ─────────────────────────────────────────────────
|
|
76
|
+
/**
|
|
77
|
+
* @internal The call-context key a pooled tool hands its guard down under, to
|
|
78
|
+
* the MCP tool it runs (`callLifetime.ts` · `openCall` issues the call with
|
|
79
|
+
* it). Enumerable, so a wrapper that copies the context keeps it.
|
|
80
|
+
*/
|
|
81
|
+
exports.CALL_GUARD = Symbol('agentfootprint.mcp.call-guard');
|
|
82
|
+
/** `ctx` carrying `guard` for the MCP tool it is handed to. */
|
|
83
|
+
function withCallGuard(ctx, guard) {
|
|
84
|
+
return { ...ctx, [exports.CALL_GUARD]: guard };
|
|
85
|
+
}
|
|
86
|
+
exports.withCallGuard = withCallGuard;
|
|
87
|
+
/** The guard a call's context carries, or `undefined`. Never throws, whatever `ctx` is. */
|
|
88
|
+
function callGuardOf(ctx) {
|
|
89
|
+
if (ctx === null || typeof ctx !== 'object')
|
|
90
|
+
return undefined;
|
|
91
|
+
let guard;
|
|
92
|
+
try {
|
|
93
|
+
guard = ctx[exports.CALL_GUARD];
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return undefined;
|
|
97
|
+
}
|
|
98
|
+
if (guard === null || typeof guard !== 'object')
|
|
99
|
+
return undefined;
|
|
100
|
+
return typeof guard.check === 'function' &&
|
|
101
|
+
typeof guard.track === 'function'
|
|
102
|
+
? guard
|
|
103
|
+
: undefined;
|
|
104
|
+
}
|
|
105
|
+
exports.callGuardOf = callGuardOf;
|
|
106
|
+
//# sourceMappingURL=requestGuard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestGuard.js","sourceRoot":"","sources":["../../src/mcp/requestGuard.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;;;AAEH,qEAAqE;AACxD,QAAA,aAAa,GAAkB,MAAM,CAAC,kCAAkC,CAAC,CAAC;AAmBvF,uFAAuF;AACvF,SAAgB,OAAO,CAAC,IAA6B;IACnD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtF,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAI,IAAgB,CAAC,qBAAa,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,OAAQ,KAAsB,CAAC,KAAK,KAAK,UAAU;QACxD,OAAQ,KAAsB,CAAC,KAAK,KAAK,UAAU;QACnD,CAAC,CAAE,KAAsB;QACzB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAbD,0BAaC;AAED,yEAAyE;AACzE,SAAgB,SAAS,CAAC,IAA6B,EAAE,KAAmB;IAC1E,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,qBAAa,CAAC,EAAE,KAAK,EAAiB,CAAC;AAC5D,CAAC;AAFD,8BAEC;AAED;;;GAGG;AACH,SAAgB,SAAS,CACvB,IAA6B,EAC7B,IAAO;IAEP,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAND,8BAMC;AAED,wEAAwE;AAExE;;;;GAIG;AACU,QAAA,UAAU,GAAkB,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAEjF,+DAA+D;AAC/D,SAAgB,aAAa,CAAmB,GAAM,EAAE,KAAmB;IACzE,OAAO,EAAE,GAAG,GAAG,EAAE,CAAC,kBAAU,CAAC,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC;AAFD,sCAEC;AAED,2FAA2F;AAC3F,SAAgB,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9D,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAI,GAA2C,CAAC,kBAAU,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,OAAQ,KAAsB,CAAC,KAAK,KAAK,UAAU;QACxD,OAAQ,KAAsB,CAAC,KAAK,KAAK,UAAU;QACnD,CAAC,CAAE,KAAsB;QACzB,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAbD,kCAaC"}
|