@strands-agents/sdk 0.5.0 → 0.7.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 +64 -0
- package/dist/src/__fixtures__/agent-helpers.d.ts +37 -4
- package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/agent-helpers.js +31 -4
- package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
- package/dist/src/__fixtures__/metrics-helpers.d.ts +55 -0
- package/dist/src/__fixtures__/metrics-helpers.d.ts.map +1 -0
- package/dist/src/__fixtures__/metrics-helpers.js +57 -0
- package/dist/src/__fixtures__/metrics-helpers.js.map +1 -0
- 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 +25 -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} +8 -5
- package/dist/src/__fixtures__/mock-plugin.js.map +1 -0
- package/dist/src/__fixtures__/mock-storage-provider.d.ts +5 -0
- package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-storage-provider.js +23 -6
- package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -1
- package/dist/src/__fixtures__/slim-types.d.ts +2 -1
- package/dist/src/__fixtures__/slim-types.d.ts.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.js +5 -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 +45 -15
- 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__/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 +42 -0
- package/dist/src/a2a/events.d.ts.map +1 -0
- package/dist/src/a2a/events.js +35 -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 +16 -0
- package/dist/src/a2a/index.d.ts.map +1 -0
- package/dist/src/a2a/index.js +16 -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 +87 -51
- package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.test.js +176 -101
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.tracer.test.js +10 -10
- package/dist/src/agent/__tests__/agent.tracer.test.js.map +1 -1
- package/dist/src/agent/__tests__/snapshot.test.js +11 -11
- package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
- package/dist/src/agent/agent.d.ts +71 -58
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +177 -93
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/agent/snapshot.d.ts.map +1 -1
- package/dist/src/agent/snapshot.js +3 -2
- 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 +84 -21
- 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 +44 -36
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
- package/dist/src/errors.d.ts +6 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +9 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/__tests__/events.test.js +2 -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 +60 -44
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js +11 -11
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/hooks/index.d.ts +4 -4
- 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 +30 -15
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +21 -8
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp.d.ts +38 -0
- package/dist/src/mcp.d.ts.map +1 -1
- package/dist/src/mcp.js +23 -6
- package/dist/src/mcp.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 +78 -1
- package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +2050 -131
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/__tests__/gemini.test.js +100 -1
- package/dist/src/models/__tests__/gemini.test.js.map +1 -1
- package/dist/src/models/__tests__/model.test.js +131 -0
- package/dist/src/models/__tests__/model.test.js.map +1 -1
- package/dist/src/models/__tests__/openai.test.js +184 -32
- package/dist/src/models/__tests__/openai.test.js.map +1 -1
- package/dist/src/models/__tests__/streaming.test.d.ts +2 -0
- package/dist/src/models/__tests__/streaming.test.d.ts.map +1 -0
- package/dist/src/models/__tests__/streaming.test.js +50 -0
- package/dist/src/models/__tests__/streaming.test.js.map +1 -0
- package/dist/src/models/anthropic.d.ts.map +1 -1
- package/dist/src/models/anthropic.js +6 -7
- package/dist/src/models/anthropic.js.map +1 -1
- package/dist/src/models/bedrock.d.ts +144 -11
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +416 -28
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/gemini/adapters.d.ts.map +1 -1
- package/dist/src/models/gemini/adapters.js +65 -14
- package/dist/src/models/gemini/adapters.js.map +1 -1
- package/dist/src/models/model.d.ts +18 -0
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js +57 -11
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/openai.d.ts +15 -0
- package/dist/src/models/openai.d.ts.map +1 -1
- package/dist/src/models/openai.js +108 -64
- package/dist/src/models/openai.js.map +1 -1
- package/dist/src/models/streaming.d.ts +88 -2
- package/dist/src/models/streaming.d.ts.map +1 -1
- package/dist/src/models/streaming.js +26 -0
- package/dist/src/models/streaming.js.map +1 -1
- package/dist/src/multiagent/__tests__/events.test.js +41 -8
- package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/graph.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/graph.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/graph.test.js +453 -0
- package/dist/src/multiagent/__tests__/graph.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/nodes.test.js +34 -16
- package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/queue.test.js +22 -0
- package/dist/src/multiagent/__tests__/queue.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/swarm.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/swarm.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/swarm.test.js +264 -0
- package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -0
- package/dist/src/multiagent/edge.d.ts +9 -2
- package/dist/src/multiagent/edge.d.ts.map +1 -1
- package/dist/src/multiagent/events.d.ts +63 -15
- package/dist/src/multiagent/events.d.ts.map +1 -1
- package/dist/src/multiagent/events.js +28 -3
- package/dist/src/multiagent/events.js.map +1 -1
- package/dist/src/multiagent/graph.d.ts +135 -0
- package/dist/src/multiagent/graph.d.ts.map +1 -0
- package/dist/src/multiagent/graph.js +400 -0
- package/dist/src/multiagent/graph.js.map +1 -0
- package/dist/src/multiagent/index.d.ts +8 -3
- package/dist/src/multiagent/index.d.ts.map +1 -1
- package/dist/src/multiagent/index.js +3 -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 +24 -25
- package/dist/src/multiagent/nodes.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.js +42 -15
- 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/queue.d.ts +6 -0
- package/dist/src/multiagent/queue.d.ts.map +1 -1
- package/dist/src/multiagent/queue.js +13 -0
- package/dist/src/multiagent/queue.js.map +1 -1
- package/dist/src/multiagent/state.d.ts +4 -2
- package/dist/src/multiagent/state.d.ts.map +1 -1
- package/dist/src/multiagent/state.js +5 -2
- package/dist/src/multiagent/state.js.map +1 -1
- package/dist/src/multiagent/swarm.d.ts +112 -0
- package/dist/src/multiagent/swarm.d.ts.map +1 -0
- package/dist/src/multiagent/swarm.js +256 -0
- package/dist/src/multiagent/swarm.js.map +1 -0
- 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/registry/__tests__/tool-registry.test.d.ts +2 -0
- package/dist/src/registry/__tests__/tool-registry.test.d.ts.map +1 -0
- package/dist/src/registry/__tests__/tool-registry.test.js +124 -0
- package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -0
- package/dist/src/registry/tool-registry.d.ts +32 -20
- package/dist/src/registry/tool-registry.d.ts.map +1 -1
- package/dist/src/registry/tool-registry.js +60 -158
- package/dist/src/registry/tool-registry.js.map +1 -1
- package/dist/src/session/__tests__/file-storage.test.node.js +75 -15
- package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -1
- package/dist/src/session/__tests__/s3-storage.test.d.ts +2 -0
- package/dist/src/session/__tests__/s3-storage.test.d.ts.map +1 -0
- package/dist/src/session/__tests__/{s3-storage.test.node.js → s3-storage.test.js} +161 -75
- package/dist/src/session/__tests__/s3-storage.test.js.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.d.ts +2 -0
- package/dist/src/session/__tests__/session-manager.test.d.ts.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.js +443 -0
- package/dist/src/session/__tests__/session-manager.test.js.map +1 -0
- package/dist/src/session/__tests__/validation.test.js +28 -1
- package/dist/src/session/__tests__/validation.test.js.map +1 -1
- package/dist/src/session/file-storage.d.ts +53 -27
- package/dist/src/session/file-storage.d.ts.map +1 -1
- package/dist/src/session/file-storage.js +103 -52
- package/dist/src/session/file-storage.js.map +1 -1
- package/dist/src/session/index.d.ts +6 -14
- package/dist/src/session/index.d.ts.map +1 -1
- package/dist/src/session/index.js +4 -13
- package/dist/src/session/index.js.map +1 -1
- package/dist/src/session/s3-storage.d.ts +49 -20
- package/dist/src/session/s3-storage.d.ts.map +1 -1
- package/dist/src/session/s3-storage.js +120 -35
- package/dist/src/session/s3-storage.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +87 -0
- package/dist/src/session/session-manager.d.ts.map +1 -0
- package/dist/src/session/session-manager.js +128 -0
- package/dist/src/session/session-manager.js.map +1 -0
- package/dist/src/session/storage.d.ts +20 -12
- package/dist/src/session/storage.d.ts.map +1 -1
- package/dist/src/session/types.d.ts +8 -20
- package/dist/src/session/types.d.ts.map +1 -1
- package/dist/src/session/validation.d.ts +7 -0
- package/dist/src/session/validation.d.ts.map +1 -1
- package/dist/src/session/validation.js +12 -0
- package/dist/src/session/validation.js.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/structured-output/__tests__/context.test.js +13 -13
- package/dist/src/structured-output/__tests__/context.test.js.map +1 -1
- package/dist/src/structured-output/context.js +1 -1
- package/dist/src/structured-output/context.js.map +1 -1
- package/dist/src/telemetry/__tests__/config.test.d.ts +2 -0
- package/dist/src/telemetry/__tests__/config.test.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.js +64 -0
- package/dist/src/telemetry/__tests__/config.test.js.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.node.js +66 -36
- package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -1
- package/dist/src/telemetry/__tests__/meter.test.d.ts +2 -0
- package/dist/src/telemetry/__tests__/meter.test.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/meter.test.js +624 -0
- package/dist/src/telemetry/__tests__/meter.test.js.map +1 -0
- package/dist/src/telemetry/__tests__/tracer.test.node.js +123 -2
- package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -1
- package/dist/src/telemetry/config.d.ts +104 -23
- package/dist/src/telemetry/config.d.ts.map +1 -1
- package/dist/src/telemetry/config.js +152 -43
- 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 +296 -0
- package/dist/src/telemetry/meter.d.ts.map +1 -0
- package/dist/src/telemetry/meter.js +365 -0
- package/dist/src/telemetry/meter.js.map +1 -0
- package/dist/src/telemetry/tracer.d.ts +27 -0
- package/dist/src/telemetry/tracer.d.ts.map +1 -1
- package/dist/src/telemetry/tracer.js +79 -4
- package/dist/src/telemetry/tracer.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +2 -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__/tool-factory.test.d.ts +2 -0
- package/dist/src/tools/__tests__/tool-factory.test.d.ts.map +1 -0
- package/dist/src/tools/__tests__/tool-factory.test.js +98 -0
- package/dist/src/tools/__tests__/tool-factory.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/__tests__/zod-tool.test-d.js +1 -1
- package/dist/src/tools/__tests__/zod-tool.test-d.js.map +1 -1
- package/dist/src/tools/__tests__/zod-tool.test.js +3 -4
- package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -1
- package/dist/src/tools/function-tool.d.ts +26 -3
- package/dist/src/tools/function-tool.d.ts.map +1 -1
- package/dist/src/tools/function-tool.js +88 -3
- package/dist/src/tools/function-tool.js.map +1 -1
- package/dist/src/tools/tool-factory.d.ts +22 -0
- package/dist/src/tools/tool-factory.d.ts.map +1 -0
- package/dist/src/tools/tool-factory.js +55 -0
- package/dist/src/tools/tool-factory.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.d.ts +55 -52
- package/dist/src/tools/zod-tool.d.ts.map +1 -1
- package/dist/src/tools/zod-tool.js +7 -61
- package/dist/src/tools/zod-tool.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/__tests__/agent.test.js +11 -0
- package/dist/src/types/__tests__/agent.test.js.map +1 -1
- package/dist/src/types/__tests__/citations.test.d.ts +2 -0
- package/dist/src/types/__tests__/citations.test.d.ts.map +1 -0
- package/dist/src/types/__tests__/citations.test.js +104 -0
- package/dist/src/types/__tests__/citations.test.js.map +1 -0
- 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/__tests__/messages.test.js +26 -0
- package/dist/src/types/__tests__/messages.test.js.map +1 -1
- package/dist/src/types/agent.d.ts +82 -7
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js +9 -0
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/citations.d.ts +180 -0
- package/dist/src/types/citations.d.ts.map +1 -0
- package/dist/src/types/citations.js +45 -0
- package/dist/src/types/citations.js.map +1 -0
- 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 +23 -5
- package/dist/src/types/messages.d.ts.map +1 -1
- package/dist/src/types/messages.js +26 -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 +5 -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 +1 -2
- 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 +3 -3
- 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.d.ts.map +1 -0
- package/dist/src/vended-tools/{http_request → http-request}/http-request.js +1 -2
- package/dist/src/vended-tools/http-request/http-request.js.map +1 -0
- 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.d.ts +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 +66 -12
- 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/app-state.d.ts.map +0 -1
- package/dist/src/app-state.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/registry/registry.d.ts +0 -117
- package/dist/src/registry/registry.d.ts.map +0 -1
- package/dist/src/registry/registry.js +0 -298
- package/dist/src/registry/registry.js.map +0 -1
- package/dist/src/session/__tests__/s3-storage.test.node.d.ts +0 -2
- package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +0 -1
- package/dist/src/session/__tests__/s3-storage.test.node.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/http-request.d.ts.map +0 -1
- package/dist/src/vended-tools/http_request/http-request.js.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}/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,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A executor that bridges a Strands Agent into the A2A protocol.
|
|
3
|
+
*
|
|
4
|
+
* Implements the AgentExecutor interface from `@a2a-js/sdk/server` to allow
|
|
5
|
+
* a Strands Agent to handle A2A JSON-RPC requests.
|
|
6
|
+
*/
|
|
7
|
+
import { A2AError } from '@a2a-js/sdk/server';
|
|
8
|
+
import { ModelStreamUpdateEvent, ContentBlockEvent } from '../hooks/events.js';
|
|
9
|
+
import { contentBlocksToParts, partsToContentBlocks } from './adapters.js';
|
|
10
|
+
import { normalizeError } from '../errors.js';
|
|
11
|
+
import { logger } from '../logging/logger.js';
|
|
12
|
+
/**
|
|
13
|
+
* Bridges a Strands Agent into the A2A protocol as an AgentExecutor.
|
|
14
|
+
*
|
|
15
|
+
* Converts A2A message parts to Strands content blocks, streams the agent
|
|
16
|
+
* execution, and publishes text deltas as artifact updates through the A2A
|
|
17
|
+
* event bus. Text chunks are appended to a single artifact as they arrive,
|
|
18
|
+
* implementing A2A-compliant streaming behavior.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { Agent } from '@strands-agents/sdk'
|
|
23
|
+
* import { A2AExecutor } from '@strands-agents/sdk/a2a'
|
|
24
|
+
*
|
|
25
|
+
* const agent = new Agent({ model: 'my-model' })
|
|
26
|
+
* const executor = new A2AExecutor(agent)
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class A2AExecutor {
|
|
30
|
+
_agent;
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new A2AExecutor.
|
|
33
|
+
*
|
|
34
|
+
* @param agent - The agent to execute for incoming A2A requests
|
|
35
|
+
*/
|
|
36
|
+
constructor(agent) {
|
|
37
|
+
this._agent = agent;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Executes the agent in response to an A2A message.
|
|
41
|
+
*
|
|
42
|
+
* Converts A2A message parts to Strands content blocks, then streams the
|
|
43
|
+
* agent execution. Text deltas are streamed incrementally into a single
|
|
44
|
+
* artifact; non-text content blocks (images, videos, documents) are each
|
|
45
|
+
* published as separate complete artifacts. A final artifact with
|
|
46
|
+
* `lastChunk: true` signals the end of the text artifact, followed by a
|
|
47
|
+
* completed status update.
|
|
48
|
+
*
|
|
49
|
+
* @param context - The A2A request context containing the user message
|
|
50
|
+
* @param eventBus - The event bus for publishing A2A artifact and status events
|
|
51
|
+
*/
|
|
52
|
+
async execute(context, eventBus) {
|
|
53
|
+
const { taskId, contextId, userMessage } = context;
|
|
54
|
+
const contentBlocks = partsToContentBlocks(userMessage.parts);
|
|
55
|
+
if (contentBlocks.length === 0) {
|
|
56
|
+
throw A2AError.invalidRequest('No content blocks available');
|
|
57
|
+
}
|
|
58
|
+
// Publish initial task event to register the task with the ResultManager.
|
|
59
|
+
// Without this, artifact and status events are ignored as "unknown task".
|
|
60
|
+
eventBus.publish({ kind: 'task', id: taskId, contextId, status: { state: 'working' } });
|
|
61
|
+
const artifactId = globalThis.crypto.randomUUID();
|
|
62
|
+
let isFirstChunk = true;
|
|
63
|
+
try {
|
|
64
|
+
const stream = this._agent.stream(contentBlocks);
|
|
65
|
+
let next = await stream.next();
|
|
66
|
+
while (!next.done) {
|
|
67
|
+
const event = next.value;
|
|
68
|
+
// Stream text deltas incrementally into the text artifact
|
|
69
|
+
if (event instanceof ModelStreamUpdateEvent &&
|
|
70
|
+
event.event.type === 'modelContentBlockDeltaEvent' &&
|
|
71
|
+
event.event.delta.type === 'textDelta') {
|
|
72
|
+
eventBus.publish({
|
|
73
|
+
kind: 'artifact-update',
|
|
74
|
+
taskId,
|
|
75
|
+
contextId,
|
|
76
|
+
artifact: {
|
|
77
|
+
artifactId,
|
|
78
|
+
parts: [{ kind: 'text', text: event.event.delta.text }],
|
|
79
|
+
},
|
|
80
|
+
append: !isFirstChunk,
|
|
81
|
+
});
|
|
82
|
+
isFirstChunk = false;
|
|
83
|
+
}
|
|
84
|
+
// Publish non-text content blocks (images, videos, documents) as separate artifacts
|
|
85
|
+
if (event instanceof ContentBlockEvent && event.contentBlock.type !== 'textBlock') {
|
|
86
|
+
const parts = contentBlocksToParts([event.contentBlock]);
|
|
87
|
+
if (parts.length > 0) {
|
|
88
|
+
eventBus.publish({
|
|
89
|
+
kind: 'artifact-update',
|
|
90
|
+
taskId,
|
|
91
|
+
contextId,
|
|
92
|
+
artifact: { artifactId: globalThis.crypto.randomUUID(), parts },
|
|
93
|
+
append: false,
|
|
94
|
+
lastChunk: true,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
next = await stream.next();
|
|
99
|
+
}
|
|
100
|
+
// Publish final artifact chunk to signal end of artifact
|
|
101
|
+
eventBus.publish({
|
|
102
|
+
kind: 'artifact-update',
|
|
103
|
+
taskId,
|
|
104
|
+
contextId,
|
|
105
|
+
artifact: {
|
|
106
|
+
artifactId,
|
|
107
|
+
// If no deltas were streamed, publish the full result; otherwise empty to close the artifact
|
|
108
|
+
parts: [{ kind: 'text', text: isFirstChunk && next.value ? next.value.toString() : '' }],
|
|
109
|
+
},
|
|
110
|
+
append: !isFirstChunk, // false for new artifact, true to append to streamed chunks
|
|
111
|
+
lastChunk: true, // Always true — this runs after the stream loop ends
|
|
112
|
+
});
|
|
113
|
+
eventBus.publish({ kind: 'status-update', taskId, contextId, status: { state: 'completed' }, final: true });
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
logger.error(`task_id=<${taskId}> | error in streaming execution`, normalizeError(error));
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Cancels a running task. Not supported by this executor.
|
|
122
|
+
*
|
|
123
|
+
* @param taskId - The ID of the task to cancel
|
|
124
|
+
* @param eventBus - The event bus for publishing status events
|
|
125
|
+
*/
|
|
126
|
+
async cancelTask(_taskId, _eventBus) {
|
|
127
|
+
throw A2AError.unsupportedOperation('Task cancellation is not supported');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/a2a/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Express-based A2A server that exposes a Strands Agent as an A2A-compliant HTTP endpoint.
|
|
3
|
+
*
|
|
4
|
+
* Separated from the base {@link A2AServer} so that importing the core A2A module
|
|
5
|
+
* does not pull in Express as a dependency, keeping it browser-compatible.
|
|
6
|
+
*
|
|
7
|
+
* The A2A protocol is experimental, so breaking changes in the underlying SDK
|
|
8
|
+
* may require breaking changes in this module.
|
|
9
|
+
*/
|
|
10
|
+
import { type Router } from 'express';
|
|
11
|
+
import { UserBuilder } from '@a2a-js/sdk/server/express';
|
|
12
|
+
import { A2AServer, type A2AServerConfig } from './server.js';
|
|
13
|
+
/**
|
|
14
|
+
* Configuration options for creating an A2AExpressServer.
|
|
15
|
+
*/
|
|
16
|
+
export interface A2AExpressServerConfig extends A2AServerConfig {
|
|
17
|
+
/** Host to bind the server to (default: '127.0.0.1') */
|
|
18
|
+
host?: string;
|
|
19
|
+
/** Port to listen on (default: 9000) */
|
|
20
|
+
port?: number;
|
|
21
|
+
/** User builder for authentication (default: no authentication) */
|
|
22
|
+
userBuilder?: UserBuilder;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Express-based A2A server implementation.
|
|
26
|
+
*
|
|
27
|
+
* Provides two usage modes:
|
|
28
|
+
* - **Standalone**: Call {@link serve} to start a self-contained HTTP server.
|
|
29
|
+
* - **Middleware**: Call {@link createMiddleware} to get an Express Router that
|
|
30
|
+
* can be mounted in an existing Express application.
|
|
31
|
+
*/
|
|
32
|
+
export declare class A2AExpressServer extends A2AServer {
|
|
33
|
+
private _host;
|
|
34
|
+
private _port;
|
|
35
|
+
private _userBuilder;
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new A2AExpressServer.
|
|
38
|
+
*
|
|
39
|
+
* @param config - Configuration for the server
|
|
40
|
+
*/
|
|
41
|
+
constructor(config: A2AExpressServerConfig);
|
|
42
|
+
/**
|
|
43
|
+
* Returns the port the server is configured to listen on.
|
|
44
|
+
* After `serve()` resolves, this reflects the actual bound port
|
|
45
|
+
* (useful when configured with port 0 for OS-assigned ports).
|
|
46
|
+
*/
|
|
47
|
+
get port(): number;
|
|
48
|
+
/**
|
|
49
|
+
* Creates an Express Router middleware for the A2A endpoints.
|
|
50
|
+
*
|
|
51
|
+
* Mounts:
|
|
52
|
+
* - `GET /.well-known/agent-card.json` — Returns the agent card
|
|
53
|
+
* - `POST /` — Handles A2A JSON-RPC requests
|
|
54
|
+
*
|
|
55
|
+
* @returns An Express Router with A2A endpoints mounted
|
|
56
|
+
*/
|
|
57
|
+
createMiddleware(): Router;
|
|
58
|
+
/**
|
|
59
|
+
* Starts the HTTP server and begins listening for A2A requests.
|
|
60
|
+
*
|
|
61
|
+
* @param options - Optional server options
|
|
62
|
+
*/
|
|
63
|
+
serve(options?: {
|
|
64
|
+
signal?: AbortSignal;
|
|
65
|
+
}): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=express-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express-server.d.ts","sourceRoot":"","sources":["../../../src/a2a/express-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAgB,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAoC,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAC1F,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAI7D;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,eAAe;IAC7D,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mEAAmE;IACnE,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED;;;;;;;GAOG;AACH,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,YAAY,CAAyB;IAE7C;;;;OAIG;gBACS,MAAM,EAAE,sBAAsB;IAY1C;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;;;;OAQG;IACH,gBAAgB,IAAI,MAAM;IAkB1B;;;;OAIG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA4B/D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Express-based A2A server that exposes a Strands Agent as an A2A-compliant HTTP endpoint.
|
|
3
|
+
*
|
|
4
|
+
* Separated from the base {@link A2AServer} so that importing the core A2A module
|
|
5
|
+
* does not pull in Express as a dependency, keeping it browser-compatible.
|
|
6
|
+
*
|
|
7
|
+
* The A2A protocol is experimental, so breaking changes in the underlying SDK
|
|
8
|
+
* may require breaking changes in this module.
|
|
9
|
+
*/
|
|
10
|
+
import express, {} from 'express';
|
|
11
|
+
import { agentCardHandler, jsonRpcHandler, UserBuilder } from '@a2a-js/sdk/server/express';
|
|
12
|
+
import { A2AServer } from './server.js';
|
|
13
|
+
import { logExperimentalWarning } from './logging.js';
|
|
14
|
+
import { logger } from '../logging/logger.js';
|
|
15
|
+
/**
|
|
16
|
+
* Express-based A2A server implementation.
|
|
17
|
+
*
|
|
18
|
+
* Provides two usage modes:
|
|
19
|
+
* - **Standalone**: Call {@link serve} to start a self-contained HTTP server.
|
|
20
|
+
* - **Middleware**: Call {@link createMiddleware} to get an Express Router that
|
|
21
|
+
* can be mounted in an existing Express application.
|
|
22
|
+
*/
|
|
23
|
+
export class A2AExpressServer extends A2AServer {
|
|
24
|
+
_host;
|
|
25
|
+
_port;
|
|
26
|
+
_userBuilder;
|
|
27
|
+
/**
|
|
28
|
+
* Creates a new A2AExpressServer.
|
|
29
|
+
*
|
|
30
|
+
* @param config - Configuration for the server
|
|
31
|
+
*/
|
|
32
|
+
constructor(config) {
|
|
33
|
+
const host = config.host ?? '127.0.0.1';
|
|
34
|
+
const port = config.port ?? 9000;
|
|
35
|
+
const httpUrl = config.httpUrl ?? `http://${host}:${port}`;
|
|
36
|
+
super({ ...config, httpUrl });
|
|
37
|
+
this._host = host;
|
|
38
|
+
this._port = port;
|
|
39
|
+
this._userBuilder = config.userBuilder;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Returns the port the server is configured to listen on.
|
|
43
|
+
* After `serve()` resolves, this reflects the actual bound port
|
|
44
|
+
* (useful when configured with port 0 for OS-assigned ports).
|
|
45
|
+
*/
|
|
46
|
+
get port() {
|
|
47
|
+
return this._port;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Creates an Express Router middleware for the A2A endpoints.
|
|
51
|
+
*
|
|
52
|
+
* Mounts:
|
|
53
|
+
* - `GET /.well-known/agent-card.json` — Returns the agent card
|
|
54
|
+
* - `POST /` — Handles A2A JSON-RPC requests
|
|
55
|
+
*
|
|
56
|
+
* @returns An Express Router with A2A endpoints mounted
|
|
57
|
+
*/
|
|
58
|
+
createMiddleware() {
|
|
59
|
+
logExperimentalWarning();
|
|
60
|
+
const router = express.Router();
|
|
61
|
+
router.use('/.well-known/agent-card.json', agentCardHandler({ agentCardProvider: this._requestHandler }));
|
|
62
|
+
router.use('/', jsonRpcHandler({
|
|
63
|
+
requestHandler: this._requestHandler,
|
|
64
|
+
userBuilder: this._userBuilder ?? UserBuilder.noAuthentication,
|
|
65
|
+
}));
|
|
66
|
+
return router;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Starts the HTTP server and begins listening for A2A requests.
|
|
70
|
+
*
|
|
71
|
+
* @param options - Optional server options
|
|
72
|
+
*/
|
|
73
|
+
async serve(options) {
|
|
74
|
+
const app = express();
|
|
75
|
+
app.use(this.createMiddleware());
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
const server = app.listen(this._port, this._host, () => {
|
|
78
|
+
const addr = server.address();
|
|
79
|
+
if (addr && typeof addr === 'object') {
|
|
80
|
+
this._port = addr.port;
|
|
81
|
+
this._agentCard.url = `http://${this._host}:${this._port}`;
|
|
82
|
+
}
|
|
83
|
+
logger.info(`a2a server listening on http://${this._host}:${this._port}`);
|
|
84
|
+
resolve();
|
|
85
|
+
});
|
|
86
|
+
server.on('error', reject);
|
|
87
|
+
if (options?.signal) {
|
|
88
|
+
options.signal.addEventListener('abort', () => {
|
|
89
|
+
server.close();
|
|
90
|
+
}, { once: true });
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=express-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express-server.js","sourceRoot":"","sources":["../../../src/a2a/express-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A (Agent-to-Agent) protocol support for the Strands Agents SDK.
|
|
3
|
+
*
|
|
4
|
+
* This module provides server and client components for the A2A protocol,
|
|
5
|
+
* allowing Strands agents to communicate with other agents across platforms.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* The A2A protocol is experimental, so breaking changes in the underlying SDK
|
|
9
|
+
* may require breaking changes in this module.
|
|
10
|
+
*/
|
|
11
|
+
export { A2AServer, type A2AServerConfig } from './server.js';
|
|
12
|
+
export { A2AExpressServer, type A2AExpressServerConfig } from './express-server.js';
|
|
13
|
+
export { A2AAgent, type A2AAgentConfig } from './a2a-agent.js';
|
|
14
|
+
export { A2AStreamUpdateEvent, A2AResultEvent, type A2AEventData, type A2AStreamEvent } from './events.js';
|
|
15
|
+
export { A2AExecutor } from './executor.js';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/a2a/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A (Agent-to-Agent) protocol support for the Strands Agents SDK.
|
|
3
|
+
*
|
|
4
|
+
* This module provides server and client components for the A2A protocol,
|
|
5
|
+
* allowing Strands agents to communicate with other agents across platforms.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* The A2A protocol is experimental, so breaking changes in the underlying SDK
|
|
9
|
+
* may require breaking changes in this module.
|
|
10
|
+
*/
|
|
11
|
+
export { A2AServer } from './server.js';
|
|
12
|
+
export { A2AExpressServer } from './express-server.js';
|
|
13
|
+
export { A2AAgent } from './a2a-agent.js';
|
|
14
|
+
export { A2AStreamUpdateEvent, A2AResultEvent } from './events.js';
|
|
15
|
+
export { A2AExecutor } from './executor.js';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/a2a/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAwB,MAAM,aAAa,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAA+B,MAAM,qBAAqB,CAAA;AACnF,OAAO,EAAE,QAAQ,EAAuB,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAA0C,MAAM,aAAa,CAAA;AAC1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/a2a/logging.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAO7C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared experimental warning for A2A protocol modules.
|
|
3
|
+
*/
|
|
4
|
+
import { logger } from '../logging/logger.js';
|
|
5
|
+
let _logged = false;
|
|
6
|
+
/**
|
|
7
|
+
* Logs a one-time warning that the A2A protocol is experimental.
|
|
8
|
+
*/
|
|
9
|
+
export function logExperimentalWarning() {
|
|
10
|
+
if (!_logged) {
|
|
11
|
+
_logged = true;
|
|
12
|
+
logger.warn('protocol=<a2a> | experimental, breaking changes in the underlying sdk may require breaking changes in this module');
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/a2a/logging.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAE7C,IAAI,OAAO,GAAG,KAAK,CAAA;AAEnB;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,IAAI,CAAA;QACd,MAAM,CAAC,IAAI,CACT,mHAAmH,CACpH,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base A2A server that manages agent card and request handler setup.
|
|
3
|
+
*
|
|
4
|
+
* This module is browser-compatible. For Express-based HTTP serving,
|
|
5
|
+
* see {@link A2AExpressServer} in `./express-server.ts`.
|
|
6
|
+
*
|
|
7
|
+
* The A2A protocol is experimental, so breaking changes in the underlying SDK
|
|
8
|
+
* may require breaking changes in this module.
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentCard, AgentSkill } from '@a2a-js/sdk';
|
|
11
|
+
import type { TaskStore, A2ARequestHandler } from '@a2a-js/sdk/server';
|
|
12
|
+
import type { InvokableAgent } from '../types/agent.js';
|
|
13
|
+
/**
|
|
14
|
+
* Configuration options for creating an A2AServer.
|
|
15
|
+
*/
|
|
16
|
+
export interface A2AServerConfig {
|
|
17
|
+
/** The Strands Agent to serve via A2A protocol */
|
|
18
|
+
agent: InvokableAgent;
|
|
19
|
+
/** Human-readable name for the agent */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Optional description of the agent's purpose */
|
|
22
|
+
description?: string;
|
|
23
|
+
/** Public URL override for the agent card */
|
|
24
|
+
httpUrl?: string;
|
|
25
|
+
/** Version string for the agent card (default: '0.0.1') */
|
|
26
|
+
version?: string;
|
|
27
|
+
/** Skills to advertise in the agent card */
|
|
28
|
+
skills?: AgentSkill[];
|
|
29
|
+
/** Task store for persisting task state */
|
|
30
|
+
taskStore?: TaskStore;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Base A2A server that manages agent card and request handler setup.
|
|
34
|
+
*
|
|
35
|
+
* Subclass this to integrate with different HTTP frameworks. For Express,
|
|
36
|
+
* use {@link A2AExpressServer}.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* import { Agent } from '@strands-agents/sdk'
|
|
41
|
+
* import { A2AExpressServer } from '@strands-agents/sdk/a2a'
|
|
42
|
+
*
|
|
43
|
+
* const agent = new Agent({ model: 'my-model' })
|
|
44
|
+
* const server = new A2AExpressServer({
|
|
45
|
+
* agent,
|
|
46
|
+
* name: 'My Agent',
|
|
47
|
+
* description: 'An agent that helps with tasks',
|
|
48
|
+
* })
|
|
49
|
+
*
|
|
50
|
+
* await server.serve()
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare class A2AServer {
|
|
54
|
+
protected _agentCard: AgentCard;
|
|
55
|
+
protected _requestHandler: A2ARequestHandler;
|
|
56
|
+
/**
|
|
57
|
+
* Creates a new A2AServer.
|
|
58
|
+
*
|
|
59
|
+
* @param config - Configuration for the server
|
|
60
|
+
*/
|
|
61
|
+
constructor(config: A2AServerConfig);
|
|
62
|
+
/**
|
|
63
|
+
* Returns the agent card for this server.
|
|
64
|
+
*/
|
|
65
|
+
get agentCard(): AgentCard;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kDAAkD;IAClD,KAAK,EAAE,cAAc,CAAA;IACrB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,UAAU,EAAE,CAAA;IACrB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,SAAS;IACpB,SAAS,CAAC,UAAU,EAAE,SAAS,CAAA;IAC/B,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAA;IAE5C;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAsBnC;;OAEG;IACH,IAAI,SAAS,IAAI,SAAS,CAEzB;CACF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base A2A server that manages agent card and request handler setup.
|
|
3
|
+
*
|
|
4
|
+
* This module is browser-compatible. For Express-based HTTP serving,
|
|
5
|
+
* see {@link A2AExpressServer} in `./express-server.ts`.
|
|
6
|
+
*
|
|
7
|
+
* The A2A protocol is experimental, so breaking changes in the underlying SDK
|
|
8
|
+
* may require breaking changes in this module.
|
|
9
|
+
*/
|
|
10
|
+
import { DefaultRequestHandler, InMemoryTaskStore } from '@a2a-js/sdk/server';
|
|
11
|
+
import { A2AExecutor } from './executor.js';
|
|
12
|
+
/**
|
|
13
|
+
* Base A2A server that manages agent card and request handler setup.
|
|
14
|
+
*
|
|
15
|
+
* Subclass this to integrate with different HTTP frameworks. For Express,
|
|
16
|
+
* use {@link A2AExpressServer}.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { Agent } from '@strands-agents/sdk'
|
|
21
|
+
* import { A2AExpressServer } from '@strands-agents/sdk/a2a'
|
|
22
|
+
*
|
|
23
|
+
* const agent = new Agent({ model: 'my-model' })
|
|
24
|
+
* const server = new A2AExpressServer({
|
|
25
|
+
* agent,
|
|
26
|
+
* name: 'My Agent',
|
|
27
|
+
* description: 'An agent that helps with tasks',
|
|
28
|
+
* })
|
|
29
|
+
*
|
|
30
|
+
* await server.serve()
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export class A2AServer {
|
|
34
|
+
_agentCard;
|
|
35
|
+
_requestHandler;
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new A2AServer.
|
|
38
|
+
*
|
|
39
|
+
* @param config - Configuration for the server
|
|
40
|
+
*/
|
|
41
|
+
constructor(config) {
|
|
42
|
+
const httpUrl = config.httpUrl ?? '';
|
|
43
|
+
this._agentCard = {
|
|
44
|
+
name: config.name,
|
|
45
|
+
description: config.description ?? '',
|
|
46
|
+
version: config.version ?? '0.0.1',
|
|
47
|
+
protocolVersion: '0.2.0',
|
|
48
|
+
url: httpUrl,
|
|
49
|
+
defaultInputModes: ['text/plain'],
|
|
50
|
+
defaultOutputModes: ['text/plain'],
|
|
51
|
+
skills: config.skills ?? [],
|
|
52
|
+
capabilities: {
|
|
53
|
+
streaming: true,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
const taskStore = config.taskStore ?? new InMemoryTaskStore();
|
|
57
|
+
const executor = new A2AExecutor(config.agent);
|
|
58
|
+
this._requestHandler = new DefaultRequestHandler(this._agentCard, taskStore, executor);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns the agent card for this server.
|
|
62
|
+
*/
|
|
63
|
+
get agentCard() {
|
|
64
|
+
return this._agentCard;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/a2a/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAsB3C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,SAAS;IACV,UAAU,CAAW;IACrB,eAAe,CAAmB;IAE5C;;;;OAIG;IACH,YAAY,MAAuB;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;QAEpC,IAAI,CAAC,UAAU,GAAG;YAChB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;YACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;YAClC,eAAe,EAAE,OAAO;YACxB,GAAG,EAAE,OAAO;YACZ,iBAAiB,EAAE,CAAC,YAAY,CAAC;YACjC,kBAAkB,EAAE,CAAC,YAAY,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,YAAY,EAAE;gBACZ,SAAS,EAAE,IAAI;aAChB;SACF,CAAA;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,iBAAiB,EAAE,CAAA;QAC7D,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9C,IAAI,CAAC,eAAe,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IACxF,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;CACF"}
|