agentfootprint 11.3.0 → 11.5.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/CAPABILITIES.md +4 -1
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js +7 -6
- package/dist/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js +36 -2
- package/dist/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -1
- package/dist/adapters/mcp/agentcoreRuntime/transport.js +3 -1
- 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 +3 -0
- package/dist/core/agent/buildToolRegistry.js.map +1 -1
- 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/esm/adapters/mcp/agentcoreRuntime/invoke.d.ts +7 -6
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js +7 -6
- package/dist/esm/adapters/mcp/agentcoreRuntime/invoke.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +32 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js +35 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/sessionBusy.js.map +1 -1
- package/dist/esm/adapters/mcp/agentcoreRuntime/transport.js +4 -2
- 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 +4 -1
- package/dist/esm/core/agent/buildToolRegistry.js.map +1 -1
- package/dist/esm/core/agent/evidence/numberPrecision.d.ts +3 -2
- 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/types.d.ts +16 -2
- package/dist/esm/events/payloads.d.ts +137 -27
- 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 +57 -14
- package/dist/esm/mcp/callLifetime.js +67 -19
- package/dist/esm/mcp/callLifetime.js.map +1 -1
- package/dist/esm/mcp/callMarker.d.ts +43 -0
- package/dist/esm/mcp/callMarker.js +69 -0
- package/dist/esm/mcp/callMarker.js.map +1 -0
- package/dist/esm/mcp/connectionRefusals.js +7 -0
- package/dist/esm/mcp/connectionRefusals.js.map +1 -1
- package/dist/esm/mcp/index.d.ts +2 -0
- package/dist/esm/mcp/index.js +3 -0
- package/dist/esm/mcp/index.js.map +1 -1
- package/dist/esm/mcp/mcpClient.js +93 -26
- package/dist/esm/mcp/mcpClient.js.map +1 -1
- package/dist/esm/mcp/replay.d.ts +283 -0
- package/dist/esm/mcp/replay.js +401 -0
- package/dist/esm/mcp/replay.js.map +1 -0
- package/dist/esm/mcp/replayUnavailable.d.ts +55 -0
- package/dist/esm/mcp/replayUnavailable.js +74 -0
- package/dist/esm/mcp/replayUnavailable.js.map +1 -0
- package/dist/esm/mcp/requestLedger.d.ts +115 -32
- package/dist/esm/mcp/requestLedger.js +193 -52
- package/dist/esm/mcp/requestLedger.js.map +1 -1
- package/dist/esm/mcp/seriesEvidence.d.ts +73 -15
- package/dist/esm/mcp/seriesEvidence.js +114 -21
- package/dist/esm/mcp/seriesEvidence.js.map +1 -1
- package/dist/esm/mcp/throttleRetry.d.ts +86 -42
- package/dist/esm/mcp/throttleRetry.js +158 -50
- package/dist/esm/mcp/throttleRetry.js.map +1 -1
- package/dist/esm/mcp/toolResult.d.ts +6 -0
- package/dist/esm/mcp/toolResult.js +15 -0
- package/dist/esm/mcp/toolResult.js.map +1 -1
- package/dist/esm/mcp/types.d.ts +70 -8
- package/dist/esm/redaction/knownStrings.js +14 -0
- package/dist/esm/redaction/knownStrings.js.map +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/tool-providers/index.d.ts +2 -2
- package/dist/esm/tool-providers/index.js +4 -0
- package/dist/esm/tool-providers/index.js.map +1 -1
- package/dist/esm/tools/requestEvidence.js +60 -0
- package/dist/esm/tools/requestEvidence.js.map +1 -1
- 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/lib/displayName.js +125 -0
- package/dist/lib/displayName.js.map +1 -0
- package/dist/mcp/callLifetime.js +66 -18
- package/dist/mcp/callLifetime.js.map +1 -1
- package/dist/mcp/callMarker.js +74 -0
- package/dist/mcp/callMarker.js.map +1 -0
- package/dist/mcp/connectionRefusals.js +7 -0
- package/dist/mcp/connectionRefusals.js.map +1 -1
- package/dist/mcp/index.js +5 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/mcpClient.js +91 -24
- package/dist/mcp/mcpClient.js.map +1 -1
- package/dist/mcp/replay.js +411 -0
- package/dist/mcp/replay.js.map +1 -0
- package/dist/mcp/replayUnavailable.js +79 -0
- package/dist/mcp/replayUnavailable.js.map +1 -0
- package/dist/mcp/requestLedger.js +193 -52
- package/dist/mcp/requestLedger.js.map +1 -1
- package/dist/mcp/seriesEvidence.js +116 -22
- package/dist/mcp/seriesEvidence.js.map +1 -1
- package/dist/mcp/throttleRetry.js +160 -51
- package/dist/mcp/throttleRetry.js.map +1 -1
- package/dist/mcp/toolResult.js +17 -1
- package/dist/mcp/toolResult.js.map +1 -1
- package/dist/redaction/knownStrings.js +14 -0
- package/dist/redaction/knownStrings.js.map +1 -1
- package/dist/semantics/coverage/answer.js +49 -9
- package/dist/semantics/coverage/answer.js.map +1 -1
- package/dist/tool-providers/index.js +5 -1
- package/dist/tool-providers/index.js.map +1 -1
- package/dist/tools/requestEvidence.js +60 -0
- package/dist/tools/requestEvidence.js.map +1 -1
- package/dist/tools/tools.js +18 -1
- package/dist/tools/tools.js.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts +7 -6
- package/dist/types/adapters/mcp/agentcoreRuntime/invoke.d.ts.map +1 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts +32 -1
- package/dist/types/adapters/mcp/agentcoreRuntime/sessionBusy.d.ts.map +1 -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/numberPrecision.d.ts +3 -2
- 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/types.d.ts +16 -2
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +137 -27
- package/dist/types/events/payloads.d.ts.map +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 +57 -14
- package/dist/types/mcp/callLifetime.d.ts.map +1 -1
- package/dist/types/mcp/callMarker.d.ts +44 -0
- package/dist/types/mcp/callMarker.d.ts.map +1 -0
- package/dist/types/mcp/index.d.ts +2 -0
- package/dist/types/mcp/index.d.ts.map +1 -1
- package/dist/types/mcp/mcpClient.d.ts.map +1 -1
- package/dist/types/mcp/replay.d.ts +284 -0
- package/dist/types/mcp/replay.d.ts.map +1 -0
- package/dist/types/mcp/replayUnavailable.d.ts +56 -0
- package/dist/types/mcp/replayUnavailable.d.ts.map +1 -0
- package/dist/types/mcp/requestLedger.d.ts +115 -32
- package/dist/types/mcp/requestLedger.d.ts.map +1 -1
- package/dist/types/mcp/seriesEvidence.d.ts +73 -15
- package/dist/types/mcp/seriesEvidence.d.ts.map +1 -1
- package/dist/types/mcp/throttleRetry.d.ts +86 -42
- package/dist/types/mcp/throttleRetry.d.ts.map +1 -1
- package/dist/types/mcp/toolResult.d.ts +6 -0
- package/dist/types/mcp/toolResult.d.ts.map +1 -1
- package/dist/types/mcp/types.d.ts +70 -8
- package/dist/types/mcp/types.d.ts.map +1 -1
- package/dist/types/redaction/knownStrings.d.ts.map +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/tool-providers/index.d.ts +2 -2
- package/dist/types/tool-providers/index.d.ts.map +1 -1
- package/dist/types/tools/requestEvidence.d.ts.map +1 -1
- package/dist/types/tools/tools.d.ts +30 -0
- package/dist/types/tools/tools.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay.js","sourceRoot":"","sources":["../../../src/mcp/replay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* replayUnavailable — when a connection cannot keep the `'app-authorized'`
|
|
3
|
+
* contract, a call under it is refused BEFORE it is sent, and the error says why.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: a readiness rule + one typed refusal.
|
|
6
|
+
* Role: Under `'app-authorized'`, a call that genuinely lacked an answer and
|
|
7
|
+
* then fails is raised as "may have run" (`callLifetime.ts`). That
|
|
8
|
+
* rests on two things the library must ESTABLISH for every call,
|
|
9
|
+
* never assume:
|
|
10
|
+
*
|
|
11
|
+
* 1. ITS REQUEST IS MATCHED to the call, by the call's private marker, taken
|
|
12
|
+
* at the transport's `send` (`callMarker.ts`, `requestLedger.ts`).
|
|
13
|
+
* - `'requests-unwatched'`: the library cannot watch this transport's
|
|
14
|
+
* `send` at all (stdio, or a transport that refuses the wrap).
|
|
15
|
+
* - `'request-unmatched'`: a request reached `send` without its call's
|
|
16
|
+
* marker (an SDK that rebuilt the params and dropped `_meta`), so it
|
|
17
|
+
* cannot be tied to any call.
|
|
18
|
+
* 2. ITS ANSWER IS SEEN: the JSON-RPC response to the request's id, read as
|
|
19
|
+
* it arrives. This is checked once the connection is initialized: the
|
|
20
|
+
* `initialize` answer must have passed the library's observer.
|
|
21
|
+
* - `'answers-unobserved'`: it did not. An MCP SDK whose `connect`
|
|
22
|
+
* REPLACES the transport's `onmessage` handler instead of keeping it
|
|
23
|
+
* (SDK 1.10's `Protocol.connect` does) leaves the observer out.
|
|
24
|
+
*
|
|
25
|
+
* Without either, a request the server accepted and never answered would reach
|
|
26
|
+
* the caller as a plain timeout: the strict contract, silently weakened. So the
|
|
27
|
+
* call is refused instead, and nothing is sent. `'compatibility'` asks none of
|
|
28
|
+
* this and keeps its behaviour.
|
|
29
|
+
*/
|
|
30
|
+
/** Why a call under `'app-authorized'` was refused before it was sent. */
|
|
31
|
+
export type McpReplayUnavailableReason = 'requests-unwatched' | 'answers-unobserved' | 'request-unmatched';
|
|
32
|
+
/**
|
|
33
|
+
* A tool call refused before it was sent, because this connection cannot keep
|
|
34
|
+
* the `'app-authorized'` replay contract (`reason`). Nothing reached the server.
|
|
35
|
+
* Names the server and the tool, never an argument.
|
|
36
|
+
*/
|
|
37
|
+
export declare class McpReplayUnavailableError extends Error {
|
|
38
|
+
readonly reason: McpReplayUnavailableReason;
|
|
39
|
+
readonly server: string;
|
|
40
|
+
readonly tool: string;
|
|
41
|
+
readonly code: "ERR_MCP_REPLAY_UNAVAILABLE";
|
|
42
|
+
/** Nothing was sent: the refusal came before the request left the client. */
|
|
43
|
+
readonly sent: false;
|
|
44
|
+
constructor(reason: McpReplayUnavailableReason, server: string, tool: string);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Why a connection cannot take a call under `'app-authorized'` before anything
|
|
48
|
+
* is sent — `undefined` when it can. `ledger` is the connection's request
|
|
49
|
+
* ledger: absent when the library could not watch the transport's requests.
|
|
50
|
+
* A request that reaches the transport without its marker is refused there, by
|
|
51
|
+
* the ledger (`'request-unmatched'`).
|
|
52
|
+
*/
|
|
53
|
+
export declare function unavailableBeforeSending(ledger: {
|
|
54
|
+
readonly answersObserved: boolean;
|
|
55
|
+
} | undefined): McpReplayUnavailableReason | undefined;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* replayUnavailable — when a connection cannot keep the `'app-authorized'`
|
|
3
|
+
* contract, a call under it is refused BEFORE it is sent, and the error says why.
|
|
4
|
+
*
|
|
5
|
+
* Pattern: a readiness rule + one typed refusal.
|
|
6
|
+
* Role: Under `'app-authorized'`, a call that genuinely lacked an answer and
|
|
7
|
+
* then fails is raised as "may have run" (`callLifetime.ts`). That
|
|
8
|
+
* rests on two things the library must ESTABLISH for every call,
|
|
9
|
+
* never assume:
|
|
10
|
+
*
|
|
11
|
+
* 1. ITS REQUEST IS MATCHED to the call, by the call's private marker, taken
|
|
12
|
+
* at the transport's `send` (`callMarker.ts`, `requestLedger.ts`).
|
|
13
|
+
* - `'requests-unwatched'`: the library cannot watch this transport's
|
|
14
|
+
* `send` at all (stdio, or a transport that refuses the wrap).
|
|
15
|
+
* - `'request-unmatched'`: a request reached `send` without its call's
|
|
16
|
+
* marker (an SDK that rebuilt the params and dropped `_meta`), so it
|
|
17
|
+
* cannot be tied to any call.
|
|
18
|
+
* 2. ITS ANSWER IS SEEN: the JSON-RPC response to the request's id, read as
|
|
19
|
+
* it arrives. This is checked once the connection is initialized: the
|
|
20
|
+
* `initialize` answer must have passed the library's observer.
|
|
21
|
+
* - `'answers-unobserved'`: it did not. An MCP SDK whose `connect`
|
|
22
|
+
* REPLACES the transport's `onmessage` handler instead of keeping it
|
|
23
|
+
* (SDK 1.10's `Protocol.connect` does) leaves the observer out.
|
|
24
|
+
*
|
|
25
|
+
* Without either, a request the server accepted and never answered would reach
|
|
26
|
+
* the caller as a plain timeout: the strict contract, silently weakened. So the
|
|
27
|
+
* call is refused instead, and nothing is sent. `'compatibility'` asks none of
|
|
28
|
+
* this and keeps its behaviour.
|
|
29
|
+
*/
|
|
30
|
+
/** The fixed sentence each reason reads as. Never an argument, a header or an answer. */
|
|
31
|
+
const BECAUSE = {
|
|
32
|
+
'requests-unwatched': "the library cannot watch this transport's requests, so it cannot match a request to its call",
|
|
33
|
+
'answers-unobserved': "this connection's answers do not pass the library's observer: the MCP SDK replaced the " +
|
|
34
|
+
"transport's message handler when it connected",
|
|
35
|
+
'request-unmatched': "the request reached the transport without its call's marker: the MCP SDK rebuilt the " +
|
|
36
|
+
"request's params",
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* A tool call refused before it was sent, because this connection cannot keep
|
|
40
|
+
* the `'app-authorized'` replay contract (`reason`). Nothing reached the server.
|
|
41
|
+
* Names the server and the tool, never an argument.
|
|
42
|
+
*/
|
|
43
|
+
export class McpReplayUnavailableError extends Error {
|
|
44
|
+
reason;
|
|
45
|
+
server;
|
|
46
|
+
tool;
|
|
47
|
+
code = 'ERR_MCP_REPLAY_UNAVAILABLE';
|
|
48
|
+
/** Nothing was sent: the refusal came before the request left the client. */
|
|
49
|
+
sent = false;
|
|
50
|
+
constructor(reason, server, tool) {
|
|
51
|
+
super(`mcpClient[${server}]: the call to '${tool}' was not sent. The 'app-authorized' replay ` +
|
|
52
|
+
`policy needs each request matched to its call and each answer seen, and ` +
|
|
53
|
+
`${BECAUSE[reason]}.`);
|
|
54
|
+
this.reason = reason;
|
|
55
|
+
this.server = server;
|
|
56
|
+
this.tool = tool;
|
|
57
|
+
this.name = 'McpReplayUnavailableError';
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Why a connection cannot take a call under `'app-authorized'` before anything
|
|
62
|
+
* is sent — `undefined` when it can. `ledger` is the connection's request
|
|
63
|
+
* ledger: absent when the library could not watch the transport's requests.
|
|
64
|
+
* A request that reaches the transport without its marker is refused there, by
|
|
65
|
+
* the ledger (`'request-unmatched'`).
|
|
66
|
+
*/
|
|
67
|
+
export function unavailableBeforeSending(ledger) {
|
|
68
|
+
if (ledger === undefined)
|
|
69
|
+
return 'requests-unwatched';
|
|
70
|
+
if (!ledger.answersObserved)
|
|
71
|
+
return 'answers-unobserved';
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=replayUnavailable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replayUnavailable.js","sourceRoot":"","sources":["../../../src/mcp/replayUnavailable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAQH,yFAAyF;AACzF,MAAM,OAAO,GAAyD;IACpE,oBAAoB,EAClB,8FAA8F;IAChG,oBAAoB,EAClB,yFAAyF;QACzF,+CAA+C;IACjD,mBAAmB,EACjB,uFAAuF;QACvF,kBAAkB;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAMvC;IACA;IACA;IAPF,IAAI,GAAG,4BAAqC,CAAC;IACtD,6EAA6E;IACpE,IAAI,GAAG,KAAc,CAAC;IAE/B,YACW,MAAkC,EAClC,MAAc,EACd,IAAY;QAErB,KAAK,CACH,aAAa,MAAM,mBAAmB,IAAI,8CAA8C;YACtF,0EAA0E;YAC1E,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CACxB,CAAC;QARO,WAAM,GAAN,MAAM,CAA4B;QAClC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAOrB,IAAI,CAAC,IAAI,GAAG,2BAA2B,CAAC;IAC1C,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAyD;IAEzD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,oBAAoB,CAAC;IACtD,IAAI,CAAC,MAAM,CAAC,eAAe;QAAE,OAAO,oBAAoB,CAAC;IACzD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1,48 +1,73 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* requestLedger — which dispatched tool call an MCP request belongs to, so the
|
|
3
|
-
* retry series that sends it files its attempts into THAT call's run;
|
|
4
|
-
*
|
|
3
|
+
* retry series that sends it files its attempts into THAT call's run; when the
|
|
4
|
+
* MCP SDK cancels a request, so the series sending it stops; and whether the
|
|
5
|
+
* request's JSON-RPC answer arrived.
|
|
5
6
|
*
|
|
6
7
|
* Pattern: a per-connection ledger + the SDK transport's `send`, watched in place.
|
|
7
8
|
* Role: The middle of the evidence seam (`tools/requestEvidence.ts` is its
|
|
8
9
|
* door). The retry series runs inside the transport's `fetch`, which
|
|
9
10
|
* the MCP SDK calls with a serialized body and nothing else — no tool
|
|
10
|
-
* call, no run. Three hops carry the call down to it
|
|
11
|
-
* identity the hop already holds:
|
|
11
|
+
* call, no run. Three hops carry the call down to it:
|
|
12
12
|
*
|
|
13
|
-
* 1. call →
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* 2.
|
|
17
|
-
*
|
|
18
|
-
*
|
|
13
|
+
* 1. call → marker `issue`: the MCP tool gets a library-private marker and
|
|
14
|
+
* puts it in its request's `_meta` (`callMarker.ts`). It
|
|
15
|
+
* survives an SDK that copies the params.
|
|
16
|
+
* 2. marker → id the watched `send` takes the marker out of the message
|
|
17
|
+
* — the server receives the bytes it always did — and
|
|
18
|
+
* keys the call by the JSON-RPC `id` the SDK assigned.
|
|
19
19
|
* 3. id → series `claim`: the series reads the `id` back out of the body
|
|
20
20
|
* it is about to send.
|
|
21
21
|
*
|
|
22
22
|
* CANCELLATION DOES NOT WAIT ON ATTRIBUTION. Every `tools/call` in flight gets
|
|
23
|
-
* an entry,
|
|
24
|
-
* `notifications/cancelled` naming the request's id — on its own
|
|
25
|
-
* when the call's signal fires — through this same `send`. The
|
|
26
|
-
* that request's series there and then, so a request nobody waits
|
|
27
|
-
* asked again, even when
|
|
23
|
+
* an entry, matched or not, and the SDK says when it gives a request up: it
|
|
24
|
+
* sends `notifications/cancelled` naming the request's id — on its own
|
|
25
|
+
* timeout, or when the call's signal fires — through this same `send`. The
|
|
26
|
+
* ledger aborts that request's series there and then, so a request nobody waits
|
|
27
|
+
* for is never asked again, even when it could not be matched to a call.
|
|
28
28
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
29
|
+
* Under `'app-authorized'` (`strict`), two more things hold:
|
|
30
|
+
* - A `tools/call` that reaches `send` without a marker this ledger issued
|
|
31
|
+
* and has not used is REFUSED there (`replayUnavailable.ts`,
|
|
32
|
+
* `'request-unmatched'`): its answer could not be tied to any call, so it
|
|
33
|
+
* is never sent rather than guessed at.
|
|
34
|
+
* - Each matched request's answer is AWAITED, by its id: the connection's
|
|
35
|
+
* incoming messages are observed for the JSON-RPC response to it. A 202, or
|
|
36
|
+
* a stream, is not that answer. The watch ends when the answer arrives,
|
|
37
|
+
* when the SDK cancels the request, when the call settles (found by its
|
|
38
|
+
* marker, never by its params object) or when the connection closes —
|
|
39
|
+
* never when only the HTTP send finished, since a 202 or a stream can still
|
|
40
|
+
* carry the answer later.
|
|
41
|
+
*
|
|
42
|
+
* Whether the answers are observed at all is established once, at
|
|
43
|
+
* initialization: the `initialize` answer must pass the observer
|
|
44
|
+
* (`answersObserved`). An SDK whose `connect` replaces the transport's
|
|
45
|
+
* `onmessage` instead of keeping it leaves the observer out, and a call under
|
|
46
|
+
* `'app-authorized'` is then refused before it is sent (`replayUnavailable.ts`).
|
|
47
|
+
*
|
|
48
|
+
* Ids are the client's, one ledger per connection, so concurrent calls — and
|
|
49
|
+
* concurrent runs sharing one client — can never claim each other's request. A
|
|
50
|
+
* request that is not a `tools/call` (a `tools/list`, a notification, a
|
|
51
|
+
* response) claims nothing.
|
|
35
52
|
*
|
|
36
53
|
* `send` is installed as an OWN property of the transport instance — the same
|
|
37
54
|
* object, its own `send` bound to it, so a transport class with `#private`
|
|
38
55
|
* fields works as it always did. Assigning `send` again afterwards THROWS: a
|
|
39
56
|
* send that bypassed the ledger would quietly lose every call's attempts.
|
|
40
57
|
*
|
|
58
|
+
* Each matched `tools/call` also gets ONE `RequestReplay` (`replay.ts`), the
|
|
59
|
+
* facts its series, this ledger and its call share: the series' claim hands it
|
|
60
|
+
* over by the request's id, the call reads it from the entry it was issued
|
|
61
|
+
* (`IssuedCall`), which outlives the connection's close. The
|
|
62
|
+
* series writes what HTTP showed; this ledger writes whether the JSON-RPC
|
|
63
|
+
* answer arrived; the call writes how it settled.
|
|
64
|
+
*
|
|
41
65
|
* What it does NOT do: retry, wait, or decide anything. The series is the one
|
|
42
66
|
* retry owner; this only tells it whose attempts it is making, and when the SDK
|
|
43
67
|
* has stopped waiting for them.
|
|
44
68
|
*/
|
|
45
69
|
import type { RequestEvidenceSink } from '../tools/requestEvidence.js';
|
|
70
|
+
import { RequestReplay } from './replay.js';
|
|
46
71
|
/** One call's claim on the request it sends. */
|
|
47
72
|
export interface RequestTicket {
|
|
48
73
|
/** Where the request's attempts are filed. */
|
|
@@ -56,23 +81,71 @@ export interface ClaimedRequest {
|
|
|
56
81
|
readonly ticket?: RequestTicket;
|
|
57
82
|
/** Fires when the MCP SDK cancels this request (`notifications/cancelled`). */
|
|
58
83
|
readonly cancelled: AbortSignal;
|
|
84
|
+
/** What this request's series and its call share (`replay.ts` · `RequestReplay`). */
|
|
85
|
+
readonly replay: RequestReplay;
|
|
86
|
+
}
|
|
87
|
+
/** How a connection's ledger is set up. */
|
|
88
|
+
export interface RequestLedgerOptions {
|
|
89
|
+
/** The client's name, which a refusal names. */
|
|
90
|
+
readonly server: string;
|
|
91
|
+
/** The `'app-authorized'` policy is in force: see the module note. */
|
|
92
|
+
readonly strict: boolean;
|
|
59
93
|
}
|
|
60
|
-
|
|
94
|
+
type JsonRpcId = string | number;
|
|
95
|
+
/** The request a call's marker was matched to. */
|
|
96
|
+
export interface MatchedRequest {
|
|
97
|
+
readonly id: JsonRpcId;
|
|
98
|
+
readonly replay: RequestReplay;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* One call, from `issue` until it settles: the marker it sends, and the
|
|
102
|
+
* request matched to it once one was. The call holds this entry itself, so
|
|
103
|
+
* what it reads does not depend on the ledger still holding it.
|
|
104
|
+
*/
|
|
105
|
+
export interface IssuedCall {
|
|
106
|
+
readonly marker: string;
|
|
107
|
+
readonly ticket?: RequestTicket;
|
|
108
|
+
/** Set once, by the watched `send`: a marker matches ONE request. */
|
|
109
|
+
readonly request?: MatchedRequest;
|
|
110
|
+
}
|
|
111
|
+
/** Per connection: the calls issued and not yet settled, the requests being sent, the answers awaited. */
|
|
61
112
|
export declare class RequestLedger {
|
|
62
|
-
|
|
113
|
+
private readonly options;
|
|
114
|
+
/** Every call issued and not yet settled — keyed by its marker. */
|
|
63
115
|
private readonly issued;
|
|
64
|
-
/** Tickets a request was bound to. */
|
|
65
|
-
private readonly bound;
|
|
66
116
|
/** Every `tools/call` sent and not yet settled — keyed by its JSON-RPC id. */
|
|
67
117
|
private readonly sending;
|
|
118
|
+
/** Matched requests whose JSON-RPC answer is awaited (`strict` only) — by id. */
|
|
119
|
+
private readonly awaiting;
|
|
120
|
+
private initializeId;
|
|
121
|
+
private initializeAnswered;
|
|
122
|
+
private markers;
|
|
68
123
|
private calls;
|
|
69
124
|
private unboundNamed;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
125
|
+
constructor(options?: RequestLedgerOptions);
|
|
126
|
+
/**
|
|
127
|
+
* A call is about to send its request: its entry, whose `marker` the call
|
|
128
|
+
* puts in the request's `_meta` (`callMarker.ts` · `markParams`). `ticket`
|
|
129
|
+
* is where its attempts are filed, when the call carries the run's evidence
|
|
130
|
+
* port.
|
|
131
|
+
*/
|
|
132
|
+
issue(ticket?: RequestTicket): IssuedCall;
|
|
133
|
+
/** `call` settled: forget it, and stop awaiting its request's answer. */
|
|
134
|
+
settle(call: IssuedCall): void;
|
|
135
|
+
/** The connection closed: nothing it sent is awaited, and no call is pending, any more. */
|
|
136
|
+
close(): void;
|
|
137
|
+
/**
|
|
138
|
+
* Whether this connection's answers pass the observer: the `initialize`
|
|
139
|
+
* answer did. Read once the connection is initialized.
|
|
140
|
+
*/
|
|
141
|
+
get answersObserved(): boolean;
|
|
74
142
|
/** How many `tools/call` requests the watched transport has sent — matched to a call or not. */
|
|
75
143
|
get toolCallsSent(): number;
|
|
144
|
+
/**
|
|
145
|
+
* @internal How many entries the ledger holds: calls issued and not settled,
|
|
146
|
+
* requests being sent, answers awaited. Zero once every call settled.
|
|
147
|
+
*/
|
|
148
|
+
get retained(): number;
|
|
76
149
|
/** `true` the first time it is asked, then never again: an unmatched request is named once per connection. */
|
|
77
150
|
firstUnbound(): boolean;
|
|
78
151
|
/**
|
|
@@ -80,8 +153,17 @@ export declare class RequestLedger {
|
|
|
80
153
|
* original bound to the instance itself. Returns the SAME object — or
|
|
81
154
|
* `undefined` when it has no `send` to watch or refuses the property, and
|
|
82
155
|
* then nothing is watched and no call should expect its attempts filed.
|
|
156
|
+
*
|
|
157
|
+
* Its incoming messages are watched too: an `onmessage` set before the
|
|
158
|
+
* client connects, which the current MCP SDK's `Protocol.connect` keeps and
|
|
159
|
+
* calls before its own dispatch. Whether it was kept is known once the
|
|
160
|
+
* `initialize` answer has, or has not, passed it (`answersObserved`).
|
|
83
161
|
*/
|
|
84
162
|
watch<T extends object>(transport: T): T | undefined;
|
|
163
|
+
/** Observe incoming messages before whatever handled them already — never instead of it. */
|
|
164
|
+
private watchMessages;
|
|
165
|
+
/** One incoming message: the `initialize` answer, or the answer to an awaited request. */
|
|
166
|
+
private observe;
|
|
85
167
|
/**
|
|
86
168
|
* The `tools/call` request `body` carries, while its send runs — its ticket
|
|
87
169
|
* when a call issued one, and the signal its cancellation fires. `undefined`
|
|
@@ -90,8 +172,9 @@ export declare class RequestLedger {
|
|
|
90
172
|
claim(body: unknown): ClaimedRequest | undefined;
|
|
91
173
|
/** One message through the watched transport. */
|
|
92
174
|
private send;
|
|
93
|
-
/**
|
|
94
|
-
private
|
|
95
|
-
/** The SDK gave a request up: stop the series still sending it. */
|
|
175
|
+
/** The `initialize` request: its answer is the one that proves the observer is in place. */
|
|
176
|
+
private noteInitialize;
|
|
177
|
+
/** The SDK gave a request up: stop the series still sending it, and stop awaiting its answer. */
|
|
96
178
|
private cancelIfAsked;
|
|
97
179
|
}
|
|
180
|
+
export {};
|