@dexto/core 1.2.6 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -13
- package/dist/agent/DextoAgent.cjs +627 -228
- package/dist/agent/DextoAgent.d.ts +157 -34
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +625 -227
- package/dist/agent/agentCard.js +1 -1
- package/dist/agent/error-codes.cjs +1 -0
- package/dist/agent/error-codes.d.ts +2 -1
- package/dist/agent/error-codes.d.ts.map +1 -1
- package/dist/agent/error-codes.js +2 -1
- package/dist/agent/errors.cjs +13 -0
- package/dist/agent/errors.d.ts +4 -0
- package/dist/agent/errors.d.ts.map +1 -1
- package/dist/agent/errors.js +14 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/schemas.cjs +4 -1
- package/dist/agent/schemas.d.ts +92 -55
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +7 -3
- package/dist/agent/state-manager.cjs +5 -5
- package/dist/agent/state-manager.d.ts +4 -4
- package/dist/agent/state-manager.js +6 -6
- package/dist/agent/types.d.ts +24 -11
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/approval/error-codes.js +1 -1
- package/dist/approval/errors.js +1 -1
- package/dist/approval/factory.js +1 -1
- package/dist/approval/index.js +1 -1
- package/dist/approval/manager.cjs +69 -3
- package/dist/approval/manager.d.ts +41 -3
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +70 -4
- package/dist/approval/schemas.cjs +20 -5
- package/dist/approval/schemas.d.ts +127 -52
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +21 -6
- package/dist/approval/types.d.ts +6 -0
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +1 -1
- package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
- package/dist/{llm/tokenizer/factory.cjs → context/compression/overflow.cjs} +20 -21
- package/dist/context/compression/overflow.d.ts +33 -0
- package/dist/context/compression/overflow.d.ts.map +1 -0
- package/dist/context/compression/overflow.js +19 -0
- package/dist/context/compression/reactive-overflow.cjs +201 -0
- package/dist/context/compression/reactive-overflow.d.ts +81 -0
- package/dist/context/compression/reactive-overflow.d.ts.map +1 -0
- package/dist/context/compression/reactive-overflow.js +178 -0
- package/dist/context/compression/types.d.ts +9 -7
- package/dist/context/compression/types.d.ts.map +1 -1
- package/dist/context/error-codes.cjs +3 -0
- package/dist/context/error-codes.d.ts +4 -1
- package/dist/context/error-codes.d.ts.map +1 -1
- package/dist/context/error-codes.js +4 -1
- package/dist/context/errors.cjs +28 -0
- package/dist/context/errors.d.ts +7 -0
- package/dist/context/errors.d.ts.map +1 -1
- package/dist/context/errors.js +29 -1
- package/dist/context/index.js +1 -1
- package/dist/context/manager.cjs +287 -323
- package/dist/context/manager.d.ts +65 -111
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +287 -328
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/types.cjs +49 -0
- package/dist/context/types.d.ts +185 -72
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +35 -0
- package/dist/context/utils.cjs +266 -283
- package/dist/context/utils.d.ts +32 -18
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +266 -283
- package/dist/errors/DextoBaseError.js +1 -1
- package/dist/errors/DextoRuntimeError.js +1 -1
- package/dist/errors/DextoValidationError.js +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/result-bridge.js +1 -1
- package/dist/errors/types.cjs +1 -0
- package/dist/errors/types.d.ts +4 -2
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +2 -1
- package/dist/events/index.cjs +22 -2
- package/dist/events/index.d.ts +170 -62
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +23 -3
- package/dist/filesystem/error-codes.js +1 -1
- package/dist/filesystem/errors.js +1 -1
- package/dist/filesystem/filesystem-service.js +1 -1
- package/dist/filesystem/index.js +1 -1
- package/dist/filesystem/path-validator.js +1 -1
- package/dist/index.browser.cjs +23 -8
- package/dist/index.browser.d.ts +4 -3
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +20 -3
- package/dist/index.js +1 -1
- package/dist/llm/error-codes.cjs +0 -1
- package/dist/llm/error-codes.d.ts +0 -1
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +1 -2
- package/dist/llm/errors.cjs +10 -10
- package/dist/llm/errors.d.ts +5 -6
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +12 -12
- package/dist/llm/executor/stream-processor.cjs +367 -0
- package/dist/llm/executor/stream-processor.d.ts +55 -0
- package/dist/llm/executor/stream-processor.d.ts.map +1 -0
- package/dist/llm/executor/stream-processor.js +344 -0
- package/dist/llm/executor/tool-output-truncator.cjs +75 -0
- package/dist/llm/executor/tool-output-truncator.d.ts +27 -0
- package/dist/llm/executor/tool-output-truncator.d.ts.map +1 -0
- package/dist/llm/executor/tool-output-truncator.js +48 -0
- package/dist/llm/executor/turn-executor.cjs +753 -0
- package/dist/llm/executor/turn-executor.d.ts +166 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -0
- package/dist/llm/executor/turn-executor.js +684 -0
- package/dist/llm/executor/types.d.ts +27 -0
- package/dist/llm/executor/types.d.ts.map +1 -0
- package/dist/llm/formatters/vercel.cjs +20 -186
- package/dist/llm/formatters/vercel.d.ts +2 -14
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +19 -185
- package/dist/llm/registry.cjs +36 -45
- package/dist/llm/registry.d.ts +53 -39
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +34 -42
- package/dist/llm/resolver.cjs +1 -31
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +2 -34
- package/dist/llm/schemas.cjs +2 -17
- package/dist/llm/schemas.d.ts +10 -23
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +5 -22
- package/dist/llm/services/factory.cjs +3 -92
- package/dist/llm/services/factory.d.ts +14 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +4 -83
- package/dist/llm/services/test-utils.integration.cjs +6 -8
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +7 -9
- package/dist/llm/services/types.d.ts +1 -28
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +54 -468
- package/dist/llm/services/vercel.d.ts +38 -21
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +56 -475
- package/dist/llm/types.cjs +0 -3
- package/dist/llm/types.d.ts +8 -8
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +1 -3
- package/dist/llm/validation.js +1 -1
- package/dist/logger/browser.js +1 -1
- package/dist/logger/factory.js +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/logger/logger.js +1 -1
- package/dist/logger/v2/dexto-logger.cjs +34 -6
- package/dist/logger/v2/dexto-logger.d.ts +20 -2
- package/dist/logger/v2/dexto-logger.d.ts.map +1 -1
- package/dist/logger/v2/dexto-logger.js +35 -7
- package/dist/logger/v2/error-codes.js +1 -1
- package/dist/logger/v2/errors.js +1 -1
- package/dist/logger/v2/schemas.cjs +1 -1
- package/dist/logger/v2/schemas.js +2 -2
- package/dist/logger/v2/test-utils.cjs +70 -0
- package/dist/logger/v2/test-utils.d.ts +17 -0
- package/dist/logger/v2/test-utils.d.ts.map +1 -0
- package/dist/logger/v2/test-utils.js +46 -0
- package/dist/logger/v2/transport-factory.js +1 -1
- package/dist/logger/v2/transports/console-transport.js +1 -1
- package/dist/logger/v2/transports/file-transport.cjs +6 -0
- package/dist/logger/v2/transports/file-transport.d.ts +4 -0
- package/dist/logger/v2/transports/file-transport.d.ts.map +1 -1
- package/dist/logger/v2/transports/file-transport.js +7 -1
- package/dist/logger/v2/types.cjs +1 -0
- package/dist/logger/v2/types.d.ts +18 -2
- package/dist/logger/v2/types.d.ts.map +1 -1
- package/dist/logger/v2/types.js +2 -1
- package/dist/mcp/error-codes.cjs +1 -0
- package/dist/mcp/error-codes.d.ts +1 -0
- package/dist/mcp/error-codes.d.ts.map +1 -1
- package/dist/mcp/error-codes.js +2 -1
- package/dist/mcp/errors.cjs +13 -0
- package/dist/mcp/errors.d.ts +7 -0
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +14 -1
- package/dist/mcp/manager.cjs +4 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +5 -1
- package/dist/mcp/mcp-client.js +1 -1
- package/dist/mcp/resolver.js +1 -1
- package/dist/mcp/schemas.cjs +6 -0
- package/dist/mcp/schemas.d.ts +52 -0
- package/dist/mcp/schemas.d.ts.map +1 -1
- package/dist/mcp/schemas.js +6 -1
- package/dist/memory/error-codes.js +1 -1
- package/dist/memory/errors.js +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/manager.js +1 -1
- package/dist/memory/schemas.d.ts +2 -2
- package/dist/memory/schemas.js +1 -1
- package/dist/plugins/builtins/content-policy.js +1 -1
- package/dist/plugins/builtins/response-sanitizer.js +1 -1
- package/dist/plugins/error-codes.cjs +1 -0
- package/dist/plugins/error-codes.d.ts +3 -1
- package/dist/plugins/error-codes.d.ts.map +1 -1
- package/dist/plugins/error-codes.js +2 -1
- package/dist/plugins/index.js +1 -1
- package/dist/plugins/loader.cjs +25 -5
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +26 -6
- package/dist/plugins/manager.js +1 -1
- package/dist/plugins/registrations/builtins.js +1 -1
- package/dist/plugins/schemas.d.ts +3 -3
- package/dist/plugins/schemas.js +1 -1
- package/dist/plugins/types.d.ts +0 -1
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/process/command-validator.js +1 -1
- package/dist/process/error-codes.js +1 -1
- package/dist/process/errors.js +1 -1
- package/dist/process/index.js +1 -1
- package/dist/process/process-service.cjs +78 -26
- package/dist/process/process-service.d.ts +6 -1
- package/dist/process/process-service.d.ts.map +1 -1
- package/dist/process/process-service.js +79 -27
- package/dist/process/types.d.ts +2 -2
- package/dist/process/types.d.ts.map +1 -1
- package/dist/prompts/error-codes.cjs +1 -0
- package/dist/prompts/error-codes.d.ts +2 -1
- package/dist/prompts/error-codes.d.ts.map +1 -1
- package/dist/prompts/error-codes.js +2 -1
- package/dist/prompts/errors.cjs +15 -0
- package/dist/prompts/errors.d.ts +4 -0
- package/dist/prompts/errors.d.ts.map +1 -1
- package/dist/prompts/errors.js +16 -1
- package/dist/prompts/index.js +1 -1
- package/dist/prompts/name-validation.js +1 -1
- package/dist/prompts/prompt-manager.cjs +13 -2
- package/dist/prompts/prompt-manager.d.ts +7 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +14 -3
- package/dist/prompts/providers/config-prompt-provider.cjs +12 -3
- package/dist/prompts/providers/config-prompt-provider.d.ts +2 -1
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +13 -4
- package/dist/prompts/providers/custom-prompt-provider.cjs +2 -2
- package/dist/prompts/providers/custom-prompt-provider.d.ts +1 -1
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +3 -3
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
- package/dist/prompts/schemas.d.ts +12 -0
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +1 -1
- package/dist/prompts/types.d.ts +2 -0
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/utils.js +1 -1
- package/dist/resources/error-codes.js +1 -1
- package/dist/resources/errors.js +1 -1
- package/dist/resources/handlers/blob-handler.js +1 -1
- package/dist/resources/handlers/factory.js +1 -1
- package/dist/resources/handlers/filesystem-handler.js +1 -1
- package/dist/resources/index.js +1 -1
- package/dist/resources/internal-provider.js +1 -1
- package/dist/resources/manager.js +1 -1
- package/dist/resources/reference-parser.js +1 -1
- package/dist/resources/schemas.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/search/search-service.js +1 -1
- package/dist/session/chat-session.cjs +149 -51
- package/dist/session/chat-session.d.ts +69 -29
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +150 -52
- package/dist/session/error-codes.js +1 -1
- package/dist/session/errors.js +1 -1
- package/dist/session/history/database.cjs +134 -21
- package/dist/session/history/database.d.ts +37 -8
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +135 -22
- package/dist/session/history/factory.js +1 -1
- package/dist/session/history/memory.cjs +18 -0
- package/dist/session/history/memory.d.ts +8 -0
- package/dist/session/history/memory.d.ts.map +1 -1
- package/dist/session/history/memory.js +19 -1
- package/dist/session/history/types.d.ts +13 -1
- package/dist/session/history/types.d.ts.map +1 -1
- package/dist/session/index.cjs +3 -0
- package/dist/session/index.d.ts +3 -0
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +3 -1
- package/dist/session/message-queue.cjs +201 -0
- package/dist/session/message-queue.d.ts +114 -0
- package/dist/session/message-queue.d.ts.map +1 -0
- package/dist/session/message-queue.js +178 -0
- package/dist/session/schemas.js +1 -1
- package/dist/session/session-manager.cjs +57 -7
- package/dist/session/session-manager.d.ts +18 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +58 -8
- package/dist/session/title-generator.cjs +4 -8
- package/dist/session/title-generator.d.ts +1 -2
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +5 -9
- package/dist/session/types.cjs +16 -0
- package/dist/session/types.d.ts +14 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +0 -0
- package/dist/storage/blob/factory.js +1 -1
- package/dist/storage/blob/local-blob-store.js +1 -1
- package/dist/storage/blob/memory-blob-store.js +1 -1
- package/dist/storage/blob/schemas.js +1 -1
- package/dist/storage/cache/factory.cjs +6 -2
- package/dist/storage/cache/factory.d.ts +2 -1
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +7 -3
- package/dist/storage/cache/memory-cache-store.js +1 -1
- package/dist/storage/cache/redis-store.js +1 -1
- package/dist/storage/cache/schemas.js +1 -1
- package/dist/storage/database/factory.cjs +11 -17
- package/dist/storage/database/factory.d.ts +2 -1
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +12 -18
- package/dist/storage/database/memory-database-store.js +1 -1
- package/dist/storage/database/postgres-store.cjs +12 -0
- package/dist/storage/database/postgres-store.d.ts.map +1 -1
- package/dist/storage/database/postgres-store.js +13 -1
- package/dist/storage/database/schemas.js +1 -1
- package/dist/storage/database/sqlite-store.cjs +8 -0
- package/dist/storage/database/sqlite-store.d.ts.map +1 -1
- package/dist/storage/database/sqlite-store.js +9 -1
- package/dist/storage/error-codes.cjs +1 -0
- package/dist/storage/error-codes.d.ts +1 -0
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +2 -1
- package/dist/storage/errors.cjs +17 -0
- package/dist/storage/errors.d.ts +9 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +18 -1
- package/dist/storage/index.js +1 -1
- package/dist/storage/schemas.js +1 -1
- package/dist/storage/storage-manager.js +1 -1
- package/dist/systemPrompt/contributors.js +1 -1
- package/dist/systemPrompt/error-codes.js +1 -1
- package/dist/systemPrompt/errors.js +1 -1
- package/dist/systemPrompt/in-built-prompts.js +1 -1
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.js +1 -1
- package/dist/systemPrompt/schemas.d.ts +5 -5
- package/dist/systemPrompt/schemas.js +1 -1
- package/dist/telemetry/decorators.js +1 -1
- package/dist/{llm/tokenizer/default.cjs → telemetry/error-codes.cjs} +14 -19
- package/dist/telemetry/error-codes.d.ts +13 -0
- package/dist/telemetry/error-codes.d.ts.map +1 -0
- package/dist/telemetry/error-codes.js +13 -0
- package/dist/telemetry/errors.cjs +105 -0
- package/dist/telemetry/errors.d.ts +28 -0
- package/dist/telemetry/errors.d.ts.map +1 -0
- package/dist/telemetry/errors.js +82 -0
- package/dist/telemetry/exporters.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/schemas.js +1 -1
- package/dist/telemetry/telemetry.cjs +92 -26
- package/dist/telemetry/telemetry.d.ts +1 -1
- package/dist/telemetry/telemetry.d.ts.map +1 -1
- package/dist/telemetry/telemetry.js +75 -19
- package/dist/telemetry/utils.js +1 -1
- package/dist/tools/bash-pattern-utils.cjs +91 -0
- package/dist/tools/bash-pattern-utils.d.ts +58 -0
- package/dist/tools/bash-pattern-utils.d.ts.map +1 -0
- package/dist/tools/bash-pattern-utils.js +64 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -1
- package/dist/tools/display-types.cjs +60 -0
- package/dist/tools/display-types.d.ts +133 -0
- package/dist/tools/display-types.d.ts.map +1 -0
- package/dist/tools/display-types.js +32 -0
- package/dist/tools/error-codes.cjs +2 -0
- package/dist/tools/error-codes.d.ts +3 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +3 -1
- package/dist/tools/errors.cjs +30 -0
- package/dist/tools/errors.d.ts +16 -0
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +31 -1
- package/dist/tools/index.cjs +2 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/internal-tools/constants.js +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.cjs +1 -1
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +2 -2
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +42 -18
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +3 -3
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +43 -19
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/delegate-to-url-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +66 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +67 -2
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +14 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +15 -2
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +16 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +17 -2
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +9 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.js +10 -2
- package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +69 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.js +72 -2
- package/dist/tools/internal-tools/provider.cjs +27 -10
- package/dist/tools/internal-tools/provider.d.ts +8 -5
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +28 -11
- package/dist/tools/internal-tools/registry.cjs +4 -3
- package/dist/tools/internal-tools/registry.d.ts +28 -7
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +5 -4
- package/dist/tools/schemas.cjs +17 -7
- package/dist/tools/schemas.d.ts +31 -4
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +15 -7
- package/dist/tools/tool-manager.cjs +140 -18
- package/dist/tools/tool-manager.d.ts +23 -1
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +145 -19
- package/dist/tools/types.d.ts +20 -11
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +1 -1
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/{llm/tokenizer/types.cjs → utils/defer.cjs} +19 -10
- package/dist/utils/defer.d.ts +63 -0
- package/dist/utils/defer.d.ts.map +1 -0
- package/dist/utils/defer.js +19 -0
- package/dist/utils/env-file.js +1 -1
- package/dist/utils/error-conversion.js +1 -1
- package/dist/utils/execution-context.js +1 -1
- package/dist/utils/fs-walk.js +1 -1
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.js +1 -1
- package/dist/utils/result.js +1 -1
- package/dist/utils/safe-stringify.js +1 -1
- package/dist/utils/schema-metadata.js +1 -1
- package/dist/utils/schema.d.ts +6 -0
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +1 -1
- package/dist/utils/service-initializer.cjs +6 -2
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +7 -3
- package/dist/utils/user-info.js +1 -1
- package/dist/utils/zod-schema-converter.js +1 -1
- package/package.json +54 -17
- package/dist/context/compression/middle-removal.cjs +0 -95
- package/dist/context/compression/middle-removal.d.ts +0 -47
- package/dist/context/compression/middle-removal.d.ts.map +0 -1
- package/dist/context/compression/middle-removal.js +0 -72
- package/dist/context/compression/oldest-removal.cjs +0 -83
- package/dist/context/compression/oldest-removal.d.ts +0 -42
- package/dist/context/compression/oldest-removal.d.ts.map +0 -1
- package/dist/context/compression/oldest-removal.js +0 -60
- package/dist/llm/formatters/anthropic.cjs +0 -257
- package/dist/llm/formatters/anthropic.d.ts +0 -46
- package/dist/llm/formatters/anthropic.d.ts.map +0 -1
- package/dist/llm/formatters/anthropic.js +0 -239
- package/dist/llm/formatters/factory.cjs +0 -50
- package/dist/llm/formatters/factory.d.ts +0 -10
- package/dist/llm/formatters/factory.d.ts.map +0 -1
- package/dist/llm/formatters/factory.js +0 -27
- package/dist/llm/formatters/openai.cjs +0 -196
- package/dist/llm/formatters/openai.d.ts +0 -39
- package/dist/llm/formatters/openai.d.ts.map +0 -1
- package/dist/llm/formatters/openai.js +0 -177
- package/dist/llm/formatters/types.d.ts +0 -41
- package/dist/llm/formatters/types.d.ts.map +0 -1
- package/dist/llm/services/anthropic.cjs +0 -511
- package/dist/llm/services/anthropic.d.ts +0 -48
- package/dist/llm/services/anthropic.d.ts.map +0 -1
- package/dist/llm/services/anthropic.js +0 -447
- package/dist/llm/services/openai.cjs +0 -611
- package/dist/llm/services/openai.d.ts +0 -48
- package/dist/llm/services/openai.d.ts.map +0 -1
- package/dist/llm/services/openai.js +0 -547
- package/dist/llm/tokenizer/anthropic.cjs +0 -43
- package/dist/llm/tokenizer/anthropic.d.ts +0 -19
- package/dist/llm/tokenizer/anthropic.d.ts.map +0 -1
- package/dist/llm/tokenizer/anthropic.js +0 -20
- package/dist/llm/tokenizer/default.d.ts +0 -14
- package/dist/llm/tokenizer/default.d.ts.map +0 -1
- package/dist/llm/tokenizer/default.js +0 -18
- package/dist/llm/tokenizer/factory.d.ts +0 -12
- package/dist/llm/tokenizer/factory.d.ts.map +0 -1
- package/dist/llm/tokenizer/factory.js +0 -21
- package/dist/llm/tokenizer/google.cjs +0 -52
- package/dist/llm/tokenizer/google.d.ts +0 -29
- package/dist/llm/tokenizer/google.d.ts.map +0 -1
- package/dist/llm/tokenizer/google.js +0 -29
- package/dist/llm/tokenizer/openai.cjs +0 -115
- package/dist/llm/tokenizer/openai.d.ts +0 -33
- package/dist/llm/tokenizer/openai.d.ts.map +0 -1
- package/dist/llm/tokenizer/openai.js +0 -91
- package/dist/llm/tokenizer/types.d.ts +0 -18
- package/dist/llm/tokenizer/types.d.ts.map +0 -1
- package/dist/llm/tokenizer/types.js +0 -10
- /package/dist/llm/{formatters → executor}/types.cjs +0 -0
- /package/dist/llm/{formatters → executor}/types.js +0 -0
|
@@ -39,6 +39,18 @@ function createGlobFilesTool(fileSystemService) {
|
|
|
39
39
|
maxResults: max_results,
|
|
40
40
|
includeMetadata: true
|
|
41
41
|
});
|
|
42
|
+
const _display = {
|
|
43
|
+
type: "search",
|
|
44
|
+
pattern,
|
|
45
|
+
matches: result.files.map((file) => ({
|
|
46
|
+
file: file.path,
|
|
47
|
+
line: 0,
|
|
48
|
+
// No line number for glob
|
|
49
|
+
content: file.path
|
|
50
|
+
})),
|
|
51
|
+
totalMatches: result.totalFound,
|
|
52
|
+
truncated: result.truncated
|
|
53
|
+
};
|
|
42
54
|
return {
|
|
43
55
|
files: result.files.map((file) => ({
|
|
44
56
|
path: file.path,
|
|
@@ -46,7 +58,8 @@ function createGlobFilesTool(fileSystemService) {
|
|
|
46
58
|
modified: file.modified.toISOString()
|
|
47
59
|
})),
|
|
48
60
|
total_found: result.totalFound,
|
|
49
|
-
truncated: result.truncated
|
|
61
|
+
truncated: result.truncated,
|
|
62
|
+
_display
|
|
50
63
|
};
|
|
51
64
|
}
|
|
52
65
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glob-files-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/glob-files-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"glob-files-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/glob-files-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAwBjE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CA0CtF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../../../chunk-
|
|
1
|
+
import "../../../chunk-PTJYTZNU.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
const GlobFilesInputSchema = z.object({
|
|
4
4
|
pattern: z.string().describe('Glob pattern to match files (e.g., "**/*.ts", "src/**/*.js")'),
|
|
@@ -17,6 +17,18 @@ function createGlobFilesTool(fileSystemService) {
|
|
|
17
17
|
maxResults: max_results,
|
|
18
18
|
includeMetadata: true
|
|
19
19
|
});
|
|
20
|
+
const _display = {
|
|
21
|
+
type: "search",
|
|
22
|
+
pattern,
|
|
23
|
+
matches: result.files.map((file) => ({
|
|
24
|
+
file: file.path,
|
|
25
|
+
line: 0,
|
|
26
|
+
// No line number for glob
|
|
27
|
+
content: file.path
|
|
28
|
+
})),
|
|
29
|
+
totalMatches: result.totalFound,
|
|
30
|
+
truncated: result.truncated
|
|
31
|
+
};
|
|
20
32
|
return {
|
|
21
33
|
files: result.files.map((file) => ({
|
|
22
34
|
path: file.path,
|
|
@@ -24,7 +36,8 @@ function createGlobFilesTool(fileSystemService) {
|
|
|
24
36
|
modified: file.modified.toISOString()
|
|
25
37
|
})),
|
|
26
38
|
total_found: result.totalFound,
|
|
27
|
-
truncated: result.truncated
|
|
39
|
+
truncated: result.truncated,
|
|
40
|
+
_display
|
|
28
41
|
};
|
|
29
42
|
}
|
|
30
43
|
};
|
|
@@ -46,6 +46,20 @@ function createGrepContentTool(fileSystemService) {
|
|
|
46
46
|
caseInsensitive: case_insensitive,
|
|
47
47
|
maxResults: max_results
|
|
48
48
|
});
|
|
49
|
+
const _display = {
|
|
50
|
+
type: "search",
|
|
51
|
+
pattern,
|
|
52
|
+
matches: result.matches.map((match) => ({
|
|
53
|
+
file: match.file,
|
|
54
|
+
line: match.lineNumber,
|
|
55
|
+
content: match.line,
|
|
56
|
+
...match.context && {
|
|
57
|
+
context: [...match.context.before, ...match.context.after]
|
|
58
|
+
}
|
|
59
|
+
})),
|
|
60
|
+
totalMatches: result.totalMatches,
|
|
61
|
+
truncated: result.truncated
|
|
62
|
+
};
|
|
49
63
|
return {
|
|
50
64
|
matches: result.matches.map((match) => ({
|
|
51
65
|
file: match.file,
|
|
@@ -60,7 +74,8 @@ function createGrepContentTool(fileSystemService) {
|
|
|
60
74
|
})),
|
|
61
75
|
total_matches: result.totalMatches,
|
|
62
76
|
files_searched: result.filesSearched,
|
|
63
|
-
truncated: result.truncated
|
|
77
|
+
truncated: result.truncated,
|
|
78
|
+
_display
|
|
64
79
|
};
|
|
65
80
|
}
|
|
66
81
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep-content-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/grep-content-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"grep-content-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/grep-content-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAwCjE;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CAuDxF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../../../chunk-
|
|
1
|
+
import "../../../chunk-PTJYTZNU.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
const GrepContentInputSchema = z.object({
|
|
4
4
|
pattern: z.string().describe("Regular expression pattern to search for"),
|
|
@@ -24,6 +24,20 @@ function createGrepContentTool(fileSystemService) {
|
|
|
24
24
|
caseInsensitive: case_insensitive,
|
|
25
25
|
maxResults: max_results
|
|
26
26
|
});
|
|
27
|
+
const _display = {
|
|
28
|
+
type: "search",
|
|
29
|
+
pattern,
|
|
30
|
+
matches: result.matches.map((match) => ({
|
|
31
|
+
file: match.file,
|
|
32
|
+
line: match.lineNumber,
|
|
33
|
+
content: match.line,
|
|
34
|
+
...match.context && {
|
|
35
|
+
context: [...match.context.before, ...match.context.after]
|
|
36
|
+
}
|
|
37
|
+
})),
|
|
38
|
+
totalMatches: result.totalMatches,
|
|
39
|
+
truncated: result.truncated
|
|
40
|
+
};
|
|
27
41
|
return {
|
|
28
42
|
matches: result.matches.map((match) => ({
|
|
29
43
|
file: match.file,
|
|
@@ -38,7 +52,8 @@ function createGrepContentTool(fileSystemService) {
|
|
|
38
52
|
})),
|
|
39
53
|
total_matches: result.totalMatches,
|
|
40
54
|
files_searched: result.filesSearched,
|
|
41
|
-
truncated: result.truncated
|
|
55
|
+
truncated: result.truncated,
|
|
56
|
+
_display
|
|
42
57
|
};
|
|
43
58
|
}
|
|
44
59
|
};
|
|
@@ -38,13 +38,21 @@ function createReadFileTool(fileSystemService) {
|
|
|
38
38
|
limit,
|
|
39
39
|
offset
|
|
40
40
|
});
|
|
41
|
+
const _display = {
|
|
42
|
+
type: "file",
|
|
43
|
+
path: file_path,
|
|
44
|
+
operation: "read",
|
|
45
|
+
size: result.size,
|
|
46
|
+
lineCount: result.lines
|
|
47
|
+
};
|
|
41
48
|
return {
|
|
42
49
|
content: result.content,
|
|
43
50
|
lines: result.lines,
|
|
44
51
|
encoding: result.encoding,
|
|
45
52
|
truncated: result.truncated,
|
|
46
53
|
size: result.size,
|
|
47
|
-
...result.mimeType && { mimeType: result.mimeType }
|
|
54
|
+
...result.mimeType && { mimeType: result.mimeType },
|
|
55
|
+
_display
|
|
48
56
|
};
|
|
49
57
|
}
|
|
50
58
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-file-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/read-file-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"read-file-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/read-file-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAuBjE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CAoCrF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../../../chunk-
|
|
1
|
+
import "../../../chunk-PTJYTZNU.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
const ReadFileInputSchema = z.object({
|
|
4
4
|
file_path: z.string().describe("Absolute path to the file to read"),
|
|
@@ -16,13 +16,21 @@ function createReadFileTool(fileSystemService) {
|
|
|
16
16
|
limit,
|
|
17
17
|
offset
|
|
18
18
|
});
|
|
19
|
+
const _display = {
|
|
20
|
+
type: "file",
|
|
21
|
+
path: file_path,
|
|
22
|
+
operation: "read",
|
|
23
|
+
size: result.size,
|
|
24
|
+
lineCount: result.lines
|
|
25
|
+
};
|
|
19
26
|
return {
|
|
20
27
|
content: result.content,
|
|
21
28
|
lines: result.lines,
|
|
22
29
|
encoding: result.encoding,
|
|
23
30
|
truncated: result.truncated,
|
|
24
31
|
size: result.size,
|
|
25
|
-
...result.mimeType && { mimeType: result.mimeType }
|
|
32
|
+
...result.mimeType && { mimeType: result.mimeType },
|
|
33
|
+
_display
|
|
26
34
|
};
|
|
27
35
|
}
|
|
28
36
|
};
|
|
@@ -22,30 +22,98 @@ __export(write_file_tool_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(write_file_tool_exports);
|
|
24
24
|
var import_zod = require("zod");
|
|
25
|
+
var import_diff = require("diff");
|
|
26
|
+
var import_filesystem = require("../../../filesystem/index.js");
|
|
27
|
+
var import_errors = require("../../../errors/index.js");
|
|
25
28
|
const WriteFileInputSchema = import_zod.z.object({
|
|
26
29
|
file_path: import_zod.z.string().describe("Absolute path where the file should be written"),
|
|
27
30
|
content: import_zod.z.string().describe("Content to write to the file"),
|
|
28
31
|
create_dirs: import_zod.z.boolean().optional().default(false).describe("Create parent directories if they don't exist (default: false)"),
|
|
29
32
|
encoding: import_zod.z.enum(["utf-8", "ascii", "latin1", "utf16le"]).optional().default("utf-8").describe("File encoding (default: utf-8)")
|
|
30
33
|
}).strict();
|
|
34
|
+
function generateDiffPreview(filePath, originalContent, newContent) {
|
|
35
|
+
const unified = (0, import_diff.createPatch)(filePath, originalContent, newContent, "before", "after", {
|
|
36
|
+
context: 3
|
|
37
|
+
});
|
|
38
|
+
const additions = (unified.match(/^\+[^+]/gm) || []).length;
|
|
39
|
+
const deletions = (unified.match(/^-[^-]/gm) || []).length;
|
|
40
|
+
return {
|
|
41
|
+
type: "diff",
|
|
42
|
+
unified,
|
|
43
|
+
filename: filePath,
|
|
44
|
+
additions,
|
|
45
|
+
deletions
|
|
46
|
+
};
|
|
47
|
+
}
|
|
31
48
|
function createWriteFileTool(fileSystemService) {
|
|
32
49
|
return {
|
|
33
50
|
id: "write_file",
|
|
34
51
|
description: "Write content to a file. Creates a new file or overwrites existing file. Automatically creates backup of existing files before overwriting. Use create_dirs to create parent directories. Requires approval for all write operations. Returns success status, path, bytes written, and backup path if applicable.",
|
|
35
52
|
inputSchema: WriteFileInputSchema,
|
|
53
|
+
/**
|
|
54
|
+
* Generate preview for approval UI - shows diff or file creation info
|
|
55
|
+
*/
|
|
56
|
+
generatePreview: async (input, _context) => {
|
|
57
|
+
const { file_path, content } = input;
|
|
58
|
+
try {
|
|
59
|
+
const originalFile = await fileSystemService.readFile(file_path);
|
|
60
|
+
const originalContent = originalFile.content;
|
|
61
|
+
return generateDiffPreview(file_path, originalContent, content);
|
|
62
|
+
} catch (error) {
|
|
63
|
+
if (error instanceof import_errors.DextoRuntimeError && error.code === import_filesystem.FileSystemErrorCode.FILE_NOT_FOUND) {
|
|
64
|
+
const lineCount = content.split("\n").length;
|
|
65
|
+
const preview = {
|
|
66
|
+
type: "file",
|
|
67
|
+
path: file_path,
|
|
68
|
+
operation: "create",
|
|
69
|
+
size: content.length,
|
|
70
|
+
lineCount,
|
|
71
|
+
content
|
|
72
|
+
// Include content for approval preview
|
|
73
|
+
};
|
|
74
|
+
return preview;
|
|
75
|
+
}
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
},
|
|
36
79
|
execute: async (input, _context) => {
|
|
37
80
|
const { file_path, content, create_dirs, encoding } = input;
|
|
81
|
+
let originalContent = null;
|
|
82
|
+
try {
|
|
83
|
+
const originalFile = await fileSystemService.readFile(file_path);
|
|
84
|
+
originalContent = originalFile.content;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
if (error instanceof import_errors.DextoRuntimeError && error.code === import_filesystem.FileSystemErrorCode.FILE_NOT_FOUND) {
|
|
87
|
+
originalContent = null;
|
|
88
|
+
} else {
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
38
92
|
const result = await fileSystemService.writeFile(file_path, content, {
|
|
39
93
|
createDirs: create_dirs,
|
|
40
94
|
encoding,
|
|
41
95
|
backup: true
|
|
42
96
|
// Always create backup for internal tools
|
|
43
97
|
});
|
|
98
|
+
let _display;
|
|
99
|
+
if (originalContent === null) {
|
|
100
|
+
const lineCount = content.split("\n").length;
|
|
101
|
+
_display = {
|
|
102
|
+
type: "file",
|
|
103
|
+
path: file_path,
|
|
104
|
+
operation: "create",
|
|
105
|
+
size: result.bytesWritten,
|
|
106
|
+
lineCount
|
|
107
|
+
};
|
|
108
|
+
} else {
|
|
109
|
+
_display = generateDiffPreview(file_path, originalContent, content);
|
|
110
|
+
}
|
|
44
111
|
return {
|
|
45
112
|
success: result.success,
|
|
46
113
|
path: result.path,
|
|
47
114
|
bytes_written: result.bytesWritten,
|
|
48
|
-
...result.backupPath && { backup_path: result.backupPath }
|
|
115
|
+
...result.backupPath && { backup_path: result.backupPath },
|
|
116
|
+
_display
|
|
49
117
|
};
|
|
50
118
|
}
|
|
51
119
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-file-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/write-file-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"write-file-tool.d.ts","sourceRoot":"","sources":["../../../../src/tools/internal-tools/implementations/write-file-tool.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAwB,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACH,iBAAiB,EAGpB,MAAM,8BAA8B,CAAC;AA8CtC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,YAAY,CAoGtF"}
|
|
@@ -1,29 +1,99 @@
|
|
|
1
|
-
import "../../../chunk-
|
|
1
|
+
import "../../../chunk-PTJYTZNU.js";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { createPatch } from "diff";
|
|
4
|
+
import {
|
|
5
|
+
FileSystemErrorCode
|
|
6
|
+
} from "../../../filesystem/index.js";
|
|
7
|
+
import { DextoRuntimeError } from "../../../errors/index.js";
|
|
3
8
|
const WriteFileInputSchema = z.object({
|
|
4
9
|
file_path: z.string().describe("Absolute path where the file should be written"),
|
|
5
10
|
content: z.string().describe("Content to write to the file"),
|
|
6
11
|
create_dirs: z.boolean().optional().default(false).describe("Create parent directories if they don't exist (default: false)"),
|
|
7
12
|
encoding: z.enum(["utf-8", "ascii", "latin1", "utf16le"]).optional().default("utf-8").describe("File encoding (default: utf-8)")
|
|
8
13
|
}).strict();
|
|
14
|
+
function generateDiffPreview(filePath, originalContent, newContent) {
|
|
15
|
+
const unified = createPatch(filePath, originalContent, newContent, "before", "after", {
|
|
16
|
+
context: 3
|
|
17
|
+
});
|
|
18
|
+
const additions = (unified.match(/^\+[^+]/gm) || []).length;
|
|
19
|
+
const deletions = (unified.match(/^-[^-]/gm) || []).length;
|
|
20
|
+
return {
|
|
21
|
+
type: "diff",
|
|
22
|
+
unified,
|
|
23
|
+
filename: filePath,
|
|
24
|
+
additions,
|
|
25
|
+
deletions
|
|
26
|
+
};
|
|
27
|
+
}
|
|
9
28
|
function createWriteFileTool(fileSystemService) {
|
|
10
29
|
return {
|
|
11
30
|
id: "write_file",
|
|
12
31
|
description: "Write content to a file. Creates a new file or overwrites existing file. Automatically creates backup of existing files before overwriting. Use create_dirs to create parent directories. Requires approval for all write operations. Returns success status, path, bytes written, and backup path if applicable.",
|
|
13
32
|
inputSchema: WriteFileInputSchema,
|
|
33
|
+
/**
|
|
34
|
+
* Generate preview for approval UI - shows diff or file creation info
|
|
35
|
+
*/
|
|
36
|
+
generatePreview: async (input, _context) => {
|
|
37
|
+
const { file_path, content } = input;
|
|
38
|
+
try {
|
|
39
|
+
const originalFile = await fileSystemService.readFile(file_path);
|
|
40
|
+
const originalContent = originalFile.content;
|
|
41
|
+
return generateDiffPreview(file_path, originalContent, content);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
if (error instanceof DextoRuntimeError && error.code === FileSystemErrorCode.FILE_NOT_FOUND) {
|
|
44
|
+
const lineCount = content.split("\n").length;
|
|
45
|
+
const preview = {
|
|
46
|
+
type: "file",
|
|
47
|
+
path: file_path,
|
|
48
|
+
operation: "create",
|
|
49
|
+
size: content.length,
|
|
50
|
+
lineCount,
|
|
51
|
+
content
|
|
52
|
+
// Include content for approval preview
|
|
53
|
+
};
|
|
54
|
+
return preview;
|
|
55
|
+
}
|
|
56
|
+
throw error;
|
|
57
|
+
}
|
|
58
|
+
},
|
|
14
59
|
execute: async (input, _context) => {
|
|
15
60
|
const { file_path, content, create_dirs, encoding } = input;
|
|
61
|
+
let originalContent = null;
|
|
62
|
+
try {
|
|
63
|
+
const originalFile = await fileSystemService.readFile(file_path);
|
|
64
|
+
originalContent = originalFile.content;
|
|
65
|
+
} catch (error) {
|
|
66
|
+
if (error instanceof DextoRuntimeError && error.code === FileSystemErrorCode.FILE_NOT_FOUND) {
|
|
67
|
+
originalContent = null;
|
|
68
|
+
} else {
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
16
72
|
const result = await fileSystemService.writeFile(file_path, content, {
|
|
17
73
|
createDirs: create_dirs,
|
|
18
74
|
encoding,
|
|
19
75
|
backup: true
|
|
20
76
|
// Always create backup for internal tools
|
|
21
77
|
});
|
|
78
|
+
let _display;
|
|
79
|
+
if (originalContent === null) {
|
|
80
|
+
const lineCount = content.split("\n").length;
|
|
81
|
+
_display = {
|
|
82
|
+
type: "file",
|
|
83
|
+
path: file_path,
|
|
84
|
+
operation: "create",
|
|
85
|
+
size: result.bytesWritten,
|
|
86
|
+
lineCount
|
|
87
|
+
};
|
|
88
|
+
} else {
|
|
89
|
+
_display = generateDiffPreview(file_path, originalContent, content);
|
|
90
|
+
}
|
|
22
91
|
return {
|
|
23
92
|
success: result.success,
|
|
24
93
|
path: result.path,
|
|
25
94
|
bytes_written: result.bytesWritten,
|
|
26
|
-
...result.backupPath && { backup_path: result.backupPath }
|
|
95
|
+
...result.backupPath && { backup_path: result.backupPath },
|
|
96
|
+
_display
|
|
27
97
|
};
|
|
28
98
|
}
|
|
29
99
|
};
|
|
@@ -28,12 +28,10 @@ class InternalToolsProvider {
|
|
|
28
28
|
services;
|
|
29
29
|
tools = /* @__PURE__ */ new Map();
|
|
30
30
|
// ← Store original InternalTool
|
|
31
|
-
approvalManager;
|
|
32
31
|
config;
|
|
33
32
|
logger;
|
|
34
|
-
constructor(services,
|
|
33
|
+
constructor(services, config = [], logger) {
|
|
35
34
|
this.services = services;
|
|
36
|
-
this.approvalManager = approvalManager;
|
|
37
35
|
this.config = config;
|
|
38
36
|
this.logger = logger;
|
|
39
37
|
this.logger.debug("InternalToolsProvider initialized with config:", { config });
|
|
@@ -62,14 +60,13 @@ class InternalToolsProvider {
|
|
|
62
60
|
* Register all available internal tools based on available services and configuration
|
|
63
61
|
*/
|
|
64
62
|
registerInternalTools() {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
approvalManager: this.approvalManager
|
|
63
|
+
const featureFlags = {
|
|
64
|
+
elicitation: this.services.approvalManager?.getConfig().elicitation.enabled ?? false
|
|
68
65
|
};
|
|
69
66
|
for (const toolName of this.config) {
|
|
70
67
|
const toolInfo = (0, import_registry.getInternalToolInfo)(toolName);
|
|
71
68
|
const missingServices = toolInfo.requiredServices.filter(
|
|
72
|
-
(serviceKey) => !
|
|
69
|
+
(serviceKey) => !this.services[serviceKey]
|
|
73
70
|
);
|
|
74
71
|
if (missingServices.length > 0) {
|
|
75
72
|
this.logger.debug(
|
|
@@ -77,8 +74,18 @@ class InternalToolsProvider {
|
|
|
77
74
|
);
|
|
78
75
|
continue;
|
|
79
76
|
}
|
|
77
|
+
const missingFeatures = (toolInfo.requiredFeatures ?? []).filter(
|
|
78
|
+
(feature) => !featureFlags[feature]
|
|
79
|
+
);
|
|
80
|
+
if (missingFeatures.length > 0) {
|
|
81
|
+
throw import_errors.ToolError.featureDisabled(
|
|
82
|
+
toolName,
|
|
83
|
+
missingFeatures,
|
|
84
|
+
`Tool '${toolName}' requires features which are currently disabled: ${missingFeatures.join(", ")}. Either remove '${toolName}' from internalTools, or enable: ${missingFeatures.map((f) => `${f}.enabled: true`).join(", ")}`
|
|
85
|
+
);
|
|
86
|
+
}
|
|
80
87
|
try {
|
|
81
|
-
const tool = toolInfo.factory(
|
|
88
|
+
const tool = toolInfo.factory(this.services);
|
|
82
89
|
this.tools.set(toolName, tool);
|
|
83
90
|
this.logger.debug(`Registered ${toolName} internal tool`);
|
|
84
91
|
} catch (error) {
|
|
@@ -94,10 +101,17 @@ class InternalToolsProvider {
|
|
|
94
101
|
hasTool(toolName) {
|
|
95
102
|
return this.tools.has(toolName);
|
|
96
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Get an internal tool by name
|
|
106
|
+
* Returns undefined if tool doesn't exist
|
|
107
|
+
*/
|
|
108
|
+
getTool(toolName) {
|
|
109
|
+
return this.tools.get(toolName);
|
|
110
|
+
}
|
|
97
111
|
/**
|
|
98
112
|
* Execute an internal tool - confirmation is handled by ToolManager
|
|
99
113
|
*/
|
|
100
|
-
async executeTool(toolName, args, sessionId) {
|
|
114
|
+
async executeTool(toolName, args, sessionId, abortSignal) {
|
|
101
115
|
const tool = this.tools.get(toolName);
|
|
102
116
|
if (!tool) {
|
|
103
117
|
this.logger.error(`\u274C No internal tool found: ${toolName}`);
|
|
@@ -117,7 +131,10 @@ class InternalToolsProvider {
|
|
|
117
131
|
);
|
|
118
132
|
}
|
|
119
133
|
try {
|
|
120
|
-
const context = {
|
|
134
|
+
const context = {
|
|
135
|
+
sessionId,
|
|
136
|
+
abortSignal
|
|
137
|
+
};
|
|
121
138
|
const result = await tool.execute(validationResult.data, context);
|
|
122
139
|
return result;
|
|
123
140
|
} catch (error) {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { ToolSet } from '../types.js';
|
|
1
|
+
import { ToolSet, InternalTool } from '../types.js';
|
|
2
2
|
import type { IDextoLogger } from '../../logger/v2/types.js';
|
|
3
3
|
import { InternalToolsServices } from './registry.js';
|
|
4
4
|
import type { InternalToolsConfig } from '../schemas.js';
|
|
5
|
-
import type { ApprovalManager } from '../../approval/manager.js';
|
|
6
5
|
/**
|
|
7
6
|
* Provider for built-in internal tools that are part of the core system
|
|
8
7
|
*
|
|
@@ -18,10 +17,9 @@ import type { ApprovalManager } from '../../approval/manager.js';
|
|
|
18
17
|
export declare class InternalToolsProvider {
|
|
19
18
|
private services;
|
|
20
19
|
private tools;
|
|
21
|
-
private approvalManager;
|
|
22
20
|
private config;
|
|
23
21
|
private logger;
|
|
24
|
-
constructor(services: InternalToolsServices,
|
|
22
|
+
constructor(services: InternalToolsServices, config: InternalToolsConfig | undefined, logger: IDextoLogger);
|
|
25
23
|
/**
|
|
26
24
|
* Initialize the internal tools provider by registering all available internal tools
|
|
27
25
|
*/
|
|
@@ -34,10 +32,15 @@ export declare class InternalToolsProvider {
|
|
|
34
32
|
* Check if a tool exists
|
|
35
33
|
*/
|
|
36
34
|
hasTool(toolName: string): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Get an internal tool by name
|
|
37
|
+
* Returns undefined if tool doesn't exist
|
|
38
|
+
*/
|
|
39
|
+
getTool(toolName: string): InternalTool | undefined;
|
|
37
40
|
/**
|
|
38
41
|
* Execute an internal tool - confirmation is handled by ToolManager
|
|
39
42
|
*/
|
|
40
|
-
executeTool(toolName: string, args: Record<string, unknown>, sessionId?: string): Promise<unknown>;
|
|
43
|
+
executeTool(toolName: string, args: Record<string, unknown>, sessionId?: string, abortSignal?: AbortSignal): Promise<unknown>;
|
|
41
44
|
/**
|
|
42
45
|
* Get all tools in ToolSet format with on-demand JSON Schema conversion
|
|
43
46
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/tools/internal-tools/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/tools/internal-tools/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EAAE,qBAAqB,EAA0C,MAAM,eAAe,CAAC;AAC9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAe;gBAGzB,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAE,mBAAmB,YAAK,EAChC,MAAM,EAAE,YAAY;IAQxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgD7B;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIlC;;;OAGG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAInD;;OAEG;IACG,WAAW,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,WAAW,GAC1B,OAAO,CAAC,OAAO,CAAC;IAqCnB;;OAEG;IACH,WAAW,IAAI,OAAO;IActB;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,YAAY,IAAI,MAAM;CAGzB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../../chunk-
|
|
1
|
+
import "../../chunk-PTJYTZNU.js";
|
|
2
2
|
import { ToolError } from "../errors.js";
|
|
3
3
|
import { convertZodSchemaToJsonSchema } from "../../utils/schema.js";
|
|
4
4
|
import { getInternalToolInfo } from "./registry.js";
|
|
@@ -6,12 +6,10 @@ class InternalToolsProvider {
|
|
|
6
6
|
services;
|
|
7
7
|
tools = /* @__PURE__ */ new Map();
|
|
8
8
|
// ← Store original InternalTool
|
|
9
|
-
approvalManager;
|
|
10
9
|
config;
|
|
11
10
|
logger;
|
|
12
|
-
constructor(services,
|
|
11
|
+
constructor(services, config = [], logger) {
|
|
13
12
|
this.services = services;
|
|
14
|
-
this.approvalManager = approvalManager;
|
|
15
13
|
this.config = config;
|
|
16
14
|
this.logger = logger;
|
|
17
15
|
this.logger.debug("InternalToolsProvider initialized with config:", { config });
|
|
@@ -40,14 +38,13 @@ class InternalToolsProvider {
|
|
|
40
38
|
* Register all available internal tools based on available services and configuration
|
|
41
39
|
*/
|
|
42
40
|
registerInternalTools() {
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
approvalManager: this.approvalManager
|
|
41
|
+
const featureFlags = {
|
|
42
|
+
elicitation: this.services.approvalManager?.getConfig().elicitation.enabled ?? false
|
|
46
43
|
};
|
|
47
44
|
for (const toolName of this.config) {
|
|
48
45
|
const toolInfo = getInternalToolInfo(toolName);
|
|
49
46
|
const missingServices = toolInfo.requiredServices.filter(
|
|
50
|
-
(serviceKey) => !
|
|
47
|
+
(serviceKey) => !this.services[serviceKey]
|
|
51
48
|
);
|
|
52
49
|
if (missingServices.length > 0) {
|
|
53
50
|
this.logger.debug(
|
|
@@ -55,8 +52,18 @@ class InternalToolsProvider {
|
|
|
55
52
|
);
|
|
56
53
|
continue;
|
|
57
54
|
}
|
|
55
|
+
const missingFeatures = (toolInfo.requiredFeatures ?? []).filter(
|
|
56
|
+
(feature) => !featureFlags[feature]
|
|
57
|
+
);
|
|
58
|
+
if (missingFeatures.length > 0) {
|
|
59
|
+
throw ToolError.featureDisabled(
|
|
60
|
+
toolName,
|
|
61
|
+
missingFeatures,
|
|
62
|
+
`Tool '${toolName}' requires features which are currently disabled: ${missingFeatures.join(", ")}. Either remove '${toolName}' from internalTools, or enable: ${missingFeatures.map((f) => `${f}.enabled: true`).join(", ")}`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
58
65
|
try {
|
|
59
|
-
const tool = toolInfo.factory(
|
|
66
|
+
const tool = toolInfo.factory(this.services);
|
|
60
67
|
this.tools.set(toolName, tool);
|
|
61
68
|
this.logger.debug(`Registered ${toolName} internal tool`);
|
|
62
69
|
} catch (error) {
|
|
@@ -72,10 +79,17 @@ class InternalToolsProvider {
|
|
|
72
79
|
hasTool(toolName) {
|
|
73
80
|
return this.tools.has(toolName);
|
|
74
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get an internal tool by name
|
|
84
|
+
* Returns undefined if tool doesn't exist
|
|
85
|
+
*/
|
|
86
|
+
getTool(toolName) {
|
|
87
|
+
return this.tools.get(toolName);
|
|
88
|
+
}
|
|
75
89
|
/**
|
|
76
90
|
* Execute an internal tool - confirmation is handled by ToolManager
|
|
77
91
|
*/
|
|
78
|
-
async executeTool(toolName, args, sessionId) {
|
|
92
|
+
async executeTool(toolName, args, sessionId, abortSignal) {
|
|
79
93
|
const tool = this.tools.get(toolName);
|
|
80
94
|
if (!tool) {
|
|
81
95
|
this.logger.error(`\u274C No internal tool found: ${toolName}`);
|
|
@@ -95,7 +109,10 @@ class InternalToolsProvider {
|
|
|
95
109
|
);
|
|
96
110
|
}
|
|
97
111
|
try {
|
|
98
|
-
const context = {
|
|
112
|
+
const context = {
|
|
113
|
+
sessionId,
|
|
114
|
+
abortSignal
|
|
115
|
+
};
|
|
99
116
|
const result = await tool.execute(validationResult.data, context);
|
|
100
117
|
return result;
|
|
101
118
|
} catch (error) {
|
|
@@ -40,7 +40,8 @@ const INTERNAL_TOOL_REGISTRY = {
|
|
|
40
40
|
},
|
|
41
41
|
ask_user: {
|
|
42
42
|
factory: (services) => (0, import_ask_user_tool.createAskUserTool)(services.approvalManager),
|
|
43
|
-
requiredServices: ["approvalManager"]
|
|
43
|
+
requiredServices: ["approvalManager"],
|
|
44
|
+
requiredFeatures: ["elicitation"]
|
|
44
45
|
},
|
|
45
46
|
read_file: {
|
|
46
47
|
factory: (services) => (0, import_read_file_tool.createReadFileTool)(services.fileSystemService),
|
|
@@ -63,8 +64,8 @@ const INTERNAL_TOOL_REGISTRY = {
|
|
|
63
64
|
requiredServices: ["fileSystemService"]
|
|
64
65
|
},
|
|
65
66
|
bash_exec: {
|
|
66
|
-
factory: (services) => (0, import_bash_exec_tool.createBashExecTool)(services.processService
|
|
67
|
-
requiredServices: ["processService"
|
|
67
|
+
factory: (services) => (0, import_bash_exec_tool.createBashExecTool)(services.processService),
|
|
68
|
+
requiredServices: ["processService"]
|
|
68
69
|
},
|
|
69
70
|
bash_output: {
|
|
70
71
|
factory: (services) => (0, import_bash_output_tool.createBashOutputTool)(services.processService),
|