@strands-agents/sdk 1.0.0 → 1.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/README.md +6 -0
- package/dist/src/__fixtures__/agent-helpers.d.ts +16 -1
- package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/agent-helpers.js +42 -0
- package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.d.ts +2 -1
- package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.js +20 -3
- package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
- package/dist/src/__tests__/interrupt.test.d.ts +2 -0
- package/dist/src/__tests__/interrupt.test.d.ts.map +1 -0
- package/dist/src/__tests__/interrupt.test.js +264 -0
- package/dist/src/__tests__/interrupt.test.js.map +1 -0
- package/dist/src/__tests__/mcp.test.js +447 -7
- package/dist/src/__tests__/mcp.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.hook.test.js +551 -1
- package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.interrupt.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.interrupt.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.interrupt.test.js +779 -0
- package/dist/src/agent/__tests__/agent.interrupt.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.model-retry.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.model-retry.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.model-retry.test.js +161 -0
- package/dist/src/agent/__tests__/agent.model-retry.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.test.js +174 -0
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/__tests__/snapshot.test.js +148 -4
- package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
- package/dist/src/agent/agent-as-tool.d.ts.map +1 -1
- package/dist/src/agent/agent-as-tool.js +2 -3
- package/dist/src/agent/agent-as-tool.js.map +1 -1
- package/dist/src/agent/agent.d.ts +94 -4
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +625 -223
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/agent/snapshot.d.ts +11 -19
- package/dist/src/agent/snapshot.d.ts.map +1 -1
- package/dist/src/agent/snapshot.js +23 -19
- package/dist/src/agent/snapshot.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +230 -9
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +19 -6
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +422 -41
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js +75 -1
- package/dist/src/conversation-manager/__tests__/summarizing-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/conversation-manager.d.ts +67 -22
- package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -1
- package/dist/src/conversation-manager/conversation-manager.js +65 -13
- package/dist/src/conversation-manager/conversation-manager.js.map +1 -1
- package/dist/src/conversation-manager/index.d.ts +1 -1
- package/dist/src/conversation-manager/index.d.ts.map +1 -1
- package/dist/src/conversation-manager/index.js +1 -1
- package/dist/src/conversation-manager/index.js.map +1 -1
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +43 -10
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js +202 -45
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
- package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts +23 -1
- package/dist/src/conversation-manager/summarizing-conversation-manager.d.ts.map +1 -1
- package/dist/src/conversation-manager/summarizing-conversation-manager.js +39 -17
- package/dist/src/conversation-manager/summarizing-conversation-manager.js.map +1 -1
- package/dist/src/hooks/__tests__/events.test.js +99 -12
- package/dist/src/hooks/__tests__/events.test.js.map +1 -1
- package/dist/src/hooks/__tests__/registry.test.js +166 -2
- package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
- package/dist/src/hooks/events.d.ts +125 -32
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js +111 -8
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/hooks/index.d.ts +4 -3
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +2 -1
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/registry.d.ts +12 -12
- package/dist/src/hooks/registry.d.ts.map +1 -1
- package/dist/src/hooks/registry.js +55 -15
- package/dist/src/hooks/registry.js.map +1 -1
- package/dist/src/hooks/types.d.ts +23 -0
- package/dist/src/hooks/types.d.ts.map +1 -1
- package/dist/src/hooks/types.js +17 -1
- package/dist/src/hooks/types.js.map +1 -1
- package/dist/src/index.d.ts +12 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/interrupt.d.ts +247 -0
- package/dist/src/interrupt.d.ts.map +1 -0
- package/dist/src/interrupt.js +316 -0
- package/dist/src/interrupt.js.map +1 -0
- package/dist/src/mcp.d.ts +61 -4
- package/dist/src/mcp.d.ts.map +1 -1
- package/dist/src/mcp.js +161 -25
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/models/__tests__/anthropic.test.js +78 -8
- package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +156 -18
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/__tests__/defaults.test.d.ts +2 -0
- package/dist/src/models/__tests__/defaults.test.d.ts.map +1 -0
- package/dist/src/models/__tests__/defaults.test.js +36 -0
- package/dist/src/models/__tests__/defaults.test.js.map +1 -0
- package/dist/src/models/__tests__/google.test.js +72 -6
- package/dist/src/models/__tests__/google.test.js.map +1 -1
- package/dist/src/models/anthropic.d.ts +10 -0
- package/dist/src/models/anthropic.d.ts.map +1 -1
- package/dist/src/models/anthropic.js +14 -4
- package/dist/src/models/anthropic.js.map +1 -1
- package/dist/src/models/bedrock.d.ts +17 -3
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +80 -13
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/defaults.d.ts +10 -0
- package/dist/src/models/defaults.d.ts.map +1 -1
- package/dist/src/models/defaults.js +129 -0
- package/dist/src/models/defaults.js.map +1 -1
- package/dist/src/models/google/model.d.ts.map +1 -1
- package/dist/src/models/google/model.js +4 -2
- package/dist/src/models/google/model.js.map +1 -1
- package/dist/src/models/google/types.d.ts +10 -0
- package/dist/src/models/google/types.d.ts.map +1 -1
- package/dist/src/models/model.d.ts +15 -0
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js +18 -0
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/openai/__tests__/chat.test.js +55 -2
- package/dist/src/models/openai/__tests__/chat.test.js.map +1 -1
- package/dist/src/models/openai/__tests__/responses.test.js +19 -0
- package/dist/src/models/openai/__tests__/responses.test.js.map +1 -1
- package/dist/src/models/openai/errors.d.ts.map +1 -1
- package/dist/src/models/openai/errors.js +7 -4
- package/dist/src/models/openai/errors.js.map +1 -1
- package/dist/src/models/openai/model.d.ts.map +1 -1
- package/dist/src/models/openai/model.js +2 -2
- package/dist/src/models/openai/model.js.map +1 -1
- package/dist/src/multiagent/__tests__/graph.test.js +69 -0
- package/dist/src/multiagent/__tests__/graph.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/graph.tracer.test.js +14 -0
- package/dist/src/multiagent/__tests__/graph.tracer.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/interrupts.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/interrupts.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/interrupts.test.js +390 -0
- package/dist/src/multiagent/__tests__/interrupts.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/nodes.test.js +13 -0
- package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/state.test.js +139 -1
- package/dist/src/multiagent/__tests__/state.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/swarm.test.js +77 -0
- package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -1
- package/dist/src/multiagent/events.d.ts +15 -1
- package/dist/src/multiagent/events.d.ts.map +1 -1
- package/dist/src/multiagent/events.js +18 -0
- package/dist/src/multiagent/events.js.map +1 -1
- package/dist/src/multiagent/graph.d.ts +59 -3
- package/dist/src/multiagent/graph.d.ts.map +1 -1
- package/dist/src/multiagent/graph.js +201 -34
- package/dist/src/multiagent/graph.js.map +1 -1
- package/dist/src/multiagent/multiagent.d.ts +77 -3
- package/dist/src/multiagent/multiagent.d.ts.map +1 -1
- package/dist/src/multiagent/multiagent.js +115 -1
- package/dist/src/multiagent/multiagent.js.map +1 -1
- package/dist/src/multiagent/nodes.d.ts +18 -0
- package/dist/src/multiagent/nodes.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.js +69 -22
- package/dist/src/multiagent/nodes.js.map +1 -1
- package/dist/src/multiagent/state.d.ts +39 -3
- package/dist/src/multiagent/state.d.ts.map +1 -1
- package/dist/src/multiagent/state.js +80 -1
- package/dist/src/multiagent/state.js.map +1 -1
- package/dist/src/multiagent/swarm.d.ts +30 -1
- package/dist/src/multiagent/swarm.d.ts.map +1 -1
- package/dist/src/multiagent/swarm.js +166 -33
- package/dist/src/multiagent/swarm.js.map +1 -1
- package/dist/src/registry/__tests__/tool-registry.test.js +37 -0
- package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -1
- package/dist/src/registry/tool-registry.d.ts +13 -7
- package/dist/src/registry/tool-registry.d.ts.map +1 -1
- package/dist/src/registry/tool-registry.js +35 -10
- package/dist/src/registry/tool-registry.js.map +1 -1
- package/dist/src/retry/__tests__/backoff-strategy.test.d.ts +2 -0
- package/dist/src/retry/__tests__/backoff-strategy.test.d.ts.map +1 -0
- package/dist/src/retry/__tests__/backoff-strategy.test.js +116 -0
- package/dist/src/retry/__tests__/backoff-strategy.test.js.map +1 -0
- package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts +2 -0
- package/dist/src/retry/__tests__/default-model-retry-strategy.test.d.ts.map +1 -0
- package/dist/src/retry/__tests__/default-model-retry-strategy.test.js +225 -0
- package/dist/src/retry/__tests__/default-model-retry-strategy.test.js.map +1 -0
- package/dist/src/retry/backoff-strategy.d.ts +108 -0
- package/dist/src/retry/backoff-strategy.d.ts.map +1 -0
- package/dist/src/retry/backoff-strategy.js +86 -0
- package/dist/src/retry/backoff-strategy.js.map +1 -0
- package/dist/src/retry/default-model-retry-strategy.d.ts +76 -0
- package/dist/src/retry/default-model-retry-strategy.d.ts.map +1 -0
- package/dist/src/retry/default-model-retry-strategy.js +104 -0
- package/dist/src/retry/default-model-retry-strategy.js.map +1 -0
- package/dist/src/retry/index.d.ts +8 -0
- package/dist/src/retry/index.d.ts.map +1 -0
- package/dist/src/retry/index.js +7 -0
- package/dist/src/retry/index.js.map +1 -0
- package/dist/src/retry/model-retry-strategy.d.ts +80 -0
- package/dist/src/retry/model-retry-strategy.d.ts.map +1 -0
- package/dist/src/retry/model-retry-strategy.js +85 -0
- package/dist/src/retry/model-retry-strategy.js.map +1 -0
- package/dist/src/retry/retry-strategy.d.ts +34 -0
- package/dist/src/retry/retry-strategy.d.ts.map +1 -0
- package/dist/src/retry/retry-strategy.js +25 -0
- package/dist/src/retry/retry-strategy.js.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.js +84 -3
- package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +11 -2
- package/dist/src/session/session-manager.d.ts.map +1 -1
- package/dist/src/session/session-manager.js +17 -6
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/telemetry/__tests__/meter.test.js +5 -27
- package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
- package/dist/src/telemetry/meter.d.ts +12 -4
- package/dist/src/telemetry/meter.d.ts.map +1 -1
- package/dist/src/telemetry/meter.js +13 -8
- package/dist/src/telemetry/meter.js.map +1 -1
- package/dist/src/tools/__tests__/tool.test.js +24 -1
- package/dist/src/tools/__tests__/tool.test.js.map +1 -1
- package/dist/src/tools/function-tool.d.ts.map +1 -1
- package/dist/src/tools/function-tool.js +6 -1
- package/dist/src/tools/function-tool.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts.map +1 -1
- package/dist/src/tools/mcp-tool.js +3 -2
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/tool.d.ts +10 -1
- package/dist/src/tools/tool.d.ts.map +1 -1
- package/dist/src/tools/tool.js +12 -0
- package/dist/src/tools/tool.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/__tests__/agent.test.js +97 -0
- package/dist/src/types/__tests__/agent.test.js.map +1 -1
- package/dist/src/types/agent.d.ts +48 -8
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js +28 -3
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/interrupt.d.ts +103 -0
- package/dist/src/types/interrupt.d.ts.map +1 -0
- package/dist/src/types/interrupt.js +63 -0
- package/dist/src/types/interrupt.js.map +1 -0
- package/dist/src/types/messages.d.ts +2 -1
- package/dist/src/types/messages.d.ts.map +1 -1
- package/dist/src/types/messages.js.map +1 -1
- package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts +2 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js +292 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/plugin.test.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts +2 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js +148 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts +2 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js +78 -0
- package/dist/src/vended-plugins/context-offloader/__tests__/storage.test.node.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/index.d.ts +23 -0
- package/dist/src/vended-plugins/context-offloader/index.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/index.js +21 -0
- package/dist/src/vended-plugins/context-offloader/index.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/plugin.d.ts +48 -0
- package/dist/src/vended-plugins/context-offloader/plugin.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/plugin.js +244 -0
- package/dist/src/vended-plugins/context-offloader/plugin.js.map +1 -0
- package/dist/src/vended-plugins/context-offloader/storage.d.ts +114 -0
- package/dist/src/vended-plugins/context-offloader/storage.d.ts.map +1 -0
- package/dist/src/vended-plugins/context-offloader/storage.js +204 -0
- package/dist/src/vended-plugins/context-offloader/storage.js.map +1 -0
- package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js +12 -0
- package/dist/src/vended-plugins/skills/__tests__/agent-skills.test.node.js.map +1 -1
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +3 -0
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
- package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
- package/dist/src/vended-tools/bash/bash.js +0 -3
- package/dist/src/vended-tools/bash/bash.js.map +1 -1
- package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js +3 -0
- package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -1
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +3 -0
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
- package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
- package/package.json +9 -5
package/dist/src/hooks/events.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { ToolStreamEvent } from '../tools/tool.js';
|
|
2
|
+
import { interruptFromAgent } from '../interrupt.js';
|
|
2
3
|
/**
|
|
3
4
|
* Agent hook events.
|
|
4
5
|
*
|
|
5
6
|
* All events extend {@link StreamEvent} with a `readonly type` discriminator
|
|
6
7
|
* (camelCase of the class name) for switch-based narrowing. Constructor takes
|
|
7
|
-
* a single data-object parameter.
|
|
8
|
-
*
|
|
8
|
+
* a single data-object parameter. Most properties are readonly — writable fields
|
|
9
|
+
* are the hook-driven control/data fields documented per event
|
|
10
|
+
* (e.g. `cancel`, `retry`, `selectedTool`, `resume`, and mutable `toolUse` / `result`).
|
|
9
11
|
*
|
|
10
12
|
* All current events extend {@link HookableEvent} (which itself extends {@link StreamEvent}),
|
|
11
13
|
* making them both streamable and subscribable via hook callbacks. {@link StreamEvent} exists
|
|
@@ -141,6 +143,16 @@ export class AfterInvocationEvent extends HookableEvent {
|
|
|
141
143
|
type = 'afterInvocationEvent';
|
|
142
144
|
agent;
|
|
143
145
|
invocationState;
|
|
146
|
+
/**
|
|
147
|
+
* Set by hook callbacks to trigger a follow-up agent invocation with new input.
|
|
148
|
+
* When set, after this event's callbacks complete the agent re-enters its loop
|
|
149
|
+
* with these args as new input, under the same invocation lock. A fresh
|
|
150
|
+
* {@link BeforeInvocationEvent}/{@link AfterInvocationEvent} pair fires for the
|
|
151
|
+
* resumed run. Ignored if the invocation ended with an error.
|
|
152
|
+
*
|
|
153
|
+
* If multiple callbacks set `resume`, the last callback to run wins.
|
|
154
|
+
*/
|
|
155
|
+
resume = undefined;
|
|
144
156
|
constructor(data) {
|
|
145
157
|
super();
|
|
146
158
|
this.agent = data.agent;
|
|
@@ -150,7 +162,8 @@ export class AfterInvocationEvent extends HookableEvent {
|
|
|
150
162
|
return true;
|
|
151
163
|
}
|
|
152
164
|
/**
|
|
153
|
-
* Serializes for wire transport, excluding the agent reference
|
|
165
|
+
* Serializes for wire transport, excluding the agent reference, invocationState,
|
|
166
|
+
* and mutable resume field.
|
|
154
167
|
* Called automatically by JSON.stringify().
|
|
155
168
|
*/
|
|
156
169
|
toJSON() {
|
|
@@ -159,8 +172,9 @@ export class AfterInvocationEvent extends HookableEvent {
|
|
|
159
172
|
}
|
|
160
173
|
/**
|
|
161
174
|
* Event triggered when the framework adds a message to the conversation history.
|
|
162
|
-
* Fired
|
|
163
|
-
* Does not fire for
|
|
175
|
+
* Fired for user input, assistant responses, and tool-result messages added
|
|
176
|
+
* during agent execution. Does not fire for messages preloaded via
|
|
177
|
+
* `AgentConfig.messages` or messages manually pushed to `agent.messages`.
|
|
164
178
|
*/
|
|
165
179
|
export class MessageAddedEvent extends HookableEvent {
|
|
166
180
|
type = 'messageAddedEvent';
|
|
@@ -184,7 +198,13 @@ export class MessageAddedEvent extends HookableEvent {
|
|
|
184
198
|
/**
|
|
185
199
|
* Event triggered just before a tool is executed.
|
|
186
200
|
* Fired after tool lookup but before execution begins.
|
|
187
|
-
*
|
|
201
|
+
*
|
|
202
|
+
* Hook callbacks can:
|
|
203
|
+
* - Set {@link cancel} to prevent the tool from executing.
|
|
204
|
+
* - Set {@link selectedTool} to execute a different tool in place of the registry's match.
|
|
205
|
+
* - Mutate {@link toolUse} to rewrite the tool input, id, or name before execution.
|
|
206
|
+
* If `name` is changed and `selectedTool` is not set, the tool is re-resolved from
|
|
207
|
+
* the registry under the new name.
|
|
188
208
|
*/
|
|
189
209
|
export class BeforeToolCallEvent extends HookableEvent {
|
|
190
210
|
type = 'beforeToolCallEvent';
|
|
@@ -198,6 +218,16 @@ export class BeforeToolCallEvent extends HookableEvent {
|
|
|
198
218
|
* When set to a string, that string is used as the tool result error message.
|
|
199
219
|
*/
|
|
200
220
|
cancel = false;
|
|
221
|
+
/**
|
|
222
|
+
* Set by hook callbacks to execute a replacement tool instead of {@link tool}.
|
|
223
|
+
* When undefined, the tool looked up from the registry (or re-resolved from a
|
|
224
|
+
* mutated `toolUse.name`) is used.
|
|
225
|
+
*
|
|
226
|
+
* If multiple callbacks set `selectedTool`, the last callback to run wins.
|
|
227
|
+
* Callbacks run in registration order for this event, so the last-registered
|
|
228
|
+
* callback's value is the one used.
|
|
229
|
+
*/
|
|
230
|
+
selectedTool = undefined;
|
|
201
231
|
constructor(data) {
|
|
202
232
|
super();
|
|
203
233
|
this.agent = data.agent;
|
|
@@ -206,7 +236,19 @@ export class BeforeToolCallEvent extends HookableEvent {
|
|
|
206
236
|
this.invocationState = data.invocationState;
|
|
207
237
|
}
|
|
208
238
|
/**
|
|
209
|
-
*
|
|
239
|
+
* Raises an interrupt for human-in-the-loop workflows.
|
|
240
|
+
* If a response is available (from a previous resume), returns it immediately.
|
|
241
|
+
* Otherwise, throws an InterruptError to halt agent execution.
|
|
242
|
+
*
|
|
243
|
+
* @param params - Interrupt parameters including name and optional reason
|
|
244
|
+
* @returns The user's response when resuming from an interrupt
|
|
245
|
+
*/
|
|
246
|
+
interrupt(params) {
|
|
247
|
+
return interruptFromAgent(this.agent, `hook:beforeToolCall:${this.toolUse.toolUseId}:${params.name}`, params, 'hook');
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Serializes for wire transport, excluding the agent reference, tool instance,
|
|
251
|
+
* invocationState, and mutable cancel / selectedTool fields.
|
|
210
252
|
* Called automatically by JSON.stringify().
|
|
211
253
|
*/
|
|
212
254
|
toJSON() {
|
|
@@ -217,6 +259,9 @@ export class BeforeToolCallEvent extends HookableEvent {
|
|
|
217
259
|
* Event triggered after a tool execution completes.
|
|
218
260
|
* Fired after tool execution finishes, whether successful or failed.
|
|
219
261
|
* Uses reverse callback ordering for proper cleanup semantics.
|
|
262
|
+
*
|
|
263
|
+
* Hook callbacks can mutate {@link result} to rewrite the tool result before it
|
|
264
|
+
* propagates to the model (e.g. to redact or truncate output).
|
|
220
265
|
*/
|
|
221
266
|
export class AfterToolCallEvent extends HookableEvent {
|
|
222
267
|
type = 'afterToolCallEvent';
|
|
@@ -319,6 +364,16 @@ export class AfterModelCallEvent extends HookableEvent {
|
|
|
319
364
|
stopData;
|
|
320
365
|
error;
|
|
321
366
|
invocationState;
|
|
367
|
+
/**
|
|
368
|
+
* 1-indexed count of model attempts for this turn, including the attempt
|
|
369
|
+
* that just completed (or failed). The first call in a turn is `1`; each
|
|
370
|
+
* subsequent retry increments by one.
|
|
371
|
+
*
|
|
372
|
+
* Retry strategies may rely on `attemptCount === 1` to mark the start of a
|
|
373
|
+
* new retry sequence (e.g. to clear per-turn state carried over from a
|
|
374
|
+
* previous turn). The agent loop guarantees this marker on every fresh turn.
|
|
375
|
+
*/
|
|
376
|
+
attemptCount;
|
|
322
377
|
/**
|
|
323
378
|
* Optional flag that can be set by hook callbacks to request a retry of the model call.
|
|
324
379
|
* When set to true, the agent will retry the model invocation.
|
|
@@ -329,6 +384,7 @@ export class AfterModelCallEvent extends HookableEvent {
|
|
|
329
384
|
this.agent = data.agent;
|
|
330
385
|
this.model = data.model;
|
|
331
386
|
this.invocationState = data.invocationState;
|
|
387
|
+
this.attemptCount = data.attemptCount;
|
|
332
388
|
if (data.stopData !== undefined) {
|
|
333
389
|
this.stopData = data.stopData;
|
|
334
390
|
}
|
|
@@ -347,6 +403,7 @@ export class AfterModelCallEvent extends HookableEvent {
|
|
|
347
403
|
toJSON() {
|
|
348
404
|
return {
|
|
349
405
|
type: this.type,
|
|
406
|
+
attemptCount: this.attemptCount,
|
|
350
407
|
...(this.stopData !== undefined && { stopData: this.stopData }),
|
|
351
408
|
...(this.error !== undefined && { error: { message: this.error.message } }),
|
|
352
409
|
};
|
|
@@ -505,6 +562,27 @@ export class AgentResultEvent extends HookableEvent {
|
|
|
505
562
|
return { type: this.type, result: this.result };
|
|
506
563
|
}
|
|
507
564
|
}
|
|
565
|
+
/**
|
|
566
|
+
* Event emitted when an interrupt is raised during agent execution. The `interrupt.source`
|
|
567
|
+
* field discriminates between tool-callback and hook-callback origins. One event fires
|
|
568
|
+
* per unanswered interrupt at the moment the agent stops to wait for responses.
|
|
569
|
+
*/
|
|
570
|
+
export class InterruptEvent extends HookableEvent {
|
|
571
|
+
type = 'interruptEvent';
|
|
572
|
+
agent;
|
|
573
|
+
interrupt;
|
|
574
|
+
invocationState;
|
|
575
|
+
constructor(data) {
|
|
576
|
+
super();
|
|
577
|
+
this.agent = data.agent;
|
|
578
|
+
this.interrupt = data.interrupt;
|
|
579
|
+
this.invocationState = data.invocationState;
|
|
580
|
+
}
|
|
581
|
+
/** Serializes for wire transport, excluding agent and invocationState. */
|
|
582
|
+
toJSON() {
|
|
583
|
+
return { type: this.type, interrupt: this.interrupt.toJSON() };
|
|
584
|
+
}
|
|
585
|
+
}
|
|
508
586
|
/**
|
|
509
587
|
* Event triggered before executing tools.
|
|
510
588
|
* Fired when the model returns tool use blocks that need to be executed.
|
|
@@ -527,6 +605,17 @@ export class BeforeToolsEvent extends HookableEvent {
|
|
|
527
605
|
this.message = data.message;
|
|
528
606
|
this.invocationState = data.invocationState;
|
|
529
607
|
}
|
|
608
|
+
/**
|
|
609
|
+
* Raises an interrupt for human-in-the-loop workflows.
|
|
610
|
+
* If a response is available (from a previous resume), returns it immediately.
|
|
611
|
+
* Otherwise, throws an InterruptError to halt agent execution.
|
|
612
|
+
*
|
|
613
|
+
* @param params - Interrupt parameters including name and optional reason
|
|
614
|
+
* @returns The user's response when resuming from an interrupt
|
|
615
|
+
*/
|
|
616
|
+
interrupt(params) {
|
|
617
|
+
return interruptFromAgent(this.agent, `hook:beforeTools:${params.name}`, params, 'hook');
|
|
618
|
+
}
|
|
530
619
|
/**
|
|
531
620
|
* Serializes for wire transport, excluding the agent reference, invocationState, and mutable cancel flag.
|
|
532
621
|
* Called automatically by JSON.stringify().
|
|
@@ -545,6 +634,19 @@ export class AfterToolsEvent extends HookableEvent {
|
|
|
545
634
|
agent;
|
|
546
635
|
message;
|
|
547
636
|
invocationState;
|
|
637
|
+
/**
|
|
638
|
+
* When set to `true`, the agent loop halts after this tool batch completes
|
|
639
|
+
* without calling the model again and a default message
|
|
640
|
+
* (`"Turn ended early by hook after tool execution"`) is appended as the
|
|
641
|
+
* final assistant message. When set to a string, that string is used instead
|
|
642
|
+
* of the default — the string becomes literal assistant content (a
|
|
643
|
+
* `TextBlock`), not a reason or label. Contrast with
|
|
644
|
+
* {@link BeforeToolCallEvent.cancel | cancel} fields on other events, where
|
|
645
|
+
* the string is a cancellation reason.
|
|
646
|
+
*
|
|
647
|
+
* In both cases `stopReason` on the returned `AgentResult` is `'endTurn'`.
|
|
648
|
+
*/
|
|
649
|
+
endTurn = false;
|
|
548
650
|
constructor(data) {
|
|
549
651
|
super();
|
|
550
652
|
this.agent = data.agent;
|
|
@@ -555,7 +657,8 @@ export class AfterToolsEvent extends HookableEvent {
|
|
|
555
657
|
return true;
|
|
556
658
|
}
|
|
557
659
|
/**
|
|
558
|
-
* Serializes for wire transport, excluding the agent reference
|
|
660
|
+
* Serializes for wire transport, excluding the agent reference, invocationState,
|
|
661
|
+
* and mutable endTurn field.
|
|
559
662
|
* Called automatically by JSON.stringify().
|
|
560
663
|
*/
|
|
561
664
|
toJSON() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/hooks/events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,eAAe,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/hooks/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,9 @@
|
|
|
12
12
|
* the subscription mechanism that lets callers register callbacks for {@link HookableEvent} types.
|
|
13
13
|
* Named `Hook*` because they describe the hooking/subscription pattern, not the events themselves.
|
|
14
14
|
*/
|
|
15
|
-
export { StreamEvent, HookableEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, ModelStreamUpdateEvent, ContentBlockEvent, ModelMessageEvent, ToolResultEvent, ToolStreamUpdateEvent, AgentResultEvent, BeforeToolsEvent, AfterToolsEvent, } from './events.js';
|
|
16
|
-
export type { ModelStopData as ModelStopResponse, Redaction } from './events.js';
|
|
15
|
+
export { StreamEvent, HookableEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, ModelStreamUpdateEvent, ContentBlockEvent, ModelMessageEvent, ToolResultEvent, ToolStreamUpdateEvent, AgentResultEvent, InterruptEvent, BeforeToolsEvent, AfterToolsEvent, } from './events.js';
|
|
16
|
+
export type { ModelStopData as ModelStopResponse, Redaction, ToolUseData } from './events.js';
|
|
17
17
|
export { HookRegistryImplementation as HookRegistry } from './registry.js';
|
|
18
|
-
export type { HookCallback, HookableEventConstructor, HookCleanup } from './types.js';
|
|
18
|
+
export type { HookCallback, HookableEventConstructor, HookCallbackOptions, HookCleanup } from './types.js';
|
|
19
|
+
export { HookOrder } from './types.js';
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAA;AAGpB,YAAY,EAAE,aAAa,IAAI,iBAAiB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAA;AAGpB,YAAY,EAAE,aAAa,IAAI,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG7F,OAAO,EAAE,0BAA0B,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA;AAG1E,YAAY,EAAE,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC1G,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/src/hooks/index.js
CHANGED
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
* Named `Hook*` because they describe the hooking/subscription pattern, not the events themselves.
|
|
14
14
|
*/
|
|
15
15
|
// Event classes
|
|
16
|
-
export { StreamEvent, HookableEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, ModelStreamUpdateEvent, ContentBlockEvent, ModelMessageEvent, ToolResultEvent, ToolStreamUpdateEvent, AgentResultEvent, BeforeToolsEvent, AfterToolsEvent, } from './events.js';
|
|
16
|
+
export { StreamEvent, HookableEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, ModelStreamUpdateEvent, ContentBlockEvent, ModelMessageEvent, ToolResultEvent, ToolStreamUpdateEvent, AgentResultEvent, InterruptEvent, BeforeToolsEvent, AfterToolsEvent, } from './events.js';
|
|
17
17
|
// Registry
|
|
18
18
|
export { HookRegistryImplementation as HookRegistry } from './registry.js';
|
|
19
|
+
export { HookOrder } from './types.js';
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,gBAAgB;AAChB,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAA;AAKpB,WAAW;AACX,OAAO,EAAE,0BAA0B,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,gBAAgB;AAChB,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,aAAa,CAAA;AAKpB,WAAW;AACX,OAAO,EAAE,0BAA0B,IAAI,YAAY,EAAE,MAAM,eAAe,CAAA;AAI1E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { HookableEvent } from './events.js';
|
|
2
|
-
import type { HookCallback, HookableEventConstructor, HookCleanup } from './types.js';
|
|
2
|
+
import type { HookCallback, HookableEventConstructor, HookCallbackOptions, HookCleanup } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Interface for hook registry operations.
|
|
5
5
|
* Enables registration of hook callbacks for event-driven extensibility.
|
|
@@ -10,9 +10,10 @@ export interface HookRegistry {
|
|
|
10
10
|
*
|
|
11
11
|
* @param eventType - The event class constructor to register the callback for
|
|
12
12
|
* @param callback - The callback function to invoke when the event occurs
|
|
13
|
+
* @param options - Optional configuration including execution order
|
|
13
14
|
* @returns Cleanup function that removes the callback when invoked
|
|
14
15
|
*/
|
|
15
|
-
addCallback<T extends HookableEvent>(eventType: HookableEventConstructor<T>, callback: HookCallback<T
|
|
16
|
+
addCallback<T extends HookableEvent>(eventType: HookableEventConstructor<T>, callback: HookCallback<T>, options?: HookCallbackOptions): HookCleanup;
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* Implementation of the hook registry for managing hook callbacks.
|
|
@@ -21,25 +22,24 @@ export interface HookRegistry {
|
|
|
21
22
|
export declare class HookRegistryImplementation implements HookRegistry {
|
|
22
23
|
private readonly _callbacks;
|
|
23
24
|
constructor();
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
*
|
|
27
|
-
* @param eventType - The event class constructor to register the callback for
|
|
28
|
-
* @param callback - The callback function to invoke when the event occurs
|
|
29
|
-
* @returns Cleanup function that removes the callback when invoked
|
|
30
|
-
*/
|
|
31
|
-
addCallback<T extends HookableEvent>(eventType: HookableEventConstructor<T>, callback: HookCallback<T>): HookCleanup;
|
|
25
|
+
/** {@inheritDoc HookRegistry.addCallback} */
|
|
26
|
+
addCallback<T extends HookableEvent>(eventType: HookableEventConstructor<T>, callback: HookCallback<T>, options?: HookCallbackOptions): HookCleanup;
|
|
32
27
|
/**
|
|
33
28
|
* Invoke all registered callbacks for the given event.
|
|
34
29
|
* Awaits each callback, supporting both sync and async.
|
|
35
30
|
*
|
|
31
|
+
* InterruptErrors are collected across callbacks rather than immediately thrown,
|
|
32
|
+
* allowing all hooks to register their interrupts. Non-interrupt errors propagate immediately.
|
|
33
|
+
*
|
|
36
34
|
* @param event - The event to invoke callbacks for
|
|
37
35
|
* @returns The event after all callbacks have been invoked
|
|
36
|
+
* @throws InterruptError with all collected interrupts after all callbacks complete
|
|
38
37
|
*/
|
|
39
38
|
invokeCallbacks<T extends HookableEvent>(event: T): Promise<T>;
|
|
40
39
|
/**
|
|
41
|
-
* Get callbacks for a specific event
|
|
42
|
-
*
|
|
40
|
+
* Get callbacks for a specific event in order.
|
|
41
|
+
* For After* events, reverses then re-sorts by order so that lower order
|
|
42
|
+
* still runs first, but same-order hooks run in reverse registration order.
|
|
43
43
|
*
|
|
44
44
|
* @param event - The event to get callbacks for
|
|
45
45
|
* @returns Array of callbacks for the event
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/hooks/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/hooks/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAW1G;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;OAOG;IACH,WAAW,CAAC,CAAC,SAAS,aAAa,EACjC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,EACtC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,WAAW,CAAA;CACf;AAED;;;GAGG;AACH,qBAAa,0BAA2B,YAAW,YAAY;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgD;;IAM3E,6CAA6C;IAC7C,WAAW,CAAC,CAAC,SAAS,aAAa,EACjC,SAAS,EAAE,wBAAwB,CAAC,CAAC,CAAC,EACtC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,WAAW;IAyBd;;;;;;;;;;OAUG;IACG,eAAe,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmCpE;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;CAQxB"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { HookOrder } from './types.js';
|
|
2
|
+
import { InterruptError, Interrupt } from '../interrupt.js';
|
|
1
3
|
/**
|
|
2
4
|
* Implementation of the hook registry for managing hook callbacks.
|
|
3
5
|
* Maintains mappings between event types and callback functions.
|
|
@@ -7,17 +9,21 @@ export class HookRegistryImplementation {
|
|
|
7
9
|
constructor() {
|
|
8
10
|
this._callbacks = new Map();
|
|
9
11
|
}
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
*/
|
|
17
|
-
addCallback(eventType, callback) {
|
|
18
|
-
const entry = { callback: callback };
|
|
12
|
+
/** {@inheritDoc HookRegistry.addCallback} */
|
|
13
|
+
addCallback(eventType, callback, options) {
|
|
14
|
+
const entry = {
|
|
15
|
+
callback: callback,
|
|
16
|
+
order: options?.order ?? HookOrder.DEFAULT,
|
|
17
|
+
};
|
|
19
18
|
const callbacks = this._callbacks.get(eventType) ?? [];
|
|
20
|
-
|
|
19
|
+
// Insert in sorted position: lower order first, same order preserves registration order
|
|
20
|
+
const insertAt = callbacks.findIndex((e) => e.order > entry.order);
|
|
21
|
+
if (insertAt === -1) {
|
|
22
|
+
callbacks.push(entry);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
callbacks.splice(insertAt, 0, entry);
|
|
26
|
+
}
|
|
21
27
|
this._callbacks.set(eventType, callbacks);
|
|
22
28
|
return () => {
|
|
23
29
|
const callbacks = this._callbacks.get(eventType);
|
|
@@ -33,27 +39,61 @@ export class HookRegistryImplementation {
|
|
|
33
39
|
* Invoke all registered callbacks for the given event.
|
|
34
40
|
* Awaits each callback, supporting both sync and async.
|
|
35
41
|
*
|
|
42
|
+
* InterruptErrors are collected across callbacks rather than immediately thrown,
|
|
43
|
+
* allowing all hooks to register their interrupts. Non-interrupt errors propagate immediately.
|
|
44
|
+
*
|
|
36
45
|
* @param event - The event to invoke callbacks for
|
|
37
46
|
* @returns The event after all callbacks have been invoked
|
|
47
|
+
* @throws InterruptError with all collected interrupts after all callbacks complete
|
|
38
48
|
*/
|
|
39
49
|
async invokeCallbacks(event) {
|
|
40
50
|
const callbacks = this.getCallbacksFor(event);
|
|
51
|
+
const collectedInterrupts = [];
|
|
41
52
|
for (const callback of callbacks) {
|
|
42
|
-
|
|
53
|
+
try {
|
|
54
|
+
await callback(event);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (error instanceof InterruptError) {
|
|
58
|
+
collectedInterrupts.push(...error.interrupts);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (collectedInterrupts.length > 0) {
|
|
66
|
+
const seen = new Set();
|
|
67
|
+
const duplicates = new Set();
|
|
68
|
+
for (const interrupt of collectedInterrupts) {
|
|
69
|
+
if (seen.has(interrupt.name)) {
|
|
70
|
+
duplicates.add(interrupt.name);
|
|
71
|
+
}
|
|
72
|
+
seen.add(interrupt.name);
|
|
73
|
+
}
|
|
74
|
+
if (duplicates.size > 0) {
|
|
75
|
+
const names = [...duplicates].join(', ');
|
|
76
|
+
throw new Error(`interrupt_names=<${names}> | duplicate interrupt names`);
|
|
77
|
+
}
|
|
78
|
+
throw new InterruptError(collectedInterrupts);
|
|
43
79
|
}
|
|
44
80
|
return event;
|
|
45
81
|
}
|
|
46
82
|
/**
|
|
47
|
-
* Get callbacks for a specific event
|
|
48
|
-
*
|
|
83
|
+
* Get callbacks for a specific event in order.
|
|
84
|
+
* For After* events, reverses then re-sorts by order so that lower order
|
|
85
|
+
* still runs first, but same-order hooks run in reverse registration order.
|
|
49
86
|
*
|
|
50
87
|
* @param event - The event to get callbacks for
|
|
51
88
|
* @returns Array of callbacks for the event
|
|
52
89
|
*/
|
|
53
90
|
getCallbacksFor(event) {
|
|
54
91
|
const entries = this._callbacks.get(event.constructor) ?? [];
|
|
55
|
-
|
|
56
|
-
|
|
92
|
+
if (event._shouldReverseCallbacks()) {
|
|
93
|
+
const reversed = [...entries].reverse().sort((a, b) => a.order - b.order);
|
|
94
|
+
return reversed.map((entry) => entry.callback);
|
|
95
|
+
}
|
|
96
|
+
return entries.map((entry) => entry.callback);
|
|
57
97
|
}
|
|
58
98
|
}
|
|
59
99
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/hooks/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/hooks/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,10 +15,33 @@ export type HookableEventConstructor<T extends HookableEvent = HookableEvent> =
|
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
17
|
export type HookCallback<T extends HookableEvent> = (event: T) => void | Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Options for registering a hook callback.
|
|
20
|
+
*/
|
|
21
|
+
export interface HookCallbackOptions {
|
|
22
|
+
order?: number;
|
|
23
|
+
}
|
|
18
24
|
/**
|
|
19
25
|
* Function that removes a previously registered hook callback.
|
|
20
26
|
* Safe to call multiple times (idempotent).
|
|
21
27
|
* No-op if the callback is no longer registered.
|
|
22
28
|
*/
|
|
23
29
|
export type HookCleanup = () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Presets for hook execution order. Lower values run first.
|
|
32
|
+
* Any number is a valid order — these presets are not bounds, just convenient
|
|
33
|
+
* reference points. SDK_FIRST/SDK_LAST mark where the SDK's own hooks run,
|
|
34
|
+
* so you can position yours relative to them.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* agent.addHook(BeforeToolCallEvent, callback, { order: HookOrder.SDK_FIRST }) // run with the SDK's earliest hooks
|
|
39
|
+
* agent.addHook(BeforeToolCallEvent, callback, { order: HookOrder.SDK_FIRST - 1 }) // run before the SDK's earliest hooks
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare const HookOrder: {
|
|
43
|
+
readonly SDK_FIRST: -100;
|
|
44
|
+
readonly DEFAULT: 0;
|
|
45
|
+
readonly SDK_LAST: 100;
|
|
46
|
+
};
|
|
24
47
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD;;GAEG;AAEH,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAEzG;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEtF;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD;;GAEG;AAEH,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAEzG;;;;;;;;;;GAUG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAEtF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAA;AAEpC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS;;;;CAIZ,CAAA"}
|
package/dist/src/hooks/types.js
CHANGED
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Presets for hook execution order. Lower values run first.
|
|
3
|
+
* Any number is a valid order — these presets are not bounds, just convenient
|
|
4
|
+
* reference points. SDK_FIRST/SDK_LAST mark where the SDK's own hooks run,
|
|
5
|
+
* so you can position yours relative to them.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* agent.addHook(BeforeToolCallEvent, callback, { order: HookOrder.SDK_FIRST }) // run with the SDK's earliest hooks
|
|
10
|
+
* agent.addHook(BeforeToolCallEvent, callback, { order: HookOrder.SDK_FIRST - 1 }) // run before the SDK's earliest hooks
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export const HookOrder = {
|
|
14
|
+
SDK_FIRST: -100,
|
|
15
|
+
DEFAULT: 0,
|
|
16
|
+
SDK_LAST: 100,
|
|
17
|
+
};
|
|
2
18
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/types.ts"],"names":[],"mappings":"AAmCA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,SAAS,EAAE,CAAC,GAAG;IACf,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,GAAG;CACL,CAAA"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -9,8 +9,14 @@ export { StateStore } from './state-store.js';
|
|
|
9
9
|
export { AgentResult } from './types/agent.js';
|
|
10
10
|
export type { AgentConfig, ToolList, ToolExecutorStrategy } from './agent/agent.js';
|
|
11
11
|
export type { AgentAsToolOptions } from './agent/agent-as-tool.js';
|
|
12
|
-
export type { InvocationState, InvokeOptions, LocalAgent } from './types/agent.js';
|
|
12
|
+
export type { InvocationState, InvokeArgs, InvokeOptions, LocalAgent } from './types/agent.js';
|
|
13
|
+
export { SNAPSHOT_SCHEMA_VERSION } from './types/snapshot.js';
|
|
14
|
+
export type { Scope, Snapshot } from './types/snapshot.js';
|
|
15
|
+
export type { TakeSnapshotOptions, SnapshotField, SnapshotPreset } from './agent/snapshot.js';
|
|
13
16
|
export { ModelError, ContextWindowOverflowError, MaxTokensError, JsonValidationError, ConcurrentInvocationError, ModelThrottledError, ToolValidationError, StructuredOutputError, } from './errors.js';
|
|
17
|
+
export type { Interrupt, InterruptSource } from './interrupt.js';
|
|
18
|
+
export type { InterruptParams, InterruptResponse, InterruptResponseContentData } from './types/interrupt.js';
|
|
19
|
+
export { InterruptResponseContent } from './types/interrupt.js';
|
|
14
20
|
export type { JSONSchema, JSONValue } from './types/json.js';
|
|
15
21
|
export type { Role, StopReason, TextBlockData, ToolUseBlockData, ToolResultBlockData, ReasoningBlockData, CachePointBlockData, GuardContentBlockData, GuardContentText, GuardContentImage, GuardQualifier, GuardImageFormat, GuardImageSource, ContentBlock, ContentBlockData, MessageData, SystemPrompt, SystemPromptData, SystemContentBlock, ToolResultContent, } from './types/messages.js';
|
|
16
22
|
export { TextBlock, ToolUseBlock, ToolResultBlock, ReasoningBlock, CachePointBlock, GuardContentBlock, Message, JsonBlock, contentBlockFromData, toolResultContentFromData, } from './types/messages.js';
|
|
@@ -33,23 +39,23 @@ export { Model } from './models/model.js';
|
|
|
33
39
|
export { BedrockModel as BedrockModel } from './models/bedrock.js';
|
|
34
40
|
export type { BedrockModelConfig, BedrockModelOptions, BedrockGuardrailConfig, BedrockGuardrailRedactionConfig, } from './models/bedrock.js';
|
|
35
41
|
export type { AgentStreamEvent } from './types/agent.js';
|
|
36
|
-
export { HookRegistry, StreamEvent, HookableEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, BeforeToolsEvent, AfterToolsEvent, ContentBlockEvent, ModelMessageEvent, ToolResultEvent, ToolStreamUpdateEvent, AgentResultEvent, ModelStreamUpdateEvent, } from './hooks/index.js';
|
|
37
|
-
export type { HookCallback, HookableEventConstructor, ModelStopResponse, Redaction } from './hooks/index.js';
|
|
42
|
+
export { HookRegistry, HookOrder, StreamEvent, HookableEvent, InitializedEvent, BeforeInvocationEvent, AfterInvocationEvent, MessageAddedEvent, BeforeToolCallEvent, AfterToolCallEvent, BeforeModelCallEvent, AfterModelCallEvent, BeforeToolsEvent, AfterToolsEvent, ContentBlockEvent, ModelMessageEvent, ToolResultEvent, ToolStreamUpdateEvent, AgentResultEvent, InterruptEvent, ModelStreamUpdateEvent, } from './hooks/index.js';
|
|
43
|
+
export type { HookCallback, HookableEventConstructor, HookCallbackOptions, ModelStopResponse, Redaction, ToolUseData, } from './hooks/index.js';
|
|
38
44
|
export type { Plugin } from './plugins/index.js';
|
|
39
|
-
export {
|
|
45
|
+
export { type BackoffContext, type BackoffStrategy, type JitterKind, type ConstantBackoffOptions, type LinearBackoffOptions, type ExponentialBackoffOptions, ConstantBackoff, LinearBackoff, ExponentialBackoff, ModelRetryStrategy, DefaultModelRetryStrategy, type DefaultModelRetryStrategyOptions, type RetryStrategy, type RetryDecision, } from './retry/index.js';
|
|
46
|
+
export { ConversationManager, type ProactiveCompressionConfig, type ConversationManagerReduceOptions, type ConversationManagerOptions, } from './conversation-manager/conversation-manager.js';
|
|
40
47
|
export { NullConversationManager } from './conversation-manager/null-conversation-manager.js';
|
|
41
48
|
export { SlidingWindowConversationManager, type SlidingWindowConversationManagerConfig, } from './conversation-manager/sliding-window-conversation-manager.js';
|
|
42
49
|
export { SummarizingConversationManager, type SummarizingConversationManagerConfig, } from './conversation-manager/summarizing-conversation-manager.js';
|
|
43
50
|
export { configureLogging } from './logging/logger.js';
|
|
44
51
|
export type { Logger } from './logging/types.js';
|
|
45
|
-
export { type McpClientConfig, type McpTransport, type TasksConfig, McpClient } from './mcp.js';
|
|
52
|
+
export { type McpClientConfig, type McpClientCredentials, type McpTransport, type McpCallToolOptions, type TasksConfig, type McpConnectionState, McpClient, } from './mcp.js';
|
|
46
53
|
export type { ElicitationCallback, ElicitationContext } from './types/elicitation.js';
|
|
47
54
|
export { SessionManager } from './session/session-manager.js';
|
|
48
55
|
export type { SessionManagerConfig, SaveLatestStrategy, MultiAgentSaveLatestStrategy, } from './session/session-manager.js';
|
|
49
56
|
export type { SnapshotManifest, SnapshotTriggerCallback, SnapshotTriggerParams } from './session/types.js';
|
|
50
57
|
export type { SessionStorage, SnapshotStorage, SnapshotLocation } from './session/storage.js';
|
|
51
58
|
export { FileStorage } from './session/file-storage.js';
|
|
52
|
-
export type { Scope, Snapshot } from './types/snapshot.js';
|
|
53
59
|
export { AgentTrace } from './telemetry/tracer.js';
|
|
54
60
|
export { AgentMetrics } from './telemetry/meter.js';
|
|
55
61
|
export { Graph } from './multiagent/index.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAGxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAClE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|