@strands-agents/sdk 1.3.0 → 1.4.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 +13 -13
- package/dist/src/__fixtures__/test-sandbox.node.d.ts +15 -0
- package/dist/src/__fixtures__/test-sandbox.node.d.ts.map +1 -0
- package/dist/src/__fixtures__/test-sandbox.node.js +22 -0
- package/dist/src/__fixtures__/test-sandbox.node.js.map +1 -0
- package/dist/src/__tests__/mcp.test.js +14 -14
- package/dist/src/__tests__/mcp.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.test.js +195 -0
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/__tests__/tool-caller.test.d.ts +2 -0
- package/dist/src/agent/__tests__/tool-caller.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/tool-caller.test.js +459 -0
- package/dist/src/agent/__tests__/tool-caller.test.js.map +1 -0
- package/dist/src/agent/agent.d.ts +62 -2
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +122 -66
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/agent/tool-caller.d.ts +149 -0
- package/dist/src/agent/tool-caller.d.ts.map +1 -0
- package/dist/src/agent/tool-caller.js +198 -0
- package/dist/src/agent/tool-caller.js.map +1 -0
- package/dist/src/errors.d.ts +17 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +21 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +8 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/interventions/handler.d.ts +1 -2
- package/dist/src/interventions/handler.d.ts.map +1 -1
- package/dist/src/interventions/registry.d.ts +2 -0
- package/dist/src/interventions/registry.d.ts.map +1 -1
- package/dist/src/interventions/registry.js +4 -0
- package/dist/src/interventions/registry.js.map +1 -1
- package/dist/src/mcp.d.ts +20 -15
- package/dist/src/mcp.d.ts.map +1 -1
- package/dist/src/mcp.js +15 -8
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/models/__tests__/anthropic.test.js +21 -6
- package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +142 -0
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/anthropic.d.ts.map +1 -1
- package/dist/src/models/anthropic.js +5 -2
- package/dist/src/models/anthropic.js.map +1 -1
- package/dist/src/models/bedrock.d.ts +26 -1
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +22 -4
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/openai/__tests__/chat.test.js +2 -10
- package/dist/src/models/openai/__tests__/chat.test.js.map +1 -1
- package/dist/src/models/openai/__tests__/errors.test.d.ts +2 -0
- package/dist/src/models/openai/__tests__/errors.test.d.ts.map +1 -0
- package/dist/src/models/openai/__tests__/errors.test.js +30 -0
- package/dist/src/models/openai/__tests__/errors.test.js.map +1 -0
- package/dist/src/models/openai/__tests__/responses.test.js +0 -19
- 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 +5 -3
- package/dist/src/models/openai/errors.js.map +1 -1
- package/dist/src/multiagent/__tests__/nodes.test.js +50 -0
- package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
- package/dist/src/multiagent/nodes.d.ts +23 -2
- package/dist/src/multiagent/nodes.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.js +18 -4
- package/dist/src/multiagent/nodes.js.map +1 -1
- package/dist/src/registry/__tests__/tool-registry.test.js +50 -1
- package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -1
- package/dist/src/registry/tool-registry.d.ts +13 -0
- package/dist/src/registry/tool-registry.d.ts.map +1 -1
- package/dist/src/registry/tool-registry.js +35 -1
- package/dist/src/registry/tool-registry.js.map +1 -1
- package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts +2 -0
- package/dist/src/sandbox/__tests__/posix-shell.test.node.d.ts.map +1 -0
- package/dist/src/sandbox/__tests__/posix-shell.test.node.js +252 -0
- package/dist/src/sandbox/__tests__/posix-shell.test.node.js.map +1 -0
- package/dist/src/sandbox/base.d.ts +138 -0
- package/dist/src/sandbox/base.d.ts.map +1 -0
- package/dist/src/sandbox/base.js +84 -0
- package/dist/src/sandbox/base.js.map +1 -0
- package/dist/src/sandbox/constants.d.ts +7 -0
- package/dist/src/sandbox/constants.d.ts.map +1 -0
- package/dist/src/sandbox/constants.js +7 -0
- package/dist/src/sandbox/constants.js.map +1 -0
- package/dist/src/sandbox/posix-shell.d.ts +32 -0
- package/dist/src/sandbox/posix-shell.d.ts.map +1 -0
- package/dist/src/sandbox/posix-shell.js +78 -0
- package/dist/src/sandbox/posix-shell.js.map +1 -0
- package/dist/src/sandbox/stream-process.d.ts +32 -0
- package/dist/src/sandbox/stream-process.d.ts.map +1 -0
- package/dist/src/sandbox/stream-process.js +160 -0
- package/dist/src/sandbox/stream-process.js.map +1 -0
- package/dist/src/sandbox/types.d.ts +57 -0
- package/dist/src/sandbox/types.d.ts.map +1 -0
- package/dist/src/sandbox/types.js +8 -0
- package/dist/src/sandbox/types.js.map +1 -0
- package/dist/src/telemetry/__tests__/meter.test.js +11 -0
- package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
- package/dist/src/telemetry/meter.d.ts +10 -6
- package/dist/src/telemetry/meter.d.ts.map +1 -1
- package/dist/src/telemetry/meter.js +16 -3
- package/dist/src/telemetry/meter.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/__tests__/messages.test.js +28 -0
- package/dist/src/types/__tests__/messages.test.js.map +1 -1
- package/dist/src/types/agent.d.ts +51 -0
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/lifecycle-observer.d.ts +18 -0
- package/dist/src/types/lifecycle-observer.d.ts.map +1 -0
- package/dist/src/types/lifecycle-observer.js +2 -0
- package/dist/src/types/lifecycle-observer.js.map +1 -0
- package/dist/src/types/messages.d.ts +18 -2
- package/dist/src/types/messages.d.ts.map +1 -1
- package/dist/src/types/messages.js +9 -0
- package/dist/src/types/messages.js.map +1 -1
- package/dist/src/utils/shell-quote.d.ts +12 -0
- package/dist/src/utils/shell-quote.d.ts.map +1 -0
- package/dist/src/utils/shell-quote.js +14 -0
- package/dist/src/utils/shell-quote.js.map +1 -0
- package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts +2 -0
- package/dist/src/vended-interventions/hitl/__tests__/hitl.test.d.ts.map +1 -0
- package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js +358 -0
- package/dist/src/vended-interventions/hitl/__tests__/hitl.test.js.map +1 -0
- package/dist/src/vended-interventions/hitl/hitl.d.ts +115 -0
- package/dist/src/vended-interventions/hitl/hitl.d.ts.map +1 -0
- package/dist/src/vended-interventions/hitl/hitl.js +138 -0
- package/dist/src/vended-interventions/hitl/hitl.js.map +1 -0
- package/dist/src/vended-interventions/hitl/index.d.ts +24 -0
- package/dist/src/vended-interventions/hitl/index.d.ts.map +1 -0
- package/dist/src/vended-interventions/hitl/index.js +23 -0
- package/dist/src/vended-interventions/hitl/index.js.map +1 -0
- package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts +2 -0
- package/dist/src/vended-interventions/steering/__tests__/handler.test.d.ts.map +1 -0
- package/dist/src/vended-interventions/steering/__tests__/handler.test.js +163 -0
- package/dist/src/vended-interventions/steering/__tests__/handler.test.js.map +1 -0
- package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts +2 -0
- package/dist/src/vended-interventions/steering/__tests__/llm.test.d.ts.map +1 -0
- package/dist/src/vended-interventions/steering/__tests__/llm.test.js +60 -0
- package/dist/src/vended-interventions/steering/__tests__/llm.test.js.map +1 -0
- package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts +2 -0
- package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.d.ts.map +1 -0
- package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js +94 -0
- package/dist/src/vended-interventions/steering/__tests__/tool-ledger.test.js.map +1 -0
- package/dist/src/vended-interventions/steering/handlers/handler.d.ts +64 -0
- package/dist/src/vended-interventions/steering/handlers/handler.d.ts.map +1 -0
- package/dist/src/vended-interventions/steering/handlers/handler.js +71 -0
- package/dist/src/vended-interventions/steering/handlers/handler.js.map +1 -0
- package/dist/src/vended-interventions/steering/handlers/llm.d.ts +72 -0
- package/dist/src/vended-interventions/steering/handlers/llm.d.ts.map +1 -0
- package/dist/src/vended-interventions/steering/handlers/llm.js +177 -0
- package/dist/src/vended-interventions/steering/handlers/llm.js.map +1 -0
- package/dist/src/vended-interventions/steering/index.d.ts +31 -0
- package/dist/src/vended-interventions/steering/index.d.ts.map +1 -0
- package/dist/src/vended-interventions/steering/index.js +32 -0
- package/dist/src/vended-interventions/steering/index.js.map +1 -0
- package/dist/src/vended-interventions/steering/providers/context-provider.d.ts +55 -0
- package/dist/src/vended-interventions/steering/providers/context-provider.d.ts.map +1 -0
- package/dist/src/vended-interventions/steering/providers/context-provider.js +8 -0
- package/dist/src/vended-interventions/steering/providers/context-provider.js.map +1 -0
- package/dist/src/vended-interventions/steering/providers/tool-ledger.d.ts +49 -0
- package/dist/src/vended-interventions/steering/providers/tool-ledger.d.ts.map +1 -0
- package/dist/src/vended-interventions/steering/providers/tool-ledger.js +75 -0
- package/dist/src/vended-interventions/steering/providers/tool-ledger.js.map +1 -0
- package/dist/src/vended-plugins/index.d.ts +11 -0
- package/dist/src/vended-plugins/index.d.ts.map +1 -0
- package/dist/src/vended-plugins/index.js +11 -0
- package/dist/src/vended-plugins/index.js.map +1 -0
- package/dist/src/vended-tools/index.d.ts +17 -0
- package/dist/src/vended-tools/index.d.ts.map +1 -0
- package/dist/src/vended-tools/index.js +17 -0
- package/dist/src/vended-tools/index.js.map +1 -0
- package/package.json +31 -15
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { Agent } from '../agent.js';
|
|
3
|
+
import { MockMessageModel } from '../../__fixtures__/mock-message-model.js';
|
|
4
|
+
import { createMockTool } from '../../__fixtures__/tool-helpers.js';
|
|
5
|
+
import { Message, ToolResultBlock, TextBlock, ToolUseBlock } from '../../types/messages.js';
|
|
6
|
+
import { ConcurrentInvocationError, ToolNotFoundError } from '../../errors.js';
|
|
7
|
+
import { ToolStreamEvent } from '../../tools/tool.js';
|
|
8
|
+
describe('ToolCaller', () => {
|
|
9
|
+
describe('basic tool calling via .invoke()', () => {
|
|
10
|
+
it('calls a tool by name and returns the result', async () => {
|
|
11
|
+
const tool = createMockTool('calculator', () => new ToolResultBlock({
|
|
12
|
+
toolUseId: 'test-id',
|
|
13
|
+
status: 'success',
|
|
14
|
+
content: [new TextBlock('8')],
|
|
15
|
+
}));
|
|
16
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
17
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
18
|
+
const result = await agent.tool.calculator.invoke({ a: 5, b: 3 });
|
|
19
|
+
expect(result).toStrictEqual(new ToolResultBlock({
|
|
20
|
+
toolUseId: 'test-id',
|
|
21
|
+
status: 'success',
|
|
22
|
+
content: [new TextBlock('8')],
|
|
23
|
+
}));
|
|
24
|
+
});
|
|
25
|
+
it('calls a tool with empty input when no input provided', async () => {
|
|
26
|
+
const tool = createMockTool('ping', () => new ToolResultBlock({
|
|
27
|
+
toolUseId: 'test-id',
|
|
28
|
+
status: 'success',
|
|
29
|
+
content: [new TextBlock('pong')],
|
|
30
|
+
}));
|
|
31
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
32
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
33
|
+
const result = await agent.tool.ping.invoke();
|
|
34
|
+
expect(result).toStrictEqual(new ToolResultBlock({
|
|
35
|
+
toolUseId: 'test-id',
|
|
36
|
+
status: 'success',
|
|
37
|
+
content: [new TextBlock('pong')],
|
|
38
|
+
}));
|
|
39
|
+
});
|
|
40
|
+
it('throws when tool is not found', async () => {
|
|
41
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
42
|
+
const agent = new Agent({ model, tools: [] });
|
|
43
|
+
await expect(agent.tool.nonexistent.invoke()).rejects.toThrow(ToolNotFoundError);
|
|
44
|
+
await expect(agent.tool.nonexistent.invoke()).rejects.toThrow("Tool 'nonexistent' not found");
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe('underscore-to-hyphen normalization', () => {
|
|
48
|
+
it('resolves underscore names to hyphenated tool names', async () => {
|
|
49
|
+
const tool = createMockTool('my-tool', () => new ToolResultBlock({
|
|
50
|
+
toolUseId: 'test-id',
|
|
51
|
+
status: 'success',
|
|
52
|
+
content: [new TextBlock('ok')],
|
|
53
|
+
}));
|
|
54
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
55
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
56
|
+
const result = await agent.tool.my_tool.invoke();
|
|
57
|
+
expect(result.status).toBe('success');
|
|
58
|
+
});
|
|
59
|
+
it('prefers exact name match over normalized match', async () => {
|
|
60
|
+
const exactTool = createMockTool('my_tool', () => new ToolResultBlock({
|
|
61
|
+
toolUseId: 'test-id',
|
|
62
|
+
status: 'success',
|
|
63
|
+
content: [new TextBlock('exact')],
|
|
64
|
+
}));
|
|
65
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
66
|
+
const agent = new Agent({ model, tools: [exactTool] });
|
|
67
|
+
const result = await agent.tool.my_tool.invoke();
|
|
68
|
+
expect(result).toStrictEqual(new ToolResultBlock({
|
|
69
|
+
toolUseId: 'test-id',
|
|
70
|
+
status: 'success',
|
|
71
|
+
content: [new TextBlock('exact')],
|
|
72
|
+
}));
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('case-insensitive name resolution', () => {
|
|
76
|
+
it('resolves tool names case-insensitively', async () => {
|
|
77
|
+
const tool = createMockTool('MyTool', () => new ToolResultBlock({
|
|
78
|
+
toolUseId: 'test-id',
|
|
79
|
+
status: 'success',
|
|
80
|
+
content: [new TextBlock('ok')],
|
|
81
|
+
}));
|
|
82
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
83
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
84
|
+
const result = await agent.tool.mytool.invoke();
|
|
85
|
+
expect(result.status).toBe('success');
|
|
86
|
+
});
|
|
87
|
+
it('prefers exact match over case-insensitive match', async () => {
|
|
88
|
+
const exactTool = createMockTool('myTool', () => new ToolResultBlock({
|
|
89
|
+
toolUseId: 'test-id',
|
|
90
|
+
status: 'success',
|
|
91
|
+
content: [new TextBlock('exact')],
|
|
92
|
+
}));
|
|
93
|
+
const upperTool = createMockTool('MYTOOL', () => new ToolResultBlock({
|
|
94
|
+
toolUseId: 'test-id',
|
|
95
|
+
status: 'success',
|
|
96
|
+
content: [new TextBlock('upper')],
|
|
97
|
+
}));
|
|
98
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
99
|
+
const agent = new Agent({ model, tools: [exactTool, upperTool] });
|
|
100
|
+
const result = await agent.tool.myTool.invoke();
|
|
101
|
+
expect(result.content[0]).toStrictEqual(new TextBlock('exact'));
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe('message history recording', () => {
|
|
105
|
+
it('records tool call in message history by default', async () => {
|
|
106
|
+
const tool = createMockTool('calculator', () => new ToolResultBlock({
|
|
107
|
+
toolUseId: 'test-id',
|
|
108
|
+
status: 'success',
|
|
109
|
+
content: [new TextBlock('8')],
|
|
110
|
+
}));
|
|
111
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
112
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
113
|
+
await agent.tool.calculator.invoke({ a: 5, b: 3 });
|
|
114
|
+
// Per TESTING.md, prefer full-object assertions over per-field checks.
|
|
115
|
+
// toolUseId is non-deterministic (UUID), so use expect.stringMatching.
|
|
116
|
+
expect(agent.messages).toEqual([
|
|
117
|
+
new Message({
|
|
118
|
+
role: 'assistant',
|
|
119
|
+
content: [
|
|
120
|
+
new ToolUseBlock({
|
|
121
|
+
toolUseId: expect.stringMatching(/^tooluse_/),
|
|
122
|
+
name: 'calculator',
|
|
123
|
+
input: { a: 5, b: 3 },
|
|
124
|
+
}),
|
|
125
|
+
],
|
|
126
|
+
}),
|
|
127
|
+
new Message({
|
|
128
|
+
role: 'user',
|
|
129
|
+
content: [
|
|
130
|
+
new ToolResultBlock({
|
|
131
|
+
toolUseId: 'test-id',
|
|
132
|
+
status: 'success',
|
|
133
|
+
content: [new TextBlock('8')],
|
|
134
|
+
}),
|
|
135
|
+
],
|
|
136
|
+
}),
|
|
137
|
+
new Message({
|
|
138
|
+
role: 'assistant',
|
|
139
|
+
content: [new TextBlock('agent.tool.calculator was called.')],
|
|
140
|
+
}),
|
|
141
|
+
]);
|
|
142
|
+
});
|
|
143
|
+
it('does not record when recordDirectToolCall is false per-call', async () => {
|
|
144
|
+
const tool = createMockTool('calculator', () => new ToolResultBlock({
|
|
145
|
+
toolUseId: 'test-id',
|
|
146
|
+
status: 'success',
|
|
147
|
+
content: [new TextBlock('8')],
|
|
148
|
+
}));
|
|
149
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
150
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
151
|
+
await agent.tool.calculator.invoke({ a: 5, b: 3 }, { recordDirectToolCall: false });
|
|
152
|
+
expect(agent.messages).toHaveLength(0);
|
|
153
|
+
});
|
|
154
|
+
it('records when explicitly set to true per-call', async () => {
|
|
155
|
+
const tool = createMockTool('calculator', () => new ToolResultBlock({
|
|
156
|
+
toolUseId: 'test-id',
|
|
157
|
+
status: 'success',
|
|
158
|
+
content: [new TextBlock('8')],
|
|
159
|
+
}));
|
|
160
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
161
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
162
|
+
await agent.tool.calculator.invoke({ a: 5, b: 3 }, { recordDirectToolCall: true });
|
|
163
|
+
expect(agent.messages).toHaveLength(3);
|
|
164
|
+
});
|
|
165
|
+
it('records full input without filtering', async () => {
|
|
166
|
+
const tool = createMockTool('my-tool', () => new ToolResultBlock({
|
|
167
|
+
toolUseId: 'test-id',
|
|
168
|
+
status: 'success',
|
|
169
|
+
content: [new TextBlock('ok')],
|
|
170
|
+
}));
|
|
171
|
+
Object.defineProperty(tool, 'toolSpec', {
|
|
172
|
+
value: {
|
|
173
|
+
name: 'my-tool',
|
|
174
|
+
description: 'Tool with strict schema',
|
|
175
|
+
inputSchema: {
|
|
176
|
+
type: 'object',
|
|
177
|
+
properties: {
|
|
178
|
+
allowed: { type: 'string' },
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
184
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
185
|
+
await agent.tool.my_tool.invoke({ allowed: 'yes', extra: 'also-recorded' });
|
|
186
|
+
// Input is recorded as-is — no filtering
|
|
187
|
+
const recToolUseBlock = agent.messages[0].content[0];
|
|
188
|
+
expect(recToolUseBlock).toBeInstanceOf(ToolUseBlock);
|
|
189
|
+
expect(recToolUseBlock.input).toStrictEqual({ allowed: 'yes', extra: 'also-recorded' });
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
describe('concurrency protection', () => {
|
|
193
|
+
it('throws ConcurrentInvocationError when agent is invoking and recording is enabled', async () => {
|
|
194
|
+
const tool = createMockTool('slow-tool', () => new ToolResultBlock({
|
|
195
|
+
toolUseId: 'test-id',
|
|
196
|
+
status: 'success',
|
|
197
|
+
content: [new TextBlock('done')],
|
|
198
|
+
}));
|
|
199
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
200
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
201
|
+
// Simulate the agent being in the middle of an invocation by mocking isInvoking
|
|
202
|
+
Object.defineProperty(agent, 'isInvoking', { get: () => true });
|
|
203
|
+
await expect(agent.tool.slow_tool.invoke()).rejects.toThrow(ConcurrentInvocationError);
|
|
204
|
+
await expect(agent.tool.slow_tool.invoke()).rejects.toThrow('Direct tool call cannot be made while the agent is in the middle of an invocation');
|
|
205
|
+
});
|
|
206
|
+
it('allows direct tool call during invocation when recordDirectToolCall is false', async () => {
|
|
207
|
+
const tool = createMockTool('quick-tool', () => new ToolResultBlock({
|
|
208
|
+
toolUseId: 'test-id',
|
|
209
|
+
status: 'success',
|
|
210
|
+
content: [new TextBlock('ok')],
|
|
211
|
+
}));
|
|
212
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
213
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
214
|
+
// Simulate the agent being in the middle of an invocation
|
|
215
|
+
Object.defineProperty(agent, 'isInvoking', { get: () => true });
|
|
216
|
+
// Should NOT throw when recording is disabled
|
|
217
|
+
const result = await agent.tool.quick_tool.invoke({}, { recordDirectToolCall: false });
|
|
218
|
+
expect(result.status).toBe('success');
|
|
219
|
+
});
|
|
220
|
+
it('isInvoking is false on a fresh agent', () => {
|
|
221
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
222
|
+
const agent = new Agent({ model });
|
|
223
|
+
expect(agent.isInvoking).toBe(false);
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
describe('tool error handling', () => {
|
|
227
|
+
it('propagates errors when tool throws', async () => {
|
|
228
|
+
const throwingTool = createMockTool('thrower', () => {
|
|
229
|
+
throw new Error('Boom!');
|
|
230
|
+
});
|
|
231
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
232
|
+
const agent = new Agent({ model, tools: [throwingTool] });
|
|
233
|
+
await expect(agent.tool.thrower.invoke()).rejects.toThrow('Boom!');
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
describe('agent.tool accessor', () => {
|
|
237
|
+
it('is accessible as a property', () => {
|
|
238
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
239
|
+
const agent = new Agent({ model });
|
|
240
|
+
expect(agent.tool).toBeDefined();
|
|
241
|
+
});
|
|
242
|
+
it('returns same instance on multiple accesses', () => {
|
|
243
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
244
|
+
const agent = new Agent({ model });
|
|
245
|
+
expect(agent.tool).toBe(agent.tool);
|
|
246
|
+
});
|
|
247
|
+
it('returns a ToolHandle with invoke and stream methods', () => {
|
|
248
|
+
const tool = createMockTool('calculator', () => new ToolResultBlock({
|
|
249
|
+
toolUseId: 'test-id',
|
|
250
|
+
status: 'success',
|
|
251
|
+
content: [new TextBlock('ok')],
|
|
252
|
+
}));
|
|
253
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
254
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
255
|
+
const handle = agent.tool.calculator;
|
|
256
|
+
expect(typeof handle.invoke).toBe('function');
|
|
257
|
+
expect(typeof handle.stream).toBe('function');
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
describe('tool use ID generation', () => {
|
|
261
|
+
it('generates unique tool use IDs using crypto.randomUUID', async () => {
|
|
262
|
+
const tool = createMockTool('id-tool', () => new ToolResultBlock({
|
|
263
|
+
toolUseId: 'test-id',
|
|
264
|
+
status: 'success',
|
|
265
|
+
content: [new TextBlock('ok')],
|
|
266
|
+
}));
|
|
267
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
268
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
269
|
+
await agent.tool.id_tool.invoke();
|
|
270
|
+
await agent.tool.id_tool.invoke();
|
|
271
|
+
// Each call records 3 messages: [0]=assistant(toolUse), [1]=user(toolResult), [2]=assistant(ack)
|
|
272
|
+
// Second call: [3]=assistant(toolUse), [4]=user(toolResult), [5]=assistant(ack)
|
|
273
|
+
expect(agent.messages).toHaveLength(6);
|
|
274
|
+
const toolUse1 = agent.messages[0].content[0];
|
|
275
|
+
const toolUse2 = agent.messages[3].content[0];
|
|
276
|
+
// Verify both are ToolUseBlocks at the correct indices
|
|
277
|
+
expect(toolUse1).toBeInstanceOf(ToolUseBlock);
|
|
278
|
+
expect(toolUse2).toBeInstanceOf(ToolUseBlock);
|
|
279
|
+
// Verify IDs are unique and follow the expected format
|
|
280
|
+
expect(toolUse1.toolUseId).toMatch(/^tooluse_/);
|
|
281
|
+
expect(toolUse2.toolUseId).toMatch(/^tooluse_/);
|
|
282
|
+
expect(toolUse1.toolUseId).not.toBe(toolUse2.toolUseId);
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
describe('streaming via .stream()', () => {
|
|
286
|
+
it('yields intermediate events and returns final result', async () => {
|
|
287
|
+
const yields = [];
|
|
288
|
+
const streamingTool = {
|
|
289
|
+
name: 'streamer',
|
|
290
|
+
description: 'A tool that yields progress events',
|
|
291
|
+
toolSpec: {
|
|
292
|
+
name: 'streamer',
|
|
293
|
+
description: 'A tool that yields progress events',
|
|
294
|
+
inputSchema: { type: 'object', properties: {} },
|
|
295
|
+
},
|
|
296
|
+
async *stream() {
|
|
297
|
+
yields.push('first');
|
|
298
|
+
yield new ToolStreamEvent({ data: 'step 1' });
|
|
299
|
+
yields.push('second');
|
|
300
|
+
yield new ToolStreamEvent({ data: 'step 2' });
|
|
301
|
+
yields.push('third');
|
|
302
|
+
yield new ToolStreamEvent({ data: 'step 3' });
|
|
303
|
+
return new ToolResultBlock({
|
|
304
|
+
toolUseId: 'stream-id',
|
|
305
|
+
status: 'success',
|
|
306
|
+
content: [new TextBlock('complete')],
|
|
307
|
+
});
|
|
308
|
+
},
|
|
309
|
+
};
|
|
310
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
311
|
+
const agent = new Agent({ model, tools: [streamingTool] });
|
|
312
|
+
const events = [];
|
|
313
|
+
const gen = agent.tool.streamer.stream();
|
|
314
|
+
let result = await gen.next();
|
|
315
|
+
while (!result.done) {
|
|
316
|
+
events.push(result.value);
|
|
317
|
+
result = await gen.next();
|
|
318
|
+
}
|
|
319
|
+
const finalResult = result.value;
|
|
320
|
+
expect(finalResult.status).toBe('success');
|
|
321
|
+
expect(finalResult.content[0]).toStrictEqual(new TextBlock('complete'));
|
|
322
|
+
// Verify all yields were consumed (generator fully iterated)
|
|
323
|
+
expect(yields).toStrictEqual(['first', 'second', 'third']);
|
|
324
|
+
// Verify we received all 3 stream events
|
|
325
|
+
expect(events).toHaveLength(3);
|
|
326
|
+
});
|
|
327
|
+
it('invoke() also fully consumes multi-yield generator', async () => {
|
|
328
|
+
const yields = [];
|
|
329
|
+
const streamingTool = {
|
|
330
|
+
name: 'streamer',
|
|
331
|
+
description: 'A tool that yields progress events',
|
|
332
|
+
toolSpec: {
|
|
333
|
+
name: 'streamer',
|
|
334
|
+
description: 'A tool that yields progress events',
|
|
335
|
+
inputSchema: { type: 'object', properties: {} },
|
|
336
|
+
},
|
|
337
|
+
async *stream() {
|
|
338
|
+
yields.push('first');
|
|
339
|
+
yield new ToolStreamEvent({ data: 'step 1' });
|
|
340
|
+
yields.push('second');
|
|
341
|
+
yield new ToolStreamEvent({ data: 'step 2' });
|
|
342
|
+
yields.push('third');
|
|
343
|
+
yield new ToolStreamEvent({ data: 'step 3' });
|
|
344
|
+
return new ToolResultBlock({
|
|
345
|
+
toolUseId: 'stream-id',
|
|
346
|
+
status: 'success',
|
|
347
|
+
content: [new TextBlock('complete')],
|
|
348
|
+
});
|
|
349
|
+
},
|
|
350
|
+
};
|
|
351
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
352
|
+
const agent = new Agent({ model, tools: [streamingTool] });
|
|
353
|
+
const result = await agent.tool.streamer.invoke();
|
|
354
|
+
expect(result.status).toBe('success');
|
|
355
|
+
expect(result.content[0]).toStrictEqual(new TextBlock('complete'));
|
|
356
|
+
// Verify all yields were consumed even when using .invoke()
|
|
357
|
+
expect(yields).toStrictEqual(['first', 'second', 'third']);
|
|
358
|
+
});
|
|
359
|
+
});
|
|
360
|
+
describe('tool input passthrough', () => {
|
|
361
|
+
it('passes ALL parameters to tool execution', async () => {
|
|
362
|
+
let receivedInput = null;
|
|
363
|
+
const tool = createMockTool('capture-tool', () => new ToolResultBlock({
|
|
364
|
+
toolUseId: 'test-id',
|
|
365
|
+
status: 'success',
|
|
366
|
+
content: [new TextBlock('captured')],
|
|
367
|
+
}));
|
|
368
|
+
// Override stream to capture input
|
|
369
|
+
const originalStream = tool.stream.bind(tool);
|
|
370
|
+
tool.stream = function (context) {
|
|
371
|
+
receivedInput = context.toolUse.input;
|
|
372
|
+
return originalStream(context);
|
|
373
|
+
};
|
|
374
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
375
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
376
|
+
await agent.tool.capture_tool.invoke({ allowed: 'yes', extra: 'should-pass-through' });
|
|
377
|
+
// Tool receives ALL parameters
|
|
378
|
+
expect(receivedInput).toStrictEqual({ allowed: 'yes', extra: 'should-pass-through' });
|
|
379
|
+
});
|
|
380
|
+
});
|
|
381
|
+
describe('dynamically added tools', () => {
|
|
382
|
+
it('can call a tool that was added after agent creation', async () => {
|
|
383
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
384
|
+
const agent = new Agent({ model, tools: [] });
|
|
385
|
+
// Add tool after creation
|
|
386
|
+
const laterTool = createMockTool('later-tool', () => new ToolResultBlock({
|
|
387
|
+
toolUseId: 'test-id',
|
|
388
|
+
status: 'success',
|
|
389
|
+
content: [new TextBlock('dynamic')],
|
|
390
|
+
}));
|
|
391
|
+
agent.toolRegistry.add(laterTool);
|
|
392
|
+
const result = await agent.tool.later_tool.invoke();
|
|
393
|
+
expect(result.status).toBe('success');
|
|
394
|
+
expect(result.content[0]).toStrictEqual(new TextBlock('dynamic'));
|
|
395
|
+
});
|
|
396
|
+
});
|
|
397
|
+
});
|
|
398
|
+
describe('MessageAddedEvent hooks', () => {
|
|
399
|
+
it('fires MessageAddedEvent for each message recorded during direct tool call', async () => {
|
|
400
|
+
const { MessageAddedEvent } = await import('../../hooks/events.js');
|
|
401
|
+
const tool = createMockTool('calculator', () => new ToolResultBlock({
|
|
402
|
+
toolUseId: 'test-id',
|
|
403
|
+
status: 'success',
|
|
404
|
+
content: [new TextBlock('8')],
|
|
405
|
+
}));
|
|
406
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
407
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
408
|
+
const firedEvents = [];
|
|
409
|
+
agent.addHook(MessageAddedEvent, (event) => {
|
|
410
|
+
firedEvents.push(event);
|
|
411
|
+
});
|
|
412
|
+
await agent.tool.calculator.invoke({ a: 5, b: 3 });
|
|
413
|
+
// Should fire 3 MessageAddedEvents (one per recorded message).
|
|
414
|
+
// Use full-object assertions per TESTING.md.
|
|
415
|
+
expect(firedEvents).toHaveLength(3);
|
|
416
|
+
expect(firedEvents[0].message).toEqual(new Message({
|
|
417
|
+
role: 'assistant',
|
|
418
|
+
content: [
|
|
419
|
+
new ToolUseBlock({
|
|
420
|
+
toolUseId: expect.stringMatching(/^tooluse_/),
|
|
421
|
+
name: 'calculator',
|
|
422
|
+
input: { a: 5, b: 3 },
|
|
423
|
+
}),
|
|
424
|
+
],
|
|
425
|
+
}));
|
|
426
|
+
expect(firedEvents[1].message).toEqual(new Message({
|
|
427
|
+
role: 'user',
|
|
428
|
+
content: [
|
|
429
|
+
new ToolResultBlock({
|
|
430
|
+
toolUseId: 'test-id',
|
|
431
|
+
status: 'success',
|
|
432
|
+
content: [new TextBlock('8')],
|
|
433
|
+
}),
|
|
434
|
+
],
|
|
435
|
+
}));
|
|
436
|
+
expect(firedEvents[2].message).toEqual(new Message({
|
|
437
|
+
role: 'assistant',
|
|
438
|
+
content: [new TextBlock('agent.tool.calculator was called.')],
|
|
439
|
+
}));
|
|
440
|
+
});
|
|
441
|
+
it('does not fire MessageAddedEvent when recordDirectToolCall is false', async () => {
|
|
442
|
+
const { MessageAddedEvent } = await import('../../hooks/events.js');
|
|
443
|
+
const tool = createMockTool('calculator', () => new ToolResultBlock({
|
|
444
|
+
toolUseId: 'test-id',
|
|
445
|
+
status: 'success',
|
|
446
|
+
content: [new TextBlock('8')],
|
|
447
|
+
}));
|
|
448
|
+
const model = new MockMessageModel().addTurn({ type: 'textBlock', text: 'Hello' });
|
|
449
|
+
const agent = new Agent({ model, tools: [tool] });
|
|
450
|
+
const firedEvents = [];
|
|
451
|
+
agent.addHook(MessageAddedEvent, (event) => {
|
|
452
|
+
firedEvents.push(event);
|
|
453
|
+
});
|
|
454
|
+
await agent.tool.calculator.invoke({ a: 5, b: 3 }, { recordDirectToolCall: false });
|
|
455
|
+
// No events should fire when recording is disabled
|
|
456
|
+
expect(firedEvents).toHaveLength(0);
|
|
457
|
+
});
|
|
458
|
+
});
|
|
459
|
+
//# sourceMappingURL=tool-caller.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-caller.test.js","sourceRoot":"","sources":["../../../../src/agent/__tests__/tool-caller.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import { ConversationManager } from '../conversation-manager/conversation-manage
|
|
|
13
13
|
import type { HookableEventConstructor, HookCallback, HookCallbackOptions, HookCleanup } from '../hooks/types.js';
|
|
14
14
|
import { HookableEvent } from '../hooks/events.js';
|
|
15
15
|
import type { AgentAsToolOptions } from './agent-as-tool.js';
|
|
16
|
+
import type { ToolCallerProxy } from './tool-caller.js';
|
|
16
17
|
import type { z } from 'zod';
|
|
17
18
|
import { SessionManager } from '../session/session-manager.js';
|
|
18
19
|
import type { AttributeValue } from '@opentelemetry/api';
|
|
@@ -218,6 +219,8 @@ export declare class Agent implements LocalAgent, InvokableAgent {
|
|
|
218
219
|
_interruptState: InterruptState;
|
|
219
220
|
/** Strategy for executing tool calls from a single assistant turn. */
|
|
220
221
|
private readonly _toolExecutor;
|
|
222
|
+
/** Direct tool caller — created via {@link ToolCaller.create} factory. */
|
|
223
|
+
private readonly _toolCaller;
|
|
221
224
|
/**
|
|
222
225
|
* Creates an instance of the Agent.
|
|
223
226
|
* @param config - The configuration for the agent.
|
|
@@ -246,8 +249,8 @@ export declare class Agent implements LocalAgent, InvokableAgent {
|
|
|
246
249
|
addHook<T extends HookableEvent>(eventType: HookableEventConstructor<T>, callback: HookCallback<T>, options?: HookCallbackOptions): HookCleanup;
|
|
247
250
|
initialize(): Promise<void>;
|
|
248
251
|
/**
|
|
249
|
-
* Acquires
|
|
250
|
-
*
|
|
252
|
+
* Acquires the invocation lock. Throws if an invocation is already in progress.
|
|
253
|
+
* Callers must release via try/finally with `this._isInvoking = false`.
|
|
251
254
|
*/
|
|
252
255
|
private acquireLock;
|
|
253
256
|
/**
|
|
@@ -255,6 +258,33 @@ export declare class Agent implements LocalAgent, InvokableAgent {
|
|
|
255
258
|
* Called at cancellation checkpoints within the agent loop.
|
|
256
259
|
*/
|
|
257
260
|
private _throwIfCancelled;
|
|
261
|
+
/**
|
|
262
|
+
* Validates the per-invocation budget caps in {@link InvokeOptions.limits}.
|
|
263
|
+
* Called once at the top of `_stream` so bad inputs fail fast with a clear
|
|
264
|
+
* error instead of silently no-op'ing (`NaN`, `Infinity`) or tripping
|
|
265
|
+
* pathologically (zero swallows the user input; negative trips immediately).
|
|
266
|
+
*
|
|
267
|
+
* Each cap, when set, must be a positive finite number. Fractional values
|
|
268
|
+
* are accepted — harmless, and useful for token budgets derived from
|
|
269
|
+
* arithmetic.
|
|
270
|
+
*/
|
|
271
|
+
private _validateLimits;
|
|
272
|
+
/**
|
|
273
|
+
* Evaluates the per-invocation budget caps in {@link InvokeOptions.limits}
|
|
274
|
+
* against the current invocation's metrics. Called at the top of each
|
|
275
|
+
* agent-loop iteration, after `_throwIfCancelled` and before `startCycle`.
|
|
276
|
+
*
|
|
277
|
+
* Reads from {@link AgentMetrics.latestAgentInvocation} (scoped to the
|
|
278
|
+
* current invocation) — not `cycleCount` / `accumulatedUsage`, which are
|
|
279
|
+
* lifetime accumulators that would cause caps to fire prematurely on the
|
|
280
|
+
* second `invoke()` call against a reused agent.
|
|
281
|
+
*
|
|
282
|
+
* Priority on simultaneous trip: turns → totalTokens → outputTokens.
|
|
283
|
+
*
|
|
284
|
+
* Returns the {@link StopReason} the loop should terminate with, or
|
|
285
|
+
* `undefined` if every configured cap is still within budget.
|
|
286
|
+
*/
|
|
287
|
+
private _checkLimits;
|
|
258
288
|
/**
|
|
259
289
|
* The tools this agent can use.
|
|
260
290
|
*/
|
|
@@ -263,6 +293,28 @@ export declare class Agent implements LocalAgent, InvokableAgent {
|
|
|
263
293
|
* The tool registry for managing the agent's tools.
|
|
264
294
|
*/
|
|
265
295
|
get toolRegistry(): ToolRegistry;
|
|
296
|
+
/**
|
|
297
|
+
* Whether the agent is currently processing an invocation.
|
|
298
|
+
*/
|
|
299
|
+
get isInvoking(): boolean;
|
|
300
|
+
/**
|
|
301
|
+
* Direct tool calling accessor.
|
|
302
|
+
*
|
|
303
|
+
* Returns a proxy where each property is a {@link ToolHandle} with
|
|
304
|
+
* `.invoke()` and `.stream()` methods:
|
|
305
|
+
* ```typescript
|
|
306
|
+
* const result = await agent.tool.calculator!.invoke({ a: 5, b: 3 })
|
|
307
|
+
*
|
|
308
|
+
* for await (const event of agent.tool.calculator!.stream({ a: 5, b: 3 })) {
|
|
309
|
+
* console.log('progress:', event)
|
|
310
|
+
* }
|
|
311
|
+
* ```
|
|
312
|
+
*
|
|
313
|
+
* Supports underscore-to-hyphen and case-insensitive name resolution.
|
|
314
|
+
* Results are recorded in message history by default (pass
|
|
315
|
+
* `{ recordDirectToolCall: false }` to skip).
|
|
316
|
+
*/
|
|
317
|
+
get tool(): ToolCallerProxy;
|
|
266
318
|
/**
|
|
267
319
|
* The cancellation signal for the current invocation.
|
|
268
320
|
*
|
|
@@ -582,6 +634,14 @@ export declare class Agent implements LocalAgent, InvokableAgent {
|
|
|
582
634
|
* @returns Estimated input token count
|
|
583
635
|
*/
|
|
584
636
|
private _estimateInputTokens;
|
|
637
|
+
/**
|
|
638
|
+
* Appends a message to the conversation history and fires MessageAddedEvent hooks.
|
|
639
|
+
*
|
|
640
|
+
* Used by {@link ToolCaller} (via the helper passed to `ToolCaller.create`) for
|
|
641
|
+
* direct tool calls that cannot yield events into the agent stream. This stays
|
|
642
|
+
* private — callers outside the agent should never directly mutate messages.
|
|
643
|
+
*/
|
|
644
|
+
private _appendMessageAndFireHooks;
|
|
585
645
|
/**
|
|
586
646
|
* Appends a message to the conversation history and returns the event for yielding.
|
|
587
647
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EAErB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAIL,OAAO,EACP,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|