@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
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { BeforeInvocationEvent } from '../../hooks/events.js';
|
|
3
|
+
import { ToolRegistry } from '../../registry/tool-registry.js';
|
|
4
|
+
import { createRandomTool } from '../../__fixtures__/tool-helpers.js';
|
|
5
|
+
/**
|
|
6
|
+
* Concrete implementation of Plugin for testing purposes.
|
|
7
|
+
*/
|
|
8
|
+
class TestPlugin {
|
|
9
|
+
callbacks = [];
|
|
10
|
+
get name() {
|
|
11
|
+
return 'test-plugin';
|
|
12
|
+
}
|
|
13
|
+
initAgent(agent) {
|
|
14
|
+
agent.addHook(BeforeInvocationEvent, () => {
|
|
15
|
+
// No-op for testing
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Plugin with custom name for testing.
|
|
21
|
+
*/
|
|
22
|
+
class CustomNamePlugin {
|
|
23
|
+
_name;
|
|
24
|
+
constructor(name) {
|
|
25
|
+
this._name = name;
|
|
26
|
+
}
|
|
27
|
+
get name() {
|
|
28
|
+
return this._name;
|
|
29
|
+
}
|
|
30
|
+
initAgent(_agent) { }
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Plugin with initAgent implementation for testing.
|
|
34
|
+
*/
|
|
35
|
+
class InitializablePlugin {
|
|
36
|
+
initialized = false;
|
|
37
|
+
get name() {
|
|
38
|
+
return 'initializable-plugin';
|
|
39
|
+
}
|
|
40
|
+
initAgent(_agent) {
|
|
41
|
+
this.initialized = true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
describe('Plugin', () => {
|
|
45
|
+
describe('name', () => {
|
|
46
|
+
it('returns the plugin name', () => {
|
|
47
|
+
const plugin = new TestPlugin();
|
|
48
|
+
expect(plugin.name).toBe('test-plugin');
|
|
49
|
+
});
|
|
50
|
+
it('supports custom names via constructor', () => {
|
|
51
|
+
const plugin = new CustomNamePlugin('my-custom-plugin');
|
|
52
|
+
expect(plugin.name).toBe('my-custom-plugin');
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe('initAgent', () => {
|
|
56
|
+
it('registers callbacks via agent.addHook', () => {
|
|
57
|
+
const plugin = new TestPlugin();
|
|
58
|
+
const callbacks = [];
|
|
59
|
+
const mockAgent = {
|
|
60
|
+
addHook: (eventType, callback) => {
|
|
61
|
+
callbacks.push({
|
|
62
|
+
eventType: eventType,
|
|
63
|
+
callback: callback,
|
|
64
|
+
});
|
|
65
|
+
return () => { };
|
|
66
|
+
},
|
|
67
|
+
toolRegistry: new ToolRegistry(),
|
|
68
|
+
};
|
|
69
|
+
plugin.initAgent(mockAgent);
|
|
70
|
+
expect(callbacks).toHaveLength(1);
|
|
71
|
+
expect(callbacks[0]?.eventType).toBe(BeforeInvocationEvent);
|
|
72
|
+
});
|
|
73
|
+
it('has a no-op default when not overridden', () => {
|
|
74
|
+
const plugin = new CustomNamePlugin('test');
|
|
75
|
+
const mockAgent = {
|
|
76
|
+
addHook: () => () => { },
|
|
77
|
+
toolRegistry: new ToolRegistry(),
|
|
78
|
+
};
|
|
79
|
+
// Should not throw and return undefined
|
|
80
|
+
const result = plugin.initAgent(mockAgent);
|
|
81
|
+
expect(result).toBeUndefined();
|
|
82
|
+
});
|
|
83
|
+
it('can be implemented for custom initialization', () => {
|
|
84
|
+
const plugin = new InitializablePlugin();
|
|
85
|
+
const mockAgent = {
|
|
86
|
+
addHook: () => () => { },
|
|
87
|
+
toolRegistry: new ToolRegistry(),
|
|
88
|
+
};
|
|
89
|
+
expect(plugin.initialized).toBe(false);
|
|
90
|
+
plugin.initAgent(mockAgent);
|
|
91
|
+
expect(plugin.initialized).toBe(true);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
describe('getTools', () => {
|
|
95
|
+
it('is optional — plugins without getTools are valid', () => {
|
|
96
|
+
const plugin = new TestPlugin();
|
|
97
|
+
expect(plugin.getTools).toBeUndefined();
|
|
98
|
+
});
|
|
99
|
+
it('can be implemented to provide tools', () => {
|
|
100
|
+
const mockTool = createRandomTool();
|
|
101
|
+
class ToolPlugin {
|
|
102
|
+
get name() {
|
|
103
|
+
return 'tool-plugin';
|
|
104
|
+
}
|
|
105
|
+
initAgent(_agent) { }
|
|
106
|
+
getTools() {
|
|
107
|
+
return [mockTool];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
expect(new ToolPlugin().getTools()).toStrictEqual([mockTool]);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
//# sourceMappingURL=plugin.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.test.js","sourceRoot":"","sources":["../../../../src/plugins/__tests__/plugin.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../../src/plugins/__tests__/registry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
|
2
|
+
import { PluginRegistry } from '../registry.js';
|
|
3
|
+
import { BeforeInvocationEvent } from '../../hooks/events.js';
|
|
4
|
+
import { createMockAgent } from '../../__fixtures__/agent-helpers.js';
|
|
5
|
+
import { createRandomTool } from '../../__fixtures__/tool-helpers.js';
|
|
6
|
+
/**
|
|
7
|
+
* Test plugin implementation.
|
|
8
|
+
*/
|
|
9
|
+
class TestPlugin {
|
|
10
|
+
hookRegistered = false;
|
|
11
|
+
_name;
|
|
12
|
+
constructor(name = 'test-plugin') {
|
|
13
|
+
this._name = name;
|
|
14
|
+
}
|
|
15
|
+
get name() {
|
|
16
|
+
return this._name;
|
|
17
|
+
}
|
|
18
|
+
initAgent(agent) {
|
|
19
|
+
agent.addHook(BeforeInvocationEvent, () => {
|
|
20
|
+
this.hookRegistered = true;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Plugin with initAgent for testing initialization.
|
|
26
|
+
*/
|
|
27
|
+
class InitializableTestPlugin {
|
|
28
|
+
_name;
|
|
29
|
+
initialized = false;
|
|
30
|
+
constructor(_name = 'initializable-plugin') {
|
|
31
|
+
this._name = _name;
|
|
32
|
+
}
|
|
33
|
+
get name() {
|
|
34
|
+
return this._name;
|
|
35
|
+
}
|
|
36
|
+
initAgent(_agent) {
|
|
37
|
+
this.initialized = true;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Plugin that provides tools.
|
|
42
|
+
*/
|
|
43
|
+
class ToolProviderPlugin {
|
|
44
|
+
_name;
|
|
45
|
+
_tools;
|
|
46
|
+
constructor(_name, _tools) {
|
|
47
|
+
this._name = _name;
|
|
48
|
+
this._tools = _tools;
|
|
49
|
+
}
|
|
50
|
+
get name() {
|
|
51
|
+
return this._name;
|
|
52
|
+
}
|
|
53
|
+
initAgent(_agent) { }
|
|
54
|
+
getTools() {
|
|
55
|
+
return this._tools;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
describe('PluginRegistry', () => {
|
|
59
|
+
let registry;
|
|
60
|
+
let mockAgent;
|
|
61
|
+
let registeredHooks;
|
|
62
|
+
beforeEach(() => {
|
|
63
|
+
registeredHooks = [];
|
|
64
|
+
mockAgent = createMockAgent({
|
|
65
|
+
extra: {
|
|
66
|
+
addHook: (eventType, callback) => {
|
|
67
|
+
registeredHooks.push({
|
|
68
|
+
eventType: eventType,
|
|
69
|
+
callback: callback,
|
|
70
|
+
});
|
|
71
|
+
return () => { };
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
describe('initialize', () => {
|
|
77
|
+
it('initializes a plugin and calls initAgent', async () => {
|
|
78
|
+
const plugin = new InitializableTestPlugin();
|
|
79
|
+
registry = new PluginRegistry([plugin]);
|
|
80
|
+
await registry.initialize(mockAgent);
|
|
81
|
+
expect(plugin.initialized).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
it('registers hooks via agent.addHook', async () => {
|
|
84
|
+
const plugin = new TestPlugin();
|
|
85
|
+
registry = new PluginRegistry([plugin]);
|
|
86
|
+
await registry.initialize(mockAgent);
|
|
87
|
+
expect(registeredHooks).toHaveLength(1);
|
|
88
|
+
expect(registeredHooks[0]?.eventType).toBe(BeforeInvocationEvent);
|
|
89
|
+
});
|
|
90
|
+
it('throws error when plugins have duplicate names', async () => {
|
|
91
|
+
const plugin1 = new TestPlugin('duplicate-name');
|
|
92
|
+
const plugin2 = new TestPlugin('duplicate-name');
|
|
93
|
+
registry = new PluginRegistry([plugin1, plugin2]);
|
|
94
|
+
await expect(registry.initialize(mockAgent)).rejects.toThrow('plugin_name=<duplicate-name> | plugin already registered');
|
|
95
|
+
});
|
|
96
|
+
it('initializes multiple plugins with different names', async () => {
|
|
97
|
+
const plugin1 = new TestPlugin('plugin-1');
|
|
98
|
+
const plugin2 = new TestPlugin('plugin-2');
|
|
99
|
+
registry = new PluginRegistry([plugin1, plugin2]);
|
|
100
|
+
await registry.initialize(mockAgent);
|
|
101
|
+
expect(registeredHooks).toHaveLength(2);
|
|
102
|
+
});
|
|
103
|
+
it('auto-registers tools from plugin.getTools()', async () => {
|
|
104
|
+
const mockTool = createRandomTool('mock-tool');
|
|
105
|
+
const plugin = new ToolProviderPlugin('tool-provider', [mockTool]);
|
|
106
|
+
registry = new PluginRegistry([plugin]);
|
|
107
|
+
await registry.initialize(mockAgent);
|
|
108
|
+
expect(mockAgent.toolRegistry.get(mockTool.name)).toBe(mockTool);
|
|
109
|
+
});
|
|
110
|
+
it('handles async initAgent', async () => {
|
|
111
|
+
class AsyncPlugin {
|
|
112
|
+
initialized = false;
|
|
113
|
+
get name() {
|
|
114
|
+
return 'async-plugin';
|
|
115
|
+
}
|
|
116
|
+
async initAgent(_agent) {
|
|
117
|
+
await vi.waitFor(() => Promise.resolve());
|
|
118
|
+
this.initialized = true;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const plugin = new AsyncPlugin();
|
|
122
|
+
registry = new PluginRegistry([plugin]);
|
|
123
|
+
await registry.initialize(mockAgent);
|
|
124
|
+
expect(plugin.initialized).toBe(true);
|
|
125
|
+
});
|
|
126
|
+
it('is idempotent — calling initialize twice only runs plugins once', async () => {
|
|
127
|
+
const plugin = new InitializableTestPlugin();
|
|
128
|
+
registry = new PluginRegistry([plugin]);
|
|
129
|
+
await registry.initialize(mockAgent);
|
|
130
|
+
plugin.initialized = false; // reset to detect a second call
|
|
131
|
+
await registry.initialize(mockAgent);
|
|
132
|
+
expect(plugin.initialized).toBe(false);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
describe('hook invocation', () => {
|
|
136
|
+
it('hooks are invoked when callbacks are called', async () => {
|
|
137
|
+
const plugin = new TestPlugin();
|
|
138
|
+
registry = new PluginRegistry([plugin]);
|
|
139
|
+
await registry.initialize(mockAgent);
|
|
140
|
+
const callback = registeredHooks[0]?.callback;
|
|
141
|
+
const mockAgentData = {};
|
|
142
|
+
callback?.(new BeforeInvocationEvent({ agent: mockAgentData }));
|
|
143
|
+
expect(plugin.hookRegistered).toBe(true);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
//# sourceMappingURL=registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../../src/plugins/__tests__/registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin system for extending agent functionality.
|
|
3
|
+
*
|
|
4
|
+
* This module provides the Plugin base class for extending agent behavior
|
|
5
|
+
* through hook callbacks and tool registration.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { Plugin, BeforeInvocationEvent } from '@strands-agents/sdk'
|
|
10
|
+
*
|
|
11
|
+
* class MyPlugin extends Plugin {
|
|
12
|
+
* get name(): string {
|
|
13
|
+
* return 'my-plugin'
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* override initAgent(agent: LocalAgent): void {
|
|
17
|
+
* agent.addHook(BeforeInvocationEvent, (event) => {
|
|
18
|
+
* console.log('Before invocation')
|
|
19
|
+
* })
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* const agent = new Agent({
|
|
24
|
+
* model,
|
|
25
|
+
* plugins: [new MyPlugin()],
|
|
26
|
+
* })
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export type { Plugin } from './plugin.js';
|
|
30
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin system for extending agent functionality.
|
|
3
|
+
*
|
|
4
|
+
* This module provides the Plugin base class for extending agent behavior
|
|
5
|
+
* through hook callbacks and tool registration.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { Plugin, BeforeInvocationEvent } from '@strands-agents/sdk'
|
|
10
|
+
*
|
|
11
|
+
* class MyPlugin extends Plugin {
|
|
12
|
+
* get name(): string {
|
|
13
|
+
* return 'my-plugin'
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* override initAgent(agent: LocalAgent): void {
|
|
17
|
+
* agent.addHook(BeforeInvocationEvent, (event) => {
|
|
18
|
+
* console.log('Before invocation')
|
|
19
|
+
* })
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* const agent = new Agent({
|
|
24
|
+
* model,
|
|
25
|
+
* plugins: [new MyPlugin()],
|
|
26
|
+
* })
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin interface for extending agent functionality.
|
|
3
|
+
*
|
|
4
|
+
* This module defines the Plugin interface, which provides a composable way to
|
|
5
|
+
* add behavior changes to agents through hook registration and custom initialization.
|
|
6
|
+
*/
|
|
7
|
+
import type { Tool } from '../tools/tool.js';
|
|
8
|
+
import type { LocalAgent } from '../types/agent.js';
|
|
9
|
+
/**
|
|
10
|
+
* Interface for objects that extend agent functionality.
|
|
11
|
+
*
|
|
12
|
+
* Plugins provide a composable way to add behavior changes to agents by registering
|
|
13
|
+
* hook callbacks in their `initAgent` method. Each plugin must have a unique name
|
|
14
|
+
* for identification, logging, and duplicate prevention.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* class LoggingPlugin implements Plugin {
|
|
19
|
+
* get name(): string {
|
|
20
|
+
* return 'logging-plugin'
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* initAgent(agent: LocalAgent): void {
|
|
24
|
+
* agent.addHook(BeforeInvocationEvent, (event) => {
|
|
25
|
+
* console.log('Agent invocation started')
|
|
26
|
+
* })
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* const agent = new Agent({
|
|
31
|
+
* model,
|
|
32
|
+
* plugins: [new LoggingPlugin()],
|
|
33
|
+
* })
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example With tools
|
|
37
|
+
* ```typescript
|
|
38
|
+
* class MyToolPlugin implements Plugin {
|
|
39
|
+
* get name(): string {
|
|
40
|
+
* return 'my-tool-plugin'
|
|
41
|
+
* }
|
|
42
|
+
*
|
|
43
|
+
* getTools(): Tool[] {
|
|
44
|
+
* return [myTool]
|
|
45
|
+
* }
|
|
46
|
+
* }
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export interface Plugin {
|
|
50
|
+
/**
|
|
51
|
+
* A stable string identifier for the plugin.
|
|
52
|
+
* Used for logging, duplicate detection, and plugin management.
|
|
53
|
+
*
|
|
54
|
+
* For strands-vended plugins, names should be prefixed with `strands:`.
|
|
55
|
+
*/
|
|
56
|
+
readonly name: string;
|
|
57
|
+
/**
|
|
58
|
+
* Initialize the plugin with the agent instance.
|
|
59
|
+
*
|
|
60
|
+
* Implement this method to register hooks and perform custom initialization.
|
|
61
|
+
* Tool registration from {@link getTools} is handled automatically by the PluginRegistry.
|
|
62
|
+
*
|
|
63
|
+
* @param agent - The agent instance this plugin is being attached to
|
|
64
|
+
*/
|
|
65
|
+
initAgent(agent: LocalAgent): void | Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Returns tools provided by this plugin for auto-registration.
|
|
68
|
+
* Implement to provide plugin-specific tools.
|
|
69
|
+
*
|
|
70
|
+
* @returns Array of tools to register with the agent
|
|
71
|
+
*/
|
|
72
|
+
getTools?(): Tool[];
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAElD;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAA;CACpB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin interface for extending agent functionality.
|
|
3
|
+
*
|
|
4
|
+
* This module defines the Plugin interface, which provides a composable way to
|
|
5
|
+
* add behavior changes to agents through hook registration and custom initialization.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/plugins/plugin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin registry for managing plugins attached to an agent.
|
|
3
|
+
*/
|
|
4
|
+
import type { Plugin } from './plugin.js';
|
|
5
|
+
import type { LocalAgent } from '../types/agent.js';
|
|
6
|
+
/**
|
|
7
|
+
* Registry for managing plugins attached to an agent.
|
|
8
|
+
*
|
|
9
|
+
* Holds pending plugins and initializes them on first use.
|
|
10
|
+
* Handles duplicate detection, tool registration, and calls each plugin's initAgent method.
|
|
11
|
+
*/
|
|
12
|
+
export declare class PluginRegistry {
|
|
13
|
+
private readonly _plugins;
|
|
14
|
+
private readonly _pending;
|
|
15
|
+
constructor(plugins?: Plugin[]);
|
|
16
|
+
/**
|
|
17
|
+
* Initialize all pending plugins with the agent.
|
|
18
|
+
* Safe to call multiple times — only runs once per pending batch.
|
|
19
|
+
*
|
|
20
|
+
* @param agent - The agent instance to initialize plugins with
|
|
21
|
+
*/
|
|
22
|
+
initialize(agent: LocalAgent): Promise<void>;
|
|
23
|
+
private _addAndInit;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/plugins/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAEvB,OAAO,GAAE,MAAM,EAAO;IAKlC;;;;;OAKG;IACG,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;YAOpC,WAAW;CAa1B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin registry for managing plugins attached to an agent.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Registry for managing plugins attached to an agent.
|
|
6
|
+
*
|
|
7
|
+
* Holds pending plugins and initializes them on first use.
|
|
8
|
+
* Handles duplicate detection, tool registration, and calls each plugin's initAgent method.
|
|
9
|
+
*/
|
|
10
|
+
export class PluginRegistry {
|
|
11
|
+
_plugins;
|
|
12
|
+
_pending;
|
|
13
|
+
constructor(plugins = []) {
|
|
14
|
+
this._plugins = new Map();
|
|
15
|
+
this._pending = [...plugins];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Initialize all pending plugins with the agent.
|
|
19
|
+
* Safe to call multiple times — only runs once per pending batch.
|
|
20
|
+
*
|
|
21
|
+
* @param agent - The agent instance to initialize plugins with
|
|
22
|
+
*/
|
|
23
|
+
async initialize(agent) {
|
|
24
|
+
while (this._pending.length > 0) {
|
|
25
|
+
const plugin = this._pending.shift();
|
|
26
|
+
await this._addAndInit(plugin, agent);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async _addAndInit(plugin, agent) {
|
|
30
|
+
if (this._plugins.has(plugin.name)) {
|
|
31
|
+
throw new Error(`plugin_name=<${plugin.name}> | plugin already registered`);
|
|
32
|
+
}
|
|
33
|
+
this._plugins.set(plugin.name, plugin);
|
|
34
|
+
const tools = plugin.getTools?.() ?? [];
|
|
35
|
+
if (tools.length > 0) {
|
|
36
|
+
agent.toolRegistry.add(tools);
|
|
37
|
+
}
|
|
38
|
+
await plugin.initAgent(agent);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/plugins/registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IACR,QAAQ,CAAqB;IAC7B,QAAQ,CAAU;IAEnC,YAAY,UAAoB,EAAE;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,CAAA;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CAAC,KAAiB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAG,CAAA;YACrC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,MAAc,EAAE,KAAiB;QACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,CAAC,IAAI,+BAA+B,CAAC,CAAA;QAC7E,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAEtC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAA;QACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;QAED,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;CACF"}
|