agentfootprint 7.24.0 → 7.26.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/CLAUDE.md +5 -3
- package/ai-instructions/claude-code/SKILL.md +1 -1
- package/dist/adapters/hosting/agentcore.js +112 -1
- package/dist/adapters/hosting/agentcore.js.map +1 -1
- package/dist/adapters/llm/AnthropicProvider.js +10 -0
- package/dist/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BedrockProvider.js +13 -1
- package/dist/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserAnthropicProvider.js +6 -0
- package/dist/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/adapters/llm/BrowserOpenAIProvider.js +18 -0
- package/dist/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/adapters/llm/MockProvider.js +9 -0
- package/dist/adapters/llm/MockProvider.js.map +1 -1
- package/dist/adapters/llm/OpenAIProvider.js +21 -0
- package/dist/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/conventions.js +12 -0
- package/dist/conventions.js.map +1 -1
- package/dist/core/Agent.js +56 -2
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/agent/AgentBuilder.js +98 -1
- package/dist/core/agent/AgentBuilder.js.map +1 -1
- package/dist/core/agent/buildAgentChart.js +12 -2
- package/dist/core/agent/buildAgentChart.js.map +1 -1
- package/dist/core/agent/buildDynamicAgentChart.js +12 -3
- package/dist/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/core/agent/outputEnforcement.js +192 -0
- package/dist/core/agent/outputEnforcement.js.map +1 -0
- package/dist/core/agent/stages/callLLM.js +31 -1
- package/dist/core/agent/stages/callLLM.js.map +1 -1
- package/dist/core/agent/stages/outputRetry.js +102 -0
- package/dist/core/agent/stages/outputRetry.js.map +1 -0
- package/dist/core/agent/stages/route.js +111 -6
- package/dist/core/agent/stages/route.js.map +1 -1
- package/dist/core/outputSchema.js.map +1 -1
- package/dist/esm/adapters/hosting/agentcore.d.ts +50 -1
- package/dist/esm/adapters/hosting/agentcore.js +110 -0
- package/dist/esm/adapters/hosting/agentcore.js.map +1 -1
- package/dist/esm/adapters/llm/AnthropicProvider.d.ts +10 -0
- package/dist/esm/adapters/llm/AnthropicProvider.js +10 -0
- package/dist/esm/adapters/llm/AnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BedrockProvider.d.ts +9 -0
- package/dist/esm/adapters/llm/BedrockProvider.js +13 -1
- package/dist/esm/adapters/llm/BedrockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.d.ts +1 -0
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js +6 -0
- package/dist/esm/adapters/llm/BrowserAnthropicProvider.js.map +1 -1
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.d.ts +4 -0
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js +18 -0
- package/dist/esm/adapters/llm/BrowserOpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/llm/MockProvider.d.ts +9 -0
- package/dist/esm/adapters/llm/MockProvider.js +9 -0
- package/dist/esm/adapters/llm/MockProvider.js.map +1 -1
- package/dist/esm/adapters/llm/OpenAIProvider.d.ts +12 -0
- package/dist/esm/adapters/llm/OpenAIProvider.js +21 -0
- package/dist/esm/adapters/llm/OpenAIProvider.js.map +1 -1
- package/dist/esm/adapters/types.d.ts +46 -0
- package/dist/esm/conventions.d.ts +4 -0
- package/dist/esm/conventions.js +12 -0
- package/dist/esm/conventions.js.map +1 -1
- package/dist/esm/core/Agent.d.ts +26 -1
- package/dist/esm/core/Agent.js +56 -2
- package/dist/esm/core/Agent.js.map +1 -1
- package/dist/esm/core/agent/AgentBuilder.d.ts +15 -0
- package/dist/esm/core/agent/AgentBuilder.js +98 -1
- package/dist/esm/core/agent/AgentBuilder.js.map +1 -1
- package/dist/esm/core/agent/buildAgentChart.d.ts +13 -1
- package/dist/esm/core/agent/buildAgentChart.js +12 -2
- package/dist/esm/core/agent/buildAgentChart.js.map +1 -1
- package/dist/esm/core/agent/buildDynamicAgentChart.js +12 -3
- package/dist/esm/core/agent/buildDynamicAgentChart.js.map +1 -1
- package/dist/esm/core/agent/outputEnforcement.d.ts +173 -0
- package/dist/esm/core/agent/outputEnforcement.js +180 -0
- package/dist/esm/core/agent/outputEnforcement.js.map +1 -0
- package/dist/esm/core/agent/stages/callLLM.d.ts +15 -0
- package/dist/esm/core/agent/stages/callLLM.js +31 -1
- package/dist/esm/core/agent/stages/callLLM.js.map +1 -1
- package/dist/esm/core/agent/stages/outputRetry.d.ts +34 -0
- package/dist/esm/core/agent/stages/outputRetry.js +98 -0
- package/dist/esm/core/agent/stages/outputRetry.js.map +1 -0
- package/dist/esm/core/agent/stages/route.d.ts +18 -2
- package/dist/esm/core/agent/stages/route.js +111 -6
- package/dist/esm/core/agent/stages/route.js.map +1 -1
- package/dist/esm/core/agent/types.d.ts +18 -0
- package/dist/esm/core/outputSchema.d.ts +51 -0
- package/dist/esm/core/outputSchema.js.map +1 -1
- package/dist/esm/events/payloads.d.ts +47 -1
- 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/errors.d.ts +44 -2
- package/dist/esm/hosting/errors.js +63 -0
- package/dist/esm/hosting/errors.js.map +1 -1
- package/dist/esm/hosting/headers.d.ts +16 -0
- package/dist/esm/hosting/headers.js +24 -0
- package/dist/esm/hosting/headers.js.map +1 -0
- package/dist/esm/hosting/httpHost.d.ts +70 -4
- package/dist/esm/hosting/httpHost.js +211 -47
- package/dist/esm/hosting/httpHost.js.map +1 -1
- package/dist/esm/hosting/index.d.ts +23 -8
- package/dist/esm/hosting/index.js +21 -6
- package/dist/esm/hosting/index.js.map +1 -1
- package/dist/esm/hosting/nodeHost.d.ts +23 -0
- package/dist/esm/hosting/nodeHost.js +21 -1
- package/dist/esm/hosting/nodeHost.js.map +1 -1
- package/dist/esm/hosting/types.d.ts +212 -6
- package/dist/esm/hosting/types.js +7 -5
- package/dist/esm/hosting/types.js.map +1 -1
- package/dist/esm/hosting/webSocketConversation.d.ts +101 -0
- package/dist/esm/hosting/webSocketConversation.js +341 -0
- package/dist/esm/hosting/webSocketConversation.js.map +1 -0
- package/dist/esm/hosting/webSocketFrames.d.ts +164 -0
- package/dist/esm/hosting/webSocketFrames.js +284 -0
- package/dist/esm/hosting/webSocketFrames.js.map +1 -0
- package/dist/esm/hosting-providers.d.ts +7 -2
- package/dist/esm/hosting-providers.js +7 -2
- package/dist/esm/hosting-providers.js.map +1 -1
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/resilience/withCircuitBreaker.js +5 -0
- package/dist/esm/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/esm/resilience/withFallback.js +5 -0
- package/dist/esm/resilience/withFallback.js.map +1 -1
- package/dist/esm/resilience/withRetry.js +6 -0
- package/dist/esm/resilience/withRetry.js.map +1 -1
- package/dist/events/registry.js +2 -0
- package/dist/events/registry.js.map +1 -1
- package/dist/hosting/errors.js +66 -1
- package/dist/hosting/errors.js.map +1 -1
- package/dist/hosting/headers.js +28 -0
- package/dist/hosting/headers.js.map +1 -0
- package/dist/hosting/httpHost.js +211 -47
- package/dist/hosting/httpHost.js.map +1 -1
- package/dist/hosting/index.js +23 -6
- package/dist/hosting/index.js.map +1 -1
- package/dist/hosting/nodeHost.js +20 -0
- package/dist/hosting/nodeHost.js.map +1 -1
- package/dist/hosting/types.js +7 -5
- package/dist/hosting/types.js.map +1 -1
- package/dist/hosting/webSocketConversation.js +345 -0
- package/dist/hosting/webSocketConversation.js.map +1 -0
- package/dist/hosting/webSocketFrames.js +297 -0
- package/dist/hosting/webSocketFrames.js.map +1 -0
- package/dist/hosting-providers.js +8 -2
- package/dist/hosting-providers.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/resilience/withCircuitBreaker.js +5 -0
- package/dist/resilience/withCircuitBreaker.js.map +1 -1
- package/dist/resilience/withFallback.js +5 -0
- package/dist/resilience/withFallback.js.map +1 -1
- package/dist/resilience/withRetry.js +6 -0
- package/dist/resilience/withRetry.js.map +1 -1
- package/dist/types/adapters/hosting/agentcore.d.ts +50 -1
- package/dist/types/adapters/hosting/agentcore.d.ts.map +1 -1
- package/dist/types/adapters/llm/AnthropicProvider.d.ts +10 -0
- package/dist/types/adapters/llm/AnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BedrockProvider.d.ts +9 -0
- package/dist/types/adapters/llm/BedrockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts +1 -0
- package/dist/types/adapters/llm/BrowserAnthropicProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts +4 -0
- package/dist/types/adapters/llm/BrowserOpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/MockProvider.d.ts +9 -0
- package/dist/types/adapters/llm/MockProvider.d.ts.map +1 -1
- package/dist/types/adapters/llm/OpenAIProvider.d.ts +12 -0
- package/dist/types/adapters/llm/OpenAIProvider.d.ts.map +1 -1
- package/dist/types/adapters/types.d.ts +46 -0
- package/dist/types/adapters/types.d.ts.map +1 -1
- package/dist/types/conventions.d.ts +4 -0
- package/dist/types/conventions.d.ts.map +1 -1
- package/dist/types/core/Agent.d.ts +26 -1
- package/dist/types/core/Agent.d.ts.map +1 -1
- package/dist/types/core/agent/AgentBuilder.d.ts +15 -0
- package/dist/types/core/agent/AgentBuilder.d.ts.map +1 -1
- package/dist/types/core/agent/buildAgentChart.d.ts +13 -1
- package/dist/types/core/agent/buildAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/buildDynamicAgentChart.d.ts.map +1 -1
- package/dist/types/core/agent/outputEnforcement.d.ts +174 -0
- package/dist/types/core/agent/outputEnforcement.d.ts.map +1 -0
- package/dist/types/core/agent/stages/callLLM.d.ts +15 -0
- package/dist/types/core/agent/stages/callLLM.d.ts.map +1 -1
- package/dist/types/core/agent/stages/outputRetry.d.ts +35 -0
- package/dist/types/core/agent/stages/outputRetry.d.ts.map +1 -0
- package/dist/types/core/agent/stages/route.d.ts +18 -2
- package/dist/types/core/agent/stages/route.d.ts.map +1 -1
- package/dist/types/core/agent/types.d.ts +18 -0
- package/dist/types/core/agent/types.d.ts.map +1 -1
- package/dist/types/core/outputSchema.d.ts +51 -0
- package/dist/types/core/outputSchema.d.ts.map +1 -1
- package/dist/types/events/payloads.d.ts +47 -1
- 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/errors.d.ts +44 -2
- package/dist/types/hosting/errors.d.ts.map +1 -1
- package/dist/types/hosting/headers.d.ts +17 -0
- package/dist/types/hosting/headers.d.ts.map +1 -0
- package/dist/types/hosting/httpHost.d.ts +70 -4
- package/dist/types/hosting/httpHost.d.ts.map +1 -1
- package/dist/types/hosting/index.d.ts +23 -8
- package/dist/types/hosting/index.d.ts.map +1 -1
- package/dist/types/hosting/nodeHost.d.ts +23 -0
- package/dist/types/hosting/nodeHost.d.ts.map +1 -1
- package/dist/types/hosting/types.d.ts +212 -6
- package/dist/types/hosting/types.d.ts.map +1 -1
- package/dist/types/hosting/webSocketConversation.d.ts +102 -0
- package/dist/types/hosting/webSocketConversation.d.ts.map +1 -0
- package/dist/types/hosting/webSocketFrames.d.ts +165 -0
- package/dist/types/hosting/webSocketFrames.d.ts.map +1 -0
- package/dist/types/hosting-providers.d.ts +7 -2
- package/dist/types/hosting-providers.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/resilience/withCircuitBreaker.d.ts.map +1 -1
- package/dist/types/resilience/withFallback.d.ts.map +1 -1
- package/dist/types/resilience/withRetry.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hosting/webSocketFrames — the frame codec the conversation door speaks, and
|
|
3
|
+
* nothing else.
|
|
4
|
+
*
|
|
5
|
+
* Pure bytes in, pure bytes out: no socket, no session, no handler, no port
|
|
6
|
+
* vocabulary. That is what makes it testable the only way protocol code is
|
|
7
|
+
* worth testing — against the byte sequences the specification itself
|
|
8
|
+
* publishes, rather than against a client we also wrote.
|
|
9
|
+
*
|
|
10
|
+
* ── Why this file exists instead of a dependency ─────────────────────────────
|
|
11
|
+
* The alternative was an optional peer dependency carrying a complete
|
|
12
|
+
* implementation. It was rejected for a reason that is about honesty rather
|
|
13
|
+
* than about lines of code: `capabilities` is declared at CONSTRUCTION and is
|
|
14
|
+
* static thereafter, so a host whose conversation door only works when an
|
|
15
|
+
* optional package happens to be installed can only either claim
|
|
16
|
+
* `'conversation'` and then refuse to do it — the library declaring a promise
|
|
17
|
+
* it cannot keep, which is the one thing the capability union forbids — or
|
|
18
|
+
* probe `node_modules` and let feature detection depend on install state, so a
|
|
19
|
+
* deployment that forgot the dependency silently gets a host that quietly does
|
|
20
|
+
* not do conversations. The shipped adapter honours what it declares, always,
|
|
21
|
+
* with nothing to install. That was worth these bytes.
|
|
22
|
+
*
|
|
23
|
+
* ── What is implemented, exactly ─────────────────────────────────────────────
|
|
24
|
+
* The server half of RFC 6455 for a text channel: the handshake, text frames,
|
|
25
|
+
* continuation frames, ping/pong, and close. Payloads are unmasked on the way
|
|
26
|
+
* in (client frames MUST be masked) and written unmasked on the way out (server
|
|
27
|
+
* frames MUST NOT be), which is the asymmetry the RFC requires.
|
|
28
|
+
*
|
|
29
|
+
* ── What is NOT, and how far the verification goes ───────────────────────────
|
|
30
|
+
* No extensions and no compression: `permessage-deflate` is negotiated, and
|
|
31
|
+
* this door never negotiates it, so the RSV bits must always be zero and a peer
|
|
32
|
+
* that sets one is refused. No binary frames — the port carries text, and
|
|
33
|
+
* binary is a capability nobody has minted evidence for. No client role.
|
|
34
|
+
*
|
|
35
|
+
* Verification is: the byte vectors published in RFC 6455 §5.7, which were
|
|
36
|
+
* authored by the specification and not by this repository, plus a live
|
|
37
|
+
* exchange against the platform's own WebSocket client where the runtime has
|
|
38
|
+
* one, plus the conversation conformance suite over a real socket. It is **not**
|
|
39
|
+
* run against the Autobahn test suite, and this file does not claim more
|
|
40
|
+
* coverage than the tests beside it actually execute.
|
|
41
|
+
*
|
|
42
|
+
* Pattern: pure codec. Role: innermost ring — imports nothing from this package.
|
|
43
|
+
*/
|
|
44
|
+
import { createHash } from 'node:crypto';
|
|
45
|
+
/** The frame kinds this door speaks. Numbers, because the wire uses numbers. */
|
|
46
|
+
export const OPCODE = {
|
|
47
|
+
continuation: 0x0,
|
|
48
|
+
text: 0x1,
|
|
49
|
+
binary: 0x2,
|
|
50
|
+
close: 0x8,
|
|
51
|
+
ping: 0x9,
|
|
52
|
+
pong: 0xa,
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Close codes this door produces. The RFC's own numbers, named — a bare `1009`
|
|
56
|
+
* in a branch is a fact nobody can check without opening the specification.
|
|
57
|
+
*/
|
|
58
|
+
export const CLOSE_CODE = {
|
|
59
|
+
/** Ordinary end: the work is done. */
|
|
60
|
+
normal: 1000,
|
|
61
|
+
/** The host is shutting down. */
|
|
62
|
+
goingAway: 1001,
|
|
63
|
+
/** The peer broke the protocol. */
|
|
64
|
+
protocolError: 1002,
|
|
65
|
+
/** Data this endpoint cannot accept — a binary frame, here. */
|
|
66
|
+
unsupportedData: 1003,
|
|
67
|
+
/** Reserved: never sent on the wire, used only as "we were not told". */
|
|
68
|
+
noStatus: 1005,
|
|
69
|
+
/** Text that is not valid UTF-8. */
|
|
70
|
+
invalidPayload: 1007,
|
|
71
|
+
/** Past a declared ceiling. */
|
|
72
|
+
tooBig: 1009,
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* A peer that broke the protocol, carrying the close code the RFC names for
|
|
76
|
+
* that breakage — so the caller does not have to re-derive which number means
|
|
77
|
+
* what at the point it has to write one.
|
|
78
|
+
*/
|
|
79
|
+
export class FrameProtocolError extends Error {
|
|
80
|
+
closeCode;
|
|
81
|
+
constructor(closeCode, message) {
|
|
82
|
+
super(message);
|
|
83
|
+
this.name = 'FrameProtocolError';
|
|
84
|
+
this.closeCode = closeCode;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/** The magic string RFC 6455 §1.3 appends before hashing. Not ours to change. */
|
|
88
|
+
const HANDSHAKE_GUID = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11';
|
|
89
|
+
/**
|
|
90
|
+
* The `Sec-WebSocket-Accept` value for a client's `Sec-WebSocket-Key`:
|
|
91
|
+
* base64(sha1(key + GUID)). Deterministic, and pinned against the RFC's own
|
|
92
|
+
* worked example.
|
|
93
|
+
*/
|
|
94
|
+
export function acceptKey(clientKey) {
|
|
95
|
+
return createHash('sha1')
|
|
96
|
+
.update(clientKey + HANDSHAKE_GUID)
|
|
97
|
+
.digest('base64');
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* The 101 response, as bytes.
|
|
101
|
+
*
|
|
102
|
+
* `protocol` is echoed only when the caller selected one. Echoing a subprotocol
|
|
103
|
+
* the client did not offer would make the client fail the connection, so
|
|
104
|
+
* choosing one is the wire's job (it read the offer) and not this function's.
|
|
105
|
+
*/
|
|
106
|
+
export function handshakeResponse(clientKey, protocol) {
|
|
107
|
+
const lines = [
|
|
108
|
+
'HTTP/1.1 101 Switching Protocols',
|
|
109
|
+
'Upgrade: websocket',
|
|
110
|
+
'Connection: Upgrade',
|
|
111
|
+
`Sec-WebSocket-Accept: ${acceptKey(clientKey)}`,
|
|
112
|
+
];
|
|
113
|
+
if (protocol !== undefined && protocol.length > 0) {
|
|
114
|
+
lines.push(`Sec-WebSocket-Protocol: ${protocol}`);
|
|
115
|
+
}
|
|
116
|
+
return Buffer.from(`${lines.join('\r\n')}\r\n\r\n`, 'utf8');
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* One frame, ready to write. **Never masked**: a server that masks its frames
|
|
120
|
+
* is a server the client closes on, per RFC 6455 §5.1.
|
|
121
|
+
*/
|
|
122
|
+
export function encodeFrame(opcode, payload, fin = true) {
|
|
123
|
+
const length = payload.length;
|
|
124
|
+
let header;
|
|
125
|
+
if (length < 126) {
|
|
126
|
+
header = Buffer.alloc(2);
|
|
127
|
+
header[1] = length;
|
|
128
|
+
}
|
|
129
|
+
else if (length < 0x10000) {
|
|
130
|
+
header = Buffer.alloc(4);
|
|
131
|
+
header[1] = 126;
|
|
132
|
+
header.writeUInt16BE(length, 2);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
header = Buffer.alloc(10);
|
|
136
|
+
header[1] = 127;
|
|
137
|
+
// Two 32-bit halves rather than a BigInt write: the high half is always
|
|
138
|
+
// zero for anything this door will ever send, and saying so in bytes is
|
|
139
|
+
// clearer than converting through a type nothing else here uses.
|
|
140
|
+
header.writeUInt32BE(0, 2);
|
|
141
|
+
header.writeUInt32BE(length, 6);
|
|
142
|
+
}
|
|
143
|
+
header[0] = (fin ? 0x80 : 0x00) | opcode;
|
|
144
|
+
return Buffer.concat([header, payload]);
|
|
145
|
+
}
|
|
146
|
+
/** A text frame carrying one whole message. */
|
|
147
|
+
export function encodeText(text) {
|
|
148
|
+
return encodeFrame(OPCODE.text, Buffer.from(text, 'utf8'));
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* A close frame carrying a code and, when there is one, a reason.
|
|
152
|
+
*
|
|
153
|
+
* The reason is truncated to 123 bytes because a control frame's payload may
|
|
154
|
+
* not exceed 125 and the code takes two of them. Truncating a REASON is safe in
|
|
155
|
+
* a way truncating a message never is: it is diagnostic prose about an ending
|
|
156
|
+
* that has already been decided.
|
|
157
|
+
*/
|
|
158
|
+
export function encodeClose(code, reason) {
|
|
159
|
+
const text = reason === undefined ? Buffer.alloc(0) : Buffer.from(reason, 'utf8');
|
|
160
|
+
const trimmed = text.length > 123 ? text.subarray(0, 123) : text;
|
|
161
|
+
const payload = Buffer.alloc(2 + trimmed.length);
|
|
162
|
+
payload.writeUInt16BE(code, 0);
|
|
163
|
+
trimmed.copy(payload, 2);
|
|
164
|
+
return encodeFrame(OPCODE.close, payload);
|
|
165
|
+
}
|
|
166
|
+
/** Read a close frame's payload. An empty payload is "no status", never an error. */
|
|
167
|
+
export function decodeClose(payload) {
|
|
168
|
+
if (payload.length < 2)
|
|
169
|
+
return { code: CLOSE_CODE.noStatus };
|
|
170
|
+
const code = payload.readUInt16BE(0);
|
|
171
|
+
const reason = payload.length > 2 ? payload.subarray(2).toString('utf8') : undefined;
|
|
172
|
+
return { code, ...(reason !== undefined && reason.length > 0 && { reason }) };
|
|
173
|
+
}
|
|
174
|
+
/** Is this one of the three control opcodes? */
|
|
175
|
+
export function isControlFrame(opcode) {
|
|
176
|
+
return (opcode & 0x8) !== 0;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Turns a stream of TCP chunks into whole frames.
|
|
180
|
+
*
|
|
181
|
+
* Stateful by necessity — a frame arrives in as many pieces as the network
|
|
182
|
+
* feels like, and two frames arrive in one piece just as often. Every branch
|
|
183
|
+
* that gives up does so by throwing a {@link FrameProtocolError} carrying the
|
|
184
|
+
* code to close with, so the layer above never has to invent one.
|
|
185
|
+
*/
|
|
186
|
+
export class FrameReader {
|
|
187
|
+
buffered = Buffer.alloc(0);
|
|
188
|
+
maxFrameBytes;
|
|
189
|
+
/**
|
|
190
|
+
* @param maxFrameBytes The declared ceiling, when there is one. Checked
|
|
191
|
+
* against the length in the HEADER — before the payload is buffered, so an
|
|
192
|
+
* announced 4GB frame costs nothing to refuse.
|
|
193
|
+
*/
|
|
194
|
+
constructor(maxFrameBytes) {
|
|
195
|
+
this.maxFrameBytes = maxFrameBytes;
|
|
196
|
+
}
|
|
197
|
+
/** Feed one chunk; get back every frame that completed. */
|
|
198
|
+
push(chunk) {
|
|
199
|
+
this.buffered = this.buffered.length === 0 ? chunk : Buffer.concat([this.buffered, chunk]);
|
|
200
|
+
const frames = [];
|
|
201
|
+
for (;;) {
|
|
202
|
+
const frame = this.readOne();
|
|
203
|
+
if (frame === undefined)
|
|
204
|
+
return frames;
|
|
205
|
+
frames.push(frame);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/** One frame, or `undefined` when the bytes for a whole one are not here yet. */
|
|
209
|
+
readOne() {
|
|
210
|
+
const buffer = this.buffered;
|
|
211
|
+
if (buffer.length < 2)
|
|
212
|
+
return undefined;
|
|
213
|
+
const first = buffer[0];
|
|
214
|
+
const second = buffer[1];
|
|
215
|
+
const fin = (first & 0x80) !== 0;
|
|
216
|
+
const reserved = first & 0x70;
|
|
217
|
+
const opcode = first & 0x0f;
|
|
218
|
+
const masked = (second & 0x80) !== 0;
|
|
219
|
+
let length = second & 0x7f;
|
|
220
|
+
let offset = 2;
|
|
221
|
+
if (reserved !== 0) {
|
|
222
|
+
// RSV bits mean an extension, and this door negotiates none — so a peer
|
|
223
|
+
// that set one is describing a frame we would have to guess at.
|
|
224
|
+
throw new FrameProtocolError(CLOSE_CODE.protocolError, 'a reserved bit is set, and this door negotiated no extension that would define it');
|
|
225
|
+
}
|
|
226
|
+
if (!masked) {
|
|
227
|
+
// RFC 6455 §5.1: every client frame is masked, and a server that accepts
|
|
228
|
+
// an unmasked one is a server that can be fed frames by a naive proxy.
|
|
229
|
+
throw new FrameProtocolError(CLOSE_CODE.protocolError, 'a client frame arrived unmasked, which the protocol does not allow');
|
|
230
|
+
}
|
|
231
|
+
if (isControlFrame(opcode) && (length > 125 || !fin)) {
|
|
232
|
+
throw new FrameProtocolError(CLOSE_CODE.protocolError, 'a control frame was fragmented or longer than 125 bytes');
|
|
233
|
+
}
|
|
234
|
+
if (length === 126) {
|
|
235
|
+
if (buffer.length < offset + 2)
|
|
236
|
+
return undefined;
|
|
237
|
+
length = buffer.readUInt16BE(offset);
|
|
238
|
+
offset += 2;
|
|
239
|
+
}
|
|
240
|
+
else if (length === 127) {
|
|
241
|
+
if (buffer.length < offset + 8)
|
|
242
|
+
return undefined;
|
|
243
|
+
const high = buffer.readUInt32BE(offset);
|
|
244
|
+
const low = buffer.readUInt32BE(offset + 4);
|
|
245
|
+
if (high !== 0) {
|
|
246
|
+
throw new FrameProtocolError(CLOSE_CODE.tooBig, 'a frame announced a length above 4 GiB, which no ceiling here permits');
|
|
247
|
+
}
|
|
248
|
+
length = low;
|
|
249
|
+
offset += 8;
|
|
250
|
+
}
|
|
251
|
+
if (this.maxFrameBytes !== undefined && length > this.maxFrameBytes) {
|
|
252
|
+
// Refused on the ANNOUNCED length, before a byte of payload is kept: a
|
|
253
|
+
// ceiling that only notices after buffering is not a ceiling.
|
|
254
|
+
throw new FrameProtocolError(CLOSE_CODE.tooBig, `a frame announced ${length} bytes, past the declared maxFrameBytes of ${this.maxFrameBytes}`);
|
|
255
|
+
}
|
|
256
|
+
const maskOffset = offset;
|
|
257
|
+
offset += 4;
|
|
258
|
+
if (buffer.length < offset + length)
|
|
259
|
+
return undefined;
|
|
260
|
+
const payload = Buffer.allocUnsafe(length);
|
|
261
|
+
buffer.copy(payload, 0, offset, offset + length);
|
|
262
|
+
for (let i = 0; i < length; i++)
|
|
263
|
+
payload[i] ^= buffer[maskOffset + (i & 3)];
|
|
264
|
+
this.buffered = buffer.subarray(offset + length);
|
|
265
|
+
return { fin, opcode, payload };
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Decode a whole message's bytes as UTF-8, refusing anything that is not.
|
|
270
|
+
*
|
|
271
|
+
* Strict on purpose (RFC 6455 §8.1): a text frame that is not valid UTF-8 is a
|
|
272
|
+
* protocol violation, and the lenient alternative silently replaces the bad
|
|
273
|
+
* bytes with `U+FFFD` — handing the consumer a string the far side never sent
|
|
274
|
+
* and no way to know it happened.
|
|
275
|
+
*/
|
|
276
|
+
export function decodeText(payload) {
|
|
277
|
+
try {
|
|
278
|
+
return new TextDecoder('utf-8', { fatal: true }).decode(payload);
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
throw new FrameProtocolError(CLOSE_CODE.invalidPayload, 'a text frame carried bytes that are not valid UTF-8');
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
//# sourceMappingURL=webSocketFrames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webSocketFrames.js","sourceRoot":"","sources":["../../../src/hosting/webSocketFrames.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,12 @@
|
|
|
19
19
|
* • `agentCoreRuntimeHost({ port?, hostname?, busy? })` — an `AgentHost` for
|
|
20
20
|
* AWS Bedrock AgentCore Runtime's container contract: `POST /invocations`,
|
|
21
21
|
* `GET /ping`, port 8080, and the conversation id read from the
|
|
22
|
-
* `X-Amzn-Bedrock-AgentCore-Runtime-Session-Id` header.
|
|
22
|
+
* `X-Amzn-Bedrock-AgentCore-Runtime-Session-Id` header. It is a
|
|
23
|
+
* `ConversationHost` too: `serveConversations(handler)` takes the runtime's
|
|
24
|
+
* `/ws` door on the SAME socket, with `{ maxFrameBytes: 32768,
|
|
25
|
+
* idleMs: 900000 }` declared, session affinity readable from header or
|
|
26
|
+
* query, and a `Sec-WebSocket-Protocol` bearer mapped into
|
|
27
|
+
* `headers.authorization`.
|
|
23
28
|
* • `agentCoreSessions({ store })` — a `SessionLifecycle` whose checkpoint
|
|
24
29
|
* home you choose at construction: a JSON file in the runtime's own session
|
|
25
30
|
* storage (survives a stop/resume, needs no SDK), or one AgentCore Memory
|
|
@@ -46,5 +51,5 @@
|
|
|
46
51
|
* });
|
|
47
52
|
* process.on('SIGTERM', () => void handle.close());
|
|
48
53
|
*/
|
|
49
|
-
export { agentCoreRuntimeHost, agentCoreRuntimeWire, agentCoreSessions, DEFAULT_SESSION_STORAGE_PATH, } from './adapters/hosting/agentcore.js';
|
|
54
|
+
export { agentCoreRuntimeHost, agentCoreRuntimeWire, readAgentCoreConversation, agentCoreSessions, DEFAULT_SESSION_STORAGE_PATH, } from './adapters/hosting/agentcore.js';
|
|
50
55
|
export type { AgentCoreRuntimeHostOptions, AgentCoreSessionsOptions, AgentCoreSessionStore, AgentCoreFileSessionsOptions, AgentCoreMemorySessionsOptions, AgentCoreSessionClientLike, AgentCoreSessionEvent, BedrockAgentCoreSessionSdkModule, } from './adapters/hosting/agentcore.js';
|
|
@@ -19,7 +19,12 @@
|
|
|
19
19
|
* • `agentCoreRuntimeHost({ port?, hostname?, busy? })` — an `AgentHost` for
|
|
20
20
|
* AWS Bedrock AgentCore Runtime's container contract: `POST /invocations`,
|
|
21
21
|
* `GET /ping`, port 8080, and the conversation id read from the
|
|
22
|
-
* `X-Amzn-Bedrock-AgentCore-Runtime-Session-Id` header.
|
|
22
|
+
* `X-Amzn-Bedrock-AgentCore-Runtime-Session-Id` header. It is a
|
|
23
|
+
* `ConversationHost` too: `serveConversations(handler)` takes the runtime's
|
|
24
|
+
* `/ws` door on the SAME socket, with `{ maxFrameBytes: 32768,
|
|
25
|
+
* idleMs: 900000 }` declared, session affinity readable from header or
|
|
26
|
+
* query, and a `Sec-WebSocket-Protocol` bearer mapped into
|
|
27
|
+
* `headers.authorization`.
|
|
23
28
|
* • `agentCoreSessions({ store })` — a `SessionLifecycle` whose checkpoint
|
|
24
29
|
* home you choose at construction: a JSON file in the runtime's own session
|
|
25
30
|
* storage (survives a stop/resume, needs no SDK), or one AgentCore Memory
|
|
@@ -46,5 +51,5 @@
|
|
|
46
51
|
* });
|
|
47
52
|
* process.on('SIGTERM', () => void handle.close());
|
|
48
53
|
*/
|
|
49
|
-
export { agentCoreRuntimeHost, agentCoreRuntimeWire, agentCoreSessions, DEFAULT_SESSION_STORAGE_PATH, } from './adapters/hosting/agentcore.js';
|
|
54
|
+
export { agentCoreRuntimeHost, agentCoreRuntimeWire, readAgentCoreConversation, agentCoreSessions, DEFAULT_SESSION_STORAGE_PATH, } from './adapters/hosting/agentcore.js';
|
|
50
55
|
//# sourceMappingURL=hosting-providers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosting-providers.js","sourceRoot":"","sources":["../../src/hosting-providers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hosting-providers.js","sourceRoot":"","sources":["../../src/hosting-providers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AAEH,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -36,7 +36,8 @@ export type { ObserverDrainResult, ObserverStats } from 'footprintjs';
|
|
|
36
36
|
export type { ToolArgValidationMode } from './core/agent/toolArgsValidation.js';
|
|
37
37
|
export type { ReadSummaryMarker, ReadTrackingMode } from 'footprintjs';
|
|
38
38
|
export type { WriteProvenanceMode } from './core/agent/types.js';
|
|
39
|
-
export { OutputSchemaError, applyOutputSchema, type OutputSchemaParser, type OutputSchemaOptions, } from './core/outputSchema.js';
|
|
39
|
+
export { OutputSchemaError, applyOutputSchema, type OutputSchemaParser, type OutputSchemaOptions, type OutputSchemaStrategy, } from './core/outputSchema.js';
|
|
40
|
+
export { SCHEMA_CHECK_FRAME_PREFIX, SCHEMA_TOOL_NAME, isSchemaCheckMessage, type OutputAttempt, } from './core/agent/outputEnforcement.js';
|
|
40
41
|
export { type OutputFallbackOptions, type OutputFallbackFn } from './core/outputFallback.js';
|
|
41
42
|
export { RunCheckpointError, type AgentRunCheckpoint } from './core/runCheckpoint.js';
|
|
42
43
|
export { flowchartAsTool, type FlowchartAsToolOptions, type FlowchartResultMapper, type FlowchartToolSnapshot, } from './core/flowchartAsTool.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -114,6 +114,11 @@ export { Agent, AgentBuilder, } from './core/Agent.js';
|
|
|
114
114
|
// tokenBudget counted-token trigger, drop instead of summarize
|
|
115
115
|
export { CompactionUnmeasurableError, COMPACTED_FRAME_PREFIX, DROP_NOTICE_PREFIX, isCompactedSummary, isDropNotice, slidingWindow, summarizeOldest, tokenBudget, } from './core/agent/window/index.js';
|
|
116
116
|
export { OutputSchemaError, applyOutputSchema, } from './core/outputSchema.js';
|
|
117
|
+
// 7.26 — the loop's side of the output contract. `OutputAttempt` is the row
|
|
118
|
+
// shape `snapshot.sharedState.outputAttempts` carries; the frame prefix and
|
|
119
|
+
// the tool name are exported so a reader (or a test) can recognise the two
|
|
120
|
+
// things this feature puts into a conversation without matching on prose.
|
|
121
|
+
export { SCHEMA_CHECK_FRAME_PREFIX, SCHEMA_TOOL_NAME, isSchemaCheckMessage, } from './core/agent/outputEnforcement.js';
|
|
117
122
|
export { RunCheckpointError } from './core/runCheckpoint.js';
|
|
118
123
|
export { flowchartAsTool, } from './core/flowchartAsTool.js';
|
|
119
124
|
export { defineTool, assertValidToolName, warnIfInvalidToolName } from './core/tools.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -200,6 +200,11 @@ export function withCircuitBreaker(inner, options = {}) {
|
|
|
200
200
|
...(inner.carriesInMessages !== undefined && {
|
|
201
201
|
carriesInMessages: inner.carriesInMessages,
|
|
202
202
|
}),
|
|
203
|
+
// Likewise for the forced tool choice — a breaker decides WHETHER to
|
|
204
|
+
// call, never what the wire can express.
|
|
205
|
+
...(inner.carriesForcedToolChoice !== undefined && {
|
|
206
|
+
carriesForcedToolChoice: inner.carriesForcedToolChoice,
|
|
207
|
+
}),
|
|
203
208
|
async complete(req, hooks) {
|
|
204
209
|
rejectFastIfOpen();
|
|
205
210
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withCircuitBreaker.js","sourceRoot":"","sources":["../../../src/resilience/withCircuitBreaker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"withCircuitBreaker.js","sourceRoot":"","sources":["../../../src/resilience/withCircuitBreaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,6 +66,11 @@ export function withFallback(primary, fallback, options = {}) {
|
|
|
66
66
|
// exists to prevent. Undeclared means the user/assistant floor on that
|
|
67
67
|
// side, so an undeclared partner clamps the pair to the floor.
|
|
68
68
|
carriesInMessages: carriedByBoth(primary, fallback),
|
|
69
|
+
// AND, for the same reason the roles are an intersection: either side may
|
|
70
|
+
// serve the call, so the pair constrains generation only if BOTH do. One
|
|
71
|
+
// declared partner and one silent one is a pair whose answer is shaped
|
|
72
|
+
// some of the time, which is the shape of guarantee nobody can use.
|
|
73
|
+
carriesForcedToolChoice: (primary.carriesForcedToolChoice ?? false) && (fallback.carriesForcedToolChoice ?? false),
|
|
69
74
|
async complete(req, hooks) {
|
|
70
75
|
try {
|
|
71
76
|
return await primary.complete(req, hooks);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withFallback.js","sourceRoot":"","sources":["../../../src/resilience/withFallback.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"withFallback.js","sourceRoot":"","sources":["../../../src/resilience/withFallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAUH,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAEnE;;;;GAIG;AACH,SAAS,aAAa,CAAC,CAAc,EAAE,CAAc;IACnD,MAAM,IAAI,GAAG,CAAC,CAAC,iBAAiB,IAAI,2BAA2B,CAAC;IAChE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,iBAAiB,IAAI,2BAA2B,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAsBD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAoB,EACpB,QAAqB,EACrB,UAA+B,EAAE;IAEjC,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,qBAAqB,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC;;;;;;OAMG;IACH,SAAS,cAAc,CAAC,KAA+B,EAAE,GAAY;QACnE,KAAK,EAAE,YAAY,EAAE,CAAC;YACpB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO,CAAC,IAAI;YACrB,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACzD,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAgB;QAC3B,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxC,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,yEAAyE;QACzE,uEAAuE;QACvE,+DAA+D;QAC/D,iBAAiB,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC;QACnD,0EAA0E;QAC1E,yEAAyE;QACzE,uEAAuE;QACvE,oEAAoE;QACpE,uBAAuB,EACrB,CAAC,OAAO,CAAC,uBAAuB,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,uBAAuB,IAAI,KAAK,CAAC;QAC3F,KAAK,CAAC,QAAQ,CAAC,GAAe,EAAE,KAAoB;YAClD,IAAI,CAAC;gBACH,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;oBAAE,MAAM,GAAG,CAAC;gBACpC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;gBAClB,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC3B,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;KACF,CAAC;IAEF,gEAAgE;IAChE,gEAAgE;IAChE,oEAAoE;IACpE,6DAA6D;IAC7D,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,CAAC,MAAM,GAAG,KAAK,SAAS,CAAC,CAAC,cAAc,CAC7C,GAAe,EACf,KAAoB;YAEpB,wEAAwE;YACxE,kEAAkE;YAClE,sDAAsD;YACtD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,IAAI,QAAQ,CAAC,MAAM;oBAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;oBACnD,KAAK,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;oBACrD,UAAU,GAAG,IAAI,CAAC;oBAClB,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,UAAU,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;oBAAE,MAAM,GAAG,CAAC;gBAClD,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;gBAClB,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC3B,IAAI,QAAQ,CAAC,MAAM;oBAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;;oBACnD,KAAK,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,uEAAuE;AAEvE,SAAS,qBAAqB,CAAC,GAAY;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,CAAC,GAAG,GAAuC,CAAC;IAClD,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACpE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,KAAK,SAAS,CAAC,CAAC,gBAAgB,CAC9B,QAAqB,EACrB,GAAe,EACf,KAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,MAAM;QACJ,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,EAAE;QACX,IAAI,EAAE,IAAI;QACV,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -47,6 +47,12 @@ export function withRetry(provider, options = {}) {
|
|
|
47
47
|
...(provider.carriesInMessages !== undefined && {
|
|
48
48
|
carriesInMessages: provider.carriesInMessages,
|
|
49
49
|
}),
|
|
50
|
+
// Same wire, same forced-choice answer. Dropping this one degrades to
|
|
51
|
+
// "not declared", which is a REFUSAL — a wrapped Anthropic provider would
|
|
52
|
+
// start refusing `strategy: 'tool-forced'` it can perfectly well do.
|
|
53
|
+
...(provider.carriesForcedToolChoice !== undefined && {
|
|
54
|
+
carriesForcedToolChoice: provider.carriesForcedToolChoice,
|
|
55
|
+
}),
|
|
50
56
|
async complete(req, hooks) {
|
|
51
57
|
let lastError;
|
|
52
58
|
// t0 for the `recovered` report's totalDurationMs. New
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withRetry.js","sourceRoot":"","sources":["../../../src/resilience/withRetry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"withRetry.js","sourceRoot":"","sources":["../../../src/resilience/withRetry.ts"],"names":[],"mappings":"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"}
|
package/dist/events/registry.js
CHANGED
|
@@ -40,6 +40,7 @@ exports.EVENT_NAMES = {
|
|
|
40
40
|
routeDecided: 'agentfootprint.agent.route_decided',
|
|
41
41
|
handoff: 'agentfootprint.agent.handoff',
|
|
42
42
|
outputSchemaValidationFailed: 'agentfootprint.agent.output_schema_validation_failed',
|
|
43
|
+
outputSchemaRetry: 'agentfootprint.agent.output_schema_retry',
|
|
43
44
|
thinkingParseFailed: 'agentfootprint.agent.thinking_parse_failed',
|
|
44
45
|
},
|
|
45
46
|
stream: {
|
|
@@ -151,6 +152,7 @@ exports.ALL_EVENT_TYPES = [
|
|
|
151
152
|
'agentfootprint.agent.route_decided',
|
|
152
153
|
'agentfootprint.agent.handoff',
|
|
153
154
|
'agentfootprint.agent.output_schema_validation_failed',
|
|
155
|
+
'agentfootprint.agent.output_schema_retry',
|
|
154
156
|
'agentfootprint.agent.thinking_parse_failed',
|
|
155
157
|
'agentfootprint.stream.llm_start',
|
|
156
158
|
'agentfootprint.stream.llm_end',
|
|
@@ -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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"}
|
package/dist/hosting/errors.js
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* say so loudly and name the adapter it is talking about.
|
|
20
20
|
*/
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.requireCapability = exports.UnreadableEnvelopeError = exports.NoPendingAskError = exports.AwaitingDecisionError = exports.PauseNotCarriedError = exports.ConcurrentRunError = exports.HostClosedError = void 0;
|
|
22
|
+
exports.requireCapability = exports.UnreadableEnvelopeError = exports.FrameTooLargeError = exports.ConversationClosedError = exports.NoPendingAskError = exports.AwaitingDecisionError = exports.PauseNotCarriedError = exports.ConcurrentRunError = exports.HostClosedError = void 0;
|
|
23
23
|
const storedPreview_js_1 = require("../lib/storedPreview.js");
|
|
24
24
|
/**
|
|
25
25
|
* Thrown when a request arrives at a host that is shutting down or shut down.
|
|
@@ -176,6 +176,67 @@ class NoPendingAskError extends Error {
|
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
exports.NoPendingAskError = NoPendingAskError;
|
|
179
|
+
/**
|
|
180
|
+
* Thrown when something is sent down a conversation that has already ended.
|
|
181
|
+
*
|
|
182
|
+
* A closed channel that accepts frames and drops them is the worst of the three
|
|
183
|
+
* options: the sender believes the far side got it, the far side never did, and
|
|
184
|
+
* nothing anywhere says so. Refusing by name is the only version of this that
|
|
185
|
+
* leaves a trace.
|
|
186
|
+
*
|
|
187
|
+
* `onClose` is how you avoid meeting this — subscribe, and stop sending.
|
|
188
|
+
*/
|
|
189
|
+
class ConversationClosedError extends Error {
|
|
190
|
+
code = 'ERR_CONVERSATION_CLOSED';
|
|
191
|
+
/** Which adapter's door this was. */
|
|
192
|
+
hostName;
|
|
193
|
+
/** The session the conversation claimed, when it claimed one. */
|
|
194
|
+
sessionId;
|
|
195
|
+
constructor(hostName, sessionId) {
|
|
196
|
+
super(`[hosting] this conversation on the '${hostName}' host has ended` +
|
|
197
|
+
(sessionId !== undefined ? ` (session '${sessionId}')` : '') +
|
|
198
|
+
`, so there is nowhere for that frame to go. Refusing rather than accepting it ` +
|
|
199
|
+
`and dropping it — a send that silently goes nowhere looks identical to a send ` +
|
|
200
|
+
`that worked. Subscribe with onClose(...) and stop sending when it fires, or open ` +
|
|
201
|
+
`a new conversation.`);
|
|
202
|
+
this.name = 'ConversationClosedError';
|
|
203
|
+
this.hostName = hostName;
|
|
204
|
+
if (sessionId !== undefined)
|
|
205
|
+
this.sessionId = sessionId;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
exports.ConversationClosedError = ConversationClosedError;
|
|
209
|
+
/**
|
|
210
|
+
* Thrown when a frame is bigger than the ceiling the adapter DECLARED.
|
|
211
|
+
*
|
|
212
|
+
* This is the other half of {@link ConversationLimits} — a declared ceiling
|
|
213
|
+
* nothing enforces is a number in a doc comment. The port neither chunks nor
|
|
214
|
+
* truncates, on purpose: how a message is split, numbered and reassembled is
|
|
215
|
+
* the consumer's protocol question, and answering it inside the adapter would
|
|
216
|
+
* answer it for every consumer at once. So the ceiling is visible, the refusal
|
|
217
|
+
* names it, and the splitting happens above the port where the protocol lives.
|
|
218
|
+
*/
|
|
219
|
+
class FrameTooLargeError extends Error {
|
|
220
|
+
code = 'ERR_FRAME_TOO_LARGE';
|
|
221
|
+
/** Which adapter's door refused. */
|
|
222
|
+
hostName;
|
|
223
|
+
/** How big the frame was, in bytes of UTF-8. */
|
|
224
|
+
bytes;
|
|
225
|
+
/** The declared ceiling it crossed. */
|
|
226
|
+
maxFrameBytes;
|
|
227
|
+
constructor(hostName, bytes, maxFrameBytes) {
|
|
228
|
+
super(`[hosting] this frame is ${bytes} bytes and the '${hostName}' host declares a ` +
|
|
229
|
+
`maxFrameBytes of ${maxFrameBytes}. Refusing rather than truncating it or splitting ` +
|
|
230
|
+
`it for you: how a message is chunked, numbered and put back together is your ` +
|
|
231
|
+
`protocol's question, and an adapter that answered it would answer it for every ` +
|
|
232
|
+
`consumer at once. Read host.conversationLimits and chunk above the port.`);
|
|
233
|
+
this.name = 'FrameTooLargeError';
|
|
234
|
+
this.hostName = hostName;
|
|
235
|
+
this.bytes = bytes;
|
|
236
|
+
this.maxFrameBytes = maxFrameBytes;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
exports.FrameTooLargeError = FrameTooLargeError;
|
|
179
240
|
/**
|
|
180
241
|
* An already-computed preview, so {@link UnreadableEnvelopeError.withSession}
|
|
181
242
|
* can copy a refusal without being handed the stored bytes a second time. Not
|
|
@@ -264,6 +325,10 @@ exports.UnreadableEnvelopeError = UnreadableEnvelopeError;
|
|
|
264
325
|
* assumed, and asking for one that is absent tells you which adapter you are
|
|
265
326
|
* actually holding rather than failing quietly somewhere downstream.
|
|
266
327
|
*
|
|
328
|
+
* Takes either port, because both declare the same two facts — who they are and
|
|
329
|
+
* what they can do — and a caller holding a conversation-only host is entitled
|
|
330
|
+
* to the same answer as one holding a request host.
|
|
331
|
+
*
|
|
267
332
|
* @example
|
|
268
333
|
* requireCapability(host, 'streaming'); // throws unless this host streams
|
|
269
334
|
*
|