@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,188 @@
|
|
|
1
|
+
import { createErrorResult, Tool } from './tool.js';
|
|
2
|
+
import { ToolStreamEvent } from './tool.js';
|
|
3
|
+
import { deepCopy } from '../types/json.js';
|
|
4
|
+
import { JsonBlock, TextBlock, ToolResultBlock } from '../types/messages.js';
|
|
5
|
+
/**
|
|
6
|
+
* A Tool implementation that wraps a callback function and handles all ToolResultBlock conversion.
|
|
7
|
+
*
|
|
8
|
+
* FunctionTool allows creating tools from existing functions without needing to manually
|
|
9
|
+
* handle ToolResultBlock formatting or error handling. It supports multiple callback patterns:
|
|
10
|
+
* - Async generators for streaming responses
|
|
11
|
+
* - Promises for async operations
|
|
12
|
+
* - Synchronous functions for immediate results
|
|
13
|
+
*
|
|
14
|
+
* All return values are automatically wrapped in ToolResultBlock, and errors are caught and
|
|
15
|
+
* returned as error ToolResultBlocks.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // Create a tool with streaming
|
|
20
|
+
* const streamingTool = new FunctionTool({
|
|
21
|
+
* name: 'processor',
|
|
22
|
+
* description: 'Processes data with progress updates',
|
|
23
|
+
* inputSchema: { type: 'object', properties: { data: { type: 'string' } } },
|
|
24
|
+
* callback: async function* (input: any) {
|
|
25
|
+
* yield 'Starting processing...'
|
|
26
|
+
* // Do some work
|
|
27
|
+
* yield 'Halfway done...'
|
|
28
|
+
* // More work
|
|
29
|
+
* return 'Processing complete!'
|
|
30
|
+
* }
|
|
31
|
+
* })
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export class FunctionTool extends Tool {
|
|
35
|
+
/**
|
|
36
|
+
* The unique name of the tool.
|
|
37
|
+
*/
|
|
38
|
+
name;
|
|
39
|
+
/**
|
|
40
|
+
* Human-readable description of what the tool does.
|
|
41
|
+
*/
|
|
42
|
+
description;
|
|
43
|
+
/**
|
|
44
|
+
* OpenAPI JSON specification for the tool.
|
|
45
|
+
*/
|
|
46
|
+
toolSpec;
|
|
47
|
+
/**
|
|
48
|
+
* The callback function that implements the tool's logic.
|
|
49
|
+
*/
|
|
50
|
+
_callback;
|
|
51
|
+
/**
|
|
52
|
+
* Creates a new FunctionTool instance.
|
|
53
|
+
*
|
|
54
|
+
* @param config - Configuration object for the tool
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const tool = new FunctionTool({
|
|
59
|
+
* name: 'greeter',
|
|
60
|
+
* description: 'Greets a person by name',
|
|
61
|
+
* inputSchema: {
|
|
62
|
+
* type: 'object',
|
|
63
|
+
* properties: { name: { type: 'string' } },
|
|
64
|
+
* required: ['name']
|
|
65
|
+
* },
|
|
66
|
+
* callback: (input: any) => `Hello, ${input.name}!`
|
|
67
|
+
* })
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
constructor(config) {
|
|
71
|
+
super();
|
|
72
|
+
this.name = config.name;
|
|
73
|
+
this.description = config.description;
|
|
74
|
+
this.toolSpec = {
|
|
75
|
+
name: config.name,
|
|
76
|
+
description: config.description,
|
|
77
|
+
inputSchema: config.inputSchema,
|
|
78
|
+
};
|
|
79
|
+
this._callback = config.callback;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Executes the tool with streaming support.
|
|
83
|
+
* Handles all callback patterns (async generator, promise, sync) and converts results to ToolResultBlock.
|
|
84
|
+
*
|
|
85
|
+
* @param toolContext - Context information including the tool use request and invocation state
|
|
86
|
+
* @returns Async generator that yields ToolStreamEvents and returns a ToolResultBlock
|
|
87
|
+
*/
|
|
88
|
+
async *stream(toolContext) {
|
|
89
|
+
const { toolUse } = toolContext;
|
|
90
|
+
try {
|
|
91
|
+
const result = this._callback(toolUse.input, toolContext);
|
|
92
|
+
// Check if result is an async generator
|
|
93
|
+
if (result && typeof result === 'object' && Symbol.asyncIterator in result) {
|
|
94
|
+
// Handle async generator: yield each value as ToolStreamEvent, wrap final value in ToolResultBlock
|
|
95
|
+
const generator = result;
|
|
96
|
+
// Iterate through all yielded values
|
|
97
|
+
let iterResult = await generator.next();
|
|
98
|
+
while (!iterResult.done) {
|
|
99
|
+
// Each yielded value becomes a ToolStreamEvent
|
|
100
|
+
yield new ToolStreamEvent({
|
|
101
|
+
data: iterResult.value,
|
|
102
|
+
});
|
|
103
|
+
iterResult = await generator.next();
|
|
104
|
+
}
|
|
105
|
+
// The generator's return value (when done = true) is wrapped in ToolResultBlock
|
|
106
|
+
return this._wrapInToolResult(iterResult.value, toolUse.toolUseId);
|
|
107
|
+
}
|
|
108
|
+
else if (result instanceof Promise) {
|
|
109
|
+
// Handle promise: await and wrap in ToolResultBlock
|
|
110
|
+
const value = await result;
|
|
111
|
+
return this._wrapInToolResult(value, toolUse.toolUseId);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Handle synchronous value: wrap in ToolResultBlock
|
|
115
|
+
return this._wrapInToolResult(result, toolUse.toolUseId);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
// Handle any errors and yield as error ToolResultBlock
|
|
120
|
+
return createErrorResult(error, toolUse.toolUseId);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Wraps a value in a ToolResultBlock with success status.
|
|
125
|
+
*
|
|
126
|
+
* Due to AWS Bedrock limitations (only accepts objects as JSON content), the following
|
|
127
|
+
* rules are applied:
|
|
128
|
+
* - Strings → TextBlock
|
|
129
|
+
* - Numbers, Booleans → TextBlock (converted to string)
|
|
130
|
+
* - null, undefined → TextBlock (special string representation)
|
|
131
|
+
* - Objects → JsonBlock (with deep copy)
|
|
132
|
+
* - Arrays → JsonBlock wrapped in \{ $value: array \} (with deep copy)
|
|
133
|
+
*
|
|
134
|
+
* @param value - The value to wrap (can be any type)
|
|
135
|
+
* @param toolUseId - The tool use ID for the ToolResultBlock
|
|
136
|
+
* @returns A ToolResultBlock containing the value
|
|
137
|
+
*/
|
|
138
|
+
_wrapInToolResult(value, toolUseId) {
|
|
139
|
+
try {
|
|
140
|
+
// Handle null with special string representation as text content
|
|
141
|
+
if (value === null) {
|
|
142
|
+
return new ToolResultBlock({
|
|
143
|
+
toolUseId,
|
|
144
|
+
status: 'success',
|
|
145
|
+
content: [new TextBlock('<null>')],
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
// Handle undefined with special string representation as text content
|
|
149
|
+
if (value === undefined) {
|
|
150
|
+
return new ToolResultBlock({
|
|
151
|
+
toolUseId,
|
|
152
|
+
status: 'success',
|
|
153
|
+
content: [new TextBlock('<undefined>')],
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
// Handle primitives (strings, numbers, booleans) as text content
|
|
157
|
+
// Bedrock doesn't accept primitives as JSON content, so we convert all to strings
|
|
158
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
|
159
|
+
return new ToolResultBlock({
|
|
160
|
+
toolUseId,
|
|
161
|
+
status: 'success',
|
|
162
|
+
content: [new TextBlock(String(value))],
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
// Handle arrays by wrapping in object { $value: array }
|
|
166
|
+
if (Array.isArray(value)) {
|
|
167
|
+
const copiedValue = deepCopy(value);
|
|
168
|
+
return new ToolResultBlock({
|
|
169
|
+
toolUseId,
|
|
170
|
+
status: 'success',
|
|
171
|
+
content: [new JsonBlock({ json: { $value: copiedValue } })],
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
// Handle objects as JSON content with deep copy
|
|
175
|
+
const copiedValue = deepCopy(value);
|
|
176
|
+
return new ToolResultBlock({
|
|
177
|
+
toolUseId,
|
|
178
|
+
status: 'success',
|
|
179
|
+
content: [new JsonBlock({ json: copiedValue })],
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
// If deep copy fails (circular references, non-serializable values), return error result
|
|
184
|
+
return createErrorResult(error, toolUseId);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=function-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-tool.js","sourceRoot":"","sources":["../../../src/tools/function-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Tool, type ToolContext, type ToolStreamGenerator } from './tool.js';
|
|
2
|
+
import type { ToolSpec } from './types.js';
|
|
3
|
+
import type { JSONSchema } from '../types/json.js';
|
|
4
|
+
import type { McpClient } from '../mcp.js';
|
|
5
|
+
export interface McpToolConfig {
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
inputSchema: JSONSchema;
|
|
9
|
+
client: McpClient;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A Tool implementation that proxies calls to a remote MCP server.
|
|
13
|
+
*
|
|
14
|
+
* Unlike FunctionTool, which wraps local logic, McpTool delegates execution
|
|
15
|
+
* to the connected McpClient and translates the SDK's response format
|
|
16
|
+
* directly into ToolResultBlocks.
|
|
17
|
+
*/
|
|
18
|
+
export declare class McpTool extends Tool {
|
|
19
|
+
readonly name: string;
|
|
20
|
+
readonly description: string;
|
|
21
|
+
readonly toolSpec: ToolSpec;
|
|
22
|
+
private readonly mcpClient;
|
|
23
|
+
constructor(config: McpToolConfig);
|
|
24
|
+
stream(toolContext: ToolContext): ToolStreamGenerator;
|
|
25
|
+
/**
|
|
26
|
+
* Type Guard: Checks if value matches the expected MCP SDK result shape.
|
|
27
|
+
* \{ content: unknown[]; isError?: boolean \}
|
|
28
|
+
*/
|
|
29
|
+
private _isMcpToolResult;
|
|
30
|
+
/**
|
|
31
|
+
* Type Guard: Checks if an item is a Text content block.
|
|
32
|
+
* \{ type: 'text'; text: string \}
|
|
33
|
+
*/
|
|
34
|
+
private _isMcpTextContent;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=mcp-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/mcp-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAC/F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,kBAAkB,CAAA;AAE7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAE1C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,UAAU,CAAA;IACvB,MAAM,EAAE,SAAS,CAAA;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,OAAQ,SAAQ,IAAI;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;gBAEzB,MAAM,EAAE,aAAa;IAa1B,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB;IAiC5D;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAS1B"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { createErrorResult, Tool } from './tool.js';
|
|
2
|
+
import { JsonBlock, TextBlock, ToolResultBlock } from '../types/messages.js';
|
|
3
|
+
/**
|
|
4
|
+
* A Tool implementation that proxies calls to a remote MCP server.
|
|
5
|
+
*
|
|
6
|
+
* Unlike FunctionTool, which wraps local logic, McpTool delegates execution
|
|
7
|
+
* to the connected McpClient and translates the SDK's response format
|
|
8
|
+
* directly into ToolResultBlocks.
|
|
9
|
+
*/
|
|
10
|
+
export class McpTool extends Tool {
|
|
11
|
+
name;
|
|
12
|
+
description;
|
|
13
|
+
toolSpec;
|
|
14
|
+
mcpClient;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
super();
|
|
17
|
+
this.name = config.name;
|
|
18
|
+
this.description = config.description;
|
|
19
|
+
this.toolSpec = {
|
|
20
|
+
name: config.name,
|
|
21
|
+
description: config.description,
|
|
22
|
+
inputSchema: config.inputSchema,
|
|
23
|
+
};
|
|
24
|
+
this.mcpClient = config.client;
|
|
25
|
+
}
|
|
26
|
+
// eslint-disable-next-line require-yield
|
|
27
|
+
async *stream(toolContext) {
|
|
28
|
+
const { toolUseId, input } = toolContext.toolUse;
|
|
29
|
+
try {
|
|
30
|
+
// Input is validated by MCP Client before invocation
|
|
31
|
+
const rawResult = await this.mcpClient.callTool(this, input);
|
|
32
|
+
if (!this._isMcpToolResult(rawResult)) {
|
|
33
|
+
throw new Error('Invalid tool result from MCP Client: missing content array');
|
|
34
|
+
}
|
|
35
|
+
const content = rawResult.content.map((item) => {
|
|
36
|
+
if (this._isMcpTextContent(item)) {
|
|
37
|
+
return new TextBlock(item.text);
|
|
38
|
+
}
|
|
39
|
+
return new JsonBlock({ json: item });
|
|
40
|
+
});
|
|
41
|
+
if (content.length === 0) {
|
|
42
|
+
content.push(new TextBlock('Tool execution completed successfully with no output.'));
|
|
43
|
+
}
|
|
44
|
+
return new ToolResultBlock({
|
|
45
|
+
toolUseId,
|
|
46
|
+
status: rawResult.isError ? 'error' : 'success',
|
|
47
|
+
content,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
return createErrorResult(error, toolUseId);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Type Guard: Checks if value matches the expected MCP SDK result shape.
|
|
56
|
+
* \{ content: unknown[]; isError?: boolean \}
|
|
57
|
+
*/
|
|
58
|
+
_isMcpToolResult(value) {
|
|
59
|
+
if (typeof value !== 'object' || value === null) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
// Safe cast to generic record to check properties
|
|
63
|
+
const record = value;
|
|
64
|
+
return Array.isArray(record.content);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Type Guard: Checks if an item is a Text content block.
|
|
68
|
+
* \{ type: 'text'; text: string \}
|
|
69
|
+
*/
|
|
70
|
+
_isMcpTextContent(value) {
|
|
71
|
+
if (typeof value !== 'object' || value === null) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
const record = value;
|
|
75
|
+
return record.type === 'text' && typeof record.text === 'string';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=mcp-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool.js","sourceRoot":"","sources":["../../../src/tools/mcp-tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAA8C,MAAM,WAAW,CAAA;AAG/F,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAU5E;;;;;;GAMG;AACH,MAAM,OAAO,OAAQ,SAAQ,IAAI;IACtB,IAAI,CAAQ;IACZ,WAAW,CAAQ;IACnB,QAAQ,CAAU;IACV,SAAS,CAAW;IAErC,YAAY,MAAqB;QAC/B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;QACvB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAA;QACrC,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;IAChC,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAwB;QACpC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAA;QAEhD,IAAI,CAAC;YACH,qDAAqD;YACrD,MAAM,SAAS,GAAY,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAkB,CAAC,CAAA;YAElF,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;YAC/E,CAAC;YAED,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE;gBACtD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;oBACjC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACjC,CAAC;gBAED,OAAO,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,IAAiB,EAAE,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;YAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,uDAAuD,CAAC,CAAC,CAAA;YACtF,CAAC;YAED,OAAO,IAAI,eAAe,CAAC;gBACzB,SAAS;gBACT,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBAC/C,OAAO;aACR,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,KAAc;QACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,kDAAkD;QAClD,MAAM,MAAM,GAAG,KAAgC,CAAA;QAE/C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACtC,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,KAAc;QACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAAG,KAAgC,CAAA;QAE/C,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAA;IAClE,CAAC;CACF"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import type { ToolSpec, ToolUse } from './types.js';
|
|
2
|
+
import { ToolResultBlock } from '../types/messages.js';
|
|
3
|
+
import type { AgentData } from '../types/agent.js';
|
|
4
|
+
export type { ToolSpec } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Context provided to tool implementations during execution.
|
|
7
|
+
* Contains framework-level state and information from the agent invocation.
|
|
8
|
+
*/
|
|
9
|
+
export interface ToolContext {
|
|
10
|
+
/**
|
|
11
|
+
* The tool use request that triggered this tool execution.
|
|
12
|
+
* Contains the tool name, toolUseId, and input parameters.
|
|
13
|
+
*/
|
|
14
|
+
toolUse: ToolUse;
|
|
15
|
+
/**
|
|
16
|
+
* The agent instance that is executing this tool.
|
|
17
|
+
* Provides access to agent state and other agent-level information.
|
|
18
|
+
*/
|
|
19
|
+
agent: AgentData;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Data for a tool stream event.
|
|
23
|
+
*/
|
|
24
|
+
export interface ToolStreamEventData {
|
|
25
|
+
/**
|
|
26
|
+
* Discriminator for tool stream events.
|
|
27
|
+
*/
|
|
28
|
+
type: 'toolStreamEvent';
|
|
29
|
+
/**
|
|
30
|
+
* Caller-provided data for the progress update.
|
|
31
|
+
* Can be any type of data the tool wants to report.
|
|
32
|
+
*/
|
|
33
|
+
data?: unknown;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Event yielded during tool execution to report streaming progress.
|
|
37
|
+
* Tools can yield zero or more of these events before returning the final ToolResult.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const streamEvent = new ToolStreamEvent({
|
|
42
|
+
* data: 'Processing step 1...'
|
|
43
|
+
* })
|
|
44
|
+
*
|
|
45
|
+
* // Or with structured data
|
|
46
|
+
* const streamEvent = new ToolStreamEvent({
|
|
47
|
+
* data: { progress: 50, message: 'Halfway complete' }
|
|
48
|
+
* })
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare class ToolStreamEvent implements ToolStreamEventData {
|
|
52
|
+
/**
|
|
53
|
+
* Discriminator for tool stream events.
|
|
54
|
+
*/
|
|
55
|
+
readonly type: "toolStreamEvent";
|
|
56
|
+
/**
|
|
57
|
+
* Caller-provided data for the progress update.
|
|
58
|
+
* Can be any type of data the tool wants to report.
|
|
59
|
+
*/
|
|
60
|
+
readonly data?: unknown;
|
|
61
|
+
constructor(eventData: {
|
|
62
|
+
data?: unknown;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Type alias for the async generator returned by tool stream methods.
|
|
67
|
+
* Yields ToolStreamEvents during execution and returns a ToolResultBlock.
|
|
68
|
+
*/
|
|
69
|
+
export type ToolStreamGenerator = AsyncGenerator<ToolStreamEvent, ToolResultBlock, undefined>;
|
|
70
|
+
/**
|
|
71
|
+
* Interface for tool implementations.
|
|
72
|
+
* Tools are used by agents to interact with their environment and perform specific actions.
|
|
73
|
+
*
|
|
74
|
+
* The Tool interface provides a streaming execution model where tools can yield
|
|
75
|
+
* progress events during execution before returning a final result.
|
|
76
|
+
*
|
|
77
|
+
* Most implementations should use FunctionTool rather than implementing this interface directly.
|
|
78
|
+
*/
|
|
79
|
+
export declare abstract class Tool {
|
|
80
|
+
/**
|
|
81
|
+
* The unique name of the tool.
|
|
82
|
+
* This MUST match the name in the toolSpec.
|
|
83
|
+
*/
|
|
84
|
+
abstract name: string;
|
|
85
|
+
/**
|
|
86
|
+
* Human-readable description of what the tool does.
|
|
87
|
+
* This helps the model understand when to use the tool.
|
|
88
|
+
*
|
|
89
|
+
* This MUST match the description in the toolSpec.description.
|
|
90
|
+
*/
|
|
91
|
+
abstract description: string;
|
|
92
|
+
/**
|
|
93
|
+
* OpenAPI JSON specification for the tool.
|
|
94
|
+
* Defines the tool's name, description, and input schema.
|
|
95
|
+
*/
|
|
96
|
+
abstract toolSpec: ToolSpec;
|
|
97
|
+
/**
|
|
98
|
+
* Executes the tool with streaming support.
|
|
99
|
+
* Yields zero or more ToolStreamEvents during execution, then returns
|
|
100
|
+
* exactly one ToolResultBlock as the final value.
|
|
101
|
+
*
|
|
102
|
+
* @param toolContext - Context information including the tool use request and invocation state
|
|
103
|
+
* @returns Async generator that yields ToolStreamEvents and returns a ToolResultBlock
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* const context = {
|
|
108
|
+
* toolUse: {
|
|
109
|
+
* name: 'calculator',
|
|
110
|
+
* toolUseId: 'calc-123',
|
|
111
|
+
* input: { operation: 'add', a: 5, b: 3 }
|
|
112
|
+
* },
|
|
113
|
+
* }
|
|
114
|
+
*
|
|
115
|
+
* // The return value is only accessible via explicit .next() calls
|
|
116
|
+
* const generator = tool.stream(context)
|
|
117
|
+
* for await (const event of generator) {
|
|
118
|
+
* // Only yields are captured here
|
|
119
|
+
* console.log('Progress:', event.data)
|
|
120
|
+
* }
|
|
121
|
+
* // Or manually handle the return value:
|
|
122
|
+
* let result = await generator.next()
|
|
123
|
+
* while (!result.done) {
|
|
124
|
+
* console.log('Progress:', result.value.data)
|
|
125
|
+
* result = await generator.next()
|
|
126
|
+
* }
|
|
127
|
+
* console.log('Final result:', result.value.status)
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
abstract stream(toolContext: ToolContext): ToolStreamGenerator;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Extended tool interface that supports direct invocation with type-safe input and output.
|
|
134
|
+
* This interface is useful for testing and standalone tool execution.
|
|
135
|
+
*
|
|
136
|
+
* @typeParam TInput - Type for the tool's input parameters
|
|
137
|
+
* @typeParam TReturn - Type for the tool's return value
|
|
138
|
+
*/
|
|
139
|
+
export interface InvokableTool<TInput, TReturn> extends Tool {
|
|
140
|
+
/**
|
|
141
|
+
* Invokes the tool directly with type-safe input and returns the unwrapped result.
|
|
142
|
+
*
|
|
143
|
+
* Unlike stream(), this method:
|
|
144
|
+
* - Returns the raw result (not wrapped in ToolResult)
|
|
145
|
+
* - Consumes async generators and returns only the final value
|
|
146
|
+
* - Lets errors throw naturally (not wrapped in error ToolResult)
|
|
147
|
+
*
|
|
148
|
+
* @param input - The input parameters for the tool
|
|
149
|
+
* @param context - Optional tool execution context
|
|
150
|
+
* @returns The unwrapped result
|
|
151
|
+
*/
|
|
152
|
+
invoke(input: TInput, context?: ToolContext): Promise<TReturn>;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Creates an error ToolResultBlock from an error object.
|
|
156
|
+
* Ensures all errors are normalized to Error objects and includes the original error
|
|
157
|
+
* in the ToolResultBlock for inspection by hooks, error handlers, and event loop.
|
|
158
|
+
*
|
|
159
|
+
* TODO: Implement consistent logging format as defined in #30
|
|
160
|
+
* This error should be logged to the caller using the established logging pattern.
|
|
161
|
+
*
|
|
162
|
+
* @param error - The error that occurred (can be Error object or any thrown value)
|
|
163
|
+
* @param toolUseId - The tool use ID for the ToolResultBlock
|
|
164
|
+
* @returns A ToolResultBlock with error status, error message content, and original error object
|
|
165
|
+
*/
|
|
166
|
+
export declare function createErrorResult(error: unknown, toolUseId: string): ToolResultBlock;
|
|
167
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/tools/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAa,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGlD,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;IAEhB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAA;IAEvB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,eAAgB,YAAW,mBAAmB;IACzD;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAG,iBAAiB,CAAS;IAE1C;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;gBAEX,SAAS,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE;CAK1C;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC,eAAe,EAAE,eAAe,EAAE,SAAS,CAAC,CAAA;AAE7F;;;;;;;;GAQG;AACH,8BAAsB,IAAI;IACxB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAE3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB;CAC/D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa,CAAC,MAAM,EAAE,OAAO,CAAE,SAAQ,IAAI;IAC1D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC/D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,eAAe,CAUpF"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { TextBlock, ToolResultBlock } from '../types/messages.js';
|
|
2
|
+
import { normalizeError } from '../errors.js';
|
|
3
|
+
/**
|
|
4
|
+
* Event yielded during tool execution to report streaming progress.
|
|
5
|
+
* Tools can yield zero or more of these events before returning the final ToolResult.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const streamEvent = new ToolStreamEvent({
|
|
10
|
+
* data: 'Processing step 1...'
|
|
11
|
+
* })
|
|
12
|
+
*
|
|
13
|
+
* // Or with structured data
|
|
14
|
+
* const streamEvent = new ToolStreamEvent({
|
|
15
|
+
* data: { progress: 50, message: 'Halfway complete' }
|
|
16
|
+
* })
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export class ToolStreamEvent {
|
|
20
|
+
/**
|
|
21
|
+
* Discriminator for tool stream events.
|
|
22
|
+
*/
|
|
23
|
+
type = 'toolStreamEvent';
|
|
24
|
+
/**
|
|
25
|
+
* Caller-provided data for the progress update.
|
|
26
|
+
* Can be any type of data the tool wants to report.
|
|
27
|
+
*/
|
|
28
|
+
data;
|
|
29
|
+
constructor(eventData) {
|
|
30
|
+
if (eventData.data !== undefined) {
|
|
31
|
+
this.data = eventData.data;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Interface for tool implementations.
|
|
37
|
+
* Tools are used by agents to interact with their environment and perform specific actions.
|
|
38
|
+
*
|
|
39
|
+
* The Tool interface provides a streaming execution model where tools can yield
|
|
40
|
+
* progress events during execution before returning a final result.
|
|
41
|
+
*
|
|
42
|
+
* Most implementations should use FunctionTool rather than implementing this interface directly.
|
|
43
|
+
*/
|
|
44
|
+
export class Tool {
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Creates an error ToolResultBlock from an error object.
|
|
48
|
+
* Ensures all errors are normalized to Error objects and includes the original error
|
|
49
|
+
* in the ToolResultBlock for inspection by hooks, error handlers, and event loop.
|
|
50
|
+
*
|
|
51
|
+
* TODO: Implement consistent logging format as defined in #30
|
|
52
|
+
* This error should be logged to the caller using the established logging pattern.
|
|
53
|
+
*
|
|
54
|
+
* @param error - The error that occurred (can be Error object or any thrown value)
|
|
55
|
+
* @param toolUseId - The tool use ID for the ToolResultBlock
|
|
56
|
+
* @returns A ToolResultBlock with error status, error message content, and original error object
|
|
57
|
+
*/
|
|
58
|
+
export function createErrorResult(error, toolUseId) {
|
|
59
|
+
// Ensure error is an Error object (wrap non-Error values)
|
|
60
|
+
const errorObject = normalizeError(error);
|
|
61
|
+
return new ToolResultBlock({
|
|
62
|
+
toolUseId,
|
|
63
|
+
status: 'error',
|
|
64
|
+
content: [new TextBlock(`Error: ${errorObject.message}`)],
|
|
65
|
+
error: errorObject,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/tools/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAsC7C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACM,IAAI,GAAG,iBAA0B,CAAA;IAE1C;;;OAGG;IACM,IAAI,CAAU;IAEvB,YAAY,SAA6B;QACvC,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;QAC5B,CAAC;IACH,CAAC;CACF;AAQD;;;;;;;;GAQG;AACH,MAAM,OAAgB,IAAI;CAqDzB;AAyBD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,SAAiB;IACjE,0DAA0D;IAC1D,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,CAAA;IAEzC,OAAO,IAAI,eAAe,CAAC;QACzB,SAAS;QACT,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,CAAC,IAAI,SAAS,CAAC,UAAU,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,KAAK,EAAE,WAAW;KACnB,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { JSONSchema, JSONValue } from '../types/json.js';
|
|
2
|
+
/**
|
|
3
|
+
* Status of a tool execution.
|
|
4
|
+
* Indicates whether the tool executed successfully or encountered an error.
|
|
5
|
+
*/
|
|
6
|
+
export type ToolResultStatus = 'success' | 'error';
|
|
7
|
+
/**
|
|
8
|
+
* Specification for a tool that can be used by the model.
|
|
9
|
+
* Defines the tool's name, description, and input schema.
|
|
10
|
+
*/
|
|
11
|
+
export interface ToolSpec {
|
|
12
|
+
/**
|
|
13
|
+
* The unique name of the tool.
|
|
14
|
+
*/
|
|
15
|
+
name: string;
|
|
16
|
+
/**
|
|
17
|
+
* A description of what the tool does.
|
|
18
|
+
* This helps the model understand when to use the tool.
|
|
19
|
+
*/
|
|
20
|
+
description: string;
|
|
21
|
+
/**
|
|
22
|
+
* JSON Schema defining the expected input structure for the tool.
|
|
23
|
+
*/
|
|
24
|
+
inputSchema: JSONSchema;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Represents a tool usage request from the model.
|
|
28
|
+
* The model generates this when it wants to use a tool.
|
|
29
|
+
*/
|
|
30
|
+
export interface ToolUse {
|
|
31
|
+
/**
|
|
32
|
+
* The name of the tool to execute.
|
|
33
|
+
*/
|
|
34
|
+
name: string;
|
|
35
|
+
/**
|
|
36
|
+
* Unique identifier for this tool use instance.
|
|
37
|
+
* Used to match tool results back to their requests.
|
|
38
|
+
*/
|
|
39
|
+
toolUseId: string;
|
|
40
|
+
/**
|
|
41
|
+
* The input parameters for the tool.
|
|
42
|
+
* Must be JSON-serializable.
|
|
43
|
+
*/
|
|
44
|
+
input: JSONValue;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Specifies how the model should choose which tool to use.
|
|
48
|
+
*
|
|
49
|
+
* - `{ auto: {} }` - Let the model decide whether to use a tool
|
|
50
|
+
* - `{ any: {} }` - Force the model to use one of the available tools
|
|
51
|
+
* - `{ tool: { name: 'name' } }` - Force the model to use a specific tool
|
|
52
|
+
*/
|
|
53
|
+
export type ToolChoice = {
|
|
54
|
+
auto: Record<string, never>;
|
|
55
|
+
} | {
|
|
56
|
+
any: Record<string, never>;
|
|
57
|
+
} | {
|
|
58
|
+
tool: {
|
|
59
|
+
name: string;
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE7D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAAA;AAElD;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,UAAU,CAAA;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/types.ts"],"names":[],"mappings":""}
|