@strands-agents/sdk 0.0.1
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/LICENSE +175 -0
- package/README.md +185 -0
- package/dist/__fixtures__/model-test-helpers.d.ts +56 -0
- package/dist/__fixtures__/model-test-helpers.d.ts.map +1 -0
- package/dist/__fixtures__/model-test-helpers.js +85 -0
- package/dist/__fixtures__/model-test-helpers.js.map +1 -0
- package/dist/__fixtures__/tool-helpers.d.ts +15 -0
- package/dist/__fixtures__/tool-helpers.d.ts.map +1 -0
- package/dist/__fixtures__/tool-helpers.js +22 -0
- package/dist/__fixtures__/tool-helpers.js.map +1 -0
- package/dist/__tests__/errors.test.d.ts +2 -0
- package/dist/__tests__/errors.test.d.ts.map +1 -0
- package/dist/__tests__/errors.test.js +20 -0
- package/dist/__tests__/errors.test.js.map +1 -0
- package/dist/__tests__/index.test.d.ts +2 -0
- package/dist/__tests__/index.test.d.ts.map +1 -0
- package/dist/__tests__/index.test.js +27 -0
- package/dist/__tests__/index.test.js.map +1 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +25 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/models/__tests__/bedrock.test.d.ts +2 -0
- package/dist/models/__tests__/bedrock.test.d.ts.map +1 -0
- package/dist/models/__tests__/bedrock.test.js +1161 -0
- package/dist/models/__tests__/bedrock.test.js.map +1 -0
- package/dist/models/__tests__/model.test.d.ts +2 -0
- package/dist/models/__tests__/model.test.d.ts.map +1 -0
- package/dist/models/__tests__/model.test.js +297 -0
- package/dist/models/__tests__/model.test.js.map +1 -0
- package/dist/models/__tests__/openai.test.d.ts +2 -0
- package/dist/models/__tests__/openai.test.d.ts.map +1 -0
- package/dist/models/__tests__/openai.test.js +1016 -0
- package/dist/models/__tests__/openai.test.js.map +1 -0
- package/dist/models/__tests__/test-utils.d.ts +10 -0
- package/dist/models/__tests__/test-utils.d.ts.map +1 -0
- package/dist/models/__tests__/test-utils.js +17 -0
- package/dist/models/__tests__/test-utils.js.map +1 -0
- package/dist/models/bedrock.d.ts +272 -0
- package/dist/models/bedrock.d.ts.map +1 -0
- package/dist/models/bedrock.js +679 -0
- package/dist/models/bedrock.js.map +1 -0
- package/dist/models/model.d.ts +89 -0
- package/dist/models/model.d.ts.map +1 -0
- package/dist/models/model.js +122 -0
- package/dist/models/model.js.map +1 -0
- package/dist/models/openai.d.ts +262 -0
- package/dist/models/openai.d.ts.map +1 -0
- package/dist/models/openai.js +625 -0
- package/dist/models/openai.js.map +1 -0
- package/dist/models/streaming.d.ts +226 -0
- package/dist/models/streaming.d.ts.map +1 -0
- package/dist/models/streaming.js +2 -0
- package/dist/models/streaming.js.map +1 -0
- package/dist/src/__fixtures__/agent-helpers.d.ts +29 -0
- package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -0
- package/dist/src/__fixtures__/agent-helpers.js +19 -0
- package/dist/src/__fixtures__/agent-helpers.js.map +1 -0
- package/dist/src/__fixtures__/environment.d.ts +12 -0
- package/dist/src/__fixtures__/environment.d.ts.map +1 -0
- package/dist/src/__fixtures__/environment.js +12 -0
- package/dist/src/__fixtures__/environment.js.map +1 -0
- package/dist/src/__fixtures__/mock-hook-provider.d.ts +14 -0
- package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +1 -0
- package/dist/src/__fixtures__/mock-hook-provider.js +33 -0
- package/dist/src/__fixtures__/mock-hook-provider.js.map +1 -0
- package/dist/src/__fixtures__/mock-message-model.d.ts +93 -0
- package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -0
- package/dist/src/__fixtures__/mock-message-model.js +226 -0
- package/dist/src/__fixtures__/mock-message-model.js.map +1 -0
- package/dist/src/__fixtures__/model-test-helpers.d.ts +56 -0
- package/dist/src/__fixtures__/model-test-helpers.d.ts.map +1 -0
- package/dist/src/__fixtures__/model-test-helpers.js +85 -0
- package/dist/src/__fixtures__/model-test-helpers.js.map +1 -0
- package/dist/src/__fixtures__/tool-helpers.d.ts +37 -0
- package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -0
- package/dist/src/__fixtures__/tool-helpers.js +78 -0
- package/dist/src/__fixtures__/tool-helpers.js.map +1 -0
- package/dist/src/__tests__/errors.test.d.ts +2 -0
- package/dist/src/__tests__/errors.test.d.ts.map +1 -0
- package/dist/src/__tests__/errors.test.js +64 -0
- package/dist/src/__tests__/errors.test.js.map +1 -0
- package/dist/src/__tests__/index.test.d.ts +2 -0
- package/dist/src/__tests__/index.test.d.ts.map +1 -0
- package/dist/src/__tests__/index.test.js +27 -0
- package/dist/src/__tests__/index.test.js.map +1 -0
- package/dist/src/__tests__/mcp.test.d.ts +2 -0
- package/dist/src/__tests__/mcp.test.d.ts.map +1 -0
- package/dist/src/__tests__/mcp.test.js +166 -0
- package/dist/src/__tests__/mcp.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.hook.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.hook.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.hook.test.js +250 -0
- package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -0
- package/dist/src/agent/__tests__/agent.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.test.js +414 -0
- package/dist/src/agent/__tests__/agent.test.js.map +1 -0
- package/dist/src/agent/__tests__/printer.test.d.ts +2 -0
- package/dist/src/agent/__tests__/printer.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/printer.test.js +152 -0
- package/dist/src/agent/__tests__/printer.test.js.map +1 -0
- package/dist/src/agent/__tests__/state.test.d.ts +2 -0
- package/dist/src/agent/__tests__/state.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/state.test.js +231 -0
- package/dist/src/agent/__tests__/state.test.js.map +1 -0
- package/dist/src/agent/agent.d.ts +207 -0
- package/dist/src/agent/agent.d.ts.map +1 -0
- package/dist/src/agent/agent.js +481 -0
- package/dist/src/agent/agent.js.map +1 -0
- package/dist/src/agent/printer.d.ts +73 -0
- package/dist/src/agent/printer.d.ts.map +1 -0
- package/dist/src/agent/printer.js +145 -0
- package/dist/src/agent/printer.js.map +1 -0
- package/dist/src/agent/state.d.ts +102 -0
- package/dist/src/agent/state.d.ts.map +1 -0
- package/dist/src/agent/state.js +73 -0
- package/dist/src/agent/state.js.map +1 -0
- package/dist/src/agent/streaming.d.ts +91 -0
- package/dist/src/agent/streaming.d.ts.map +1 -0
- package/dist/src/agent/streaming.js +2 -0
- package/dist/src/agent/streaming.js.map +1 -0
- 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 +10 -0
- package/dist/src/conversation-manager/__tests__/conversation-manager.test.js.map +1 -0
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts +2 -0
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.d.ts.map +1 -0
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js +35 -0
- package/dist/src/conversation-manager/__tests__/null-conversation-manager.test.js.map +1 -0
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts +2 -0
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.d.ts.map +1 -0
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +553 -0
- package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -0
- package/dist/src/conversation-manager/conversation-manager.d.ts +73 -0
- package/dist/src/conversation-manager/conversation-manager.d.ts.map +1 -0
- package/dist/src/conversation-manager/conversation-manager.js +24 -0
- package/dist/src/conversation-manager/conversation-manager.js.map +1 -0
- package/dist/src/conversation-manager/index.d.ts +8 -0
- package/dist/src/conversation-manager/index.d.ts.map +1 -0
- package/dist/src/conversation-manager/index.js +8 -0
- package/dist/src/conversation-manager/index.js.map +1 -0
- package/dist/src/conversation-manager/null-conversation-manager.d.ts +23 -0
- package/dist/src/conversation-manager/null-conversation-manager.d.ts.map +1 -0
- package/dist/src/conversation-manager/null-conversation-manager.js +23 -0
- package/dist/src/conversation-manager/null-conversation-manager.js.map +1 -0
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +105 -0
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -0
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js +212 -0
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -0
- package/dist/src/errors.d.ts +83 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +97 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/hooks/__tests__/events.test.d.ts +2 -0
- package/dist/src/hooks/__tests__/events.test.d.ts.map +1 -0
- package/dist/src/hooks/__tests__/events.test.js +347 -0
- package/dist/src/hooks/__tests__/events.test.js.map +1 -0
- package/dist/src/hooks/__tests__/registry.test.d.ts +2 -0
- package/dist/src/hooks/__tests__/registry.test.d.ts.map +1 -0
- package/dist/src/hooks/__tests__/registry.test.js +154 -0
- package/dist/src/hooks/__tests__/registry.test.js.map +1 -0
- package/dist/src/hooks/events.d.ts +199 -0
- package/dist/src/hooks/events.d.ts.map +1 -0
- package/dist/src/hooks/events.js +191 -0
- package/dist/src/hooks/events.js.map +1 -0
- package/dist/src/hooks/index.d.ts +11 -0
- package/dist/src/hooks/index.d.ts.map +1 -0
- package/dist/src/hooks/index.js +11 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/registry.d.ts +65 -0
- package/dist/src/hooks/registry.d.ts.map +1 -0
- package/dist/src/hooks/registry.js +65 -0
- package/dist/src/hooks/registry.js.map +1 -0
- package/dist/src/hooks/types.d.ts +49 -0
- package/dist/src/hooks/types.d.ts.map +1 -0
- package/dist/src/hooks/types.js +2 -0
- package/dist/src/hooks/types.js.map +1 -0
- package/dist/src/index.d.ts +32 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +29 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mcp.d.ts +51 -0
- package/dist/src/mcp.d.ts.map +1 -0
- package/dist/src/mcp.js +91 -0
- package/dist/src/mcp.js.map +1 -0
- package/dist/src/models/__tests__/bedrock.test.d.ts +2 -0
- package/dist/src/models/__tests__/bedrock.test.d.ts.map +1 -0
- package/dist/src/models/__tests__/bedrock.test.js +1388 -0
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -0
- package/dist/src/models/__tests__/model.test.d.ts +2 -0
- package/dist/src/models/__tests__/model.test.d.ts.map +1 -0
- package/dist/src/models/__tests__/model.test.js +342 -0
- package/dist/src/models/__tests__/model.test.js.map +1 -0
- package/dist/src/models/__tests__/openai.test.d.ts +2 -0
- package/dist/src/models/__tests__/openai.test.d.ts.map +1 -0
- package/dist/src/models/__tests__/openai.test.js +1189 -0
- package/dist/src/models/__tests__/openai.test.js.map +1 -0
- package/dist/src/models/__tests__/test-utils.d.ts +10 -0
- package/dist/src/models/__tests__/test-utils.d.ts.map +1 -0
- package/dist/src/models/__tests__/test-utils.js +17 -0
- package/dist/src/models/__tests__/test-utils.js.map +1 -0
- package/dist/src/models/bedrock.d.ts +289 -0
- package/dist/src/models/bedrock.d.ts.map +1 -0
- package/dist/src/models/bedrock.js +804 -0
- package/dist/src/models/bedrock.js.map +1 -0
- package/dist/src/models/model.d.ts +99 -0
- package/dist/src/models/model.d.ts.map +1 -0
- package/dist/src/models/model.js +169 -0
- package/dist/src/models/model.js.map +1 -0
- package/dist/src/models/openai.d.ts +262 -0
- package/dist/src/models/openai.d.ts.map +1 -0
- package/dist/src/models/openai.js +752 -0
- package/dist/src/models/openai.js.map +1 -0
- package/dist/src/models/streaming.d.ts +318 -0
- package/dist/src/models/streaming.d.ts.map +1 -0
- package/dist/src/models/streaming.js +122 -0
- package/dist/src/models/streaming.js.map +1 -0
- package/dist/src/registry/registry.d.ts +117 -0
- package/dist/src/registry/registry.d.ts.map +1 -0
- package/dist/src/registry/registry.js +298 -0
- package/dist/src/registry/registry.js.map +1 -0
- package/dist/src/registry/tool-registry.d.ts +34 -0
- package/dist/src/registry/tool-registry.d.ts.map +1 -0
- package/dist/src/registry/tool-registry.js +178 -0
- package/dist/src/registry/tool-registry.js.map +1 -0
- package/dist/src/tools/__tests__/tool.test.d.ts +2 -0
- package/dist/src/tools/__tests__/tool.test.d.ts.map +1 -0
- package/dist/src/tools/__tests__/tool.test.js +877 -0
- package/dist/src/tools/__tests__/tool.test.js.map +1 -0
- package/dist/src/tools/__tests__/zod-tool.test-d.d.ts +2 -0
- package/dist/src/tools/__tests__/zod-tool.test-d.d.ts.map +1 -0
- package/dist/src/tools/__tests__/zod-tool.test-d.js +227 -0
- package/dist/src/tools/__tests__/zod-tool.test-d.js.map +1 -0
- package/dist/src/tools/__tests__/zod-tool.test.d.ts +2 -0
- package/dist/src/tools/__tests__/zod-tool.test.d.ts.map +1 -0
- package/dist/src/tools/__tests__/zod-tool.test.js +372 -0
- package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -0
- package/dist/src/tools/function-tool.d.ts +146 -0
- package/dist/src/tools/function-tool.d.ts.map +1 -0
- package/dist/src/tools/function-tool.js +188 -0
- package/dist/src/tools/function-tool.js.map +1 -0
- package/dist/src/tools/mcp-tool.d.ts +36 -0
- package/dist/src/tools/mcp-tool.d.ts.map +1 -0
- package/dist/src/tools/mcp-tool.js +78 -0
- package/dist/src/tools/mcp-tool.js.map +1 -0
- package/dist/src/tools/tool.d.ts +167 -0
- package/dist/src/tools/tool.d.ts.map +1 -0
- package/dist/src/tools/tool.js +68 -0
- package/dist/src/tools/tool.js.map +1 -0
- package/dist/src/tools/types.d.ts +62 -0
- package/dist/src/tools/types.d.ts.map +1 -0
- package/dist/src/tools/types.js +2 -0
- package/dist/src/tools/types.js.map +1 -0
- package/dist/src/tools/zod-tool.d.ts +70 -0
- package/dist/src/tools/zod-tool.d.ts.map +1 -0
- package/dist/src/tools/zod-tool.js +149 -0
- package/dist/src/tools/zod-tool.js.map +1 -0
- package/dist/src/types/__tests__/agent.test.d.ts +2 -0
- package/dist/src/types/__tests__/agent.test.d.ts.map +1 -0
- package/dist/src/types/__tests__/agent.test.js +155 -0
- package/dist/src/types/__tests__/agent.test.js.map +1 -0
- package/dist/src/types/__tests__/json.test.d.ts +2 -0
- package/dist/src/types/__tests__/json.test.d.ts.map +1 -0
- package/dist/src/types/__tests__/json.test.js +298 -0
- package/dist/src/types/__tests__/json.test.js.map +1 -0
- package/dist/src/types/__tests__/media.test.d.ts +2 -0
- package/dist/src/types/__tests__/media.test.d.ts.map +1 -0
- package/dist/src/types/__tests__/media.test.js +257 -0
- package/dist/src/types/__tests__/media.test.js.map +1 -0
- package/dist/src/types/__tests__/messages.test.d.ts +2 -0
- package/dist/src/types/__tests__/messages.test.d.ts.map +1 -0
- package/dist/src/types/__tests__/messages.test.js +364 -0
- package/dist/src/types/__tests__/messages.test.js.map +1 -0
- package/dist/src/types/__tests__/validation.test.d.ts +2 -0
- package/dist/src/types/__tests__/validation.test.d.ts.map +1 -0
- package/dist/src/types/__tests__/validation.test.js +30 -0
- package/dist/src/types/__tests__/validation.test.js.map +1 -0
- package/dist/src/types/agent.d.ts +57 -0
- package/dist/src/types/agent.d.ts.map +1 -0
- package/dist/src/types/agent.js +47 -0
- package/dist/src/types/agent.js.map +1 -0
- package/dist/src/types/json.d.ts +55 -0
- package/dist/src/types/json.d.ts.map +1 -0
- package/dist/src/types/json.js +72 -0
- package/dist/src/types/json.js.map +1 -0
- package/dist/src/types/media.d.ts +249 -0
- package/dist/src/types/media.d.ts.map +1 -0
- package/dist/src/types/media.js +173 -0
- package/dist/src/types/media.js.map +1 -0
- package/dist/src/types/messages.d.ts +438 -0
- package/dist/src/types/messages.d.ts.map +1 -0
- package/dist/src/types/messages.js +286 -0
- package/dist/src/types/messages.js.map +1 -0
- package/dist/src/types/validation.d.ts +10 -0
- package/dist/src/types/validation.d.ts.map +1 -0
- package/dist/src/types/validation.js +15 -0
- package/dist/src/types/validation.js.map +1 -0
- package/dist/tools/__tests__/registry.test.d.ts +2 -0
- package/dist/tools/__tests__/registry.test.d.ts.map +1 -0
- package/dist/tools/__tests__/registry.test.js +253 -0
- package/dist/tools/__tests__/registry.test.js.map +1 -0
- package/dist/tools/__tests__/tool.test.d.ts +2 -0
- package/dist/tools/__tests__/tool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/tool.test.js +761 -0
- package/dist/tools/__tests__/tool.test.js.map +1 -0
- package/dist/tools/__tests__/zod-tool.test-d.d.ts +2 -0
- package/dist/tools/__tests__/zod-tool.test-d.d.ts.map +1 -0
- package/dist/tools/__tests__/zod-tool.test-d.js +227 -0
- package/dist/tools/__tests__/zod-tool.test-d.js.map +1 -0
- package/dist/tools/__tests__/zod-tool.test.d.ts +2 -0
- package/dist/tools/__tests__/zod-tool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/zod-tool.test.js +342 -0
- package/dist/tools/__tests__/zod-tool.test.js.map +1 -0
- package/dist/tools/function-tool.d.ts +156 -0
- package/dist/tools/function-tool.d.ts.map +1 -0
- package/dist/tools/function-tool.js +237 -0
- package/dist/tools/function-tool.js.map +1 -0
- package/dist/tools/registry.d.ts +43 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +82 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/tool.d.ts +157 -0
- package/dist/tools/tool.d.ts.map +1 -0
- package/dist/tools/tool.js +2 -0
- package/dist/tools/tool.js.map +1 -0
- package/dist/tools/types.d.ts +119 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +2 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/zod-tool.d.ts +70 -0
- package/dist/tools/zod-tool.d.ts.map +1 -0
- package/dist/tools/zod-tool.js +96 -0
- package/dist/tools/zod-tool.js.map +1 -0
- package/dist/types/__tests__/json.test.d.ts +2 -0
- package/dist/types/__tests__/json.test.d.ts.map +1 -0
- package/dist/types/__tests__/json.test.js +129 -0
- package/dist/types/__tests__/json.test.js.map +1 -0
- package/dist/types/__tests__/validation.test.d.ts +2 -0
- package/dist/types/__tests__/validation.test.d.ts.map +1 -0
- package/dist/types/__tests__/validation.test.js +30 -0
- package/dist/types/__tests__/validation.test.js.map +1 -0
- package/dist/types/json.d.ts +45 -0
- package/dist/types/json.d.ts.map +1 -0
- package/dist/types/json.js +17 -0
- package/dist/types/json.js.map +1 -0
- package/dist/types/messages.d.ts +160 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +2 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/validation.d.ts +10 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +15 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/vended_tools/bash/__tests__/bash.test.d.ts +2 -0
- package/dist/vended_tools/bash/__tests__/bash.test.d.ts.map +1 -0
- package/dist/vended_tools/bash/__tests__/bash.test.js +333 -0
- package/dist/vended_tools/bash/__tests__/bash.test.js.map +1 -0
- package/dist/vended_tools/bash/bash.d.ts +33 -0
- package/dist/vended_tools/bash/bash.d.ts.map +1 -0
- package/dist/vended_tools/bash/bash.js +264 -0
- package/dist/vended_tools/bash/bash.js.map +1 -0
- package/dist/vended_tools/bash/index.d.ts +7 -0
- package/dist/vended_tools/bash/index.d.ts.map +1 -0
- package/dist/vended_tools/bash/index.js +6 -0
- package/dist/vended_tools/bash/index.js.map +1 -0
- package/dist/vended_tools/bash/types.d.ts +65 -0
- package/dist/vended_tools/bash/types.d.ts.map +1 -0
- package/dist/vended_tools/bash/types.js +22 -0
- package/dist/vended_tools/bash/types.js.map +1 -0
- package/dist/vended_tools/file_editor/__tests__/file-editor.test.d.ts +2 -0
- package/dist/vended_tools/file_editor/__tests__/file-editor.test.d.ts.map +1 -0
- package/dist/vended_tools/file_editor/__tests__/file-editor.test.js +359 -0
- package/dist/vended_tools/file_editor/__tests__/file-editor.test.js.map +1 -0
- package/dist/vended_tools/file_editor/file-editor.d.ts +31 -0
- package/dist/vended_tools/file_editor/file-editor.d.ts.map +1 -0
- package/dist/vended_tools/file_editor/file-editor.js +353 -0
- package/dist/vended_tools/file_editor/file-editor.js.map +1 -0
- package/dist/vended_tools/file_editor/index.d.ts +6 -0
- package/dist/vended_tools/file_editor/index.d.ts.map +1 -0
- package/dist/vended_tools/file_editor/index.js +5 -0
- package/dist/vended_tools/file_editor/index.js.map +1 -0
- package/dist/vended_tools/file_editor/types.d.ts +61 -0
- package/dist/vended_tools/file_editor/types.d.ts.map +1 -0
- package/dist/vended_tools/file_editor/types.js +2 -0
- package/dist/vended_tools/file_editor/types.js.map +1 -0
- package/dist/vended_tools/http_request/__tests__/http-request.test.d.ts +2 -0
- package/dist/vended_tools/http_request/__tests__/http-request.test.d.ts.map +1 -0
- package/dist/vended_tools/http_request/__tests__/http-request.test.js +189 -0
- package/dist/vended_tools/http_request/__tests__/http-request.test.js.map +1 -0
- package/dist/vended_tools/http_request/http-request.d.ts +35 -0
- package/dist/vended_tools/http_request/http-request.d.ts.map +1 -0
- package/dist/vended_tools/http_request/http-request.js +95 -0
- package/dist/vended_tools/http_request/http-request.js.map +1 -0
- package/dist/vended_tools/http_request/index.d.ts +6 -0
- package/dist/vended_tools/http_request/index.d.ts.map +1 -0
- package/dist/vended_tools/http_request/index.js +5 -0
- package/dist/vended_tools/http_request/index.js.map +1 -0
- package/dist/vended_tools/http_request/types.d.ts +47 -0
- package/dist/vended_tools/http_request/types.d.ts.map +1 -0
- package/dist/vended_tools/http_request/types.js +2 -0
- package/dist/vended_tools/http_request/types.js.map +1 -0
- package/dist/vended_tools/notebook/__tests__/notebook.test.d.ts +2 -0
- package/dist/vended_tools/notebook/__tests__/notebook.test.d.ts.map +1 -0
- package/dist/vended_tools/notebook/__tests__/notebook.test.js +371 -0
- package/dist/vended_tools/notebook/__tests__/notebook.test.js.map +1 -0
- package/dist/vended_tools/notebook/index.d.ts +6 -0
- package/dist/vended_tools/notebook/index.d.ts.map +1 -0
- package/dist/vended_tools/notebook/index.js +5 -0
- package/dist/vended_tools/notebook/index.js.map +1 -0
- package/dist/vended_tools/notebook/notebook.d.ts +29 -0
- package/dist/vended_tools/notebook/notebook.d.ts.map +1 -0
- package/dist/vended_tools/notebook/notebook.js +215 -0
- package/dist/vended_tools/notebook/notebook.js.map +1 -0
- package/dist/vended_tools/notebook/types.d.ts +79 -0
- package/dist/vended_tools/notebook/types.d.ts.map +1 -0
- package/dist/vended_tools/notebook/types.js +2 -0
- package/dist/vended_tools/notebook/types.js.map +1 -0
- package/package.json +112 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
2
|
+
if (value !== null && value !== void 0) {
|
|
3
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
4
|
+
var dispose, inner;
|
|
5
|
+
if (async) {
|
|
6
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
7
|
+
dispose = value[Symbol.asyncDispose];
|
|
8
|
+
}
|
|
9
|
+
if (dispose === void 0) {
|
|
10
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
11
|
+
dispose = value[Symbol.dispose];
|
|
12
|
+
if (async) inner = dispose;
|
|
13
|
+
}
|
|
14
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
15
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
16
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
17
|
+
}
|
|
18
|
+
else if (async) {
|
|
19
|
+
env.stack.push({ async: true });
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
};
|
|
23
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
24
|
+
return function (env) {
|
|
25
|
+
function fail(e) {
|
|
26
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
27
|
+
env.hasError = true;
|
|
28
|
+
}
|
|
29
|
+
var r, s = 0;
|
|
30
|
+
function next() {
|
|
31
|
+
while (r = env.stack.pop()) {
|
|
32
|
+
try {
|
|
33
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
34
|
+
if (r.dispose) {
|
|
35
|
+
var result = r.dispose.call(r.value);
|
|
36
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
37
|
+
}
|
|
38
|
+
else s |= 1;
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
fail(e);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
45
|
+
if (env.hasError) throw env.error;
|
|
46
|
+
}
|
|
47
|
+
return next();
|
|
48
|
+
};
|
|
49
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
50
|
+
var e = new Error(message);
|
|
51
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
52
|
+
});
|
|
53
|
+
import { AgentResult, BedrockModel, McpClient, Message, TextBlock, ToolResultBlock, } from '../index.js';
|
|
54
|
+
import { systemPromptFromData } from '../types/messages.js';
|
|
55
|
+
import { normalizeError, ConcurrentInvocationError } from '../errors.js';
|
|
56
|
+
import { ToolRegistry } from '../registry/tool-registry.js';
|
|
57
|
+
import { AgentState } from './state.js';
|
|
58
|
+
import { AgentPrinter, getDefaultAppender } from './printer.js';
|
|
59
|
+
import { SlidingWindowConversationManager } from '../conversation-manager/sliding-window-conversation-manager.js';
|
|
60
|
+
import { HookRegistryImplementation } from '../hooks/registry.js';
|
|
61
|
+
import { HookEvent, AfterInvocationEvent, AfterModelCallEvent, AfterToolCallEvent, AfterToolsEvent, BeforeInvocationEvent, BeforeModelCallEvent, BeforeToolCallEvent, BeforeToolsEvent, MessageAddedEvent, ModelStreamEventHook, } from '../hooks/events.js';
|
|
62
|
+
/**
|
|
63
|
+
* Orchestrates the interaction between a model, a set of tools, and MCP clients.
|
|
64
|
+
* The Agent is responsible for managing the lifecycle of tools and clients
|
|
65
|
+
* and invoking the core decision-making loop.
|
|
66
|
+
*/
|
|
67
|
+
export class Agent {
|
|
68
|
+
/**
|
|
69
|
+
* The conversation history of messages between user and assistant.
|
|
70
|
+
*/
|
|
71
|
+
messages;
|
|
72
|
+
/**
|
|
73
|
+
* Agent state storage accessible to tools and application logic.
|
|
74
|
+
* State is not passed to the model during inference.
|
|
75
|
+
*/
|
|
76
|
+
state;
|
|
77
|
+
/**
|
|
78
|
+
* Conversation manager for handling message history and context overflow.
|
|
79
|
+
*/
|
|
80
|
+
conversationManager;
|
|
81
|
+
/**
|
|
82
|
+
* Hook registry for managing event callbacks.
|
|
83
|
+
* Hooks enable observing and extending agent behavior.
|
|
84
|
+
*/
|
|
85
|
+
hooks;
|
|
86
|
+
/**
|
|
87
|
+
* The model provider used by the agent for inference.
|
|
88
|
+
*/
|
|
89
|
+
model;
|
|
90
|
+
_toolRegistry;
|
|
91
|
+
_mcpClients;
|
|
92
|
+
_systemPrompt;
|
|
93
|
+
_initialized;
|
|
94
|
+
_isInvoking = false;
|
|
95
|
+
_printer;
|
|
96
|
+
/**
|
|
97
|
+
* Creates an instance of the Agent.
|
|
98
|
+
* @param config - The configuration for the agent.
|
|
99
|
+
*/
|
|
100
|
+
constructor(config) {
|
|
101
|
+
// Initialize public fields
|
|
102
|
+
this.messages = (config?.messages ?? []).map((msg) => (msg instanceof Message ? msg : Message.fromMessageData(msg)));
|
|
103
|
+
this.state = new AgentState(config?.state);
|
|
104
|
+
this.conversationManager = config?.conversationManager ?? new SlidingWindowConversationManager({ windowSize: 40 });
|
|
105
|
+
// Initialize hooks and register conversation manager hooks
|
|
106
|
+
this.hooks = new HookRegistryImplementation();
|
|
107
|
+
this.hooks.addHook(this.conversationManager);
|
|
108
|
+
this.hooks.addAllHooks(config?.hooks ?? []);
|
|
109
|
+
this.model = config?.model ?? new BedrockModel();
|
|
110
|
+
const { tools, mcpClients } = flattenTools(config?.tools ?? []);
|
|
111
|
+
this._toolRegistry = new ToolRegistry(tools);
|
|
112
|
+
this._mcpClients = mcpClients;
|
|
113
|
+
if (config?.systemPrompt !== undefined) {
|
|
114
|
+
this._systemPrompt = systemPromptFromData(config.systemPrompt);
|
|
115
|
+
}
|
|
116
|
+
// Create printer if printer is enabled (default: true)
|
|
117
|
+
const printer = config?.printer ?? true;
|
|
118
|
+
if (printer) {
|
|
119
|
+
this._printer = new AgentPrinter(getDefaultAppender());
|
|
120
|
+
}
|
|
121
|
+
this._initialized = false;
|
|
122
|
+
}
|
|
123
|
+
async initialize() {
|
|
124
|
+
if (this._initialized) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
await Promise.all(this._mcpClients.map(async (client) => {
|
|
128
|
+
const tools = await client.listTools();
|
|
129
|
+
this._toolRegistry.addAll(tools);
|
|
130
|
+
}));
|
|
131
|
+
this._initialized = true;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Acquires a lock to prevent concurrent invocations.
|
|
135
|
+
* Returns a Disposable that releases the lock when disposed.
|
|
136
|
+
*/
|
|
137
|
+
acquireLock() {
|
|
138
|
+
if (this._isInvoking) {
|
|
139
|
+
throw new ConcurrentInvocationError('Agent is already processing an invocation. Wait for the current invoke() or stream() call to complete before invoking again.');
|
|
140
|
+
}
|
|
141
|
+
this._isInvoking = true;
|
|
142
|
+
return {
|
|
143
|
+
[Symbol.dispose]: () => {
|
|
144
|
+
this._isInvoking = false;
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* The tools this agent can use.
|
|
150
|
+
*/
|
|
151
|
+
get tools() {
|
|
152
|
+
return this._toolRegistry.values();
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The tool registry for managing the agent's tools.
|
|
156
|
+
*/
|
|
157
|
+
get toolRegistry() {
|
|
158
|
+
return this._toolRegistry;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Invokes the agent and returns the final result.
|
|
162
|
+
*
|
|
163
|
+
* This is a convenience method that consumes the stream() method and returns
|
|
164
|
+
* only the final AgentResult. Use stream() if you need access to intermediate
|
|
165
|
+
* streaming events.
|
|
166
|
+
*
|
|
167
|
+
* @param args - Arguments for invoking the agent
|
|
168
|
+
* @returns Promise that resolves to the final AgentResult
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* const agent = new Agent({ model, tools })
|
|
173
|
+
* const result = await agent.invoke('What is 2 + 2?')
|
|
174
|
+
* console.log(result.lastMessage) // Agent's response
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
async invoke(args) {
|
|
178
|
+
const gen = this.stream(args);
|
|
179
|
+
let result = await gen.next();
|
|
180
|
+
while (!result.done) {
|
|
181
|
+
result = await gen.next();
|
|
182
|
+
}
|
|
183
|
+
return result.value;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Streams the agent execution, yielding events and returning the final result.
|
|
187
|
+
*
|
|
188
|
+
* The agent loop manages the conversation flow by:
|
|
189
|
+
* 1. Streaming model responses and yielding all events
|
|
190
|
+
* 2. Executing tools when the model requests them
|
|
191
|
+
* 3. Continuing the loop until the model completes without tool use
|
|
192
|
+
*
|
|
193
|
+
* Use this method when you need access to intermediate streaming events.
|
|
194
|
+
* For simple request/response without streaming, use invoke() instead.
|
|
195
|
+
*
|
|
196
|
+
* An explicit goal of this method is to always leave the message array in a way that
|
|
197
|
+
* the agent can be reinvoked with a user prompt after this method completes. To that end
|
|
198
|
+
* assistant messages containing tool uses are only added after tool execution succeeds
|
|
199
|
+
* with valid toolResponses
|
|
200
|
+
*
|
|
201
|
+
* @param args - Arguments for invoking the agent
|
|
202
|
+
* @returns Async generator that yields AgentStreamEvent objects and returns AgentResult
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```typescript
|
|
206
|
+
* const agent = new Agent({ model, tools })
|
|
207
|
+
*
|
|
208
|
+
* for await (const event of agent.stream('Hello')) {
|
|
209
|
+
* console.log('Event:', event.type)
|
|
210
|
+
* }
|
|
211
|
+
* // Messages array is mutated in place and contains the full conversation
|
|
212
|
+
* ```
|
|
213
|
+
*/
|
|
214
|
+
async *stream(args) {
|
|
215
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
216
|
+
try {
|
|
217
|
+
const _lock = __addDisposableResource(env_1, this.acquireLock(), false);
|
|
218
|
+
await this.initialize();
|
|
219
|
+
// Delegate to _stream and process events through printer and hooks
|
|
220
|
+
const streamGenerator = this._stream(args);
|
|
221
|
+
let result = await streamGenerator.next();
|
|
222
|
+
while (!result.done) {
|
|
223
|
+
const event = result.value;
|
|
224
|
+
// Invoke hook callbacks for Hook Events (except MessageAddedEvent which invokes in _appendMessage)
|
|
225
|
+
if (event instanceof HookEvent && !(event instanceof MessageAddedEvent)) {
|
|
226
|
+
await this.hooks.invokeCallbacks(event);
|
|
227
|
+
}
|
|
228
|
+
this._printer?.processEvent(event);
|
|
229
|
+
yield event;
|
|
230
|
+
result = await streamGenerator.next();
|
|
231
|
+
}
|
|
232
|
+
// Yield final result as last event
|
|
233
|
+
yield result.value;
|
|
234
|
+
return result.value;
|
|
235
|
+
}
|
|
236
|
+
catch (e_1) {
|
|
237
|
+
env_1.error = e_1;
|
|
238
|
+
env_1.hasError = true;
|
|
239
|
+
}
|
|
240
|
+
finally {
|
|
241
|
+
__disposeResources(env_1);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Internal implementation of the agent streaming logic.
|
|
246
|
+
* Separated to centralize printer event processing in the public stream method.
|
|
247
|
+
*
|
|
248
|
+
* @param args - Arguments for invoking the agent
|
|
249
|
+
* @returns Async generator that yields AgentStreamEvent objects and returns AgentResult
|
|
250
|
+
*/
|
|
251
|
+
async *_stream(args) {
|
|
252
|
+
let currentArgs = args;
|
|
253
|
+
// Emit event before the loop starts
|
|
254
|
+
yield new BeforeInvocationEvent({ agent: this });
|
|
255
|
+
try {
|
|
256
|
+
// Main agent loop - continues until model stops without requesting tools
|
|
257
|
+
while (true) {
|
|
258
|
+
const modelResult = yield* this.invokeModel(currentArgs);
|
|
259
|
+
currentArgs = undefined; // Only pass args on first invocation
|
|
260
|
+
if (modelResult.stopReason !== 'toolUse') {
|
|
261
|
+
// Loop terminates - no tool use requested
|
|
262
|
+
// Add assistant message now that we're returning
|
|
263
|
+
yield await this._appendMessage(modelResult.message);
|
|
264
|
+
return new AgentResult({
|
|
265
|
+
stopReason: modelResult.stopReason,
|
|
266
|
+
lastMessage: modelResult.message,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
// Execute tools sequentially
|
|
270
|
+
const toolResultMessage = yield* this.executeTools(modelResult.message, this._toolRegistry);
|
|
271
|
+
// Add assistant message with tool uses right before adding tool results
|
|
272
|
+
// This ensures we don't have dangling tool use messages if tool execution fails
|
|
273
|
+
yield await this._appendMessage(modelResult.message);
|
|
274
|
+
yield await this._appendMessage(toolResultMessage);
|
|
275
|
+
// Continue loop
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
finally {
|
|
279
|
+
// Always emit final event
|
|
280
|
+
yield new AfterInvocationEvent({ agent: this });
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Invokes the model provider and streams all events.
|
|
285
|
+
*
|
|
286
|
+
* @param args - Optional arguments for invoking the model
|
|
287
|
+
* @returns Object containing the assistant message and stop reason
|
|
288
|
+
*/
|
|
289
|
+
async *invokeModel(args) {
|
|
290
|
+
if (args !== undefined && typeof args === 'string') {
|
|
291
|
+
// Add user message from args
|
|
292
|
+
yield await this._appendMessage(new Message({
|
|
293
|
+
role: 'user',
|
|
294
|
+
content: [new TextBlock(args)],
|
|
295
|
+
}));
|
|
296
|
+
}
|
|
297
|
+
const toolSpecs = this._toolRegistry.values().map((tool) => tool.toolSpec);
|
|
298
|
+
const streamOptions = { toolSpecs };
|
|
299
|
+
if (this._systemPrompt !== undefined) {
|
|
300
|
+
streamOptions.systemPrompt = this._systemPrompt;
|
|
301
|
+
}
|
|
302
|
+
yield new BeforeModelCallEvent({ agent: this });
|
|
303
|
+
try {
|
|
304
|
+
const { message, stopReason } = yield* this._streamFromModel(this.messages, streamOptions);
|
|
305
|
+
yield new AfterModelCallEvent({ agent: this, stopData: { message, stopReason } });
|
|
306
|
+
return { message, stopReason };
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
const modelError = normalizeError(error);
|
|
310
|
+
// Create error event
|
|
311
|
+
const errorEvent = new AfterModelCallEvent({ agent: this, error: modelError });
|
|
312
|
+
// Yield error event - stream will invoke hooks
|
|
313
|
+
yield errorEvent;
|
|
314
|
+
// After yielding, hooks have been invoked and may have set retryModelCall
|
|
315
|
+
if (errorEvent.retryModelCall) {
|
|
316
|
+
return yield* this.invokeModel(args);
|
|
317
|
+
}
|
|
318
|
+
// Re-throw error
|
|
319
|
+
throw error;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Streams events from the model and fires ModelStreamEventHook for each event.
|
|
324
|
+
*
|
|
325
|
+
* @param messages - Messages to send to the model
|
|
326
|
+
* @param streamOptions - Options for streaming
|
|
327
|
+
* @returns Object containing the assistant message and stop reason
|
|
328
|
+
*/
|
|
329
|
+
async *_streamFromModel(messages, streamOptions) {
|
|
330
|
+
const streamGenerator = this.model.streamAggregated(messages, streamOptions);
|
|
331
|
+
let result = await streamGenerator.next();
|
|
332
|
+
while (!result.done) {
|
|
333
|
+
const event = result.value;
|
|
334
|
+
// Yield hook event for observability
|
|
335
|
+
yield new ModelStreamEventHook({ agent: this, event });
|
|
336
|
+
// Yield the actual model event
|
|
337
|
+
yield event;
|
|
338
|
+
result = await streamGenerator.next();
|
|
339
|
+
}
|
|
340
|
+
// result.done is true, result.value contains the return value
|
|
341
|
+
return result.value;
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Executes tools sequentially and streams all tool events.
|
|
345
|
+
*
|
|
346
|
+
* @param assistantMessage - The assistant message containing tool use blocks
|
|
347
|
+
* @param toolRegistry - Registry containing available tools
|
|
348
|
+
* @returns User message containing tool results
|
|
349
|
+
*/
|
|
350
|
+
async *executeTools(assistantMessage, toolRegistry) {
|
|
351
|
+
yield new BeforeToolsEvent({ agent: this, message: assistantMessage });
|
|
352
|
+
// Extract tool use blocks from assistant message
|
|
353
|
+
const toolUseBlocks = assistantMessage.content.filter((block) => block.type === 'toolUseBlock');
|
|
354
|
+
if (toolUseBlocks.length === 0) {
|
|
355
|
+
// No tool use blocks found even though stopReason is toolUse
|
|
356
|
+
throw new Error('Model indicated toolUse but no tool use blocks found in message');
|
|
357
|
+
}
|
|
358
|
+
const toolResultBlocks = [];
|
|
359
|
+
for (const toolUseBlock of toolUseBlocks) {
|
|
360
|
+
const toolResultBlock = yield* this.executeTool(toolUseBlock, toolRegistry);
|
|
361
|
+
toolResultBlocks.push(toolResultBlock);
|
|
362
|
+
// Yield the tool result block as it's created
|
|
363
|
+
yield toolResultBlock;
|
|
364
|
+
}
|
|
365
|
+
// Create user message with tool results
|
|
366
|
+
const toolResultMessage = new Message({
|
|
367
|
+
role: 'user',
|
|
368
|
+
content: toolResultBlocks,
|
|
369
|
+
});
|
|
370
|
+
yield new AfterToolsEvent({ agent: this, message: toolResultMessage });
|
|
371
|
+
return toolResultMessage;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Executes a single tool and returns the result.
|
|
375
|
+
* If the tool is not found or fails to return a result, returns an error ToolResult
|
|
376
|
+
* instead of throwing an exception. This allows the agent loop to continue and
|
|
377
|
+
* let the model handle the error gracefully.
|
|
378
|
+
*
|
|
379
|
+
* @param toolUseBlock - Tool use block to execute
|
|
380
|
+
* @param toolRegistry - Registry containing available tools
|
|
381
|
+
* @returns Tool result block
|
|
382
|
+
*/
|
|
383
|
+
async *executeTool(toolUseBlock, toolRegistry) {
|
|
384
|
+
const tool = toolRegistry.find((t) => t.name === toolUseBlock.name);
|
|
385
|
+
// Create toolUse object for hook events
|
|
386
|
+
const toolUse = {
|
|
387
|
+
name: toolUseBlock.name,
|
|
388
|
+
toolUseId: toolUseBlock.toolUseId,
|
|
389
|
+
input: toolUseBlock.input,
|
|
390
|
+
};
|
|
391
|
+
yield new BeforeToolCallEvent({ agent: this, toolUse, tool });
|
|
392
|
+
if (!tool) {
|
|
393
|
+
// Tool not found - return error result instead of throwing
|
|
394
|
+
const errorResult = new ToolResultBlock({
|
|
395
|
+
toolUseId: toolUseBlock.toolUseId,
|
|
396
|
+
status: 'error',
|
|
397
|
+
content: [new TextBlock(`Tool '${toolUseBlock.name}' not found in registry`)],
|
|
398
|
+
});
|
|
399
|
+
yield new AfterToolCallEvent({ agent: this, toolUse, tool, result: errorResult });
|
|
400
|
+
return errorResult;
|
|
401
|
+
}
|
|
402
|
+
// Execute tool and collect result
|
|
403
|
+
const toolContext = {
|
|
404
|
+
toolUse: {
|
|
405
|
+
name: toolUseBlock.name,
|
|
406
|
+
toolUseId: toolUseBlock.toolUseId,
|
|
407
|
+
input: toolUseBlock.input,
|
|
408
|
+
},
|
|
409
|
+
agent: this,
|
|
410
|
+
};
|
|
411
|
+
try {
|
|
412
|
+
const toolGenerator = tool.stream(toolContext);
|
|
413
|
+
// Use yield* to delegate to the tool generator and capture the return value
|
|
414
|
+
const toolResult = yield* toolGenerator;
|
|
415
|
+
if (!toolResult) {
|
|
416
|
+
// Tool didn't return a result - return error result instead of throwing
|
|
417
|
+
const errorResult = new ToolResultBlock({
|
|
418
|
+
toolUseId: toolUseBlock.toolUseId,
|
|
419
|
+
status: 'error',
|
|
420
|
+
content: [new TextBlock(`Tool '${toolUseBlock.name}' did not return a result`)],
|
|
421
|
+
});
|
|
422
|
+
yield new AfterToolCallEvent({ agent: this, toolUse, tool, result: errorResult });
|
|
423
|
+
return errorResult;
|
|
424
|
+
}
|
|
425
|
+
yield new AfterToolCallEvent({ agent: this, toolUse, tool, result: toolResult });
|
|
426
|
+
// Tool already returns ToolResultBlock directly
|
|
427
|
+
return toolResult;
|
|
428
|
+
}
|
|
429
|
+
catch (error) {
|
|
430
|
+
// Tool execution failed with error
|
|
431
|
+
const toolError = normalizeError(error);
|
|
432
|
+
const errorResult = new ToolResultBlock({
|
|
433
|
+
toolUseId: toolUseBlock.toolUseId,
|
|
434
|
+
status: 'error',
|
|
435
|
+
content: [new TextBlock(toolError.message)],
|
|
436
|
+
error: toolError,
|
|
437
|
+
});
|
|
438
|
+
yield new AfterToolCallEvent({ agent: this, toolUse, tool, result: errorResult, error: toolError });
|
|
439
|
+
return errorResult;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Appends a message to the conversation history, invokes MessageAddedEvent hook,
|
|
444
|
+
* and returns the event for yielding.
|
|
445
|
+
*
|
|
446
|
+
* @param message - The message to append
|
|
447
|
+
* @returns MessageAddedEvent to be yielded (hook already invoked)
|
|
448
|
+
*/
|
|
449
|
+
async _appendMessage(message) {
|
|
450
|
+
this.messages.push(message);
|
|
451
|
+
const event = new MessageAddedEvent({ agent: this, message });
|
|
452
|
+
// Invoke hooks immediately for message tracking
|
|
453
|
+
await this.hooks.invokeCallbacks(event);
|
|
454
|
+
// Return event for yielding (stream will skip hook invocation for MessageAddedEvent)
|
|
455
|
+
return event;
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Recursively flattens nested arrays of tools into a single flat array.
|
|
460
|
+
* @param tools - Tools or nested arrays of tools
|
|
461
|
+
* @returns Flat array of tools and MCP clients
|
|
462
|
+
*/
|
|
463
|
+
function flattenTools(toolList) {
|
|
464
|
+
const tools = [];
|
|
465
|
+
const mcpClients = [];
|
|
466
|
+
for (const item of toolList) {
|
|
467
|
+
if (Array.isArray(item)) {
|
|
468
|
+
const { tools: nestedTools, mcpClients: nestedMcpClients } = flattenTools(item);
|
|
469
|
+
tools.push(...nestedTools);
|
|
470
|
+
mcpClients.push(...nestedMcpClients);
|
|
471
|
+
}
|
|
472
|
+
else if (item instanceof McpClient) {
|
|
473
|
+
mcpClients.push(item);
|
|
474
|
+
}
|
|
475
|
+
else {
|
|
476
|
+
tools.push(item);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
return { tools, mcpClients };
|
|
480
|
+
}
|
|
481
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/agent/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { AgentStreamEvent } from '../types/agent.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a default appender function for the current environment.
|
|
4
|
+
* Uses process.stdout.write in Node.js and console.log in browsers.
|
|
5
|
+
* @returns Appender function that writes text to the output destination
|
|
6
|
+
*/
|
|
7
|
+
export declare function getDefaultAppender(): (text: string) => void;
|
|
8
|
+
/**
|
|
9
|
+
* Interface for printing agent activity to a destination.
|
|
10
|
+
* Implementations can output to stdout, console, HTML elements, etc.
|
|
11
|
+
*/
|
|
12
|
+
export interface Printer {
|
|
13
|
+
/**
|
|
14
|
+
* Write content to the output destination.
|
|
15
|
+
* @param content - The content to write
|
|
16
|
+
*/
|
|
17
|
+
write(content: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* Process a streaming event from the agent.
|
|
20
|
+
* @param event - The event to process
|
|
21
|
+
*/
|
|
22
|
+
processEvent(event: AgentStreamEvent): void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Default implementation of the Printer interface.
|
|
26
|
+
* Outputs text, reasoning, and tool execution activity to the configured appender.
|
|
27
|
+
*/
|
|
28
|
+
export declare class AgentPrinter implements Printer {
|
|
29
|
+
private readonly _appender;
|
|
30
|
+
private _inReasoningBlock;
|
|
31
|
+
private _toolCount;
|
|
32
|
+
private _needReasoningIndent;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a new AgentPrinter.
|
|
35
|
+
* @param appender - Function that writes text to the output destination
|
|
36
|
+
*/
|
|
37
|
+
constructor(appender: (text: string) => void);
|
|
38
|
+
/**
|
|
39
|
+
* Write content to the output destination.
|
|
40
|
+
* @param content - The content to write
|
|
41
|
+
*/
|
|
42
|
+
write(content: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Process a streaming event from the agent.
|
|
45
|
+
* Handles text deltas, reasoning content, and tool execution events.
|
|
46
|
+
* @param event - The event to process
|
|
47
|
+
*/
|
|
48
|
+
processEvent(event: AgentStreamEvent): void;
|
|
49
|
+
/**
|
|
50
|
+
* Handle content block delta events (text or reasoning).
|
|
51
|
+
*/
|
|
52
|
+
private handleContentBlockDelta;
|
|
53
|
+
/**
|
|
54
|
+
* Write reasoning text with proper indentation after newlines.
|
|
55
|
+
*/
|
|
56
|
+
private writeReasoningText;
|
|
57
|
+
/**
|
|
58
|
+
* Handle content block start events.
|
|
59
|
+
* Detects tool use starts.
|
|
60
|
+
*/
|
|
61
|
+
private handleContentBlockStart;
|
|
62
|
+
/**
|
|
63
|
+
* Handle content block stop events.
|
|
64
|
+
* Closes reasoning blocks if we were in one.
|
|
65
|
+
*/
|
|
66
|
+
private handleContentBlockStop;
|
|
67
|
+
/**
|
|
68
|
+
* Handle tool result events.
|
|
69
|
+
* Outputs completion status.
|
|
70
|
+
*/
|
|
71
|
+
private handleToolResult;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=printer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printer.d.ts","sourceRoot":"","sources":["../../../src/agent/printer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAO3D;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB;;;OAGG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAE5B;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAC5C;AAED;;;GAGG;AACH,qBAAa,YAAa,YAAW,OAAO;IAC1C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,oBAAoB,CAAiB;IAE7C;;;OAGG;gBACS,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI;IAI5C;;;OAGG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC;;;;OAIG;IACI,YAAY,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAwBlD;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAOzB"}
|