@strands-agents/sdk 0.0.1 → 0.1.1
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 +112 -61
- package/dist/src/agent/__tests__/agent.test.js +269 -2
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/agent.d.ts +40 -6
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +73 -12
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/hooks/__tests__/registry.test.js +209 -58
- package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
- package/dist/src/hooks/events.d.ts +2 -0
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js +2 -0
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/hooks/index.d.ts +1 -1
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/registry.d.ts +18 -3
- package/dist/src/hooks/registry.d.ts.map +1 -1
- package/dist/src/hooks/registry.js +43 -3
- package/dist/src/hooks/registry.js.map +1 -1
- package/dist/src/hooks/types.d.ts +6 -0
- package/dist/src/hooks/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/logging/__tests__/logger.test.d.ts +2 -0
- package/dist/src/logging/__tests__/logger.test.d.ts.map +1 -0
- package/dist/src/logging/__tests__/logger.test.js +70 -0
- package/dist/src/logging/__tests__/logger.test.js.map +1 -0
- package/dist/src/logging/index.d.ts +6 -0
- package/dist/src/logging/index.d.ts.map +1 -0
- package/dist/src/logging/index.js +5 -0
- package/dist/src/logging/index.js.map +1 -0
- package/dist/src/logging/logger.d.ts +30 -0
- package/dist/src/logging/logger.d.ts.map +1 -0
- package/dist/src/logging/logger.js +42 -0
- package/dist/src/logging/logger.js.map +1 -0
- package/dist/src/logging/types.d.ts +27 -0
- package/dist/src/logging/types.d.ts.map +1 -0
- package/dist/src/logging/types.js +5 -0
- package/dist/{tools → src/logging}/types.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +79 -19
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/__tests__/model.test.js +185 -2
- package/dist/src/models/__tests__/model.test.js.map +1 -1
- package/dist/src/models/__tests__/openai.test.js +5 -5
- package/dist/src/models/__tests__/openai.test.js.map +1 -1
- package/dist/src/models/bedrock.d.ts +8 -2
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +61 -22
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/model.d.ts +41 -8
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js +40 -23
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/openai.d.ts +9 -3
- package/dist/src/models/openai.d.ts.map +1 -1
- package/dist/src/models/openai.js +7 -8
- package/dist/src/models/openai.js.map +1 -1
- package/dist/src/tools/__tests__/tool.test.js +122 -0
- package/dist/src/tools/__tests__/tool.test.js.map +1 -1
- package/dist/src/tools/__tests__/zod-tool.test.js +197 -5
- package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -1
- package/dist/src/tools/function-tool.d.ts +11 -3
- package/dist/src/tools/function-tool.d.ts.map +1 -1
- package/dist/src/tools/function-tool.js +16 -2
- package/dist/src/tools/function-tool.js.map +1 -1
- package/dist/src/tools/types.d.ts +2 -1
- package/dist/src/tools/types.d.ts.map +1 -1
- package/dist/src/tools/zod-tool.d.ts +21 -5
- package/dist/src/tools/zod-tool.d.ts.map +1 -1
- package/dist/src/tools/zod-tool.js +33 -11
- package/dist/src/tools/zod-tool.js.map +1 -1
- package/dist/src/types/messages.d.ts +9 -0
- package/dist/src/types/messages.d.ts.map +1 -1
- package/dist/src/types/messages.js +55 -46
- package/dist/src/types/messages.js.map +1 -1
- package/dist/vended_tools/file_editor/file-editor.d.ts +1 -1
- package/dist/vended_tools/notebook/notebook.d.ts +1 -1
- package/package.json +11 -11
- package/dist/__fixtures__/model-test-helpers.d.ts +0 -56
- package/dist/__fixtures__/model-test-helpers.d.ts.map +0 -1
- package/dist/__fixtures__/model-test-helpers.js +0 -85
- package/dist/__fixtures__/model-test-helpers.js.map +0 -1
- package/dist/__fixtures__/tool-helpers.d.ts +0 -15
- package/dist/__fixtures__/tool-helpers.d.ts.map +0 -1
- package/dist/__fixtures__/tool-helpers.js +0 -22
- package/dist/__fixtures__/tool-helpers.js.map +0 -1
- package/dist/__tests__/errors.test.d.ts +0 -2
- package/dist/__tests__/errors.test.d.ts.map +0 -1
- package/dist/__tests__/errors.test.js +0 -20
- package/dist/__tests__/errors.test.js.map +0 -1
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.js +0 -27
- package/dist/__tests__/index.test.js.map +0 -1
- package/dist/errors.d.ts +0 -22
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -25
- package/dist/errors.js.map +0 -1
- package/dist/index.d.ts +0 -19
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -17
- package/dist/index.js.map +0 -1
- package/dist/models/__tests__/bedrock.test.d.ts +0 -2
- package/dist/models/__tests__/bedrock.test.d.ts.map +0 -1
- package/dist/models/__tests__/bedrock.test.js +0 -1161
- package/dist/models/__tests__/bedrock.test.js.map +0 -1
- package/dist/models/__tests__/model.test.d.ts +0 -2
- package/dist/models/__tests__/model.test.d.ts.map +0 -1
- package/dist/models/__tests__/model.test.js +0 -297
- package/dist/models/__tests__/model.test.js.map +0 -1
- package/dist/models/__tests__/openai.test.d.ts +0 -2
- package/dist/models/__tests__/openai.test.d.ts.map +0 -1
- package/dist/models/__tests__/openai.test.js +0 -1016
- package/dist/models/__tests__/openai.test.js.map +0 -1
- package/dist/models/__tests__/test-utils.d.ts +0 -10
- package/dist/models/__tests__/test-utils.d.ts.map +0 -1
- package/dist/models/__tests__/test-utils.js +0 -17
- package/dist/models/__tests__/test-utils.js.map +0 -1
- package/dist/models/bedrock.d.ts +0 -272
- package/dist/models/bedrock.d.ts.map +0 -1
- package/dist/models/bedrock.js +0 -679
- package/dist/models/bedrock.js.map +0 -1
- package/dist/models/model.d.ts +0 -89
- package/dist/models/model.d.ts.map +0 -1
- package/dist/models/model.js +0 -122
- package/dist/models/model.js.map +0 -1
- package/dist/models/openai.d.ts +0 -262
- package/dist/models/openai.d.ts.map +0 -1
- package/dist/models/openai.js +0 -625
- package/dist/models/openai.js.map +0 -1
- package/dist/models/streaming.d.ts +0 -226
- package/dist/models/streaming.d.ts.map +0 -1
- package/dist/models/streaming.js +0 -2
- package/dist/models/streaming.js.map +0 -1
- package/dist/src/agent/streaming.d.ts +0 -91
- package/dist/src/agent/streaming.d.ts.map +0 -1
- package/dist/src/agent/streaming.js +0 -2
- package/dist/src/agent/streaming.js.map +0 -1
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +0 -2
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +0 -1
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +0 -10
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +0 -1
- package/dist/src/conversation-manager/conversation-manager.d.ts +0 -73
- package/dist/src/conversation-manager/conversation-manager.d.ts.map +0 -1
- package/dist/src/conversation-manager/conversation-manager.js +0 -24
- package/dist/src/conversation-manager/conversation-manager.js.map +0 -1
- package/dist/tools/__tests__/registry.test.d.ts +0 -2
- package/dist/tools/__tests__/registry.test.d.ts.map +0 -1
- package/dist/tools/__tests__/registry.test.js +0 -253
- package/dist/tools/__tests__/registry.test.js.map +0 -1
- package/dist/tools/__tests__/tool.test.d.ts +0 -2
- package/dist/tools/__tests__/tool.test.d.ts.map +0 -1
- package/dist/tools/__tests__/tool.test.js +0 -761
- package/dist/tools/__tests__/tool.test.js.map +0 -1
- package/dist/tools/__tests__/zod-tool.test-d.d.ts +0 -2
- package/dist/tools/__tests__/zod-tool.test-d.d.ts.map +0 -1
- package/dist/tools/__tests__/zod-tool.test-d.js +0 -227
- package/dist/tools/__tests__/zod-tool.test-d.js.map +0 -1
- package/dist/tools/__tests__/zod-tool.test.d.ts +0 -2
- package/dist/tools/__tests__/zod-tool.test.d.ts.map +0 -1
- package/dist/tools/__tests__/zod-tool.test.js +0 -342
- package/dist/tools/__tests__/zod-tool.test.js.map +0 -1
- package/dist/tools/function-tool.d.ts +0 -156
- package/dist/tools/function-tool.d.ts.map +0 -1
- package/dist/tools/function-tool.js +0 -237
- package/dist/tools/function-tool.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -43
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -82
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/tool.d.ts +0 -157
- package/dist/tools/tool.d.ts.map +0 -1
- package/dist/tools/tool.js +0 -2
- package/dist/tools/tool.js.map +0 -1
- package/dist/tools/types.d.ts +0 -119
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js +0 -2
- package/dist/tools/zod-tool.d.ts +0 -70
- package/dist/tools/zod-tool.d.ts.map +0 -1
- package/dist/tools/zod-tool.js +0 -96
- package/dist/tools/zod-tool.js.map +0 -1
- package/dist/types/__tests__/json.test.d.ts +0 -2
- package/dist/types/__tests__/json.test.d.ts.map +0 -1
- package/dist/types/__tests__/json.test.js +0 -129
- package/dist/types/__tests__/json.test.js.map +0 -1
- package/dist/types/__tests__/validation.test.d.ts +0 -2
- package/dist/types/__tests__/validation.test.d.ts.map +0 -1
- package/dist/types/__tests__/validation.test.js +0 -30
- package/dist/types/__tests__/validation.test.js.map +0 -1
- package/dist/types/json.d.ts +0 -45
- package/dist/types/json.d.ts.map +0 -1
- package/dist/types/json.js +0 -17
- package/dist/types/json.js.map +0 -1
- package/dist/types/messages.d.ts +0 -160
- package/dist/types/messages.d.ts.map +0 -1
- package/dist/types/messages.js +0 -2
- package/dist/types/messages.js.map +0 -1
- package/dist/types/validation.d.ts +0 -10
- package/dist/types/validation.d.ts.map +0 -1
- package/dist/types/validation.js +0 -15
- package/dist/types/validation.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AgentResult, type AgentStreamEvent, type JSONValue, McpClient, Message, type MessageData, type SystemPrompt, type SystemPromptData, type Tool } from '../index.js';
|
|
1
|
+
import { AgentResult, type AgentStreamEvent, type ContentBlock, type ContentBlockData, type JSONValue, McpClient, Message, type MessageData, type SystemPrompt, type SystemPromptData, type Tool } from '../index.js';
|
|
2
2
|
import type { BaseModelConfig, Model } from '../models/model.js';
|
|
3
3
|
import { ToolRegistry } from '../registry/tool-registry.js';
|
|
4
4
|
import { AgentState } from './state.js';
|
|
@@ -14,8 +14,29 @@ export type ToolList = (Tool | McpClient | ToolList)[];
|
|
|
14
14
|
* Configuration object for creating a new Agent.
|
|
15
15
|
*/
|
|
16
16
|
export type AgentConfig = {
|
|
17
|
-
/**
|
|
18
|
-
|
|
17
|
+
/**
|
|
18
|
+
* The model instance that the agent will use to make decisions.
|
|
19
|
+
* Accepts either a Model instance or a string representing a Bedrock model ID.
|
|
20
|
+
* When a string is provided, it will be used to create a BedrockModel instance.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // Using a string model ID (creates BedrockModel)
|
|
25
|
+
* const agent = new Agent({
|
|
26
|
+
* model: 'anthropic.claude-3-5-sonnet-20240620-v1:0'
|
|
27
|
+
* })
|
|
28
|
+
*
|
|
29
|
+
* // Using an explicit BedrockModel instance with configuration
|
|
30
|
+
* const agent = new Agent({
|
|
31
|
+
* model: new BedrockModel({
|
|
32
|
+
* modelId: 'anthropic.claude-3-5-sonnet-20240620-v1:0',
|
|
33
|
+
* temperature: 0.7,
|
|
34
|
+
* maxTokens: 2048
|
|
35
|
+
* })
|
|
36
|
+
* })
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
model?: Model<BaseModelConfig> | string;
|
|
19
40
|
/** An initial set of messages to seed the agent's conversation history. */
|
|
20
41
|
messages?: Message[] | MessageData[];
|
|
21
42
|
/**
|
|
@@ -49,9 +70,12 @@ export type AgentConfig = {
|
|
|
49
70
|
/**
|
|
50
71
|
* Arguments for invoking an agent.
|
|
51
72
|
*
|
|
52
|
-
*
|
|
73
|
+
* Supports multiple input formats:
|
|
74
|
+
* - `string` - User text input (wrapped in TextBlock, creates user Message)
|
|
75
|
+
* - `ContentBlock[]` | `ContentBlockData[]` - Array of content blocks (creates single user Message)
|
|
76
|
+
* - `Message[]` | `MessageData[]` - Array of messages (appends all to conversation)
|
|
53
77
|
*/
|
|
54
|
-
export type InvokeArgs = string;
|
|
78
|
+
export type InvokeArgs = string | ContentBlock[] | ContentBlockData[] | Message[] | MessageData[];
|
|
55
79
|
/**
|
|
56
80
|
* Orchestrates the interaction between a model, a set of tools, and MCP clients.
|
|
57
81
|
* The Agent is responsible for managing the lifecycle of tools and clients
|
|
@@ -80,9 +104,12 @@ export declare class Agent implements AgentData {
|
|
|
80
104
|
* The model provider used by the agent for inference.
|
|
81
105
|
*/
|
|
82
106
|
model: Model;
|
|
107
|
+
/**
|
|
108
|
+
* The system prompt to pass to the model provider.
|
|
109
|
+
*/
|
|
110
|
+
systemPrompt?: SystemPrompt;
|
|
83
111
|
private _toolRegistry;
|
|
84
112
|
private _mcpClients;
|
|
85
|
-
private _systemPrompt?;
|
|
86
113
|
private _initialized;
|
|
87
114
|
private _isInvoking;
|
|
88
115
|
private _printer?;
|
|
@@ -161,6 +188,13 @@ export declare class Agent implements AgentData {
|
|
|
161
188
|
* @returns Async generator that yields AgentStreamEvent objects and returns AgentResult
|
|
162
189
|
*/
|
|
163
190
|
private _stream;
|
|
191
|
+
/**
|
|
192
|
+
* Normalizes agent invocation input into an array of messages to append.
|
|
193
|
+
*
|
|
194
|
+
* @param args - Optional arguments for invoking the model
|
|
195
|
+
* @returns Array of messages to append to the conversation
|
|
196
|
+
*/
|
|
197
|
+
private _normalizeInput;
|
|
164
198
|
/**
|
|
165
199
|
* Invokes the model provider and streams all events.
|
|
166
200
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/src/agent/agent.js
CHANGED
|
@@ -50,7 +50,7 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
|
|
|
50
50
|
var e = new Error(message);
|
|
51
51
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
52
52
|
});
|
|
53
|
-
import { AgentResult, BedrockModel, McpClient, Message, TextBlock, ToolResultBlock, } from '../index.js';
|
|
53
|
+
import { AgentResult, BedrockModel, contentBlockFromData, McpClient, Message, TextBlock, ToolResultBlock, ToolUseBlock, } from '../index.js';
|
|
54
54
|
import { systemPromptFromData } from '../types/messages.js';
|
|
55
55
|
import { normalizeError, ConcurrentInvocationError } from '../errors.js';
|
|
56
56
|
import { ToolRegistry } from '../registry/tool-registry.js';
|
|
@@ -87,9 +87,12 @@ export class Agent {
|
|
|
87
87
|
* The model provider used by the agent for inference.
|
|
88
88
|
*/
|
|
89
89
|
model;
|
|
90
|
+
/**
|
|
91
|
+
* The system prompt to pass to the model provider.
|
|
92
|
+
*/
|
|
93
|
+
systemPrompt;
|
|
90
94
|
_toolRegistry;
|
|
91
95
|
_mcpClients;
|
|
92
|
-
_systemPrompt;
|
|
93
96
|
_initialized;
|
|
94
97
|
_isInvoking = false;
|
|
95
98
|
_printer;
|
|
@@ -106,12 +109,17 @@ export class Agent {
|
|
|
106
109
|
this.hooks = new HookRegistryImplementation();
|
|
107
110
|
this.hooks.addHook(this.conversationManager);
|
|
108
111
|
this.hooks.addAllHooks(config?.hooks ?? []);
|
|
109
|
-
|
|
112
|
+
if (typeof config?.model === 'string') {
|
|
113
|
+
this.model = new BedrockModel({ modelId: config.model });
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.model = config?.model ?? new BedrockModel();
|
|
117
|
+
}
|
|
110
118
|
const { tools, mcpClients } = flattenTools(config?.tools ?? []);
|
|
111
119
|
this._toolRegistry = new ToolRegistry(tools);
|
|
112
120
|
this._mcpClients = mcpClients;
|
|
113
121
|
if (config?.systemPrompt !== undefined) {
|
|
114
|
-
this.
|
|
122
|
+
this.systemPrompt = systemPromptFromData(config.systemPrompt);
|
|
115
123
|
}
|
|
116
124
|
// Create printer if printer is enabled (default: true)
|
|
117
125
|
const printer = config?.printer ?? true;
|
|
@@ -280,6 +288,61 @@ export class Agent {
|
|
|
280
288
|
yield new AfterInvocationEvent({ agent: this });
|
|
281
289
|
}
|
|
282
290
|
}
|
|
291
|
+
/**
|
|
292
|
+
* Normalizes agent invocation input into an array of messages to append.
|
|
293
|
+
*
|
|
294
|
+
* @param args - Optional arguments for invoking the model
|
|
295
|
+
* @returns Array of messages to append to the conversation
|
|
296
|
+
*/
|
|
297
|
+
_normalizeInput(args) {
|
|
298
|
+
if (args !== undefined) {
|
|
299
|
+
if (typeof args === 'string') {
|
|
300
|
+
// String input: wrap in TextBlock and create user Message
|
|
301
|
+
return [
|
|
302
|
+
new Message({
|
|
303
|
+
role: 'user',
|
|
304
|
+
content: [new TextBlock(args)],
|
|
305
|
+
}),
|
|
306
|
+
];
|
|
307
|
+
}
|
|
308
|
+
else if (Array.isArray(args) && args.length > 0) {
|
|
309
|
+
const firstElement = args[0];
|
|
310
|
+
// Check if it's Message[] or MessageData[]
|
|
311
|
+
if ('role' in firstElement && typeof firstElement.role === 'string') {
|
|
312
|
+
// Check if it's a Message instance or MessageData
|
|
313
|
+
if (firstElement instanceof Message) {
|
|
314
|
+
// Message[] input: return all messages
|
|
315
|
+
return args;
|
|
316
|
+
}
|
|
317
|
+
else {
|
|
318
|
+
// MessageData[] input: convert to Message[]
|
|
319
|
+
return args.map((data) => Message.fromMessageData(data));
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
// It's ContentBlock[] or ContentBlockData[]
|
|
324
|
+
// Check if it's ContentBlock instances or ContentBlockData
|
|
325
|
+
let contentBlocks;
|
|
326
|
+
if ('type' in firstElement && typeof firstElement.type === 'string') {
|
|
327
|
+
// ContentBlock[] input: use as-is
|
|
328
|
+
contentBlocks = args;
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
// ContentBlockData[] input: convert using helper function
|
|
332
|
+
contentBlocks = args.map(contentBlockFromData);
|
|
333
|
+
}
|
|
334
|
+
return [
|
|
335
|
+
new Message({
|
|
336
|
+
role: 'user',
|
|
337
|
+
content: contentBlocks,
|
|
338
|
+
}),
|
|
339
|
+
];
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
// undefined or empty array: no messages to append
|
|
344
|
+
return [];
|
|
345
|
+
}
|
|
283
346
|
/**
|
|
284
347
|
* Invokes the model provider and streams all events.
|
|
285
348
|
*
|
|
@@ -287,17 +350,15 @@ export class Agent {
|
|
|
287
350
|
* @returns Object containing the assistant message and stop reason
|
|
288
351
|
*/
|
|
289
352
|
async *invokeModel(args) {
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
content: [new TextBlock(args)],
|
|
295
|
-
}));
|
|
353
|
+
// Normalize input and append messages to conversation
|
|
354
|
+
const messagesToAppend = this._normalizeInput(args);
|
|
355
|
+
for (const message of messagesToAppend) {
|
|
356
|
+
yield await this._appendMessage(message);
|
|
296
357
|
}
|
|
297
358
|
const toolSpecs = this._toolRegistry.values().map((tool) => tool.toolSpec);
|
|
298
359
|
const streamOptions = { toolSpecs };
|
|
299
|
-
if (this.
|
|
300
|
-
streamOptions.systemPrompt = this.
|
|
360
|
+
if (this.systemPrompt !== undefined) {
|
|
361
|
+
streamOptions.systemPrompt = this.systemPrompt;
|
|
301
362
|
}
|
|
302
363
|
yield new BeforeModelCallEvent({ agent: this });
|
|
303
364
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { beforeEach, describe, expect, it } from 'vitest';
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
2
|
import { HookRegistryImplementation } from '../registry.js';
|
|
3
3
|
import { AfterInvocationEvent, BeforeInvocationEvent } from '../events.js';
|
|
4
4
|
import { Agent } from '../../agent/agent.js';
|
|
@@ -11,55 +11,36 @@ describe('HookRegistryImplementation', () => {
|
|
|
11
11
|
});
|
|
12
12
|
describe('addCallback', () => {
|
|
13
13
|
it('registers callback for event type', async () => {
|
|
14
|
-
|
|
15
|
-
const callback = () => {
|
|
16
|
-
called = true;
|
|
17
|
-
};
|
|
14
|
+
const callback = vi.fn();
|
|
18
15
|
registry.addCallback(BeforeInvocationEvent, callback);
|
|
19
16
|
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
20
|
-
expect(
|
|
17
|
+
expect(callback).toHaveBeenCalledOnce();
|
|
21
18
|
});
|
|
22
19
|
it('registers multiple callbacks for same event type', async () => {
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
callOrder.push(1);
|
|
26
|
-
};
|
|
27
|
-
const callback2 = () => {
|
|
28
|
-
callOrder.push(2);
|
|
29
|
-
};
|
|
20
|
+
const callback1 = vi.fn();
|
|
21
|
+
const callback2 = vi.fn();
|
|
30
22
|
registry.addCallback(BeforeInvocationEvent, callback1);
|
|
31
23
|
registry.addCallback(BeforeInvocationEvent, callback2);
|
|
32
24
|
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
33
|
-
expect(
|
|
25
|
+
expect(callback1).toHaveBeenCalledOnce();
|
|
26
|
+
expect(callback2).toHaveBeenCalledOnce();
|
|
34
27
|
});
|
|
35
28
|
it('registers callbacks for different event types separately', async () => {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const beforeCallback = () => {
|
|
39
|
-
beforeCalled = true;
|
|
40
|
-
};
|
|
41
|
-
const afterCallback = () => {
|
|
42
|
-
afterCalled = true;
|
|
43
|
-
};
|
|
29
|
+
const beforeCallback = vi.fn();
|
|
30
|
+
const afterCallback = vi.fn();
|
|
44
31
|
registry.addCallback(BeforeInvocationEvent, beforeCallback);
|
|
45
32
|
registry.addCallback(AfterInvocationEvent, afterCallback);
|
|
46
33
|
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
47
|
-
expect(
|
|
48
|
-
expect(
|
|
34
|
+
expect(beforeCallback).toHaveBeenCalledOnce();
|
|
35
|
+
expect(afterCallback).not.toHaveBeenCalled();
|
|
49
36
|
await registry.invokeCallbacks(new AfterInvocationEvent({ agent: mockAgent }));
|
|
50
|
-
expect(
|
|
37
|
+
expect(afterCallback).toHaveBeenCalledOnce();
|
|
51
38
|
});
|
|
52
39
|
});
|
|
53
40
|
describe('addHook', () => {
|
|
54
41
|
it('registers all callbacks from provider', async () => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const beforeCallback = () => {
|
|
58
|
-
beforeCalled = true;
|
|
59
|
-
};
|
|
60
|
-
const afterCallback = () => {
|
|
61
|
-
afterCalled = true;
|
|
62
|
-
};
|
|
42
|
+
const beforeCallback = vi.fn();
|
|
43
|
+
const afterCallback = vi.fn();
|
|
63
44
|
const provider = {
|
|
64
45
|
registerCallbacks: (reg) => {
|
|
65
46
|
reg.addCallback(BeforeInvocationEvent, beforeCallback);
|
|
@@ -68,20 +49,35 @@ describe('HookRegistryImplementation', () => {
|
|
|
68
49
|
};
|
|
69
50
|
registry.addHook(provider);
|
|
70
51
|
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
71
|
-
expect(
|
|
52
|
+
expect(beforeCallback).toHaveBeenCalledOnce();
|
|
72
53
|
await registry.invokeCallbacks(new AfterInvocationEvent({ agent: mockAgent }));
|
|
73
|
-
expect(
|
|
54
|
+
expect(afterCallback).toHaveBeenCalledOnce();
|
|
55
|
+
});
|
|
56
|
+
it('clears current provider even if registerCallbacks throws', () => {
|
|
57
|
+
const provider = {
|
|
58
|
+
registerCallbacks: () => {
|
|
59
|
+
throw new Error('Provider failed');
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
expect(() => registry.addHook(provider)).toThrow('Provider failed');
|
|
63
|
+
// Verify _currentProvider is cleared by registering another provider successfully
|
|
64
|
+
const workingProvider = {
|
|
65
|
+
registerCallbacks: (reg) => {
|
|
66
|
+
reg.addCallback(BeforeInvocationEvent, vi.fn());
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
expect(() => registry.addHook(workingProvider)).not.toThrow();
|
|
74
70
|
});
|
|
75
71
|
});
|
|
76
72
|
describe('invokeCallbacks', () => {
|
|
77
73
|
it('calls registered callbacks in order', async () => {
|
|
78
74
|
const callOrder = [];
|
|
79
|
-
const callback1 = () => {
|
|
75
|
+
const callback1 = vi.fn(() => {
|
|
80
76
|
callOrder.push(1);
|
|
81
|
-
};
|
|
82
|
-
const callback2 = () => {
|
|
77
|
+
});
|
|
78
|
+
const callback2 = vi.fn(() => {
|
|
83
79
|
callOrder.push(2);
|
|
84
|
-
};
|
|
80
|
+
});
|
|
85
81
|
registry.addCallback(BeforeInvocationEvent, callback1);
|
|
86
82
|
registry.addCallback(BeforeInvocationEvent, callback2);
|
|
87
83
|
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
@@ -89,12 +85,12 @@ describe('HookRegistryImplementation', () => {
|
|
|
89
85
|
});
|
|
90
86
|
it('reverses callback order for After events', async () => {
|
|
91
87
|
const callOrder = [];
|
|
92
|
-
const callback1 = () => {
|
|
88
|
+
const callback1 = vi.fn(() => {
|
|
93
89
|
callOrder.push(1);
|
|
94
|
-
};
|
|
95
|
-
const callback2 = () => {
|
|
90
|
+
});
|
|
91
|
+
const callback2 = vi.fn(() => {
|
|
96
92
|
callOrder.push(2);
|
|
97
|
-
};
|
|
93
|
+
});
|
|
98
94
|
registry.addCallback(AfterInvocationEvent, callback1);
|
|
99
95
|
registry.addCallback(AfterInvocationEvent, callback2);
|
|
100
96
|
await registry.invokeCallbacks(new AfterInvocationEvent({ agent: mockAgent }));
|
|
@@ -102,43 +98,40 @@ describe('HookRegistryImplementation', () => {
|
|
|
102
98
|
});
|
|
103
99
|
it('awaits async callbacks', async () => {
|
|
104
100
|
let completed = false;
|
|
105
|
-
const callback = async () => {
|
|
101
|
+
const callback = vi.fn(async () => {
|
|
106
102
|
await new Promise((resolve) => globalThis.setTimeout(resolve, 10));
|
|
107
103
|
completed = true;
|
|
108
|
-
};
|
|
104
|
+
});
|
|
109
105
|
registry.addCallback(BeforeInvocationEvent, callback);
|
|
110
106
|
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
111
107
|
expect(completed).toBe(true);
|
|
112
108
|
});
|
|
113
109
|
it('propagates callback errors', async () => {
|
|
114
|
-
const callback = () => {
|
|
110
|
+
const callback = vi.fn(() => {
|
|
115
111
|
throw new Error('Hook failed');
|
|
116
|
-
};
|
|
112
|
+
});
|
|
117
113
|
registry.addCallback(BeforeInvocationEvent, callback);
|
|
118
114
|
await expect(registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }))).rejects.toThrow('Hook failed');
|
|
119
115
|
});
|
|
120
116
|
it('stops execution on first error', async () => {
|
|
121
|
-
|
|
122
|
-
const callback1 = () => {
|
|
117
|
+
const callback1 = vi.fn(() => {
|
|
123
118
|
throw new Error('First callback failed');
|
|
124
|
-
};
|
|
125
|
-
const callback2 = ()
|
|
126
|
-
secondCallbackCalled = true;
|
|
127
|
-
};
|
|
119
|
+
});
|
|
120
|
+
const callback2 = vi.fn();
|
|
128
121
|
registry.addCallback(BeforeInvocationEvent, callback1);
|
|
129
122
|
registry.addCallback(BeforeInvocationEvent, callback2);
|
|
130
123
|
await expect(registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }))).rejects.toThrow('First callback failed');
|
|
131
|
-
expect(
|
|
124
|
+
expect(callback2).not.toHaveBeenCalled();
|
|
132
125
|
});
|
|
133
126
|
it('handles mixed sync and async callbacks', async () => {
|
|
134
127
|
const callOrder = [];
|
|
135
|
-
const syncCallback = () => {
|
|
128
|
+
const syncCallback = vi.fn(() => {
|
|
136
129
|
callOrder.push('sync');
|
|
137
|
-
};
|
|
138
|
-
const asyncCallback = async () => {
|
|
130
|
+
});
|
|
131
|
+
const asyncCallback = vi.fn(async () => {
|
|
139
132
|
await new Promise((resolve) => globalThis.globalThis.setTimeout(resolve, 10));
|
|
140
133
|
callOrder.push('async');
|
|
141
|
-
};
|
|
134
|
+
});
|
|
142
135
|
registry.addCallback(BeforeInvocationEvent, syncCallback);
|
|
143
136
|
registry.addCallback(BeforeInvocationEvent, asyncCallback);
|
|
144
137
|
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
@@ -150,5 +143,163 @@ describe('HookRegistryImplementation', () => {
|
|
|
150
143
|
expect(result).toBe(event);
|
|
151
144
|
});
|
|
152
145
|
});
|
|
146
|
+
describe('addCallback cleanup function', () => {
|
|
147
|
+
it('returns cleanup function that removes the callback', async () => {
|
|
148
|
+
const callback = vi.fn();
|
|
149
|
+
const cleanup = registry.addCallback(BeforeInvocationEvent, callback);
|
|
150
|
+
cleanup();
|
|
151
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
152
|
+
expect(callback).not.toHaveBeenCalled();
|
|
153
|
+
});
|
|
154
|
+
it('cleanup function is idempotent', async () => {
|
|
155
|
+
const callback = vi.fn();
|
|
156
|
+
const cleanup = registry.addCallback(BeforeInvocationEvent, callback);
|
|
157
|
+
cleanup();
|
|
158
|
+
cleanup();
|
|
159
|
+
cleanup();
|
|
160
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
161
|
+
expect(callback).not.toHaveBeenCalled();
|
|
162
|
+
});
|
|
163
|
+
it('cleanup function does not affect other callbacks', async () => {
|
|
164
|
+
const callback1 = vi.fn();
|
|
165
|
+
const callback2 = vi.fn();
|
|
166
|
+
const cleanup1 = registry.addCallback(BeforeInvocationEvent, callback1);
|
|
167
|
+
registry.addCallback(BeforeInvocationEvent, callback2);
|
|
168
|
+
cleanup1();
|
|
169
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
170
|
+
expect(callback1).not.toHaveBeenCalled();
|
|
171
|
+
expect(callback2).toHaveBeenCalledOnce();
|
|
172
|
+
});
|
|
173
|
+
it('cleanup function works with callbacks registered via provider', async () => {
|
|
174
|
+
const callback = vi.fn();
|
|
175
|
+
const provider = {
|
|
176
|
+
registerCallbacks: (reg) => {
|
|
177
|
+
reg.addCallback(BeforeInvocationEvent, callback);
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
registry.addHook(provider);
|
|
181
|
+
registry.removeHook(provider);
|
|
182
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
183
|
+
expect(callback).not.toHaveBeenCalled();
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
describe('removeHook', () => {
|
|
187
|
+
it('removes all callbacks registered by provider', async () => {
|
|
188
|
+
const beforeCallback = vi.fn();
|
|
189
|
+
const afterCallback = vi.fn();
|
|
190
|
+
const provider = {
|
|
191
|
+
registerCallbacks: (reg) => {
|
|
192
|
+
reg.addCallback(BeforeInvocationEvent, beforeCallback);
|
|
193
|
+
reg.addCallback(AfterInvocationEvent, afterCallback);
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
registry.addHook(provider);
|
|
197
|
+
registry.removeHook(provider);
|
|
198
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
199
|
+
await registry.invokeCallbacks(new AfterInvocationEvent({ agent: mockAgent }));
|
|
200
|
+
expect(beforeCallback).not.toHaveBeenCalled();
|
|
201
|
+
expect(afterCallback).not.toHaveBeenCalled();
|
|
202
|
+
});
|
|
203
|
+
it('removes all instances when provider registered multiple times', async () => {
|
|
204
|
+
const callback = vi.fn();
|
|
205
|
+
const provider = {
|
|
206
|
+
registerCallbacks: (reg) => {
|
|
207
|
+
reg.addCallback(BeforeInvocationEvent, callback);
|
|
208
|
+
},
|
|
209
|
+
};
|
|
210
|
+
registry.addHook(provider);
|
|
211
|
+
registry.addHook(provider);
|
|
212
|
+
registry.removeHook(provider);
|
|
213
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
214
|
+
expect(callback).not.toHaveBeenCalled();
|
|
215
|
+
});
|
|
216
|
+
it('is no-op when called with non-existent provider', async () => {
|
|
217
|
+
const callback = vi.fn();
|
|
218
|
+
const provider1 = {
|
|
219
|
+
registerCallbacks: (reg) => {
|
|
220
|
+
reg.addCallback(BeforeInvocationEvent, callback);
|
|
221
|
+
},
|
|
222
|
+
};
|
|
223
|
+
const provider2 = {
|
|
224
|
+
registerCallbacks: () => { },
|
|
225
|
+
};
|
|
226
|
+
registry.addHook(provider1);
|
|
227
|
+
registry.removeHook(provider2);
|
|
228
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
229
|
+
expect(callback).toHaveBeenCalledOnce();
|
|
230
|
+
});
|
|
231
|
+
it('does not affect callbacks from other providers', async () => {
|
|
232
|
+
const callback1 = vi.fn();
|
|
233
|
+
const callback2 = vi.fn();
|
|
234
|
+
const provider1 = {
|
|
235
|
+
registerCallbacks: (reg) => {
|
|
236
|
+
reg.addCallback(BeforeInvocationEvent, callback1);
|
|
237
|
+
},
|
|
238
|
+
};
|
|
239
|
+
const provider2 = {
|
|
240
|
+
registerCallbacks: (reg) => {
|
|
241
|
+
reg.addCallback(BeforeInvocationEvent, callback2);
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
registry.addHook(provider1);
|
|
245
|
+
registry.addHook(provider2);
|
|
246
|
+
registry.removeHook(provider1);
|
|
247
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
248
|
+
expect(callback1).not.toHaveBeenCalled();
|
|
249
|
+
expect(callback2).toHaveBeenCalledOnce();
|
|
250
|
+
});
|
|
251
|
+
it('does not affect callbacks registered without provider', async () => {
|
|
252
|
+
const directCallback = vi.fn();
|
|
253
|
+
const providerCallback = vi.fn();
|
|
254
|
+
const provider = {
|
|
255
|
+
registerCallbacks: (reg) => {
|
|
256
|
+
reg.addCallback(BeforeInvocationEvent, providerCallback);
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
registry.addCallback(BeforeInvocationEvent, directCallback);
|
|
260
|
+
registry.addHook(provider);
|
|
261
|
+
registry.removeHook(provider);
|
|
262
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
263
|
+
expect(directCallback).toHaveBeenCalledOnce();
|
|
264
|
+
expect(providerCallback).not.toHaveBeenCalled();
|
|
265
|
+
});
|
|
266
|
+
it('allows provider to be added and removed multiple times', async () => {
|
|
267
|
+
const callback = vi.fn();
|
|
268
|
+
const provider = {
|
|
269
|
+
registerCallbacks: (reg) => {
|
|
270
|
+
reg.addCallback(BeforeInvocationEvent, callback);
|
|
271
|
+
},
|
|
272
|
+
};
|
|
273
|
+
registry.addHook(provider);
|
|
274
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
275
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
276
|
+
registry.removeHook(provider);
|
|
277
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
278
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
279
|
+
registry.addHook(provider);
|
|
280
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
281
|
+
expect(callback).toHaveBeenCalledTimes(2);
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
describe('cleanup function and removeHook work independently', () => {
|
|
285
|
+
it('cleanup function works after removeHook called', async () => {
|
|
286
|
+
const callback1 = vi.fn();
|
|
287
|
+
const callback2 = vi.fn();
|
|
288
|
+
const provider = {
|
|
289
|
+
registerCallbacks: (reg) => {
|
|
290
|
+
reg.addCallback(BeforeInvocationEvent, callback1);
|
|
291
|
+
reg.addCallback(BeforeInvocationEvent, callback2);
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
registry.addHook(provider);
|
|
295
|
+
registry.removeHook(provider);
|
|
296
|
+
const cleanup = registry.addCallback(BeforeInvocationEvent, callback1);
|
|
297
|
+
registry.addCallback(BeforeInvocationEvent, callback2);
|
|
298
|
+
cleanup();
|
|
299
|
+
await registry.invokeCallbacks(new BeforeInvocationEvent({ agent: mockAgent }));
|
|
300
|
+
expect(callback1).not.toHaveBeenCalled();
|
|
301
|
+
expect(callback2).toHaveBeenCalledOnce();
|
|
302
|
+
});
|
|
303
|
+
});
|
|
153
304
|
});
|
|
154
305
|
//# sourceMappingURL=registry.test.js.map
|