@strands-agents/sdk 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -0
- package/dist/src/__fixtures__/agent-helpers.d.ts +10 -1
- package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/agent-helpers.js +13 -2
- package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
- package/dist/src/__fixtures__/mock-hook-provider.d.ts +3 -7
- package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-hook-provider.js +3 -9
- package/dist/src/__fixtures__/mock-hook-provider.js.map +1 -1
- package/dist/src/__fixtures__/mock-message-model.d.ts +8 -2
- package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-message-model.js +1 -0
- package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
- package/dist/src/__fixtures__/mock-span.d.ts +78 -0
- package/dist/src/__fixtures__/mock-span.d.ts.map +1 -0
- package/dist/src/__fixtures__/mock-span.js +93 -0
- package/dist/src/__fixtures__/mock-span.js.map +1 -0
- package/dist/src/__fixtures__/mock-storage-provider.d.ts +37 -0
- package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -0
- package/dist/src/__fixtures__/mock-storage-provider.js +105 -0
- package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -0
- package/dist/src/__fixtures__/slim-types.d.ts +50 -0
- package/dist/src/__fixtures__/slim-types.d.ts.map +1 -0
- package/dist/src/__fixtures__/slim-types.js +6 -0
- package/dist/src/__fixtures__/slim-types.js.map +1 -0
- package/dist/src/__fixtures__/tool-helpers.d.ts +10 -5
- package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.js +5 -5
- package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
- package/dist/src/__tests__/app-state.test.d.ts +2 -0
- package/dist/src/__tests__/app-state.test.d.ts.map +1 -0
- package/dist/src/{agent/__tests__/state.test.js → __tests__/app-state.test.js} +62 -43
- package/dist/src/__tests__/app-state.test.js.map +1 -0
- package/dist/src/__tests__/mcp.test.js +96 -15
- package/dist/src/__tests__/mcp.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.hook.test.js +18 -18
- package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.test.js +234 -8
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.tracer.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.tracer.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.tracer.test.js +470 -0
- package/dist/src/agent/__tests__/agent.tracer.test.js.map +1 -0
- package/dist/src/agent/__tests__/printer.test.js +5 -9
- package/dist/src/agent/__tests__/printer.test.js.map +1 -1
- package/dist/src/agent/__tests__/snapshot.test.d.ts +2 -0
- package/dist/src/agent/__tests__/snapshot.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/snapshot.test.js +249 -0
- package/dist/src/agent/__tests__/snapshot.test.js.map +1 -0
- package/dist/src/agent/agent.d.ts +78 -10
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +252 -55
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/agent/printer.d.ts +4 -0
- package/dist/src/agent/printer.d.ts.map +1 -1
- package/dist/src/agent/printer.js +18 -6
- package/dist/src/agent/printer.js.map +1 -1
- package/dist/src/agent/snapshot.d.ts +132 -0
- package/dist/src/agent/snapshot.d.ts.map +1 -0
- package/dist/src/agent/snapshot.js +151 -0
- package/dist/src/agent/snapshot.js.map +1 -0
- package/dist/src/{agent/state.d.ts → app-state.d.ts} +19 -6
- package/dist/src/app-state.d.ts.map +1 -0
- package/dist/src/{agent/state.js → app-state.js} +27 -6
- package/dist/src/app-state.js.map +1 -0
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +1 -1
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js +1 -1
- package/dist/src/errors.d.ts +15 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +18 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/__tests__/events.test.js +102 -21
- package/dist/src/hooks/__tests__/events.test.js.map +1 -1
- package/dist/src/hooks/events.d.ts +156 -22
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js +158 -18
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/hooks/index.d.ts +12 -4
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +11 -3
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/registry.d.ts +5 -5
- package/dist/src/hooks/registry.d.ts.map +1 -1
- package/dist/src/hooks/registry.js.map +1 -1
- package/dist/src/hooks/types.d.ts +5 -5
- package/dist/src/hooks/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +8 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp.d.ts +3 -0
- package/dist/src/mcp.d.ts.map +1 -1
- package/dist/src/mcp.js +38 -1
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/models/__tests__/anthropic.test.js +31 -42
- package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +70 -107
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/__tests__/gemini.test.js +18 -18
- package/dist/src/models/__tests__/gemini.test.js.map +1 -1
- package/dist/src/models/__tests__/model.test.js +21 -13
- package/dist/src/models/__tests__/model.test.js.map +1 -1
- package/dist/src/models/__tests__/openai.test.js +73 -83
- package/dist/src/models/__tests__/openai.test.js.map +1 -1
- package/dist/src/models/model.d.ts +4 -0
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js +6 -0
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/streaming.d.ts +9 -1
- package/dist/src/models/streaming.d.ts.map +1 -1
- package/dist/src/models/streaming.js +17 -0
- package/dist/src/models/streaming.js.map +1 -1
- package/dist/src/multiagent/__tests__/events.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/events.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/events.test.js +189 -0
- package/dist/src/multiagent/__tests__/events.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/nodes.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/nodes.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/nodes.test.js +194 -0
- package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/queue.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/queue.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/queue.test.js +96 -0
- package/dist/src/multiagent/__tests__/queue.test.js.map +1 -0
- package/dist/src/multiagent/base.d.ts +25 -0
- package/dist/src/multiagent/base.d.ts.map +1 -0
- package/dist/src/multiagent/base.js +2 -0
- package/dist/src/multiagent/base.js.map +1 -0
- package/dist/src/multiagent/edge.d.ts +29 -0
- package/dist/src/multiagent/edge.d.ts.map +1 -0
- package/dist/src/multiagent/edge.js +15 -0
- package/dist/src/multiagent/edge.js.map +1 -0
- package/dist/src/multiagent/events.d.ts +135 -0
- package/dist/src/multiagent/events.d.ts.map +1 -0
- package/dist/src/multiagent/events.js +140 -0
- package/dist/src/multiagent/events.js.map +1 -0
- package/dist/src/multiagent/index.d.ts +13 -0
- package/dist/src/multiagent/index.d.ts.map +1 -0
- package/dist/src/multiagent/index.js +8 -0
- package/dist/src/multiagent/index.js.map +1 -0
- package/dist/src/multiagent/nodes.d.ts +123 -0
- package/dist/src/multiagent/nodes.d.ts.map +1 -0
- package/dist/src/multiagent/nodes.js +148 -0
- package/dist/src/multiagent/nodes.js.map +1 -0
- package/dist/src/multiagent/queue.d.ts +67 -0
- package/dist/src/multiagent/queue.d.ts.map +1 -0
- package/dist/src/multiagent/queue.js +59 -0
- package/dist/src/multiagent/queue.js.map +1 -0
- package/dist/src/multiagent/state.d.ts +122 -0
- package/dist/src/multiagent/state.d.ts.map +1 -0
- package/dist/src/multiagent/state.js +132 -0
- package/dist/src/multiagent/state.js.map +1 -0
- package/dist/src/registry/tool-registry.d.ts +2 -1
- package/dist/src/registry/tool-registry.d.ts.map +1 -1
- package/dist/src/registry/tool-registry.js +4 -2
- package/dist/src/registry/tool-registry.js.map +1 -1
- package/dist/src/session/__tests__/file-storage.test.node.d.ts +2 -0
- package/dist/src/session/__tests__/file-storage.test.node.d.ts.map +1 -0
- package/dist/src/session/__tests__/file-storage.test.node.js +218 -0
- package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -0
- package/dist/src/session/__tests__/s3-storage.test.node.d.ts +2 -0
- package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +1 -0
- package/dist/src/session/__tests__/s3-storage.test.node.js +375 -0
- package/dist/src/session/__tests__/s3-storage.test.node.js.map +1 -0
- package/dist/src/session/__tests__/validation.test.d.ts +2 -0
- package/dist/src/session/__tests__/validation.test.d.ts.map +1 -0
- package/dist/src/session/__tests__/validation.test.js +20 -0
- package/dist/src/session/__tests__/validation.test.js.map +1 -0
- package/dist/src/session/file-storage.d.ts +79 -0
- package/dist/src/session/file-storage.d.ts.map +1 -0
- package/dist/src/session/file-storage.js +144 -0
- package/dist/src/session/file-storage.js.map +1 -0
- package/dist/src/session/index.d.ts +19 -0
- package/dist/src/session/index.d.ts.map +1 -0
- package/dist/src/session/index.js +18 -0
- package/dist/src/session/index.js.map +1 -0
- package/dist/src/session/s3-storage.d.ts +93 -0
- package/dist/src/session/s3-storage.d.ts.map +1 -0
- package/dist/src/session/s3-storage.js +150 -0
- package/dist/src/session/s3-storage.js.map +1 -0
- package/dist/src/session/storage.d.ts +91 -0
- package/dist/src/session/storage.d.ts.map +1 -0
- package/dist/src/session/storage.js +2 -0
- package/dist/src/session/storage.js.map +1 -0
- package/dist/src/session/types.d.ts +49 -0
- package/dist/src/session/types.d.ts.map +1 -0
- package/dist/src/session/types.js +2 -0
- package/dist/src/session/types.js.map +1 -0
- package/dist/src/session/validation.d.ts +10 -0
- package/dist/src/session/validation.d.ts.map +1 -0
- package/dist/src/session/validation.js +16 -0
- package/dist/src/session/validation.js.map +1 -0
- package/dist/src/structured-output/__tests__/context.test.d.ts +2 -0
- package/dist/src/structured-output/__tests__/context.test.d.ts.map +1 -0
- package/dist/src/structured-output/__tests__/context.test.js +201 -0
- package/dist/src/structured-output/__tests__/context.test.js.map +1 -0
- package/dist/src/structured-output/__tests__/exceptions.test.d.ts +2 -0
- package/dist/src/structured-output/__tests__/exceptions.test.d.ts.map +1 -0
- package/dist/src/structured-output/__tests__/exceptions.test.js +103 -0
- package/dist/src/structured-output/__tests__/exceptions.test.js.map +1 -0
- package/dist/src/structured-output/__tests__/tool.test.d.ts +2 -0
- package/dist/src/structured-output/__tests__/tool.test.d.ts.map +1 -0
- package/dist/src/structured-output/__tests__/tool.test.js +256 -0
- package/dist/src/structured-output/__tests__/tool.test.js.map +1 -0
- package/dist/src/structured-output/__tests__/utils.test.d.ts +2 -0
- package/dist/src/structured-output/__tests__/utils.test.d.ts.map +1 -0
- package/dist/src/structured-output/__tests__/utils.test.js +183 -0
- package/dist/src/structured-output/__tests__/utils.test.js.map +1 -0
- package/dist/src/structured-output/context.d.ts +91 -0
- package/dist/src/structured-output/context.d.ts.map +1 -0
- package/dist/src/structured-output/context.js +112 -0
- package/dist/src/structured-output/context.js.map +1 -0
- package/dist/src/structured-output/exceptions.d.ts +18 -0
- package/dist/src/structured-output/exceptions.d.ts.map +1 -0
- package/dist/src/structured-output/exceptions.js +28 -0
- package/dist/src/structured-output/exceptions.js.map +1 -0
- package/dist/src/structured-output/tool.d.ts +33 -0
- package/dist/src/structured-output/tool.d.ts.map +1 -0
- package/dist/src/structured-output/tool.js +73 -0
- package/dist/src/structured-output/tool.js.map +1 -0
- package/dist/src/structured-output/utils.d.ts +23 -0
- package/dist/src/structured-output/utils.d.ts.map +1 -0
- package/dist/src/structured-output/utils.js +104 -0
- package/dist/src/structured-output/utils.js.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.node.d.ts +2 -0
- package/dist/src/telemetry/__tests__/config.test.node.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.node.js +129 -0
- package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -0
- package/dist/src/telemetry/__tests__/json.test.d.ts +2 -0
- package/dist/src/telemetry/__tests__/json.test.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/json.test.js +89 -0
- package/dist/src/telemetry/__tests__/json.test.js.map +1 -0
- package/dist/src/telemetry/__tests__/tracer.test.node.d.ts +2 -0
- package/dist/src/telemetry/__tests__/tracer.test.node.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/tracer.test.node.js +611 -0
- package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -0
- package/dist/src/telemetry/config.d.ts +61 -0
- package/dist/src/telemetry/config.d.ts.map +1 -0
- package/dist/src/telemetry/config.js +101 -0
- package/dist/src/telemetry/config.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +34 -0
- package/dist/src/telemetry/index.d.ts.map +1 -0
- package/dist/src/telemetry/index.js +33 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/json.d.ts +11 -0
- package/dist/src/telemetry/json.d.ts.map +1 -0
- package/dist/src/telemetry/json.js +25 -0
- package/dist/src/telemetry/json.js.map +1 -0
- package/dist/src/telemetry/tracer.d.ts +219 -0
- package/dist/src/telemetry/tracer.d.ts.map +1 -0
- package/dist/src/telemetry/tracer.js +610 -0
- package/dist/src/telemetry/tracer.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +101 -0
- package/dist/src/telemetry/types.d.ts.map +1 -0
- package/dist/src/telemetry/types.js +5 -0
- package/dist/src/telemetry/types.js.map +1 -0
- package/dist/src/tools/tool.d.ts +1 -1
- package/dist/src/tools/tool.js +1 -1
- package/dist/src/tools/zod-tool.d.ts.map +1 -1
- package/dist/src/tools/zod-tool.js +2 -5
- package/dist/src/tools/zod-tool.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/__tests__/media.test.js +216 -1
- package/dist/src/types/__tests__/media.test.js.map +1 -1
- package/dist/src/types/__tests__/messages.test.js +193 -4
- package/dist/src/types/__tests__/messages.test.js.map +1 -1
- package/dist/src/types/agent.d.ts +16 -10
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js +8 -1
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/json.d.ts +61 -0
- package/dist/src/types/json.d.ts.map +1 -1
- package/dist/src/types/json.js +24 -0
- package/dist/src/types/json.js.map +1 -1
- package/dist/src/types/media.d.ts +84 -4
- package/dist/src/types/media.d.ts.map +1 -1
- package/dist/src/types/media.js +194 -0
- package/dist/src/types/media.js.map +1 -1
- package/dist/src/types/messages.d.ts +152 -13
- package/dist/src/types/messages.d.ts.map +1 -1
- package/dist/src/types/messages.js +235 -8
- package/dist/src/types/messages.js.map +1 -1
- package/dist/src/types/serializable.d.ts +31 -0
- package/dist/src/types/serializable.d.ts.map +1 -0
- package/dist/src/types/serializable.js +19 -0
- package/dist/src/types/serializable.js.map +1 -0
- package/dist/src/utils/zod.d.ts +11 -0
- package/dist/src/utils/zod.d.ts.map +1 -0
- package/dist/src/utils/zod.js +14 -0
- package/dist/src/utils/zod.js.map +1 -0
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +2 -2
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
- package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js +4 -4
- 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 +2 -2
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
- package/package.json +17 -3
- package/dist/src/agent/__tests__/state.test.d.ts +0 -2
- package/dist/src/agent/__tests__/state.test.d.ts.map +0 -1
- package/dist/src/agent/__tests__/state.test.js.map +0 -1
- package/dist/src/agent/state.d.ts.map +0 -1
- package/dist/src/agent/state.js.map +0 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
2
|
+
import { Agent } from '../agent.js';
|
|
3
|
+
import { SNAPSHOT_SCHEMA_VERSION, ALL_SNAPSHOT_FIELDS, SNAPSHOT_PRESETS, createTimestamp, resolveSnapshotFields, takeSnapshot, loadSnapshot, } from '../snapshot.js';
|
|
4
|
+
import { Message, TextBlock, ToolUseBlock, ToolResultBlock } from '../../types/messages.js';
|
|
5
|
+
import { TestModelProvider } from '../../__fixtures__/model-test-helpers.js';
|
|
6
|
+
// Fixed timestamp for testing
|
|
7
|
+
const MOCK_TIMESTAMP = '2026-01-15T12:00:00.000Z';
|
|
8
|
+
/**
|
|
9
|
+
* Helper to create a test agent with a mock model
|
|
10
|
+
*/
|
|
11
|
+
function createTestAgent() {
|
|
12
|
+
return new Agent({
|
|
13
|
+
model: new TestModelProvider(),
|
|
14
|
+
tools: [],
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
describe('Snapshot API', () => {
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
vi.useFakeTimers();
|
|
20
|
+
vi.setSystemTime(new Date(MOCK_TIMESTAMP));
|
|
21
|
+
});
|
|
22
|
+
afterEach(() => {
|
|
23
|
+
vi.useRealTimers();
|
|
24
|
+
});
|
|
25
|
+
describe('constants', () => {
|
|
26
|
+
it('exports snapshot constants with correct values', () => {
|
|
27
|
+
expect(SNAPSHOT_SCHEMA_VERSION).toBe('1.0');
|
|
28
|
+
expect(ALL_SNAPSHOT_FIELDS).toEqual(['messages', 'state', 'systemPrompt']);
|
|
29
|
+
expect(SNAPSHOT_PRESETS).toEqual({
|
|
30
|
+
session: ['messages', 'state', 'systemPrompt'],
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('createTimestamp', () => {
|
|
35
|
+
it('returns ISO 8601 formatted timestamp', () => {
|
|
36
|
+
expect(createTimestamp()).toBe(MOCK_TIMESTAMP);
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe('resolveSnapshotFields', () => {
|
|
40
|
+
it('throws error when no fields would be included', () => {
|
|
41
|
+
expect(() => resolveSnapshotFields({})).toThrow('No fields to include in snapshot');
|
|
42
|
+
});
|
|
43
|
+
it('returns session preset fields when preset is "session"', () => {
|
|
44
|
+
const fields = resolveSnapshotFields({ preset: 'session' });
|
|
45
|
+
expect(fields).toEqual(new Set(['messages', 'state', 'systemPrompt']));
|
|
46
|
+
});
|
|
47
|
+
it('returns explicit fields when include is specified', () => {
|
|
48
|
+
const fields = resolveSnapshotFields({ include: ['messages', 'state'] });
|
|
49
|
+
expect(fields).toEqual(new Set(['messages', 'state']));
|
|
50
|
+
});
|
|
51
|
+
it('applies exclude after preset', () => {
|
|
52
|
+
const fields = resolveSnapshotFields({ preset: 'session', exclude: ['state'] });
|
|
53
|
+
expect(fields).toEqual(new Set(['messages', 'systemPrompt']));
|
|
54
|
+
});
|
|
55
|
+
it('throws error for invalid preset', () => {
|
|
56
|
+
expect(() => resolveSnapshotFields({ preset: 'invalid' })).toThrow('Invalid preset: invalid');
|
|
57
|
+
});
|
|
58
|
+
it('throws error for invalid field names', () => {
|
|
59
|
+
expect(() => resolveSnapshotFields({ include: ['invalidField'] })).toThrow('Invalid snapshot field: invalidField');
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('takeSnapshot', () => {
|
|
63
|
+
let agent;
|
|
64
|
+
beforeEach(() => {
|
|
65
|
+
agent = createTestAgent();
|
|
66
|
+
});
|
|
67
|
+
it('creates snapshot with session preset', () => {
|
|
68
|
+
agent.messages.push(new Message({ role: 'user', content: [new TextBlock('Hello')] }));
|
|
69
|
+
agent.state.set('key', 'value');
|
|
70
|
+
agent.systemPrompt = 'Test prompt';
|
|
71
|
+
const snapshot = takeSnapshot(agent, { preset: 'session' });
|
|
72
|
+
expect(snapshot).toEqual({
|
|
73
|
+
scope: 'agent',
|
|
74
|
+
schemaVersion: SNAPSHOT_SCHEMA_VERSION,
|
|
75
|
+
createdAt: MOCK_TIMESTAMP,
|
|
76
|
+
data: {
|
|
77
|
+
messages: [{ role: 'user', content: [{ text: 'Hello' }] }],
|
|
78
|
+
state: { key: 'value' },
|
|
79
|
+
systemPrompt: 'Test prompt',
|
|
80
|
+
},
|
|
81
|
+
appData: {},
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
it('includes appData in snapshot', () => {
|
|
85
|
+
const snapshot = takeSnapshot(agent, {
|
|
86
|
+
preset: 'session',
|
|
87
|
+
appData: { customKey: 'customValue' },
|
|
88
|
+
});
|
|
89
|
+
expect(snapshot.appData).toEqual({ customKey: 'customValue' });
|
|
90
|
+
});
|
|
91
|
+
it('excludes specified fields', () => {
|
|
92
|
+
agent.messages.push(new Message({ role: 'user', content: [new TextBlock('Hello')] }));
|
|
93
|
+
agent.state.set('key', 'value');
|
|
94
|
+
const snapshot = takeSnapshot(agent, { preset: 'session', exclude: ['messages'] });
|
|
95
|
+
expect(snapshot.data.messages).toBeUndefined();
|
|
96
|
+
expect(snapshot.data.state).toBeDefined();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
describe('loadSnapshot', () => {
|
|
100
|
+
let agent;
|
|
101
|
+
beforeEach(() => {
|
|
102
|
+
agent = createTestAgent();
|
|
103
|
+
});
|
|
104
|
+
it('throws error for incompatible schema version', () => {
|
|
105
|
+
const snapshot = {
|
|
106
|
+
scope: 'agent',
|
|
107
|
+
schemaVersion: '2.0',
|
|
108
|
+
createdAt: createTimestamp(),
|
|
109
|
+
data: {},
|
|
110
|
+
appData: {},
|
|
111
|
+
};
|
|
112
|
+
expect(() => loadSnapshot(agent, snapshot)).toThrow('Unsupported snapshot schema version: 2.0. Current version: 1.0');
|
|
113
|
+
});
|
|
114
|
+
it('restores messages from snapshot', () => {
|
|
115
|
+
const snapshot = {
|
|
116
|
+
scope: 'agent',
|
|
117
|
+
schemaVersion: '1.0',
|
|
118
|
+
createdAt: createTimestamp(),
|
|
119
|
+
data: {
|
|
120
|
+
messages: [{ role: 'user', content: [{ text: 'Restored message' }] }],
|
|
121
|
+
},
|
|
122
|
+
appData: {},
|
|
123
|
+
};
|
|
124
|
+
loadSnapshot(agent, snapshot);
|
|
125
|
+
expect(agent.messages).toHaveLength(1);
|
|
126
|
+
expect(agent.messages[0]).toEqual(new Message({ role: 'user', content: [new TextBlock('Restored message')] }));
|
|
127
|
+
});
|
|
128
|
+
it('restores state from snapshot', () => {
|
|
129
|
+
const snapshot = {
|
|
130
|
+
scope: 'agent',
|
|
131
|
+
schemaVersion: '1.0',
|
|
132
|
+
createdAt: createTimestamp(),
|
|
133
|
+
data: {
|
|
134
|
+
state: { restoredKey: 'restoredValue' },
|
|
135
|
+
},
|
|
136
|
+
appData: {},
|
|
137
|
+
};
|
|
138
|
+
loadSnapshot(agent, snapshot);
|
|
139
|
+
expect(agent.state.get('restoredKey')).toBe('restoredValue');
|
|
140
|
+
});
|
|
141
|
+
it('restores systemPrompt from snapshot', () => {
|
|
142
|
+
const snapshot = {
|
|
143
|
+
scope: 'agent',
|
|
144
|
+
schemaVersion: '1.0',
|
|
145
|
+
createdAt: createTimestamp(),
|
|
146
|
+
data: {
|
|
147
|
+
systemPrompt: 'Restored system prompt',
|
|
148
|
+
},
|
|
149
|
+
appData: {},
|
|
150
|
+
};
|
|
151
|
+
loadSnapshot(agent, snapshot);
|
|
152
|
+
expect(agent.systemPrompt).toBe('Restored system prompt');
|
|
153
|
+
});
|
|
154
|
+
it('leaves systemPrompt unchanged when snapshot has null systemPrompt', () => {
|
|
155
|
+
agent.systemPrompt = 'Original prompt';
|
|
156
|
+
const snapshot = {
|
|
157
|
+
scope: 'agent',
|
|
158
|
+
schemaVersion: '1.0',
|
|
159
|
+
createdAt: createTimestamp(),
|
|
160
|
+
data: { systemPrompt: null },
|
|
161
|
+
appData: {},
|
|
162
|
+
};
|
|
163
|
+
loadSnapshot(agent, snapshot);
|
|
164
|
+
// systemPrompt should remain unchanged since snapshot had null
|
|
165
|
+
expect(agent.systemPrompt).toBe('Original prompt');
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
describe('round-trip', () => {
|
|
169
|
+
let agent;
|
|
170
|
+
beforeEach(() => {
|
|
171
|
+
agent = createTestAgent();
|
|
172
|
+
});
|
|
173
|
+
it('preserves messages through save/load cycle', () => {
|
|
174
|
+
const originalMessages = [
|
|
175
|
+
new Message({ role: 'user', content: [new TextBlock('Hello')] }),
|
|
176
|
+
new Message({ role: 'assistant', content: [new TextBlock('Hi!')] }),
|
|
177
|
+
];
|
|
178
|
+
agent.messages.push(...originalMessages);
|
|
179
|
+
const snapshot = takeSnapshot(agent, { preset: 'session' });
|
|
180
|
+
// Modify agent
|
|
181
|
+
agent.messages.length = 0;
|
|
182
|
+
agent.messages.push(new Message({ role: 'user', content: [new TextBlock('Different')] }));
|
|
183
|
+
// Restore
|
|
184
|
+
loadSnapshot(agent, snapshot);
|
|
185
|
+
expect(agent.messages).toEqual(originalMessages);
|
|
186
|
+
});
|
|
187
|
+
it('preserves state through save/load cycle', () => {
|
|
188
|
+
agent.state.set('userId', 'user-123');
|
|
189
|
+
agent.state.set('counter', 42);
|
|
190
|
+
const snapshot = takeSnapshot(agent, { preset: 'session' });
|
|
191
|
+
// Modify state
|
|
192
|
+
agent.state.clear();
|
|
193
|
+
agent.state.set('different', 'value');
|
|
194
|
+
// Restore
|
|
195
|
+
loadSnapshot(agent, snapshot);
|
|
196
|
+
expect(agent.state.getAll()).toEqual({ userId: 'user-123', counter: 42 });
|
|
197
|
+
});
|
|
198
|
+
it('handles complex message content', () => {
|
|
199
|
+
const toolUseBlock = new ToolUseBlock({
|
|
200
|
+
name: 'calculator',
|
|
201
|
+
toolUseId: 'tool-123',
|
|
202
|
+
input: { operation: 'add', numbers: [1, 2, 3] },
|
|
203
|
+
});
|
|
204
|
+
const toolResultBlock = new ToolResultBlock({
|
|
205
|
+
toolUseId: 'tool-123',
|
|
206
|
+
status: 'success',
|
|
207
|
+
content: [new TextBlock('6')],
|
|
208
|
+
});
|
|
209
|
+
const originalMessages = [
|
|
210
|
+
new Message({ role: 'assistant', content: [toolUseBlock] }),
|
|
211
|
+
new Message({ role: 'user', content: [toolResultBlock] }),
|
|
212
|
+
];
|
|
213
|
+
agent.messages.push(...originalMessages);
|
|
214
|
+
const snapshot = takeSnapshot(agent, { include: ['messages'] });
|
|
215
|
+
agent.messages.length = 0;
|
|
216
|
+
loadSnapshot(agent, snapshot);
|
|
217
|
+
expect(agent.messages).toEqual(originalMessages);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
describe('JSON serialization', () => {
|
|
221
|
+
it('snapshot survives JSON.stringify/JSON.parse round-trip', () => {
|
|
222
|
+
const agent = createTestAgent();
|
|
223
|
+
agent.messages.push(new Message({ role: 'user', content: [new TextBlock('Hello')] }));
|
|
224
|
+
agent.state.set('userId', 'user-123');
|
|
225
|
+
agent.systemPrompt = 'You are a helpful assistant';
|
|
226
|
+
const snapshot = takeSnapshot(agent, { preset: 'session' });
|
|
227
|
+
// Serialize to JSON string and parse back
|
|
228
|
+
const jsonString = JSON.stringify(snapshot);
|
|
229
|
+
const parsed = JSON.parse(jsonString);
|
|
230
|
+
// Verify structure is preserved
|
|
231
|
+
expect(parsed).toEqual(snapshot);
|
|
232
|
+
});
|
|
233
|
+
it('snapshot can be stored and retrieved as JSON string', () => {
|
|
234
|
+
const agent = createTestAgent();
|
|
235
|
+
agent.messages.push(new Message({ role: 'user', content: [new TextBlock('Test message')] }));
|
|
236
|
+
agent.state.set('key', 'value');
|
|
237
|
+
const snapshot = takeSnapshot(agent, { preset: 'session' });
|
|
238
|
+
// Simulate storing to a database or file as JSON
|
|
239
|
+
const stored = JSON.stringify(snapshot);
|
|
240
|
+
// Simulate retrieving and restoring
|
|
241
|
+
const retrieved = JSON.parse(stored);
|
|
242
|
+
const newAgent = createTestAgent();
|
|
243
|
+
loadSnapshot(newAgent, retrieved);
|
|
244
|
+
expect(newAgent.messages).toHaveLength(1);
|
|
245
|
+
expect(newAgent.state.getAll()).toEqual({ key: 'value' });
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
//# sourceMappingURL=snapshot.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.test.js","sourceRoot":"","sources":["../../../../src/agent/__tests__/snapshot.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
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
|
-
import
|
|
2
|
+
import { Model } from '../models/model.js';
|
|
3
|
+
import type { BaseModelConfig } from '../models/model.js';
|
|
3
4
|
import { ToolRegistry } from '../registry/tool-registry.js';
|
|
4
|
-
import {
|
|
5
|
+
import { AppState } from '../app-state.js';
|
|
5
6
|
import type { AgentData } from '../types/agent.js';
|
|
6
7
|
import type { HookProvider } from '../hooks/types.js';
|
|
7
8
|
import { HookRegistryImplementation } from '../hooks/registry.js';
|
|
9
|
+
import type { z } from 'zod';
|
|
10
|
+
import type { AttributeValue } from '@opentelemetry/api';
|
|
8
11
|
/**
|
|
9
12
|
* Recursive type definition for nested tool arrays.
|
|
10
13
|
* Allows tools to be organized in nested arrays of any depth.
|
|
@@ -66,6 +69,24 @@ export type AgentConfig = {
|
|
|
66
69
|
* Hooks enable observing and extending agent behavior.
|
|
67
70
|
*/
|
|
68
71
|
hooks?: HookProvider[];
|
|
72
|
+
/**
|
|
73
|
+
* Zod schema for structured output validation.
|
|
74
|
+
*/
|
|
75
|
+
structuredOutputSchema?: z.ZodSchema;
|
|
76
|
+
/**
|
|
77
|
+
* Custom trace attributes to include in all spans.
|
|
78
|
+
* These attributes are merged with standard attributes in telemetry spans.
|
|
79
|
+
* Telemetry must be enabled globally via telemetry.setupTracer() for these to take effect.
|
|
80
|
+
*/
|
|
81
|
+
traceAttributes?: Record<string, AttributeValue>;
|
|
82
|
+
/**
|
|
83
|
+
* Optional name for the agent. Defaults to "Strands Agent".
|
|
84
|
+
*/
|
|
85
|
+
name?: string;
|
|
86
|
+
/**
|
|
87
|
+
* Optional unique identifier for the agent. Defaults to "default".
|
|
88
|
+
*/
|
|
89
|
+
agentId?: string;
|
|
69
90
|
};
|
|
70
91
|
/**
|
|
71
92
|
* Arguments for invoking an agent.
|
|
@@ -76,6 +97,15 @@ export type AgentConfig = {
|
|
|
76
97
|
* - `Message[]` | `MessageData[]` - Array of messages (appends all to conversation)
|
|
77
98
|
*/
|
|
78
99
|
export type InvokeArgs = string | ContentBlock[] | ContentBlockData[] | Message[] | MessageData[];
|
|
100
|
+
/**
|
|
101
|
+
* Options for a single agent invocation.
|
|
102
|
+
*/
|
|
103
|
+
export interface InvokeOptions {
|
|
104
|
+
/**
|
|
105
|
+
* Zod schema for structured output validation, overriding the constructor-provided schema for this invocation only.
|
|
106
|
+
*/
|
|
107
|
+
structuredOutputSchema?: z.ZodSchema;
|
|
108
|
+
}
|
|
79
109
|
/**
|
|
80
110
|
* Orchestrates the interaction between a model, a set of tools, and MCP clients.
|
|
81
111
|
* The Agent is responsible for managing the lifecycle of tools and clients
|
|
@@ -87,10 +117,10 @@ export declare class Agent implements AgentData {
|
|
|
87
117
|
*/
|
|
88
118
|
readonly messages: Message[];
|
|
89
119
|
/**
|
|
90
|
-
*
|
|
120
|
+
* App state storage accessible to tools and application logic.
|
|
91
121
|
* State is not passed to the model during inference.
|
|
92
122
|
*/
|
|
93
|
-
readonly state:
|
|
123
|
+
readonly state: AppState;
|
|
94
124
|
/**
|
|
95
125
|
* Conversation manager for handling message history and context overflow.
|
|
96
126
|
*/
|
|
@@ -108,11 +138,24 @@ export declare class Agent implements AgentData {
|
|
|
108
138
|
* The system prompt to pass to the model provider.
|
|
109
139
|
*/
|
|
110
140
|
systemPrompt?: SystemPrompt;
|
|
141
|
+
/**
|
|
142
|
+
* The name of the agent.
|
|
143
|
+
*/
|
|
144
|
+
readonly name: string;
|
|
145
|
+
/**
|
|
146
|
+
* The unique identifier of the agent instance.
|
|
147
|
+
*/
|
|
148
|
+
readonly agentId: string;
|
|
111
149
|
private _toolRegistry;
|
|
112
150
|
private _mcpClients;
|
|
113
151
|
private _initialized;
|
|
114
152
|
private _isInvoking;
|
|
115
153
|
private _printer?;
|
|
154
|
+
private _structuredOutputSchema?;
|
|
155
|
+
/** Tracer instance for creating and managing OpenTelemetry spans. */
|
|
156
|
+
private _tracer;
|
|
157
|
+
/** Running total of token usage across all model invocations in the current invocation. */
|
|
158
|
+
private _accumulatedTokenUsage;
|
|
116
159
|
/**
|
|
117
160
|
* Creates an instance of the Agent.
|
|
118
161
|
* @param config - The configuration for the agent.
|
|
@@ -140,6 +183,7 @@ export declare class Agent implements AgentData {
|
|
|
140
183
|
* streaming events.
|
|
141
184
|
*
|
|
142
185
|
* @param args - Arguments for invoking the agent
|
|
186
|
+
* @param options - Optional per-invocation options
|
|
143
187
|
* @returns Promise that resolves to the final AgentResult
|
|
144
188
|
*
|
|
145
189
|
* @example
|
|
@@ -149,7 +193,7 @@ export declare class Agent implements AgentData {
|
|
|
149
193
|
* console.log(result.lastMessage) // Agent's response
|
|
150
194
|
* ```
|
|
151
195
|
*/
|
|
152
|
-
invoke(args: InvokeArgs): Promise<AgentResult>;
|
|
196
|
+
invoke(args: InvokeArgs, options?: InvokeOptions): Promise<AgentResult>;
|
|
153
197
|
/**
|
|
154
198
|
* Streams the agent execution, yielding events and returning the final result.
|
|
155
199
|
*
|
|
@@ -167,6 +211,7 @@ export declare class Agent implements AgentData {
|
|
|
167
211
|
* with valid toolResponses
|
|
168
212
|
*
|
|
169
213
|
* @param args - Arguments for invoking the agent
|
|
214
|
+
* @param options - Optional per-invocation options
|
|
170
215
|
* @returns Async generator that yields AgentStreamEvent objects and returns AgentResult
|
|
171
216
|
*
|
|
172
217
|
* @example
|
|
@@ -179,12 +224,13 @@ export declare class Agent implements AgentData {
|
|
|
179
224
|
* // Messages array is mutated in place and contains the full conversation
|
|
180
225
|
* ```
|
|
181
226
|
*/
|
|
182
|
-
stream(args: InvokeArgs): AsyncGenerator<AgentStreamEvent, AgentResult, undefined>;
|
|
227
|
+
stream(args: InvokeArgs, options?: InvokeOptions): AsyncGenerator<AgentStreamEvent, AgentResult, undefined>;
|
|
183
228
|
/**
|
|
184
229
|
* Internal implementation of the agent streaming logic.
|
|
185
230
|
* Separated to centralize printer event processing in the public stream method.
|
|
186
231
|
*
|
|
187
232
|
* @param args - Arguments for invoking the agent
|
|
233
|
+
* @param options - Optional per-invocation options
|
|
188
234
|
* @returns Async generator that yields AgentStreamEvent objects and returns AgentResult
|
|
189
235
|
*/
|
|
190
236
|
private _stream;
|
|
@@ -199,11 +245,21 @@ export declare class Agent implements AgentData {
|
|
|
199
245
|
* Invokes the model provider and streams all events.
|
|
200
246
|
*
|
|
201
247
|
* @param args - Optional arguments for invoking the model
|
|
248
|
+
* @param toolChoice - Optional tool choice to force specific tool usage
|
|
202
249
|
* @returns Object containing the assistant message and stop reason
|
|
203
250
|
*/
|
|
204
251
|
private invokeModel;
|
|
205
252
|
/**
|
|
206
|
-
* Streams events from the model and
|
|
253
|
+
* Streams events from the model and dispatches appropriate events for each.
|
|
254
|
+
*
|
|
255
|
+
* The model's `streamAggregated()` yields two kinds of output:
|
|
256
|
+
* - **ModelStreamEvent**: Transient streaming deltas (partial data while generating).
|
|
257
|
+
* Wrapped in {@link ModelStreamUpdateEvent} before yielding.
|
|
258
|
+
* - **ContentBlock**: Fully assembled results (after all deltas accumulate).
|
|
259
|
+
* Wrapped in {@link ContentBlockEvent} before yielding.
|
|
260
|
+
*
|
|
261
|
+
* These are separate event classes because they represent different granularities
|
|
262
|
+
* (partial deltas vs finished blocks). Both are yielded in the stream and hookable.
|
|
207
263
|
*
|
|
208
264
|
* @param messages - Messages to send to the model
|
|
209
265
|
* @param streamOptions - Options for streaming
|
|
@@ -230,12 +286,24 @@ export declare class Agent implements AgentData {
|
|
|
230
286
|
*/
|
|
231
287
|
private executeTool;
|
|
232
288
|
/**
|
|
233
|
-
* Appends a message to the conversation history
|
|
234
|
-
* and returns the event for yielding.
|
|
289
|
+
* Appends a message to the conversation history and returns the event for yielding.
|
|
235
290
|
*
|
|
236
291
|
* @param message - The message to append
|
|
237
|
-
* @returns MessageAddedEvent to be yielded
|
|
292
|
+
* @returns MessageAddedEvent to be yielded
|
|
238
293
|
*/
|
|
239
294
|
private _appendMessage;
|
|
295
|
+
/**
|
|
296
|
+
* Creates an empty Usage object with all counters set to zero.
|
|
297
|
+
*
|
|
298
|
+
* @returns A Usage object with zeroed counters
|
|
299
|
+
*/
|
|
300
|
+
private static _createEmptyUsage;
|
|
301
|
+
/**
|
|
302
|
+
* Accumulates token usage from a source into a target Usage object.
|
|
303
|
+
*
|
|
304
|
+
* @param target - The Usage object to accumulate into (mutated in place)
|
|
305
|
+
* @param source - The Usage object to accumulate from
|
|
306
|
+
*/
|
|
307
|
+
private static _accumulateUsage;
|
|
240
308
|
}
|
|
241
309
|
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,gBAAgB,EAGrB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,SAAS,EACT,OAAO,EACP,KAAK,WAAW,EAEhB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAErB,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|