@strands-agents/sdk 0.6.0 → 1.0.0-rc.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 +71 -7
- package/dist/src/__fixtures__/agent-helpers.d.ts +81 -4
- package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/agent-helpers.js +76 -4
- package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
- package/dist/src/__fixtures__/metrics-helpers.d.ts +30 -0
- package/dist/src/__fixtures__/metrics-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/metrics-helpers.js +29 -6
- package/dist/src/__fixtures__/metrics-helpers.js.map +1 -1
- package/dist/src/__fixtures__/mock-message-model.d.ts +8 -4
- package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-message-model.js +13 -7
- package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
- package/dist/src/__fixtures__/mock-meter.d.ts +32 -0
- package/dist/src/__fixtures__/mock-meter.d.ts.map +1 -0
- package/dist/src/__fixtures__/mock-meter.js +47 -0
- package/dist/src/__fixtures__/mock-meter.js.map +1 -0
- package/dist/src/__fixtures__/mock-plugin.d.ts +13 -0
- package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -0
- package/dist/src/__fixtures__/{mock-hook-provider.js → mock-plugin.js} +11 -6
- package/dist/src/__fixtures__/mock-plugin.js.map +1 -0
- package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.js +6 -2
- package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
- package/dist/src/__tests__/index.test.js +21 -0
- package/dist/src/__tests__/index.test.js.map +1 -1
- package/dist/src/__tests__/mcp.test.js.map +1 -1
- package/dist/src/__tests__/mime.test.d.ts +2 -0
- package/dist/src/__tests__/mime.test.d.ts.map +1 -0
- package/dist/src/__tests__/mime.test.js +83 -0
- package/dist/src/__tests__/mime.test.js.map +1 -0
- package/dist/src/__tests__/state-store.test.d.ts +2 -0
- package/dist/src/__tests__/state-store.test.d.ts.map +1 -0
- package/dist/src/__tests__/{app-state.test.js → state-store.test.js} +86 -51
- package/dist/src/__tests__/state-store.test.js.map +1 -0
- package/dist/src/a2a/__tests__/a2a-agent.test.d.ts +2 -0
- package/dist/src/a2a/__tests__/a2a-agent.test.d.ts.map +1 -0
- package/dist/src/a2a/__tests__/a2a-agent.test.js +364 -0
- package/dist/src/a2a/__tests__/a2a-agent.test.js.map +1 -0
- package/dist/src/a2a/__tests__/adapters.test.d.ts +2 -0
- package/dist/src/a2a/__tests__/adapters.test.d.ts.map +1 -0
- package/dist/src/a2a/__tests__/adapters.test.js +151 -0
- package/dist/src/a2a/__tests__/adapters.test.js.map +1 -0
- package/dist/src/a2a/__tests__/events.test.d.ts +2 -0
- package/dist/src/a2a/__tests__/events.test.d.ts.map +1 -0
- package/dist/src/a2a/__tests__/events.test.js +66 -0
- package/dist/src/a2a/__tests__/events.test.js.map +1 -0
- package/dist/src/a2a/__tests__/executor.test.d.ts +2 -0
- package/dist/src/a2a/__tests__/executor.test.d.ts.map +1 -0
- package/dist/src/a2a/__tests__/executor.test.js +196 -0
- package/dist/src/a2a/__tests__/executor.test.js.map +1 -0
- package/dist/src/a2a/__tests__/server.test.d.ts +2 -0
- package/dist/src/a2a/__tests__/server.test.d.ts.map +1 -0
- package/dist/src/a2a/__tests__/server.test.js +51 -0
- package/dist/src/a2a/__tests__/server.test.js.map +1 -0
- package/dist/src/a2a/__tests__/server.test.node.d.ts +2 -0
- package/dist/src/a2a/__tests__/server.test.node.d.ts.map +1 -0
- package/dist/src/a2a/__tests__/server.test.node.js +110 -0
- package/dist/src/a2a/__tests__/server.test.node.js.map +1 -0
- package/dist/src/a2a/a2a-agent.d.ts +132 -0
- package/dist/src/a2a/a2a-agent.d.ts.map +1 -0
- package/dist/src/a2a/a2a-agent.js +255 -0
- package/dist/src/a2a/a2a-agent.js.map +1 -0
- package/dist/src/a2a/adapters.d.ts +27 -0
- package/dist/src/a2a/adapters.d.ts.map +1 -0
- package/dist/src/a2a/adapters.js +175 -0
- package/dist/src/a2a/adapters.js.map +1 -0
- package/dist/src/a2a/events.d.ts +44 -0
- package/dist/src/a2a/events.d.ts.map +1 -0
- package/dist/src/a2a/events.js +41 -0
- package/dist/src/a2a/events.js.map +1 -0
- package/dist/src/a2a/executor.d.ts +57 -0
- package/dist/src/a2a/executor.d.ts.map +1 -0
- package/dist/src/a2a/executor.js +130 -0
- package/dist/src/a2a/executor.js.map +1 -0
- package/dist/src/a2a/express-server.d.ts +67 -0
- package/dist/src/a2a/express-server.d.ts.map +1 -0
- package/dist/src/a2a/express-server.js +95 -0
- package/dist/src/a2a/express-server.js.map +1 -0
- package/dist/src/a2a/index.d.ts +15 -0
- package/dist/src/a2a/index.d.ts.map +1 -0
- package/dist/src/a2a/index.js +15 -0
- package/dist/src/a2a/index.js.map +1 -0
- package/dist/src/a2a/logging.d.ts +8 -0
- package/dist/src/a2a/logging.d.ts.map +1 -0
- package/dist/src/a2a/logging.js +15 -0
- package/dist/src/a2a/logging.js.map +1 -0
- package/dist/src/a2a/server.d.ts +67 -0
- package/dist/src/a2a/server.d.ts.map +1 -0
- package/dist/src/a2a/server.js +67 -0
- package/dist/src/a2a/server.js.map +1 -0
- package/dist/src/agent/__tests__/agent.hook.test.js +315 -51
- package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.test.js +298 -48
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts.map +1 -0
- package/dist/src/agent/__tests__/{agent.tracer.test.js → agent.tracer.test.node.js} +62 -50
- package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -0
- package/dist/src/agent/__tests__/printer.test.js +7 -7
- package/dist/src/agent/__tests__/printer.test.js.map +1 -1
- package/dist/src/agent/__tests__/snapshot.test.js +50 -13
- package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
- package/dist/src/agent/agent.d.ts +55 -44
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +230 -128
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/agent/printer.d.ts.map +1 -1
- package/dist/src/agent/printer.js +3 -0
- package/dist/src/agent/printer.js.map +1 -1
- package/dist/src/agent/snapshot.d.ts +3 -3
- package/dist/src/agent/snapshot.d.ts.map +1 -1
- package/dist/src/agent/snapshot.js +16 -8
- package/dist/src/agent/snapshot.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts +2 -0
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.d.ts.map +1 -0
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js +100 -0
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -0
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +26 -10
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +153 -64
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
- package/dist/src/conversation-manager/conversation-manager.d.ts +87 -0
- package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -0
- package/dist/src/conversation-manager/conversation-manager.js +59 -0
- package/dist/src/conversation-manager/conversation-manager.js.map +1 -0
- package/dist/src/conversation-manager/index.d.ts +1 -0
- package/dist/src/conversation-manager/index.d.ts.map +1 -1
- package/dist/src/conversation-manager/index.js +1 -0
- package/dist/src/conversation-manager/index.js.map +1 -1
- package/dist/src/conversation-manager/null-conversation-manager.d.ts +12 -8
- package/dist/src/conversation-manager/null-conversation-manager.d.ts.map +1 -1
- package/dist/src/conversation-manager/null-conversation-manager.js +13 -7
- package/dist/src/conversation-manager/null-conversation-manager.js.map +1 -1
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +28 -19
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js +57 -42
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
- package/dist/src/errors.d.ts +8 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +11 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/__tests__/events.test.js +387 -0
- package/dist/src/hooks/__tests__/events.test.js.map +1 -1
- package/dist/src/hooks/__tests__/registry.test.js +10 -154
- package/dist/src/hooks/__tests__/registry.test.js.map +1 -1
- package/dist/src/hooks/events.d.ts +148 -44
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js +148 -11
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/hooks/index.d.ts +3 -3
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +2 -2
- package/dist/src/hooks/registry.d.ts +1 -32
- package/dist/src/hooks/registry.d.ts.map +1 -1
- package/dist/src/hooks/registry.js +1 -47
- package/dist/src/hooks/registry.js.map +1 -1
- package/dist/src/hooks/types.d.ts +0 -31
- package/dist/src/hooks/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +14 -13
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +11 -9
- package/dist/src/index.js.map +1 -1
- package/dist/src/mime.d.ts +24 -0
- package/dist/src/mime.d.ts.map +1 -0
- package/dist/src/mime.js +82 -0
- package/dist/src/mime.js.map +1 -0
- package/dist/src/models/__tests__/anthropic.test.js +79 -3
- package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +1858 -627
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/__tests__/google.test.d.ts +2 -0
- package/dist/src/models/__tests__/google.test.d.ts.map +1 -0
- package/dist/src/models/__tests__/{gemini.test.js → google.test.js} +155 -22
- package/dist/src/models/__tests__/google.test.js.map +1 -0
- package/dist/src/models/__tests__/model.test.js +25 -0
- package/dist/src/models/__tests__/model.test.js.map +1 -1
- package/dist/src/models/__tests__/openai.test.js +255 -96
- package/dist/src/models/__tests__/openai.test.js.map +1 -1
- package/dist/src/models/anthropic.d.ts.map +1 -1
- package/dist/src/models/anthropic.js +14 -14
- package/dist/src/models/anthropic.js.map +1 -1
- package/dist/src/models/bedrock.d.ts +67 -13
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +207 -28
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/{gemini → google}/adapters.d.ts +3 -3
- package/dist/src/models/{gemini → google}/adapters.d.ts.map +1 -1
- package/dist/src/models/{gemini → google}/adapters.js +66 -15
- package/dist/src/models/google/adapters.js.map +1 -0
- package/dist/src/models/{gemini → google}/errors.d.ts +7 -7
- package/dist/src/models/google/errors.d.ts.map +1 -0
- package/dist/src/models/{gemini → google}/errors.js +11 -5
- package/dist/src/models/google/errors.js.map +1 -0
- package/dist/src/models/google/index.d.ts +15 -0
- package/dist/src/models/google/index.d.ts.map +1 -0
- package/dist/src/models/google/index.js +15 -0
- package/dist/src/models/google/index.js.map +1 -0
- package/dist/src/models/{gemini → google}/model.d.ts +18 -18
- package/dist/src/models/{gemini → google}/model.d.ts.map +1 -1
- package/dist/src/models/{gemini → google}/model.js +22 -19
- package/dist/src/models/google/model.js.map +1 -0
- package/dist/src/models/{gemini → google}/types.d.ts +9 -9
- package/dist/src/models/{gemini → google}/types.d.ts.map +1 -1
- package/dist/src/models/google/types.js +5 -0
- package/dist/src/models/google/types.js.map +1 -0
- package/dist/src/models/model.d.ts +12 -0
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js +6 -10
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/openai.d.ts +44 -11
- package/dist/src/models/openai.d.ts.map +1 -1
- package/dist/src/models/openai.js +133 -79
- package/dist/src/models/openai.js.map +1 -1
- package/dist/src/models/streaming.d.ts +18 -0
- package/dist/src/models/streaming.d.ts.map +1 -1
- package/dist/src/models/streaming.js +29 -0
- package/dist/src/models/streaming.js.map +1 -1
- package/dist/src/multiagent/__tests__/events.test.js +201 -7
- package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/graph.test.js +28 -13
- package/dist/src/multiagent/__tests__/graph.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/graph.tracer.test.js +204 -0
- package/dist/src/multiagent/__tests__/graph.tracer.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/nodes.test.js +76 -15
- package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/swarm.test.js +67 -16
- package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/swarm.tracer.test.js +235 -0
- package/dist/src/multiagent/__tests__/swarm.tracer.test.js.map +1 -0
- package/dist/src/multiagent/events.d.ts +62 -14
- package/dist/src/multiagent/events.d.ts.map +1 -1
- package/dist/src/multiagent/events.js +45 -3
- package/dist/src/multiagent/events.js.map +1 -1
- package/dist/src/multiagent/graph.d.ts +25 -11
- package/dist/src/multiagent/graph.d.ts.map +1 -1
- package/dist/src/multiagent/graph.js +76 -44
- package/dist/src/multiagent/graph.js.map +1 -1
- package/dist/src/multiagent/index.d.ts +4 -3
- package/dist/src/multiagent/index.d.ts.map +1 -1
- package/dist/src/multiagent/index.js.map +1 -1
- package/dist/src/multiagent/multiagent.d.ts +41 -0
- package/dist/src/multiagent/multiagent.d.ts.map +1 -0
- package/dist/src/multiagent/multiagent.js +2 -0
- package/dist/src/multiagent/multiagent.js.map +1 -0
- package/dist/src/multiagent/nodes.d.ts +35 -24
- package/dist/src/multiagent/nodes.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.js +50 -23
- package/dist/src/multiagent/nodes.js.map +1 -1
- package/dist/src/multiagent/plugins.d.ts +70 -0
- package/dist/src/multiagent/plugins.d.ts.map +1 -0
- package/dist/src/multiagent/plugins.js +70 -0
- package/dist/src/multiagent/plugins.js.map +1 -0
- package/dist/src/multiagent/state.d.ts +10 -5
- package/dist/src/multiagent/state.d.ts.map +1 -1
- package/dist/src/multiagent/state.js +20 -6
- package/dist/src/multiagent/state.js.map +1 -1
- package/dist/src/multiagent/swarm.d.ts +41 -17
- package/dist/src/multiagent/swarm.d.ts.map +1 -1
- package/dist/src/multiagent/swarm.js +101 -42
- package/dist/src/multiagent/swarm.js.map +1 -1
- package/dist/src/plugins/__tests__/plugin.test.d.ts +2 -0
- package/dist/src/plugins/__tests__/plugin.test.d.ts.map +1 -0
- package/dist/src/plugins/__tests__/plugin.test.js +114 -0
- package/dist/src/plugins/__tests__/plugin.test.js.map +1 -0
- package/dist/src/plugins/__tests__/registry.test.d.ts +2 -0
- package/dist/src/plugins/__tests__/registry.test.d.ts.map +1 -0
- package/dist/src/plugins/__tests__/registry.test.js +147 -0
- package/dist/src/plugins/__tests__/registry.test.js.map +1 -0
- package/dist/src/plugins/index.d.ts +30 -0
- package/dist/src/plugins/index.d.ts.map +1 -0
- package/dist/src/plugins/index.js +30 -0
- package/dist/src/plugins/index.js.map +1 -0
- package/dist/src/plugins/plugin.d.ts +74 -0
- package/dist/src/plugins/plugin.d.ts.map +1 -0
- package/dist/src/plugins/plugin.js +8 -0
- package/dist/src/plugins/plugin.js.map +1 -0
- package/dist/src/plugins/registry.d.ts +25 -0
- package/dist/src/plugins/registry.d.ts.map +1 -0
- package/dist/src/plugins/registry.js +41 -0
- package/dist/src/plugins/registry.js.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.js +110 -92
- package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
- package/dist/src/session/index.d.ts +0 -1
- package/dist/src/session/index.d.ts.map +1 -1
- package/dist/src/session/index.js +0 -1
- package/dist/src/session/index.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +11 -8
- package/dist/src/session/session-manager.d.ts.map +1 -1
- package/dist/src/session/session-manager.js +24 -16
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session/storage.d.ts +1 -1
- package/dist/src/session/storage.d.ts.map +1 -1
- package/dist/src/session/types.d.ts +2 -2
- package/dist/src/session/types.d.ts.map +1 -1
- package/dist/src/{app-state.d.ts → state-store.d.ts} +11 -11
- package/dist/src/state-store.d.ts.map +1 -0
- package/dist/src/{app-state.js → state-store.js} +8 -7
- package/dist/src/state-store.js.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.js +24 -0
- package/dist/src/telemetry/__tests__/config.test.js.map +1 -1
- package/dist/src/telemetry/__tests__/config.test.node.js +56 -0
- package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -1
- package/dist/src/telemetry/__tests__/local-trace.test.d.ts +2 -0
- package/dist/src/telemetry/__tests__/local-trace.test.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/local-trace.test.js +158 -0
- package/dist/src/telemetry/__tests__/local-trace.test.js.map +1 -0
- package/dist/src/telemetry/__tests__/meter.test.js +176 -9
- package/dist/src/telemetry/__tests__/meter.test.js.map +1 -1
- package/dist/src/telemetry/__tests__/tracer.test.node.js +151 -2
- package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -1
- package/dist/src/telemetry/config.d.ts +72 -12
- package/dist/src/telemetry/config.d.ts.map +1 -1
- package/dist/src/telemetry/config.js +102 -25
- package/dist/src/telemetry/config.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +10 -7
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +9 -6
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/meter.d.ts +23 -17
- package/dist/src/telemetry/meter.d.ts.map +1 -1
- package/dist/src/telemetry/meter.js +86 -41
- package/dist/src/telemetry/meter.js.map +1 -1
- package/dist/src/telemetry/tracer.d.ts +134 -18
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +325 -38
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +51 -0
- package/dist/src/telemetry/types.d.ts.map +1 -1
- package/dist/src/telemetry/utils.d.ts +10 -0
- package/dist/src/telemetry/utils.d.ts.map +1 -0
- package/dist/src/telemetry/utils.js +13 -0
- package/dist/src/telemetry/utils.js.map +1 -0
- package/dist/src/tools/__tests__/structured-output-tool.test.d.ts +2 -0
- package/dist/src/tools/__tests__/structured-output-tool.test.d.ts.map +1 -0
- package/dist/src/tools/__tests__/structured-output-tool.test.js +84 -0
- package/dist/src/tools/__tests__/structured-output-tool.test.js.map +1 -0
- package/dist/src/tools/__tests__/tool.test.js +22 -1
- package/dist/src/tools/__tests__/tool.test.js.map +1 -1
- package/dist/src/tools/function-tool.d.ts +11 -1
- package/dist/src/tools/function-tool.d.ts.map +1 -1
- package/dist/src/tools/function-tool.js +64 -3
- package/dist/src/tools/function-tool.js.map +1 -1
- package/dist/src/tools/structured-output-tool.d.ts +41 -0
- package/dist/src/tools/structured-output-tool.d.ts.map +1 -0
- package/dist/src/tools/structured-output-tool.js +82 -0
- package/dist/src/tools/structured-output-tool.js.map +1 -0
- package/dist/src/tools/tool.d.ts +2 -2
- package/dist/src/tools/tool.d.ts.map +1 -1
- package/dist/src/tools/zod-tool.js +1 -1
- package/dist/src/tools/zod-tool.js.map +1 -1
- package/dist/src/{utils/zod.d.ts → tools/zod-utils.d.ts} +1 -1
- package/dist/src/tools/zod-utils.d.ts.map +1 -0
- package/dist/src/{utils/zod.js → tools/zod-utils.js} +1 -1
- package/dist/src/tools/zod-utils.js.map +1 -0
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/__tests__/agent.test.js +127 -0
- package/dist/src/types/__tests__/agent.test.js.map +1 -1
- package/dist/src/types/__tests__/media.test.js +22 -16
- package/dist/src/types/__tests__/media.test.js.map +1 -1
- package/dist/src/types/agent.d.ts +101 -7
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js +26 -0
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/media.d.ts +27 -30
- package/dist/src/types/media.d.ts.map +1 -1
- package/dist/src/types/media.js +15 -56
- package/dist/src/types/media.js.map +1 -1
- package/dist/src/types/messages.d.ts +18 -4
- package/dist/src/types/messages.d.ts.map +1 -1
- package/dist/src/types/messages.js +22 -26
- package/dist/src/types/messages.js.map +1 -1
- package/dist/src/types/serializable.d.ts +34 -4
- package/dist/src/types/serializable.d.ts.map +1 -1
- package/dist/src/types/serializable.js +31 -2
- package/dist/src/types/serializable.js.map +1 -1
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +17 -4
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
- package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
- package/dist/src/vended-tools/bash/bash.js +16 -14
- package/dist/src/vended-tools/bash/bash.js.map +1 -1
- package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.d.ts.map +1 -0
- package/dist/src/vended-tools/{file_editor → file-editor}/__tests__/file-editor.test.node.js +11 -4
- package/dist/src/vended-tools/file-editor/__tests__/file-editor.test.node.js.map +1 -0
- package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.d.ts +1 -1
- package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.d.ts.map +1 -1
- package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.js +2 -2
- package/dist/src/vended-tools/{file_editor → file-editor}/file-editor.js.map +1 -1
- package/dist/src/vended-tools/{file_editor → file-editor}/index.d.ts.map +1 -1
- package/dist/src/vended-tools/file-editor/index.js.map +1 -0
- package/dist/src/vended-tools/{file_editor → file-editor}/types.d.ts.map +1 -1
- package/dist/src/vended-tools/file-editor/types.js.map +1 -0
- package/dist/src/vended-tools/http-request/__tests__/http-request.test.d.ts.map +1 -0
- package/dist/src/vended-tools/{http_request → http-request}/__tests__/http-request.test.js.map +1 -1
- package/dist/src/vended-tools/{http_request → http-request}/http-request.d.ts.map +1 -1
- package/dist/src/vended-tools/{http_request → http-request}/http-request.js.map +1 -1
- package/dist/src/vended-tools/{http_request → http-request}/index.d.ts.map +1 -1
- package/dist/src/vended-tools/http-request/index.js.map +1 -0
- package/dist/src/vended-tools/{http_request → http-request}/types.d.ts.map +1 -1
- package/dist/src/vended-tools/http-request/types.js.map +1 -0
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +5 -4
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
- package/dist/src/vended-tools/notebook/notebook.js +2 -2
- package/dist/src/vended-tools/notebook/notebook.js.map +1 -1
- package/package.json +63 -17
- package/dist/src/__fixtures__/mock-hook-provider.d.ts +0 -10
- package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +0 -1
- package/dist/src/__fixtures__/mock-hook-provider.js.map +0 -1
- package/dist/src/__tests__/app-state.test.d.ts +0 -2
- package/dist/src/__tests__/app-state.test.d.ts.map +0 -1
- package/dist/src/__tests__/app-state.test.js.map +0 -1
- package/dist/src/agent/__tests__/agent.tracer.test.d.ts +0 -2
- package/dist/src/agent/__tests__/agent.tracer.test.d.ts.map +0 -1
- package/dist/src/agent/__tests__/agent.tracer.test.js.map +0 -1
- package/dist/src/app-state.d.ts.map +0 -1
- package/dist/src/app-state.js.map +0 -1
- package/dist/src/models/__tests__/gemini.test.d.ts +0 -2
- package/dist/src/models/__tests__/gemini.test.d.ts.map +0 -1
- package/dist/src/models/__tests__/gemini.test.js.map +0 -1
- package/dist/src/models/gemini/adapters.js.map +0 -1
- package/dist/src/models/gemini/errors.d.ts.map +0 -1
- package/dist/src/models/gemini/errors.js.map +0 -1
- package/dist/src/models/gemini/model.js.map +0 -1
- package/dist/src/models/gemini/types.js +0 -5
- package/dist/src/models/gemini/types.js.map +0 -1
- package/dist/src/multiagent/base.d.ts +0 -25
- package/dist/src/multiagent/base.d.ts.map +0 -1
- package/dist/src/multiagent/base.js +0 -2
- package/dist/src/multiagent/base.js.map +0 -1
- package/dist/src/structured-output/__tests__/context.test.d.ts +0 -2
- package/dist/src/structured-output/__tests__/context.test.d.ts.map +0 -1
- package/dist/src/structured-output/__tests__/context.test.js +0 -201
- package/dist/src/structured-output/__tests__/context.test.js.map +0 -1
- package/dist/src/structured-output/__tests__/exceptions.test.d.ts +0 -2
- package/dist/src/structured-output/__tests__/exceptions.test.d.ts.map +0 -1
- package/dist/src/structured-output/__tests__/exceptions.test.js +0 -103
- package/dist/src/structured-output/__tests__/exceptions.test.js.map +0 -1
- package/dist/src/structured-output/__tests__/tool.test.d.ts +0 -2
- package/dist/src/structured-output/__tests__/tool.test.d.ts.map +0 -1
- package/dist/src/structured-output/__tests__/tool.test.js +0 -256
- package/dist/src/structured-output/__tests__/tool.test.js.map +0 -1
- package/dist/src/structured-output/__tests__/utils.test.d.ts +0 -2
- package/dist/src/structured-output/__tests__/utils.test.d.ts.map +0 -1
- package/dist/src/structured-output/__tests__/utils.test.js +0 -183
- package/dist/src/structured-output/__tests__/utils.test.js.map +0 -1
- package/dist/src/structured-output/context.d.ts +0 -91
- package/dist/src/structured-output/context.d.ts.map +0 -1
- package/dist/src/structured-output/context.js +0 -112
- package/dist/src/structured-output/context.js.map +0 -1
- package/dist/src/structured-output/exceptions.d.ts +0 -18
- package/dist/src/structured-output/exceptions.d.ts.map +0 -1
- package/dist/src/structured-output/exceptions.js +0 -28
- package/dist/src/structured-output/exceptions.js.map +0 -1
- package/dist/src/structured-output/tool.d.ts +0 -33
- package/dist/src/structured-output/tool.d.ts.map +0 -1
- package/dist/src/structured-output/tool.js +0 -73
- package/dist/src/structured-output/tool.js.map +0 -1
- package/dist/src/structured-output/utils.d.ts +0 -23
- package/dist/src/structured-output/utils.d.ts.map +0 -1
- package/dist/src/structured-output/utils.js +0 -104
- package/dist/src/structured-output/utils.js.map +0 -1
- package/dist/src/utils/zod.d.ts.map +0 -1
- package/dist/src/utils/zod.js.map +0 -1
- package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.d.ts.map +0 -1
- package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js.map +0 -1
- package/dist/src/vended-tools/file_editor/index.js.map +0 -1
- package/dist/src/vended-tools/file_editor/types.js.map +0 -1
- package/dist/src/vended-tools/http_request/__tests__/http-request.test.d.ts.map +0 -1
- package/dist/src/vended-tools/http_request/index.js.map +0 -1
- package/dist/src/vended-tools/http_request/types.js.map +0 -1
- /package/dist/src/vended-tools/{file_editor → file-editor}/__tests__/file-editor.test.node.d.ts +0 -0
- /package/dist/src/vended-tools/{file_editor → file-editor}/index.d.ts +0 -0
- /package/dist/src/vended-tools/{file_editor → file-editor}/index.js +0 -0
- /package/dist/src/vended-tools/{file_editor → file-editor}/types.d.ts +0 -0
- /package/dist/src/vended-tools/{file_editor → file-editor}/types.js +0 -0
- /package/dist/src/vended-tools/{http_request → http-request}/__tests__/http-request.test.d.ts +0 -0
- /package/dist/src/vended-tools/{http_request → http-request}/__tests__/http-request.test.js +0 -0
- /package/dist/src/vended-tools/{http_request → http-request}/http-request.d.ts +0 -0
- /package/dist/src/vended-tools/{http_request → http-request}/http-request.js +0 -0
- /package/dist/src/vended-tools/{http_request → http-request}/index.d.ts +0 -0
- /package/dist/src/vended-tools/{http_request → http-request}/index.js +0 -0
- /package/dist/src/vended-tools/{http_request → http-request}/types.d.ts +0 -0
- /package/dist/src/vended-tools/{http_request → http-request}/types.js +0 -0
package/README.md
CHANGED
|
@@ -47,6 +47,7 @@ Strands Agents is a simple yet powerful SDK that takes a model-driven approach t
|
|
|
47
47
|
- **⚡ Streaming Support**: Real-time response streaming for better user experience
|
|
48
48
|
- **🎣 Extensible Hooks**: Lifecycle hooks for monitoring and customizing agent behavior
|
|
49
49
|
- **💬 Conversation Management**: Flexible strategies for managing conversation history and context windows
|
|
50
|
+
- **🤝 Multi-Agent Orchestration**: Graph and Swarm patterns for coordinating multiple agents
|
|
50
51
|
|
|
51
52
|
---
|
|
52
53
|
|
|
@@ -73,7 +74,7 @@ const result = await agent.invoke('What is the square root of 1764?')
|
|
|
73
74
|
console.log(result)
|
|
74
75
|
```
|
|
75
76
|
|
|
76
|
-
> **Note**: For the default Amazon Bedrock model provider, you'll need AWS credentials configured and model access enabled for Claude 4
|
|
77
|
+
> **Note**: For the default Amazon Bedrock model provider, you'll need AWS credentials configured and model access enabled for Claude Sonnet 4 in your region.
|
|
77
78
|
|
|
78
79
|
---
|
|
79
80
|
|
|
@@ -113,10 +114,10 @@ const agent = new Agent({ model })
|
|
|
113
114
|
|
|
114
115
|
```typescript
|
|
115
116
|
import { Agent } from '@strands-agents/sdk'
|
|
116
|
-
import { OpenAIModel } from '@strands-agents/sdk/openai'
|
|
117
|
+
import { OpenAIModel } from '@strands-agents/sdk/models/openai'
|
|
117
118
|
|
|
118
|
-
// Automatically uses process.env.OPENAI_API_KEY and defaults to gpt-
|
|
119
|
-
const model = new OpenAIModel()
|
|
119
|
+
// Automatically uses process.env.OPENAI_API_KEY and defaults to gpt-5.4
|
|
120
|
+
const model = new OpenAIModel({ api: 'chat' })
|
|
120
121
|
|
|
121
122
|
const agent = new Agent({ model })
|
|
122
123
|
```
|
|
@@ -193,16 +194,16 @@ console.log(result.structuredOutput.name) // "John Smith"
|
|
|
193
194
|
console.log(result.structuredOutput.age) // 30
|
|
194
195
|
```
|
|
195
196
|
|
|
196
|
-
**Error handling**: The agent automatically retries with validation feedback when the LLM provides invalid output. If validation ultimately fails, a `
|
|
197
|
+
**Error handling**: The agent automatically retries with validation feedback when the LLM provides invalid output. If validation ultimately fails, a `StructuredOutputError` is thrown:
|
|
197
198
|
|
|
198
199
|
```typescript
|
|
199
|
-
import {
|
|
200
|
+
import { StructuredOutputError } from '@strands-agents/sdk'
|
|
200
201
|
|
|
201
202
|
try {
|
|
202
203
|
const result = await agent.invoke('Extract person info...')
|
|
203
204
|
console.log(result.structuredOutput)
|
|
204
205
|
} catch (error) {
|
|
205
|
-
if (error instanceof
|
|
206
|
+
if (error instanceof StructuredOutputError) {
|
|
206
207
|
console.error('Validation failed:', error.message)
|
|
207
208
|
}
|
|
208
209
|
}
|
|
@@ -235,6 +236,69 @@ await agent.invoke("Use a random tool from the MCP server.");
|
|
|
235
236
|
await documentationTools.disconnect();
|
|
236
237
|
```
|
|
237
238
|
|
|
239
|
+
### Multi-Agent Orchestration
|
|
240
|
+
|
|
241
|
+
Coordinate multiple agents using built-in orchestration patterns.
|
|
242
|
+
|
|
243
|
+
**Graph** — You define a deterministic execution plan. Agents run as nodes in a directed graph, with edges controlling execution order. Parallel execution is supported, and downstream nodes run once all dependencies complete.
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
import { Agent, BedrockModel, Graph } from '@strands-agents/sdk'
|
|
247
|
+
|
|
248
|
+
const model = new BedrockModel({ maxTokens: 1024 })
|
|
249
|
+
|
|
250
|
+
const researcher = new Agent({
|
|
251
|
+
model,
|
|
252
|
+
id: 'researcher',
|
|
253
|
+
systemPrompt: 'Research the topic and provide key facts.',
|
|
254
|
+
})
|
|
255
|
+
|
|
256
|
+
const writer = new Agent({
|
|
257
|
+
model,
|
|
258
|
+
id: 'writer',
|
|
259
|
+
systemPrompt: 'Rewrite the research into a polished paragraph.',
|
|
260
|
+
})
|
|
261
|
+
|
|
262
|
+
const graph = new Graph({
|
|
263
|
+
nodes: [researcher, writer],
|
|
264
|
+
edges: [['researcher', 'writer']],
|
|
265
|
+
})
|
|
266
|
+
|
|
267
|
+
const result = await graph.invoke('What is the largest ocean?')
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**Swarm** — The agents decide the routing. Each agent chooses whether to hand off to another agent or produce a final response, making the execution path dynamic and model-driven.
|
|
271
|
+
|
|
272
|
+
```typescript
|
|
273
|
+
import { Agent, BedrockModel, Swarm } from '@strands-agents/sdk'
|
|
274
|
+
|
|
275
|
+
const model = new BedrockModel({ maxTokens: 1024 })
|
|
276
|
+
|
|
277
|
+
const researcher = new Agent({
|
|
278
|
+
model,
|
|
279
|
+
id: 'researcher',
|
|
280
|
+
description: 'Researches a topic and gathers key facts.',
|
|
281
|
+
systemPrompt: 'Research the answer, then hand off to the writer.',
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
const writer = new Agent({
|
|
285
|
+
model,
|
|
286
|
+
id: 'writer',
|
|
287
|
+
description: 'Writes a polished final answer.',
|
|
288
|
+
systemPrompt: 'Write the final answer. Do not hand off.',
|
|
289
|
+
})
|
|
290
|
+
|
|
291
|
+
const swarm = new Swarm({
|
|
292
|
+
nodes: [researcher, writer],
|
|
293
|
+
start: 'researcher',
|
|
294
|
+
maxSteps: 4,
|
|
295
|
+
})
|
|
296
|
+
|
|
297
|
+
const result = await swarm.invoke('What is the largest ocean?')
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Both patterns support streaming via `.stream()` for real-time access to handoff and node execution events. See the [examples](./examples/) directory for complete working samples.
|
|
301
|
+
|
|
238
302
|
---
|
|
239
303
|
|
|
240
304
|
## Documentation
|
|
@@ -3,9 +3,22 @@
|
|
|
3
3
|
* This module provides utilities for testing Agent-related implementations.
|
|
4
4
|
*/
|
|
5
5
|
import type { Agent } from '../agent/agent.js';
|
|
6
|
+
import type { AgentResult } from '../types/agent.js';
|
|
7
|
+
import type { StopReason } from '../types/messages.js';
|
|
6
8
|
import { Message } from '../types/messages.js';
|
|
7
9
|
import type { Role } from '../types/messages.js';
|
|
8
10
|
import type { JSONValue } from '../types/json.js';
|
|
11
|
+
import { ToolRegistry } from '../registry/tool-registry.js';
|
|
12
|
+
import type { HookableEvent } from '../hooks/events.js';
|
|
13
|
+
import type { HookableEventConstructor, HookCallback } from '../hooks/types.js';
|
|
14
|
+
import { type LoopMetricsMatcher } from './metrics-helpers.js';
|
|
15
|
+
/**
|
|
16
|
+
* A hook registration captured by the mock agent's addHook.
|
|
17
|
+
*/
|
|
18
|
+
export type TrackedHook = {
|
|
19
|
+
eventType: HookableEventConstructor<HookableEvent>;
|
|
20
|
+
callback: HookCallback<HookableEvent>;
|
|
21
|
+
};
|
|
9
22
|
/**
|
|
10
23
|
* Data for creating a mock Agent.
|
|
11
24
|
*/
|
|
@@ -17,16 +30,31 @@ export interface MockAgentData {
|
|
|
17
30
|
/**
|
|
18
31
|
* Initial state for the agent.
|
|
19
32
|
*/
|
|
20
|
-
|
|
33
|
+
appState?: Record<string, JSONValue>;
|
|
34
|
+
/**
|
|
35
|
+
* Optional tool registry for the agent.
|
|
36
|
+
*/
|
|
37
|
+
toolRegistry?: ToolRegistry;
|
|
38
|
+
/**
|
|
39
|
+
* Additional properties to spread onto the mock agent.
|
|
40
|
+
*/
|
|
41
|
+
extra?: Partial<Agent>;
|
|
21
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* A mock Agent with a `trackedHooks` array populated by `addHook` calls.
|
|
45
|
+
*/
|
|
46
|
+
export type MockAgent = Agent & {
|
|
47
|
+
trackedHooks: TrackedHook[];
|
|
48
|
+
};
|
|
22
49
|
/**
|
|
23
50
|
* Helper to create a mock Agent for testing.
|
|
24
|
-
* Provides minimal Agent interface with messages and
|
|
51
|
+
* Provides minimal Agent interface with messages, appState, and tool registry.
|
|
52
|
+
* `addHook` captures registrations into `trackedHooks` for test inspection.
|
|
25
53
|
*
|
|
26
54
|
* @param data - Optional mock agent data
|
|
27
|
-
* @returns Mock Agent
|
|
55
|
+
* @returns Mock Agent with trackedHooks
|
|
28
56
|
*/
|
|
29
|
-
export declare function createMockAgent(data?: MockAgentData):
|
|
57
|
+
export declare function createMockAgent(data?: MockAgentData): MockAgent;
|
|
30
58
|
/**
|
|
31
59
|
* Creates a Message with the given role containing a single TextBlock.
|
|
32
60
|
*
|
|
@@ -35,4 +63,53 @@ export declare function createMockAgent(data?: MockAgentData): Agent;
|
|
|
35
63
|
* @returns A Message with the specified role
|
|
36
64
|
*/
|
|
37
65
|
export declare function textMessage(role: Role, text: string): Message;
|
|
66
|
+
/**
|
|
67
|
+
* Finds the tracked hook for the given event type and invokes it with the provided event.
|
|
68
|
+
* Throws if no hook is registered for that event type.
|
|
69
|
+
*
|
|
70
|
+
* @param agent - The mock agent with tracked hooks
|
|
71
|
+
* @param event - The event instance to dispatch
|
|
72
|
+
*/
|
|
73
|
+
export declare function invokeTrackedHook<T extends HookableEvent>(agent: MockAgent, event: T): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Options for building an AgentResult matcher.
|
|
76
|
+
*/
|
|
77
|
+
export interface AgentResultMatcher extends Omit<LoopMetricsMatcher, 'cycleCount'> {
|
|
78
|
+
/**
|
|
79
|
+
* Expected stop reason from the final model response.
|
|
80
|
+
*/
|
|
81
|
+
stopReason: StopReason;
|
|
82
|
+
/**
|
|
83
|
+
* Expected text content in the last assistant message's TextBlock.
|
|
84
|
+
* When provided, asserts exact text match in a TextBlock with role 'assistant'.
|
|
85
|
+
* When omitted, only validates lastMessage exists with role 'assistant'.
|
|
86
|
+
*/
|
|
87
|
+
messageText?: string;
|
|
88
|
+
/**
|
|
89
|
+
* Expected number of agent loop cycles.
|
|
90
|
+
*/
|
|
91
|
+
cycleCount: number;
|
|
92
|
+
/**
|
|
93
|
+
* Expected number of traces. When provided, asserts exact array length.
|
|
94
|
+
* When omitted, asserts traces array exists with at least one element.
|
|
95
|
+
*/
|
|
96
|
+
traceCount?: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Creates an asymmetric matcher that validates AgentResult structure and values.
|
|
100
|
+
* Reduces nesting in test assertions by providing a clean, readable matcher.
|
|
101
|
+
*
|
|
102
|
+
* @param options - Expected result values
|
|
103
|
+
* @returns An asymmetric matcher suitable for use in expect().toEqual()
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* expect(result).toEqual(expectAgentResult({
|
|
108
|
+
* stopReason: 'endTurn',
|
|
109
|
+
* messageText: 'Hello',
|
|
110
|
+
* cycleCount: 1,
|
|
111
|
+
* }))
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export declare function expectAgentResult(options: AgentResultMatcher): AgentResult;
|
|
38
115
|
//# sourceMappingURL=agent-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-helpers.d.ts","sourceRoot":"","sources":["../../../src/__fixtures__/agent-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"agent-helpers.d.ts","sourceRoot":"","sources":["../../../src/__fixtures__/agent-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAa,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEjF;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,wBAAwB,CAAC,aAAa,CAAC,CAAA;IAClD,QAAQ,EAAE,YAAY,CAAC,aAAa,CAAC,CAAA;CACtC,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IACpC;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG;IAAE,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAAA;AAE/D;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAgB/D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,SAAS,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1G;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC;IAChF;;OAEG;IACH,UAAU,EAAE,UAAU,CAAA;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CA+B1E"}
|
|
@@ -2,19 +2,34 @@
|
|
|
2
2
|
* Test fixtures and helpers for Agent testing.
|
|
3
3
|
* This module provides utilities for testing Agent-related implementations.
|
|
4
4
|
*/
|
|
5
|
+
import { expect } from 'vitest';
|
|
5
6
|
import { Message, TextBlock } from '../types/messages.js';
|
|
6
|
-
import {
|
|
7
|
+
import { StateStore } from '../state-store.js';
|
|
8
|
+
import { ToolRegistry } from '../registry/tool-registry.js';
|
|
9
|
+
import { expectLoopMetrics } from './metrics-helpers.js';
|
|
7
10
|
/**
|
|
8
11
|
* Helper to create a mock Agent for testing.
|
|
9
|
-
* Provides minimal Agent interface with messages and
|
|
12
|
+
* Provides minimal Agent interface with messages, appState, and tool registry.
|
|
13
|
+
* `addHook` captures registrations into `trackedHooks` for test inspection.
|
|
10
14
|
*
|
|
11
15
|
* @param data - Optional mock agent data
|
|
12
|
-
* @returns Mock Agent
|
|
16
|
+
* @returns Mock Agent with trackedHooks
|
|
13
17
|
*/
|
|
14
18
|
export function createMockAgent(data) {
|
|
19
|
+
const trackedHooks = [];
|
|
15
20
|
return {
|
|
16
21
|
messages: data?.messages ?? [],
|
|
17
|
-
|
|
22
|
+
appState: new StateStore(data?.appState ?? {}),
|
|
23
|
+
toolRegistry: data?.toolRegistry ?? new ToolRegistry(),
|
|
24
|
+
addHook: (eventType, callback) => {
|
|
25
|
+
trackedHooks.push({
|
|
26
|
+
eventType: eventType,
|
|
27
|
+
callback: callback,
|
|
28
|
+
});
|
|
29
|
+
return () => { };
|
|
30
|
+
},
|
|
31
|
+
...data?.extra,
|
|
32
|
+
trackedHooks,
|
|
18
33
|
};
|
|
19
34
|
}
|
|
20
35
|
/**
|
|
@@ -27,4 +42,61 @@ export function createMockAgent(data) {
|
|
|
27
42
|
export function textMessage(role, text) {
|
|
28
43
|
return new Message({ role, content: [new TextBlock(text)] });
|
|
29
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Finds the tracked hook for the given event type and invokes it with the provided event.
|
|
47
|
+
* Throws if no hook is registered for that event type.
|
|
48
|
+
*
|
|
49
|
+
* @param agent - The mock agent with tracked hooks
|
|
50
|
+
* @param event - The event instance to dispatch
|
|
51
|
+
*/
|
|
52
|
+
export async function invokeTrackedHook(agent, event) {
|
|
53
|
+
const hook = agent.trackedHooks.find((h) => h.eventType === event.constructor);
|
|
54
|
+
if (!hook) {
|
|
55
|
+
throw new Error(`No hook registered for event type: ${event.constructor.name}`);
|
|
56
|
+
}
|
|
57
|
+
await hook.callback(event);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Creates an asymmetric matcher that validates AgentResult structure and values.
|
|
61
|
+
* Reduces nesting in test assertions by providing a clean, readable matcher.
|
|
62
|
+
*
|
|
63
|
+
* @param options - Expected result values
|
|
64
|
+
* @returns An asymmetric matcher suitable for use in expect().toEqual()
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* expect(result).toEqual(expectAgentResult({
|
|
69
|
+
* stopReason: 'endTurn',
|
|
70
|
+
* messageText: 'Hello',
|
|
71
|
+
* cycleCount: 1,
|
|
72
|
+
* }))
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export function expectAgentResult(options) {
|
|
76
|
+
const { stopReason, messageText, cycleCount, traceCount, toolNames, usage } = options;
|
|
77
|
+
const expectedLastMessage = messageText
|
|
78
|
+
? expect.objectContaining({
|
|
79
|
+
role: 'assistant',
|
|
80
|
+
content: expect.arrayContaining([expect.objectContaining({ type: 'textBlock', text: messageText })]),
|
|
81
|
+
})
|
|
82
|
+
: expect.objectContaining({ role: 'assistant' });
|
|
83
|
+
const expectedTraces = traceCount !== undefined
|
|
84
|
+
? expect.objectContaining({ length: traceCount })
|
|
85
|
+
: expect.arrayContaining([expect.objectContaining({ name: expect.any(String) })]);
|
|
86
|
+
// Build metrics matcher options, only including defined properties
|
|
87
|
+
const metricsOptions = { cycleCount };
|
|
88
|
+
if (toolNames !== undefined) {
|
|
89
|
+
metricsOptions.toolNames = toolNames;
|
|
90
|
+
}
|
|
91
|
+
if (usage !== undefined) {
|
|
92
|
+
metricsOptions.usage = usage;
|
|
93
|
+
}
|
|
94
|
+
return expect.objectContaining({
|
|
95
|
+
type: 'agentResult',
|
|
96
|
+
stopReason,
|
|
97
|
+
lastMessage: expectedLastMessage,
|
|
98
|
+
metrics: expectLoopMetrics(metricsOptions),
|
|
99
|
+
traces: expectedTraces,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
30
102
|
//# sourceMappingURL=agent-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-helpers.js","sourceRoot":"","sources":["../../../src/__fixtures__/agent-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"agent-helpers.js","sourceRoot":"","sources":["../../../src/__fixtures__/agent-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Test helpers for asserting on AgentMetrics in agent tests.
|
|
3
3
|
*/
|
|
4
|
+
import type { Usage } from '../models/streaming.js';
|
|
4
5
|
import { AgentMetrics } from '../telemetry/meter.js';
|
|
5
6
|
/**
|
|
6
7
|
* Options for building an AgentMetrics matcher.
|
|
@@ -14,6 +15,11 @@ export interface LoopMetricsMatcher {
|
|
|
14
15
|
* Expected tool names that were invoked.
|
|
15
16
|
*/
|
|
16
17
|
toolNames?: string[];
|
|
18
|
+
/**
|
|
19
|
+
* Expected accumulated token usage. When provided, asserts exact values.
|
|
20
|
+
* When omitted, asserts the shape with expect.any(Number).
|
|
21
|
+
*/
|
|
22
|
+
usage?: Usage;
|
|
17
23
|
}
|
|
18
24
|
/**
|
|
19
25
|
* Creates an asymmetric matcher that validates AgentMetrics structure and values.
|
|
@@ -22,4 +28,28 @@ export interface LoopMetricsMatcher {
|
|
|
22
28
|
* @returns An asymmetric matcher suitable for use in expect().toEqual()
|
|
23
29
|
*/
|
|
24
30
|
export declare function expectLoopMetrics(options: LoopMetricsMatcher): AgentMetrics;
|
|
31
|
+
/**
|
|
32
|
+
* Finds the latest data point value for a named metric from OTEL ResourceMetrics.
|
|
33
|
+
*
|
|
34
|
+
* Flattens the ResourceMetrics → ScopeMetrics → MetricData hierarchy and
|
|
35
|
+
* returns the value of the last data point for the matching metric name.
|
|
36
|
+
* For counters this is a number; for histograms it is an object with
|
|
37
|
+
* sum, count, min, max, etc.
|
|
38
|
+
*
|
|
39
|
+
* @param resourceMetrics - Array of ResourceMetrics from an InMemoryMetricExporter
|
|
40
|
+
* @param metricName - The metric descriptor name to search for
|
|
41
|
+
* @returns The value of the last data point, or undefined if not found
|
|
42
|
+
*/
|
|
43
|
+
export declare function findMetricValue(resourceMetrics: {
|
|
44
|
+
scopeMetrics: {
|
|
45
|
+
metrics: {
|
|
46
|
+
descriptor: {
|
|
47
|
+
name: string;
|
|
48
|
+
};
|
|
49
|
+
dataPoints: {
|
|
50
|
+
value: unknown;
|
|
51
|
+
}[];
|
|
52
|
+
}[];
|
|
53
|
+
}[];
|
|
54
|
+
}[], metricName: string): unknown;
|
|
25
55
|
//# sourceMappingURL=metrics-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-helpers.d.ts","sourceRoot":"","sources":["../../../src/__fixtures__/metrics-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"metrics-helpers.d.ts","sourceRoot":"","sources":["../../../src/__fixtures__/metrics-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,YAAY,CA2B3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,eAAe,EAAE;IACf,YAAY,EAAE;QAAE,OAAO,EAAE;YAAE,UAAU,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,UAAU,EAAE;gBAAE,KAAK,EAAE,OAAO,CAAA;aAAE,EAAE,CAAA;SAAE,EAAE,CAAA;KAAE,EAAE,CAAA;CAClG,EAAE,EACH,UAAU,EAAE,MAAM,GACjB,OAAO,CAQT"}
|
|
@@ -10,7 +10,7 @@ import { AgentMetrics } from '../telemetry/meter.js';
|
|
|
10
10
|
* @returns An asymmetric matcher suitable for use in expect().toEqual()
|
|
11
11
|
*/
|
|
12
12
|
export function expectLoopMetrics(options) {
|
|
13
|
-
const { cycleCount, toolNames = [] } = options;
|
|
13
|
+
const { cycleCount, toolNames = [], usage } = options;
|
|
14
14
|
const expectedToolMetrics = {};
|
|
15
15
|
for (const name of toolNames) {
|
|
16
16
|
expectedToolMetrics[name] = {
|
|
@@ -20,15 +20,38 @@ export function expectLoopMetrics(options) {
|
|
|
20
20
|
totalTime: expect.any(Number),
|
|
21
21
|
};
|
|
22
22
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
toolMetrics: toolNames.length > 0 ? expect.objectContaining(expectedToolMetrics) : {},
|
|
26
|
-
accumulatedUsage: expect.objectContaining({
|
|
23
|
+
const expectedUsage = usage ??
|
|
24
|
+
expect.objectContaining({
|
|
27
25
|
inputTokens: expect.any(Number),
|
|
28
26
|
outputTokens: expect.any(Number),
|
|
29
27
|
totalTokens: expect.any(Number),
|
|
30
|
-
})
|
|
28
|
+
});
|
|
29
|
+
return expect.objectContaining({
|
|
30
|
+
cycleCount,
|
|
31
|
+
toolMetrics: toolNames.length > 0 ? expect.objectContaining(expectedToolMetrics) : {},
|
|
32
|
+
accumulatedUsage: expectedUsage,
|
|
31
33
|
accumulatedMetrics: { latencyMs: expect.any(Number) },
|
|
32
34
|
});
|
|
33
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Finds the latest data point value for a named metric from OTEL ResourceMetrics.
|
|
38
|
+
*
|
|
39
|
+
* Flattens the ResourceMetrics → ScopeMetrics → MetricData hierarchy and
|
|
40
|
+
* returns the value of the last data point for the matching metric name.
|
|
41
|
+
* For counters this is a number; for histograms it is an object with
|
|
42
|
+
* sum, count, min, max, etc.
|
|
43
|
+
*
|
|
44
|
+
* @param resourceMetrics - Array of ResourceMetrics from an InMemoryMetricExporter
|
|
45
|
+
* @param metricName - The metric descriptor name to search for
|
|
46
|
+
* @returns The value of the last data point, or undefined if not found
|
|
47
|
+
*/
|
|
48
|
+
export function findMetricValue(resourceMetrics, metricName) {
|
|
49
|
+
const dp = resourceMetrics
|
|
50
|
+
.flatMap((rm) => rm.scopeMetrics)
|
|
51
|
+
.flatMap((sm) => sm.metrics)
|
|
52
|
+
.filter((m) => m.descriptor.name === metricName)
|
|
53
|
+
.flatMap((m) => m.dataPoints)
|
|
54
|
+
.at(-1);
|
|
55
|
+
return dp?.value;
|
|
56
|
+
}
|
|
34
57
|
//# sourceMappingURL=metrics-helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-helpers.js","sourceRoot":"","sources":["../../../src/__fixtures__/metrics-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"metrics-helpers.js","sourceRoot":"","sources":["../../../src/__fixtures__/metrics-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAuBpD;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC3D,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,OAAO,CAAA;IAErD,MAAM,mBAAmB,GAA4B,EAAE,CAAA;IACvD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,mBAAmB,CAAC,IAAI,CAAC,GAAG;YAC1B,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7B,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAChC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAC9B,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;SAC9B,CAAA;IACH,CAAC;IAED,MAAM,aAAa,GACjB,KAAK;QACL,MAAM,CAAC,gBAAgB,CAAC;YACtB,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAC/B,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;YAChC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;SAChC,CAAC,CAAA;IAEJ,OAAO,MAAM,CAAC,gBAAgB,CAAC;QAC7B,UAAU;QACV,WAAW,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE;QACrF,gBAAgB,EAAE,aAAa;QAC/B,kBAAkB,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;KACtD,CAAiB,CAAA;AACpB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,eAEG,EACH,UAAkB;IAElB,MAAM,EAAE,GAAG,eAAe;SACvB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC;SAChC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC;SAC/C,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;SAC5B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACT,OAAO,EAAE,EAAE,KAAK,CAAA;AAClB,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { Model } from '../models/model.js';
|
|
8
8
|
import type { Message, StopReason } from '../types/messages.js';
|
|
9
|
-
import type { ModelStreamEvent } from '../models/streaming.js';
|
|
9
|
+
import type { ModelStreamEvent, Usage } from '../models/streaming.js';
|
|
10
10
|
import type { BaseModelConfig, StreamOptions } from '../models/model.js';
|
|
11
11
|
import type { PlainContentBlock } from './slim-types.js';
|
|
12
12
|
/**
|
|
@@ -35,7 +35,7 @@ export declare class MockMessageModel extends Model<BaseModelConfig> {
|
|
|
35
35
|
* Returns this for method chaining.
|
|
36
36
|
*
|
|
37
37
|
* @param turn - ContentBlock, ContentBlock[], or Error to add
|
|
38
|
-
* @param
|
|
38
|
+
* @param options - Optional stop reason and token usage
|
|
39
39
|
* @returns This provider for chaining
|
|
40
40
|
*
|
|
41
41
|
* @example
|
|
@@ -43,11 +43,15 @@ export declare class MockMessageModel extends Model<BaseModelConfig> {
|
|
|
43
43
|
* provider
|
|
44
44
|
* .addTurn({ type: 'textBlock', text: 'Hello' }) // Single block
|
|
45
45
|
* .addTurn([{ type: 'toolUseBlock', ... }]) // Array of blocks
|
|
46
|
-
* .addTurn({ type: 'textBlock', text: 'Done' }, 'maxTokens') // Explicit stopReason
|
|
46
|
+
* .addTurn({ type: 'textBlock', text: 'Done' }, { stopReason: 'maxTokens' }) // Explicit stopReason
|
|
47
|
+
* .addTurn({ type: 'textBlock', text: 'Hi' }, { usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 } })
|
|
47
48
|
* .addTurn(new Error('Failed')) // Error turn
|
|
48
49
|
* ```
|
|
49
50
|
*/
|
|
50
|
-
addTurn(turn: ContentBlockInput,
|
|
51
|
+
addTurn(turn: ContentBlockInput, options?: {
|
|
52
|
+
stopReason?: StopReason;
|
|
53
|
+
usage?: Usage;
|
|
54
|
+
}): this;
|
|
51
55
|
/**
|
|
52
56
|
* Updates the model configuration.
|
|
53
57
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-message-model.d.ts","sourceRoot":"","sources":["../../../src/__fixtures__/mock-message-model.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"mock-message-model.d.ts","sourceRoot":"","sources":["../../../src/__fixtures__/mock-message-model.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD;;GAEG;AACH,KAAK,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,KAAK,CAAA;AAUxE;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,KAAK,CAAC,eAAe,CAAC;IAC1D,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,iBAAiB,CAAQ;IACjC,OAAO,CAAC,OAAO,CAAiB;IAEhC;;OAEG;;IAQH;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI;IAK5F;;;;OAIG;IACH,YAAY,CAAC,WAAW,EAAE,eAAe,GAAG,IAAI;IAIhD;;;;OAIG;IACH,SAAS,IAAI,eAAe;IAI5B;;;;;;;;;;OAUG;IACI,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,gBAAgB,CAAC;IA4B/F;;;OAGG;YACY,yBAAyB;IAuBxC;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;YACY,yBAAyB;IAcxC;;OAEG;YACY,uBAAuB;CA8FvC"}
|
|
@@ -34,7 +34,7 @@ export class MockMessageModel extends Model {
|
|
|
34
34
|
* Returns this for method chaining.
|
|
35
35
|
*
|
|
36
36
|
* @param turn - ContentBlock, ContentBlock[], or Error to add
|
|
37
|
-
* @param
|
|
37
|
+
* @param options - Optional stop reason and token usage
|
|
38
38
|
* @returns This provider for chaining
|
|
39
39
|
*
|
|
40
40
|
* @example
|
|
@@ -42,12 +42,13 @@ export class MockMessageModel extends Model {
|
|
|
42
42
|
* provider
|
|
43
43
|
* .addTurn({ type: 'textBlock', text: 'Hello' }) // Single block
|
|
44
44
|
* .addTurn([{ type: 'toolUseBlock', ... }]) // Array of blocks
|
|
45
|
-
* .addTurn({ type: 'textBlock', text: 'Done' }, 'maxTokens') // Explicit stopReason
|
|
45
|
+
* .addTurn({ type: 'textBlock', text: 'Done' }, { stopReason: 'maxTokens' }) // Explicit stopReason
|
|
46
|
+
* .addTurn({ type: 'textBlock', text: 'Hi' }, { usage: { inputTokens: 10, outputTokens: 5, totalTokens: 15 } })
|
|
46
47
|
* .addTurn(new Error('Failed')) // Error turn
|
|
47
48
|
* ```
|
|
48
49
|
*/
|
|
49
|
-
addTurn(turn,
|
|
50
|
-
this._turns.push(this._createTurn(turn, stopReason));
|
|
50
|
+
addTurn(turn, options) {
|
|
51
|
+
this._turns.push(this._createTurn(turn, options?.stopReason, options?.usage));
|
|
51
52
|
return this;
|
|
52
53
|
}
|
|
53
54
|
/**
|
|
@@ -97,13 +98,13 @@ export class MockMessageModel extends Model {
|
|
|
97
98
|
throw turn.error;
|
|
98
99
|
}
|
|
99
100
|
// Generate events for content turn
|
|
100
|
-
yield* this._generateEventsForContent(turn.content, turn.stopReason);
|
|
101
|
+
yield* this._generateEventsForContent(turn.content, turn.stopReason, turn.usage);
|
|
101
102
|
}
|
|
102
103
|
/**
|
|
103
104
|
* Generates appropriate ModelStreamEvents for content blocks.
|
|
104
105
|
* All messages have role 'assistant' since this is for testing model responses.
|
|
105
106
|
*/
|
|
106
|
-
async *_generateEventsForContent(content, stopReason) {
|
|
107
|
+
async *_generateEventsForContent(content, stopReason, usage) {
|
|
107
108
|
// Yield message start event (always assistant role)
|
|
108
109
|
yield { type: 'modelMessageStartEvent', role: 'assistant' };
|
|
109
110
|
// Yield events for each content block
|
|
@@ -113,11 +114,15 @@ export class MockMessageModel extends Model {
|
|
|
113
114
|
}
|
|
114
115
|
// Yield message stop event
|
|
115
116
|
yield { type: 'modelMessageStopEvent', stopReason };
|
|
117
|
+
// Yield metadata event with token usage when provided
|
|
118
|
+
if (usage) {
|
|
119
|
+
yield { type: 'modelMetadataEvent', usage };
|
|
120
|
+
}
|
|
116
121
|
}
|
|
117
122
|
/**
|
|
118
123
|
* Creates a Turn object from ContentBlock(s) or Error.
|
|
119
124
|
*/
|
|
120
|
-
_createTurn(turn, explicitStopReason) {
|
|
125
|
+
_createTurn(turn, explicitStopReason, usage) {
|
|
121
126
|
if (turn instanceof Error) {
|
|
122
127
|
return { type: 'error', error: turn };
|
|
123
128
|
}
|
|
@@ -127,6 +132,7 @@ export class MockMessageModel extends Model {
|
|
|
127
132
|
type: 'content',
|
|
128
133
|
content,
|
|
129
134
|
stopReason: explicitStopReason ?? this._deriveStopReason(content),
|
|
135
|
+
...(usage !== undefined && { usage }),
|
|
130
136
|
};
|
|
131
137
|
}
|
|
132
138
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-message-model.js","sourceRoot":"","sources":["../../../src/__fixtures__/mock-message-model.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"mock-message-model.js","sourceRoot":"","sources":["../../../src/__fixtures__/mock-message-model.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAmB1C;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAsB;IAClD,MAAM,CAAQ;IACd,iBAAiB,CAAQ;IACzB,OAAO,CAAiB;IAEhC;;OAEG;IACH;QACE,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA;QACxC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IAClB,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAA;IAC/B,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,IAAuB,EAAE,OAAoD;QACnF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QAC7E,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,WAA4B;QACvC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,WAAW,EAAE,CAAA;IACpD,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,CAAC,MAAM,CAAC,SAAoB,EAAE,QAAwB;QAC1D,oCAAoC;QACpC,uEAAuE;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAA;QAEvE,0DAA0D;QAC1D,qEAAqE;QACrE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC;QAED,iEAAiE;QACjE,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QACjD,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAE,CAAA;QAEpC,qBAAqB;QACrB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,CAAC,KAAK,CAAA;QAClB,CAAC;QAED,mCAAmC;QACnC,KAAK,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAClF,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,CAAC,yBAAyB,CACtC,OAA4B,EAC5B,UAAsB,EACtB,KAAa;QAEb,oDAAoD;QACpD,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAE3D,sCAAsC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;YACzB,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC;QAED,2BAA2B;QAC3B,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAA;QAEnD,sDAAsD;QACtD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAA;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAAuB,EAAE,kBAA+B,EAAE,KAAa;QACzF,IAAI,IAAI,YAAY,KAAK,EAAE,CAAC;YAC1B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;QACvC,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAEnD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,OAAO;YACP,UAAU,EAAE,kBAAkB,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACjE,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,CAAC;SACtC,CAAA;IACH,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,OAA4B;QACpD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAAA;QACzE,OAAO,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,CAAC,yBAAyB,CAAC,OAAgB,EAAE,UAAsB;QAC/E,4BAA4B;QAC5B,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;QAE5D,sCAAsC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAE,CAAA;YACjC,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC;QAED,2BAA2B;QAC3B,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,UAAU,EAAE,CAAA;IACrD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,CAAC,uBAAuB,CAAC,KAAwB;QAC7D,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,WAAW;gBACd,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAA;gBAC7C,MAAM;oBACJ,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;iBAC/C,CAAA;gBACD,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAA;gBAC5C,MAAK;YAEP,KAAK,cAAc;gBACjB,MAAM;oBACJ,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;iBAC9E,CAAA;gBACD,MAAM;oBACJ,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;iBACzE,CAAA;gBACD,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAA;gBAC5C,MAAK;YAEP,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAA;gBAC7C,kDAAkD;gBAClD,MAAM,KAAK,GAKP;oBACF,IAAI,EAAE,uBAAuB;iBAC9B,CAAA;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;gBACzB,CAAC;gBACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBAClC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;gBACnC,CAAC;gBACD,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;oBACxC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAA;gBAC/C,CAAC;gBACD,MAAM;oBACJ,IAAI,EAAE,6BAA6B;oBACnC,KAAK;iBACN,CAAA;gBACD,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAA;gBAC5C,MAAK;YACP,CAAC;YAED,KAAK,iBAAiB;gBACpB,gDAAgD;gBAChD,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAA;gBAC7C,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAA;gBAC5C,MAAK;YAEP,KAAK,iBAAiB;gBACpB,6EAA6E;gBAC7E,mFAAmF;gBACnF,MAAK;YAEP,KAAK,mBAAmB;gBACtB,+EAA+E;gBAC/E,uFAAuF;gBACvF,MAAK;YAEP,KAAK,gBAAgB;gBACnB,MAAM,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAA;gBAC7C,MAAM;oBACJ,IAAI,EAAE,6BAA6B;oBACnC,KAAK,EAAE;wBACL,IAAI,EAAE,gBAAgB;wBACtB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB;iBACF,CAAA;gBACD,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAA;gBAC5C,MAAK;YAEP,KAAK,YAAY,CAAC;YAClB,KAAK,YAAY,CAAC;YAClB,KAAK,eAAe,CAAC;YACrB,KAAK,WAAW;gBACd,8DAA8D;gBAC9D,MAAK;YAEP,OAAO,CAAC,CAAC,CAAC;gBACR,mBAAmB;gBACnB,MAAM,WAAW,GAAU,KAAK,CAAA;gBAChC,MAAM,IAAI,KAAK,CAAC,+BAAgC,WAAiC,CAAC,IAAI,EAAE,CAAC,CAAA;YAC3F,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock OpenTelemetry Meter for testing metric instrument emission.
|
|
3
|
+
* Records all counter and histogram data points for assertion.
|
|
4
|
+
*/
|
|
5
|
+
import type { Attributes } from '@opentelemetry/api';
|
|
6
|
+
export interface MockDataPoint {
|
|
7
|
+
value: number;
|
|
8
|
+
attributes: Attributes | undefined;
|
|
9
|
+
}
|
|
10
|
+
export declare class MockCounter {
|
|
11
|
+
readonly dataPoints: MockDataPoint[];
|
|
12
|
+
add(value: number, attributes?: Attributes): void;
|
|
13
|
+
get sum(): number;
|
|
14
|
+
}
|
|
15
|
+
export declare class MockHistogram {
|
|
16
|
+
readonly dataPoints: MockDataPoint[];
|
|
17
|
+
record(value: number, attributes?: Attributes): void;
|
|
18
|
+
get sum(): number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Mock OTEL Meter that tracks created instruments by name.
|
|
22
|
+
* Cast to `Meter` when passing to `vi.spyOn(otelMetrics, 'getMeter')`.
|
|
23
|
+
*/
|
|
24
|
+
export declare class MockMeter {
|
|
25
|
+
private readonly _counters;
|
|
26
|
+
private readonly _histograms;
|
|
27
|
+
createCounter(name: string): MockCounter;
|
|
28
|
+
createHistogram(name: string): MockHistogram;
|
|
29
|
+
getCounter(name: string): MockCounter | undefined;
|
|
30
|
+
getHistogram(name: string): MockHistogram | undefined;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=mock-meter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-meter.d.ts","sourceRoot":"","sources":["../../../src/__fixtures__/mock-meter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,UAAU,GAAG,SAAS,CAAA;CACnC;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,CAAK;IAEzC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IAIjD,IAAI,GAAG,IAAI,MAAM,CAEhB;CACF;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,CAAK;IAEzC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IAIpD,IAAI,GAAG,IAAI,MAAM,CAEhB;CACF;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAE/D,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW;IAMxC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAM5C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIjD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;CAGtD"}
|