@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,353 @@
|
|
|
1
|
+
import { tool } from '../../src/tools/zod-tool.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { promises as fs } from 'fs';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
const SNIPPET_LINES = 4;
|
|
6
|
+
const DEFAULT_MAX_FILE_SIZE = 1048576; // 1MB
|
|
7
|
+
const MAX_DIRECTORY_DEPTH = 2;
|
|
8
|
+
/**
|
|
9
|
+
* Zod schema for file editor input validation.
|
|
10
|
+
*/
|
|
11
|
+
const fileEditorInputSchema = z.object({
|
|
12
|
+
command: z
|
|
13
|
+
.enum(['view', 'create', 'str_replace', 'insert'])
|
|
14
|
+
.describe('The operation to perform: `view`, `create`, `str_replace`, `insert`.'),
|
|
15
|
+
path: z.string().describe('Absolute path to the file or directory.'),
|
|
16
|
+
file_text: z.string().optional().describe('Content for new file (required for create command).'),
|
|
17
|
+
view_range: z
|
|
18
|
+
.tuple([z.number(), z.number()])
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Line range to view [start, end]. 1-indexed. End can be -1 for end of file.'),
|
|
21
|
+
old_str: z.string().optional().describe('Exact string to find and replace (required for str_replace command).'),
|
|
22
|
+
new_str: z.string().optional().describe('Replacement string (for str_replace and insert commands).'),
|
|
23
|
+
insert_line: z
|
|
24
|
+
.number()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Line number where text should be inserted (0-indexed, required for insert command).'),
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Text file reader implementation.
|
|
30
|
+
* Reads files as UTF-8 encoded text.
|
|
31
|
+
*/
|
|
32
|
+
class TextFileReader {
|
|
33
|
+
async read(filePath) {
|
|
34
|
+
return await fs.readFile(filePath, 'utf-8');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* File editor tool for viewing, creating, and editing files programmatically.
|
|
39
|
+
*
|
|
40
|
+
* Provides commands for viewing files/directories, creating files, string replacement,
|
|
41
|
+
* and line insertion.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* import { fileEditor } from '@strands-agents/sdk/vended_tools/file_editor'
|
|
46
|
+
* import { Agent } from '@strands-agents/sdk'
|
|
47
|
+
*
|
|
48
|
+
* const agent = new Agent({
|
|
49
|
+
* model: new BedrockModel({ region: 'us-east-1' }),
|
|
50
|
+
* tools: [fileEditor],
|
|
51
|
+
* })
|
|
52
|
+
*
|
|
53
|
+
* await agent.invoke('View the file /tmp/test.txt')
|
|
54
|
+
* await agent.invoke('Create a file /tmp/notes.txt with content "Hello World"')
|
|
55
|
+
* await agent.invoke('Replace "Hello" with "Hi" in /tmp/notes.txt')
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export const fileEditor = tool({
|
|
59
|
+
name: 'fileEditor',
|
|
60
|
+
description: 'Filesystem editor tool for viewing, creating, and editing files. Supports view (with line ranges), create, str_replace, and insert operations. Files must use absolute paths.',
|
|
61
|
+
inputSchema: fileEditorInputSchema,
|
|
62
|
+
callback: async (input, context) => {
|
|
63
|
+
if (!context) {
|
|
64
|
+
throw new Error('Tool context is required for file editor operations');
|
|
65
|
+
}
|
|
66
|
+
const fileReader = new TextFileReader();
|
|
67
|
+
let result;
|
|
68
|
+
switch (input.command) {
|
|
69
|
+
case 'view':
|
|
70
|
+
result = await handleView(input.path, input.view_range, fileReader);
|
|
71
|
+
break;
|
|
72
|
+
case 'create':
|
|
73
|
+
result = await handleCreate(input.path, input.file_text);
|
|
74
|
+
break;
|
|
75
|
+
case 'str_replace':
|
|
76
|
+
result = await handleStrReplace(input.path, input.old_str, input.new_str, fileReader);
|
|
77
|
+
break;
|
|
78
|
+
case 'insert':
|
|
79
|
+
result = await handleInsert(input.path, input.insert_line, input.new_str, fileReader);
|
|
80
|
+
break;
|
|
81
|
+
default:
|
|
82
|
+
throw new Error(`Unknown command: ${input.command}`);
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
/**
|
|
88
|
+
* Validates that a path is absolute and doesn't contain directory traversal.
|
|
89
|
+
*/
|
|
90
|
+
function validatePath(command, filePath) {
|
|
91
|
+
// Check if it's an absolute path
|
|
92
|
+
if (!path.isAbsolute(filePath)) {
|
|
93
|
+
const suggestedPath = path.resolve(filePath);
|
|
94
|
+
throw new Error(`The path ${filePath} is not an absolute path, it should start with \`/\`. Maybe you meant ${suggestedPath}?`);
|
|
95
|
+
}
|
|
96
|
+
// Check for directory traversal - reject paths containing '..' segments
|
|
97
|
+
const normalized = path.normalize(filePath);
|
|
98
|
+
if (normalized.includes('..')) {
|
|
99
|
+
throw new Error(`Invalid path: path traversal is not allowed`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Checks if a file exists.
|
|
104
|
+
*/
|
|
105
|
+
async function fileExists(filePath) {
|
|
106
|
+
try {
|
|
107
|
+
await fs.access(filePath);
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Checks if a path is a directory.
|
|
116
|
+
*/
|
|
117
|
+
async function isDirectory(filePath) {
|
|
118
|
+
try {
|
|
119
|
+
const stats = await fs.stat(filePath);
|
|
120
|
+
return stats.isDirectory();
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Checks file size against limit.
|
|
128
|
+
*/
|
|
129
|
+
async function checkFileSize(filePath, maxSize = DEFAULT_MAX_FILE_SIZE) {
|
|
130
|
+
const stats = await fs.stat(filePath).catch((err) => {
|
|
131
|
+
throw new Error(`Failed to check file size: ${err}`);
|
|
132
|
+
});
|
|
133
|
+
if (stats.size > maxSize) {
|
|
134
|
+
throw new Error(`File size (${stats.size} bytes) exceeds maximum allowed size (${maxSize} bytes)`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Formats file content with line numbers (cat -n style).
|
|
139
|
+
*/
|
|
140
|
+
function makeOutput(fileContent, fileDescriptor, initLine = 1) {
|
|
141
|
+
// Expand tabs to spaces in content
|
|
142
|
+
const expandedContent = fileContent.replace(/\t/g, ' ');
|
|
143
|
+
const numberedLines = expandedContent.split('\n').map((line, index) => {
|
|
144
|
+
const lineNum = index + initLine;
|
|
145
|
+
// Use two spaces instead of tab to avoid any tabs in output
|
|
146
|
+
return `${lineNum.toString().padStart(6)} ${line}`;
|
|
147
|
+
});
|
|
148
|
+
return `Here's the result of running \`cat -n\` on ${fileDescriptor}:\n${numberedLines.join('\n')}\n`;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Lists directory contents up to 2 levels deep, excluding hidden files.
|
|
152
|
+
*/
|
|
153
|
+
async function listDirectory(dirPath) {
|
|
154
|
+
const items = [];
|
|
155
|
+
async function walk(currentPath, depth) {
|
|
156
|
+
try {
|
|
157
|
+
const entries = await fs.readdir(currentPath, { withFileTypes: true });
|
|
158
|
+
for (const entry of entries) {
|
|
159
|
+
// Skip hidden files/directories
|
|
160
|
+
if (entry.name.startsWith('.'))
|
|
161
|
+
continue;
|
|
162
|
+
const fullPath = path.join(currentPath, entry.name);
|
|
163
|
+
const relativePath = path.relative(dirPath, fullPath);
|
|
164
|
+
items.push(relativePath || entry.name);
|
|
165
|
+
// Continue walking if we haven't reached max depth yet
|
|
166
|
+
if (entry.isDirectory() && depth < MAX_DIRECTORY_DEPTH) {
|
|
167
|
+
await walk(fullPath, depth + 1);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
// Ignore permission errors and continue
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
await walk(dirPath, 0);
|
|
176
|
+
const result = items.sort().join('\n');
|
|
177
|
+
return `Here's the files and directories up to 2 levels deep in ${dirPath}, excluding hidden items:\n${result}\n`;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Handles the view command.
|
|
181
|
+
*/
|
|
182
|
+
async function handleView(filePath, viewRange, fileReader) {
|
|
183
|
+
validatePath('view', filePath);
|
|
184
|
+
const exists = await fileExists(filePath);
|
|
185
|
+
if (!exists) {
|
|
186
|
+
throw new Error(`The path ${filePath} does not exist. Please provide a valid path.`);
|
|
187
|
+
}
|
|
188
|
+
const isDir = await isDirectory(filePath);
|
|
189
|
+
if (isDir) {
|
|
190
|
+
if (viewRange) {
|
|
191
|
+
throw new Error('The `view_range` parameter is not allowed when `path` points to a directory.');
|
|
192
|
+
}
|
|
193
|
+
return await listDirectory(filePath);
|
|
194
|
+
}
|
|
195
|
+
// Check file size before reading
|
|
196
|
+
await checkFileSize(filePath);
|
|
197
|
+
// Read file content - only if not a directory
|
|
198
|
+
const fileContent = await fileReader.read(filePath);
|
|
199
|
+
let initLine = 1;
|
|
200
|
+
let contentToShow = fileContent;
|
|
201
|
+
if (viewRange) {
|
|
202
|
+
const lines = fileContent.split('\n');
|
|
203
|
+
const nLines = lines.length;
|
|
204
|
+
let [start, end] = viewRange;
|
|
205
|
+
// Validate range
|
|
206
|
+
if (start < 1 || start > nLines) {
|
|
207
|
+
throw new Error(`Invalid \`view_range\`: [${start}, ${end}]. Its first element \`${start}\` should be within the range of lines of the file: [1, ${nLines}]`);
|
|
208
|
+
}
|
|
209
|
+
if (end !== -1 && end > nLines) {
|
|
210
|
+
throw new Error(`Invalid \`view_range\`: [${start}, ${end}]. Its second element \`${end}\` should be smaller than the number of lines in the file: \`${nLines}\``);
|
|
211
|
+
}
|
|
212
|
+
if (end !== -1 && end < start) {
|
|
213
|
+
throw new Error(`Invalid \`view_range\`: [${start}, ${end}]. Its second element \`${end}\` should be larger or equal than its first \`${start}\``);
|
|
214
|
+
}
|
|
215
|
+
initLine = start;
|
|
216
|
+
if (end === -1) {
|
|
217
|
+
contentToShow = lines.slice(start - 1).join('\n');
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
contentToShow = lines.slice(start - 1, end).join('\n');
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return makeOutput(contentToShow, filePath, initLine);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Handles the create command.
|
|
227
|
+
*/
|
|
228
|
+
async function handleCreate(filePath, fileText) {
|
|
229
|
+
if (fileText === undefined) {
|
|
230
|
+
throw new Error('Parameter `file_text` is required for command: create');
|
|
231
|
+
}
|
|
232
|
+
validatePath('create', filePath);
|
|
233
|
+
const exists = await fileExists(filePath);
|
|
234
|
+
if (exists) {
|
|
235
|
+
throw new Error(`File already exists at: ${filePath}. Cannot overwrite files using command \`create\`.`);
|
|
236
|
+
}
|
|
237
|
+
// Create parent directories if needed
|
|
238
|
+
const dir = path.dirname(filePath);
|
|
239
|
+
await fs.mkdir(dir, { recursive: true });
|
|
240
|
+
// Write file
|
|
241
|
+
await fs.writeFile(filePath, fileText, 'utf-8');
|
|
242
|
+
return `File created successfully at: ${filePath}`;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Handles the str_replace command.
|
|
246
|
+
*/
|
|
247
|
+
async function handleStrReplace(filePath, oldStr, newStr, fileReader) {
|
|
248
|
+
if (oldStr === undefined) {
|
|
249
|
+
throw new Error('Parameter `old_str` is required for command: str_replace');
|
|
250
|
+
}
|
|
251
|
+
validatePath('str_replace', filePath);
|
|
252
|
+
const exists = await fileExists(filePath);
|
|
253
|
+
if (!exists) {
|
|
254
|
+
throw new Error(`The path ${filePath} does not exist. Please provide a valid path.`);
|
|
255
|
+
}
|
|
256
|
+
const isDir = await isDirectory(filePath);
|
|
257
|
+
if (isDir) {
|
|
258
|
+
throw new Error(`The path ${filePath} is a directory and only the \`view\` command can be used on directories`);
|
|
259
|
+
}
|
|
260
|
+
await checkFileSize(filePath);
|
|
261
|
+
// Read file content
|
|
262
|
+
let fileContent = await fileReader.read(filePath);
|
|
263
|
+
// Expand tabs in content and search string
|
|
264
|
+
fileContent = fileContent.replace(/\t/g, ' ');
|
|
265
|
+
const expandedOldStr = oldStr.replace(/\t/g, ' ');
|
|
266
|
+
const expandedNewStr = newStr ? newStr.replace(/\t/g, ' ') : '';
|
|
267
|
+
// Check if old_str is unique
|
|
268
|
+
const occurrences = (fileContent.match(new RegExp(escapeRegExp(expandedOldStr), 'g')) || []).length;
|
|
269
|
+
if (occurrences === 0) {
|
|
270
|
+
throw new Error(`No replacement was performed, old_str \`${oldStr}\` did not appear verbatim in ${filePath}.`);
|
|
271
|
+
}
|
|
272
|
+
if (occurrences > 1) {
|
|
273
|
+
const lines = fileContent.split('\n');
|
|
274
|
+
const lineNumbers = lines
|
|
275
|
+
.map((line, index) => (line.includes(expandedOldStr) ? index + 1 : -1))
|
|
276
|
+
.filter((num) => num !== -1);
|
|
277
|
+
throw new Error(`No replacement was performed. Multiple occurrences of old_str \`${oldStr}\` in lines ${JSON.stringify(lineNumbers)}. Please ensure it is unique`);
|
|
278
|
+
}
|
|
279
|
+
// Perform replacement
|
|
280
|
+
const newFileContent = fileContent.replace(expandedOldStr, expandedNewStr);
|
|
281
|
+
// Write back to file
|
|
282
|
+
await fs.writeFile(filePath, newFileContent, 'utf-8');
|
|
283
|
+
// Create snippet
|
|
284
|
+
const replacementLine = fileContent.substring(0, fileContent.indexOf(expandedOldStr)).split('\n').length - 1;
|
|
285
|
+
const insertedLines = expandedNewStr.split('\n').length;
|
|
286
|
+
const originalLines = expandedOldStr.split('\n').length;
|
|
287
|
+
const lineDifference = insertedLines - originalLines;
|
|
288
|
+
const lines = newFileContent.split('\n');
|
|
289
|
+
const startLine = Math.max(0, replacementLine - SNIPPET_LINES);
|
|
290
|
+
const endLine = Math.min(lines.length, replacementLine + SNIPPET_LINES + lineDifference + 1);
|
|
291
|
+
const snippetLines = lines.slice(startLine, endLine);
|
|
292
|
+
const snippet = snippetLines.join('\n');
|
|
293
|
+
const successMsg = `The file ${filePath} has been edited. ${makeOutput(snippet, `a snippet of ${filePath}`, startLine + 1)}Review the changes and make sure they are as expected. Edit the file again if necessary.`;
|
|
294
|
+
return successMsg;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Handles the insert command.
|
|
298
|
+
*/
|
|
299
|
+
async function handleInsert(filePath, insertLine, newStr, fileReader) {
|
|
300
|
+
if (insertLine === undefined || newStr === undefined) {
|
|
301
|
+
throw new Error('Parameters `insert_line` and `new_str` are required for command: insert');
|
|
302
|
+
}
|
|
303
|
+
validatePath('insert', filePath);
|
|
304
|
+
const exists = await fileExists(filePath);
|
|
305
|
+
if (!exists) {
|
|
306
|
+
throw new Error(`The path ${filePath} does not exist. Please provide a valid path.`);
|
|
307
|
+
}
|
|
308
|
+
const isDir = await isDirectory(filePath);
|
|
309
|
+
if (isDir) {
|
|
310
|
+
throw new Error(`The path ${filePath} is a directory and only the \`view\` command can be used on directories`);
|
|
311
|
+
}
|
|
312
|
+
await checkFileSize(filePath);
|
|
313
|
+
// Read file content
|
|
314
|
+
let fileText = await fileReader.read(filePath);
|
|
315
|
+
// Expand tabs
|
|
316
|
+
fileText = fileText.replace(/\t/g, ' ');
|
|
317
|
+
const expandedNewStr = newStr.replace(/\t/g, ' ');
|
|
318
|
+
const fileTextLines = fileText.split('\n');
|
|
319
|
+
const nLines = fileTextLines.length;
|
|
320
|
+
// Validate insert_line
|
|
321
|
+
if (insertLine < 0 || insertLine > nLines) {
|
|
322
|
+
throw new Error(`Invalid \`insert_line\` parameter: ${insertLine}. It should be within the range of lines of the file: [0, ${nLines}]`);
|
|
323
|
+
}
|
|
324
|
+
// Perform insertion
|
|
325
|
+
const newStrLines = expandedNewStr.split('\n');
|
|
326
|
+
// Handle empty file case
|
|
327
|
+
let newFileTextLines;
|
|
328
|
+
if (fileText === '') {
|
|
329
|
+
newFileTextLines = newStrLines;
|
|
330
|
+
}
|
|
331
|
+
else {
|
|
332
|
+
newFileTextLines = [...fileTextLines.slice(0, insertLine), ...newStrLines, ...fileTextLines.slice(insertLine)];
|
|
333
|
+
}
|
|
334
|
+
const newFileText = newFileTextLines.join('\n');
|
|
335
|
+
// Write back to file
|
|
336
|
+
await fs.writeFile(filePath, newFileText, 'utf-8');
|
|
337
|
+
// Create snippet - show lines around the insertion point
|
|
338
|
+
// Show 4 lines before the insertion line and 4 lines after
|
|
339
|
+
const snippetStartLine = Math.max(0, insertLine - SNIPPET_LINES);
|
|
340
|
+
const snippetEndLine = Math.min(newFileTextLines.length, insertLine + newStrLines.length + SNIPPET_LINES);
|
|
341
|
+
const snippetLines = newFileTextLines.slice(snippetStartLine, snippetEndLine);
|
|
342
|
+
const snippet = snippetLines.join('\n');
|
|
343
|
+
const startLine = snippetStartLine + 1;
|
|
344
|
+
const successMsg = `The file ${filePath} has been edited. ${makeOutput(snippet, 'a snippet of the edited file', startLine)}Review the changes and make sure they are as expected (correct indentation, no duplicate lines, etc). Edit the file again if necessary.`;
|
|
345
|
+
return successMsg;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Escapes special regex characters in a string.
|
|
349
|
+
*/
|
|
350
|
+
function escapeRegExp(string) {
|
|
351
|
+
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=file-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-editor.js","sourceRoot":"","sources":["../../../vended_tools/file_editor/file-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../vended_tools/file_editor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../vended_tools/file_editor/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for the file editor tool.
|
|
3
|
+
*/
|
|
4
|
+
export interface FileEditorOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Maximum file size in bytes that can be read (default: 1048576 / 1MB).
|
|
7
|
+
*/
|
|
8
|
+
maxFileSize?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Input parameters for view operation.
|
|
12
|
+
*/
|
|
13
|
+
export interface ViewInput {
|
|
14
|
+
command: 'view';
|
|
15
|
+
path: string;
|
|
16
|
+
view_range?: [number, number];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Input parameters for create operation.
|
|
20
|
+
*/
|
|
21
|
+
export interface CreateInput {
|
|
22
|
+
command: 'create';
|
|
23
|
+
path: string;
|
|
24
|
+
file_text: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Input parameters for str_replace operation.
|
|
28
|
+
*/
|
|
29
|
+
export interface StrReplaceInput {
|
|
30
|
+
command: 'str_replace';
|
|
31
|
+
path: string;
|
|
32
|
+
old_str: string;
|
|
33
|
+
new_str?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Input parameters for insert operation.
|
|
37
|
+
*/
|
|
38
|
+
export interface InsertInput {
|
|
39
|
+
command: 'insert';
|
|
40
|
+
path: string;
|
|
41
|
+
insert_line: number;
|
|
42
|
+
new_str: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Union type of all valid file editor inputs.
|
|
46
|
+
*/
|
|
47
|
+
export type FileEditorInput = ViewInput | CreateInput | StrReplaceInput | InsertInput;
|
|
48
|
+
/**
|
|
49
|
+
* Interface for pluggable file readers.
|
|
50
|
+
* Allows extending the file editor to support different file types.
|
|
51
|
+
*/
|
|
52
|
+
export interface IFileReader {
|
|
53
|
+
/**
|
|
54
|
+
* Reads the file content and returns it as a string.
|
|
55
|
+
*
|
|
56
|
+
* @param path - Absolute path to the file
|
|
57
|
+
* @returns File content as a string
|
|
58
|
+
*/
|
|
59
|
+
read(path: string): Promise<string>;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../vended_tools/file_editor/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,QAAQ,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,aAAa,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,QAAQ,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,WAAW,CAAA;AAErF;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../vended_tools/file_editor/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-request.test.d.ts","sourceRoot":"","sources":["../../../../vended_tools/http_request/__tests__/http-request.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { httpRequest } from '../http-request.js';
|
|
3
|
+
describe('httpRequest tool', () => {
|
|
4
|
+
const originalFetch = globalThis.fetch;
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
vi.clearAllMocks();
|
|
7
|
+
});
|
|
8
|
+
afterEach(() => {
|
|
9
|
+
globalThis.fetch = originalFetch;
|
|
10
|
+
});
|
|
11
|
+
describe.each([
|
|
12
|
+
{ method: 'GET', status: 200, statusText: 'OK' },
|
|
13
|
+
{ method: 'POST', status: 201, statusText: 'Created' },
|
|
14
|
+
{ method: 'PUT', status: 200, statusText: 'OK' },
|
|
15
|
+
{ method: 'DELETE', status: 204, statusText: 'No Content' },
|
|
16
|
+
{ method: 'PATCH', status: 200, statusText: 'OK' },
|
|
17
|
+
{ method: 'HEAD', status: 200, statusText: 'OK' },
|
|
18
|
+
{ method: 'OPTIONS', status: 200, statusText: 'OK' },
|
|
19
|
+
])('$method request', ({ method, status, statusText }) => {
|
|
20
|
+
it('returns successful response', async () => {
|
|
21
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
22
|
+
ok: true,
|
|
23
|
+
status,
|
|
24
|
+
statusText,
|
|
25
|
+
headers: new Map([['content-type', 'application/json']]),
|
|
26
|
+
text: async () => '{"success":true}',
|
|
27
|
+
});
|
|
28
|
+
const result = await httpRequest.invoke({
|
|
29
|
+
method,
|
|
30
|
+
url: 'https://api.example.com/resource',
|
|
31
|
+
});
|
|
32
|
+
expect(result.status).toBe(status);
|
|
33
|
+
expect(result.statusText).toBe(statusText);
|
|
34
|
+
expect(result.headers['content-type']).toBe('application/json');
|
|
35
|
+
expect(result.body).toBe('{"success":true}');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('request configuration', () => {
|
|
39
|
+
it('sends request with custom headers and body', async () => {
|
|
40
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
41
|
+
ok: true,
|
|
42
|
+
status: 200,
|
|
43
|
+
statusText: 'OK',
|
|
44
|
+
headers: new Map([]),
|
|
45
|
+
text: async () => '{"id":123}',
|
|
46
|
+
});
|
|
47
|
+
await httpRequest.invoke({
|
|
48
|
+
method: 'POST',
|
|
49
|
+
url: 'https://api.example.com/users',
|
|
50
|
+
body: '{"name":"test"}',
|
|
51
|
+
headers: { 'Content-Type': 'application/json' },
|
|
52
|
+
});
|
|
53
|
+
expect(globalThis.fetch).toHaveBeenCalledWith('https://api.example.com/users', expect.objectContaining({
|
|
54
|
+
method: 'POST',
|
|
55
|
+
body: '{"name":"test"}',
|
|
56
|
+
headers: { 'Content-Type': 'application/json' },
|
|
57
|
+
}));
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('response handling', () => {
|
|
61
|
+
it('handles empty response body', async () => {
|
|
62
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
63
|
+
ok: true,
|
|
64
|
+
status: 204,
|
|
65
|
+
statusText: 'No Content',
|
|
66
|
+
headers: new Map([]),
|
|
67
|
+
text: async () => '',
|
|
68
|
+
});
|
|
69
|
+
const result = await httpRequest.invoke({
|
|
70
|
+
method: 'DELETE',
|
|
71
|
+
url: 'https://api.example.com/resource',
|
|
72
|
+
});
|
|
73
|
+
expect(result.body).toBe('');
|
|
74
|
+
});
|
|
75
|
+
it('handles string response body', async () => {
|
|
76
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
77
|
+
ok: true,
|
|
78
|
+
status: 200,
|
|
79
|
+
statusText: 'OK',
|
|
80
|
+
headers: new Map([]),
|
|
81
|
+
text: async () => 'Plain text response',
|
|
82
|
+
});
|
|
83
|
+
const result = await httpRequest.invoke({
|
|
84
|
+
method: 'GET',
|
|
85
|
+
url: 'https://api.example.com/text',
|
|
86
|
+
});
|
|
87
|
+
expect(result.body).toBe('Plain text response');
|
|
88
|
+
});
|
|
89
|
+
it('converts response headers to plain object', async () => {
|
|
90
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
91
|
+
ok: true,
|
|
92
|
+
status: 200,
|
|
93
|
+
statusText: 'OK',
|
|
94
|
+
headers: new Map([
|
|
95
|
+
['content-type', 'application/json'],
|
|
96
|
+
['x-custom-header', 'value'],
|
|
97
|
+
]),
|
|
98
|
+
text: async () => '{}',
|
|
99
|
+
});
|
|
100
|
+
const result = await httpRequest.invoke({
|
|
101
|
+
method: 'GET',
|
|
102
|
+
url: 'https://api.example.com',
|
|
103
|
+
});
|
|
104
|
+
expect(result.headers).toEqual({
|
|
105
|
+
'content-type': 'application/json',
|
|
106
|
+
'x-custom-header': 'value',
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
describe('HTTP status codes', () => {
|
|
111
|
+
it('succeeds for 2xx status codes', async () => {
|
|
112
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
113
|
+
ok: true,
|
|
114
|
+
status: 201,
|
|
115
|
+
statusText: 'Created',
|
|
116
|
+
headers: new Map([]),
|
|
117
|
+
text: async () => 'created',
|
|
118
|
+
});
|
|
119
|
+
const result = await httpRequest.invoke({
|
|
120
|
+
method: 'POST',
|
|
121
|
+
url: 'https://api.example.com',
|
|
122
|
+
});
|
|
123
|
+
expect(result.status).toBe(201);
|
|
124
|
+
});
|
|
125
|
+
it('throws error for 3xx redirect status codes', async () => {
|
|
126
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
127
|
+
ok: false,
|
|
128
|
+
status: 301,
|
|
129
|
+
statusText: 'Moved Permanently',
|
|
130
|
+
headers: new Map([]),
|
|
131
|
+
text: async () => '',
|
|
132
|
+
});
|
|
133
|
+
await expect(httpRequest.invoke({
|
|
134
|
+
method: 'GET',
|
|
135
|
+
url: 'https://api.example.com/moved',
|
|
136
|
+
})).rejects.toThrow('HTTP 301');
|
|
137
|
+
});
|
|
138
|
+
it('throws error for 4xx client error codes', async () => {
|
|
139
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
140
|
+
ok: false,
|
|
141
|
+
status: 404,
|
|
142
|
+
statusText: 'Not Found',
|
|
143
|
+
headers: new Map([]),
|
|
144
|
+
text: async () => 'Not found',
|
|
145
|
+
});
|
|
146
|
+
await expect(httpRequest.invoke({
|
|
147
|
+
method: 'GET',
|
|
148
|
+
url: 'https://api.example.com/notfound',
|
|
149
|
+
})).rejects.toThrow('HTTP 404 Not Found');
|
|
150
|
+
});
|
|
151
|
+
it('throws error for 5xx server error codes', async () => {
|
|
152
|
+
globalThis.fetch = vi.fn().mockResolvedValue({
|
|
153
|
+
ok: false,
|
|
154
|
+
status: 500,
|
|
155
|
+
statusText: 'Internal Server Error',
|
|
156
|
+
headers: new Map([]),
|
|
157
|
+
text: async () => 'Server error',
|
|
158
|
+
});
|
|
159
|
+
await expect(httpRequest.invoke({
|
|
160
|
+
method: 'GET',
|
|
161
|
+
url: 'https://api.example.com/error',
|
|
162
|
+
})).rejects.toThrow('HTTP 500');
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
describe('error handling', () => {
|
|
166
|
+
it('throws timeout error when request exceeds timeout', async () => {
|
|
167
|
+
globalThis.fetch = vi.fn().mockImplementation(async (_url, _options) => new Promise((_resolve, reject) => {
|
|
168
|
+
globalThis.setTimeout(() => {
|
|
169
|
+
const error = new Error('The operation was aborted');
|
|
170
|
+
error.name = 'AbortError';
|
|
171
|
+
reject(error);
|
|
172
|
+
}, 100);
|
|
173
|
+
}));
|
|
174
|
+
await expect(httpRequest.invoke({
|
|
175
|
+
method: 'GET',
|
|
176
|
+
url: 'https://slow-api.example.com',
|
|
177
|
+
timeout: 0.1,
|
|
178
|
+
})).rejects.toThrow('Request timed out');
|
|
179
|
+
});
|
|
180
|
+
it('throws error for network failures', async () => {
|
|
181
|
+
globalThis.fetch = vi.fn().mockRejectedValue(new Error('Network error: Failed to fetch'));
|
|
182
|
+
await expect(httpRequest.invoke({
|
|
183
|
+
method: 'GET',
|
|
184
|
+
url: 'https://invalid-domain.com',
|
|
185
|
+
})).rejects.toThrow('Network error: Failed to fetch');
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
//# sourceMappingURL=http-request.test.js.map
|