@dexto/core 1.3.0 → 1.5.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 +53 -9
- package/dist/agent/DextoAgent.cjs +570 -210
- package/dist/agent/DextoAgent.d.ts +175 -35
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +568 -208
- 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.cjs +4 -1
- package/dist/agent/index.d.ts +2 -2
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +6 -2
- package/dist/agent/schemas.cjs +90 -68
- package/dist/agent/schemas.d.ts +5998 -146
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +90 -65
- 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 -10
- 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 +234 -4
- package/dist/approval/manager.d.ts +131 -4
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +225 -5
- package/dist/approval/schemas.cjs +57 -7
- package/dist/approval/schemas.d.ts +344 -33
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +54 -8
- package/dist/approval/types.cjs +1 -0
- package/dist/approval/types.d.ts +32 -1
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +2 -1
- package/dist/{chunk-C6A6W6XS.js → chunk-PTJYTZNU.js} +44 -1
- package/dist/context/compaction/factory.cjs +57 -0
- package/dist/context/compaction/factory.d.ts +17 -0
- package/dist/context/compaction/factory.d.ts.map +1 -0
- package/dist/context/compaction/factory.js +34 -0
- package/dist/context/compaction/index.cjs +49 -0
- package/dist/context/compaction/index.d.ts +11 -0
- package/dist/context/compaction/index.d.ts.map +1 -0
- package/dist/context/compaction/index.js +19 -0
- package/dist/context/compaction/overflow.cjs +43 -0
- package/dist/context/compaction/overflow.d.ts +33 -0
- package/dist/context/compaction/overflow.d.ts.map +1 -0
- package/dist/context/compaction/overflow.js +19 -0
- package/dist/context/compaction/provider.cjs +16 -0
- package/dist/context/compaction/provider.d.ts +48 -0
- package/dist/context/compaction/provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/noop-provider.cjs +48 -0
- package/dist/context/compaction/providers/noop-provider.d.ts +24 -0
- package/dist/context/compaction/providers/noop-provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/noop-provider.js +24 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.cjs +61 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts +36 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.d.ts.map +1 -0
- package/dist/context/compaction/providers/reactive-overflow-provider.js +37 -0
- package/dist/{llm/tokenizer/factory.cjs → context/compaction/registry.cjs} +15 -20
- package/dist/context/compaction/registry.d.ts +19 -0
- package/dist/context/compaction/registry.d.ts.map +1 -0
- package/dist/context/compaction/registry.js +16 -0
- package/dist/context/compaction/schemas.cjs +38 -0
- package/dist/context/compaction/schemas.d.ts +24 -0
- package/dist/context/compaction/schemas.d.ts.map +1 -0
- package/dist/context/compaction/schemas.js +14 -0
- package/dist/{llm/tokenizer/types.cjs → context/compaction/strategies/noop.cjs} +12 -9
- package/dist/context/compaction/strategies/noop.d.ts +18 -0
- package/dist/context/compaction/strategies/noop.d.ts.map +1 -0
- package/dist/context/compaction/strategies/noop.js +13 -0
- package/dist/context/compaction/strategies/reactive-overflow.cjs +201 -0
- package/dist/context/compaction/strategies/reactive-overflow.d.ts +81 -0
- package/dist/context/compaction/strategies/reactive-overflow.d.ts.map +1 -0
- package/dist/context/compaction/strategies/reactive-overflow.js +178 -0
- package/dist/context/compaction/types.d.ts +20 -0
- package/dist/context/compaction/types.d.ts.map +1 -0
- package/dist/context/error-codes.cjs +7 -0
- package/dist/context/error-codes.d.ts +8 -1
- package/dist/context/error-codes.d.ts.map +1 -1
- package/dist/context/error-codes.js +8 -1
- package/dist/context/errors.cjs +68 -0
- package/dist/context/errors.d.ts +21 -0
- package/dist/context/errors.d.ts.map +1 -1
- package/dist/context/errors.js +69 -1
- package/dist/context/index.cjs +3 -1
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +2 -1
- package/dist/context/manager.cjs +280 -323
- package/dist/context/manager.d.ts +65 -111
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +280 -328
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/types.cjs +49 -0
- package/dist/context/types.d.ts +187 -72
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +35 -0
- package/dist/context/utils.cjs +293 -290
- package/dist/context/utils.d.ts +32 -18
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +293 -290
- 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.cjs +2 -3
- package/dist/errors/result-bridge.d.ts.map +1 -1
- package/dist/errors/result-bridge.js +3 -4
- package/dist/errors/types.js +1 -1
- package/dist/events/index.cjs +18 -1
- package/dist/events/index.d.ts +149 -12
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +19 -2
- package/dist/filesystem/error-codes.js +1 -1
- package/dist/filesystem/errors.js +1 -1
- package/dist/filesystem/filesystem-service.cjs +39 -0
- package/dist/filesystem/filesystem-service.d.ts +32 -0
- package/dist/filesystem/filesystem-service.d.ts.map +1 -1
- package/dist/filesystem/filesystem-service.js +40 -1
- package/dist/filesystem/index.d.ts +1 -1
- package/dist/filesystem/index.d.ts.map +1 -1
- package/dist/filesystem/index.js +1 -1
- package/dist/filesystem/path-validator.cjs +69 -1
- package/dist/filesystem/path-validator.d.ts +43 -2
- package/dist/filesystem/path-validator.d.ts.map +1 -1
- package/dist/filesystem/path-validator.js +70 -2
- package/dist/image/define-image.cjs +146 -0
- package/dist/image/define-image.d.ts +71 -0
- package/dist/image/define-image.d.ts.map +1 -0
- package/dist/image/define-image.js +121 -0
- package/dist/{llm/tokenizer/default.cjs → image/index.cjs} +10 -19
- package/dist/image/index.d.ts +53 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/image/index.js +7 -0
- package/dist/image/types.d.ts +231 -0
- package/dist/image/types.d.ts.map +1 -0
- package/dist/image/types.js +0 -0
- 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.cjs +5 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/llm/error-codes.cjs +1 -1
- package/dist/llm/error-codes.d.ts +1 -1
- package/dist/llm/error-codes.d.ts.map +1 -1
- package/dist/llm/error-codes.js +2 -2
- package/dist/llm/errors.cjs +34 -10
- package/dist/llm/errors.d.ts +23 -11
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +36 -12
- package/dist/llm/executor/stream-processor.cjs +375 -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 +352 -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 +780 -0
- package/dist/llm/executor/turn-executor.d.ts +167 -0
- package/dist/llm/executor/turn-executor.d.ts.map +1 -0
- package/dist/llm/executor/turn-executor.js +711 -0
- package/dist/llm/executor/types.cjs +16 -0
- package/dist/llm/executor/types.d.ts +27 -0
- package/dist/llm/executor/types.d.ts.map +1 -0
- package/dist/llm/executor/types.js +0 -0
- package/dist/llm/formatters/vercel.cjs +26 -188
- 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 +25 -187
- package/dist/llm/index.cjs +18 -1
- package/dist/llm/index.d.ts +2 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +14 -0
- package/dist/llm/providers/local/ai-sdk-adapter.cjs +308 -0
- package/dist/llm/providers/local/ai-sdk-adapter.d.ts +29 -0
- package/dist/llm/providers/local/ai-sdk-adapter.d.ts.map +1 -0
- package/dist/llm/providers/local/ai-sdk-adapter.js +278 -0
- package/dist/llm/providers/local/downloader.cjs +291 -0
- package/dist/llm/providers/local/downloader.d.ts +82 -0
- package/dist/llm/providers/local/downloader.d.ts.map +1 -0
- package/dist/llm/providers/local/downloader.js +251 -0
- package/dist/llm/providers/local/error-codes.cjs +57 -0
- package/dist/llm/providers/local/error-codes.d.ts +66 -0
- package/dist/llm/providers/local/error-codes.d.ts.map +1 -0
- package/dist/llm/providers/local/error-codes.js +34 -0
- package/dist/llm/providers/local/errors.cjs +240 -0
- package/dist/llm/providers/local/errors.d.ts +31 -0
- package/dist/llm/providers/local/errors.d.ts.map +1 -0
- package/dist/llm/providers/local/errors.js +217 -0
- package/dist/llm/providers/local/gpu-detector.cjs +214 -0
- package/dist/llm/providers/local/gpu-detector.d.ts +28 -0
- package/dist/llm/providers/local/gpu-detector.d.ts.map +1 -0
- package/dist/llm/providers/local/gpu-detector.js +178 -0
- package/dist/llm/providers/local/index.cjs +147 -0
- package/dist/llm/providers/local/index.d.ts +21 -0
- package/dist/llm/providers/local/index.d.ts.map +1 -0
- package/dist/llm/providers/local/index.js +126 -0
- package/dist/llm/providers/local/node-llama-provider.cjs +216 -0
- package/dist/llm/providers/local/node-llama-provider.d.ts +90 -0
- package/dist/llm/providers/local/node-llama-provider.d.ts.map +1 -0
- package/dist/llm/providers/local/node-llama-provider.js +176 -0
- package/dist/llm/providers/local/ollama-provider.cjs +230 -0
- package/dist/llm/providers/local/ollama-provider.d.ts +70 -0
- package/dist/llm/providers/local/ollama-provider.d.ts.map +1 -0
- package/dist/llm/providers/local/ollama-provider.js +198 -0
- package/dist/llm/providers/local/registry.cjs +343 -0
- package/dist/llm/providers/local/registry.d.ts +51 -0
- package/dist/llm/providers/local/registry.d.ts.map +1 -0
- package/dist/llm/providers/local/registry.js +312 -0
- package/dist/llm/providers/local/schemas.cjs +169 -0
- package/dist/llm/providers/local/schemas.d.ts +395 -0
- package/dist/llm/providers/local/schemas.d.ts.map +1 -0
- package/dist/llm/providers/local/schemas.js +133 -0
- package/dist/llm/providers/local/types.cjs +16 -0
- package/dist/llm/providers/local/types.d.ts +219 -0
- package/dist/llm/providers/local/types.d.ts.map +1 -0
- package/dist/llm/providers/local/types.js +0 -0
- package/dist/llm/providers/openrouter-model-registry.cjs +350 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts +120 -0
- package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -0
- package/dist/llm/providers/openrouter-model-registry.js +309 -0
- package/dist/llm/registry.cjs +569 -52
- package/dist/llm/registry.d.ts +79 -39
- package/dist/llm/registry.d.ts.map +1 -1
- package/dist/llm/registry.js +564 -49
- package/dist/llm/resolver.cjs +62 -34
- package/dist/llm/resolver.d.ts +3 -3
- package/dist/llm/resolver.d.ts.map +1 -1
- package/dist/llm/resolver.js +69 -38
- package/dist/llm/schemas.cjs +92 -97
- package/dist/llm/schemas.d.ts +162 -39
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +93 -100
- package/dist/llm/services/factory.cjs +88 -103
- package/dist/llm/services/factory.d.ts +17 -4
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +87 -93
- package/dist/llm/services/test-utils.integration.cjs +28 -10
- package/dist/llm/services/test-utils.integration.d.ts +7 -1
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -1
- package/dist/llm/services/test-utils.integration.js +33 -12
- 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 +58 -469
- package/dist/llm/services/vercel.d.ts +39 -21
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +60 -476
- package/dist/llm/types.cjs +11 -4
- package/dist/llm/types.d.ts +9 -9
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +12 -4
- 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.js +1 -1
- 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 +12 -0
- package/dist/mcp/manager.d.ts +17 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +13 -1
- package/dist/mcp/mcp-client.cjs +0 -3
- package/dist/mcp/mcp-client.d.ts.map +1 -1
- package/dist/mcp/mcp-client.js +1 -4
- 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 +3 -3
- 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 +3 -0
- package/dist/plugins/error-codes.d.ts +7 -1
- package/dist/plugins/error-codes.d.ts.map +1 -1
- package/dist/plugins/error-codes.js +4 -1
- package/dist/plugins/index.cjs +7 -0
- package/dist/plugins/index.d.ts +4 -2
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +7 -2
- package/dist/plugins/loader.js +1 -1
- package/dist/plugins/manager.cjs +92 -7
- package/dist/plugins/manager.d.ts +10 -3
- package/dist/plugins/manager.d.ts.map +1 -1
- package/dist/plugins/manager.js +93 -8
- package/dist/plugins/registrations/builtins.js +1 -1
- package/dist/plugins/registry.cjs +63 -0
- package/dist/plugins/registry.d.ts +101 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +39 -0
- package/dist/plugins/schemas.cjs +17 -5
- package/dist/plugins/schemas.d.ts +65 -8
- package/dist/plugins/schemas.d.ts.map +1 -1
- package/dist/plugins/schemas.js +16 -5
- 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.js +1 -1
- 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/providers/base-registry.cjs +147 -0
- package/dist/providers/base-registry.d.ts +147 -0
- package/dist/providers/base-registry.d.ts.map +1 -0
- package/dist/providers/base-registry.js +123 -0
- package/dist/providers/discovery.cjs +95 -0
- package/dist/providers/discovery.d.ts +94 -0
- package/dist/providers/discovery.d.ts.map +1 -0
- package/dist/providers/discovery.js +70 -0
- package/dist/providers/index.cjs +24 -0
- package/dist/providers/index.d.ts +32 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +2 -0
- 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.cjs +3 -3
- package/dist/resources/reference-parser.d.ts.map +1 -1
- package/dist/resources/reference-parser.js +4 -4
- 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 +169 -54
- 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 +171 -56
- 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.cjs +8 -11
- package/dist/storage/blob/factory.d.ts +32 -6
- package/dist/storage/blob/factory.d.ts.map +1 -1
- package/dist/storage/blob/factory.js +9 -12
- package/dist/storage/blob/index.cjs +56 -0
- package/dist/storage/blob/index.d.ts +45 -0
- package/dist/storage/blob/index.d.ts.map +1 -0
- package/dist/storage/blob/index.js +30 -0
- package/dist/storage/blob/local-blob-store.js +1 -1
- package/dist/storage/blob/memory-blob-store.js +1 -1
- package/dist/storage/blob/provider.cjs +16 -0
- package/dist/storage/blob/provider.d.ts +50 -0
- package/dist/storage/blob/provider.d.ts.map +1 -0
- package/dist/storage/blob/provider.js +0 -0
- package/dist/storage/blob/providers/index.cjs +31 -0
- package/dist/storage/blob/providers/index.d.ts +8 -0
- package/dist/storage/blob/providers/index.d.ts.map +1 -0
- package/dist/storage/blob/providers/index.js +7 -0
- package/dist/storage/blob/providers/local.cjs +39 -0
- package/dist/storage/blob/providers/local.d.ts +17 -0
- package/dist/storage/blob/providers/local.d.ts.map +1 -0
- package/dist/storage/blob/providers/local.js +16 -0
- package/dist/storage/blob/providers/memory.cjs +39 -0
- package/dist/storage/blob/providers/memory.d.ts +17 -0
- package/dist/storage/blob/providers/memory.d.ts.map +1 -0
- package/dist/storage/blob/providers/memory.js +16 -0
- package/dist/storage/blob/registry.cjs +50 -0
- package/dist/storage/blob/registry.d.ts +42 -0
- package/dist/storage/blob/registry.d.ts.map +1 -0
- package/dist/storage/blob/registry.js +26 -0
- package/dist/storage/blob/schemas.cjs +9 -12
- package/dist/storage/blob/schemas.d.ts +39 -34
- package/dist/storage/blob/schemas.d.ts.map +1 -1
- package/dist/storage/blob/schemas.js +7 -12
- package/dist/storage/cache/factory.cjs +8 -36
- package/dist/storage/cache/factory.d.ts +32 -7
- package/dist/storage/cache/factory.d.ts.map +1 -1
- package/dist/storage/cache/factory.js +9 -27
- package/dist/storage/cache/index.cjs +53 -0
- package/dist/storage/cache/index.d.ts +44 -0
- package/dist/storage/cache/index.d.ts.map +1 -0
- package/dist/storage/cache/index.js +28 -0
- package/dist/storage/cache/memory-cache-store.js +1 -1
- package/dist/storage/cache/provider.cjs +16 -0
- package/dist/storage/cache/provider.d.ts +56 -0
- package/dist/storage/cache/provider.d.ts.map +1 -0
- package/dist/storage/cache/provider.js +0 -0
- package/dist/storage/cache/providers/index.cjs +31 -0
- package/dist/storage/cache/providers/index.d.ts +8 -0
- package/dist/storage/cache/providers/index.d.ts.map +1 -0
- package/dist/storage/cache/providers/index.js +7 -0
- package/dist/storage/cache/providers/memory.cjs +40 -0
- package/dist/storage/cache/providers/memory.d.ts +17 -0
- package/dist/storage/cache/providers/memory.d.ts.map +1 -0
- package/dist/storage/cache/providers/memory.js +17 -0
- package/dist/storage/cache/providers/redis.cjs +66 -0
- package/dist/storage/cache/providers/redis.d.ts +20 -0
- package/dist/storage/cache/providers/redis.d.ts.map +1 -0
- package/dist/storage/cache/providers/redis.js +33 -0
- package/dist/storage/cache/redis-store.js +1 -1
- package/dist/{llm/tokenizer/google.cjs → storage/cache/registry.cjs} +23 -25
- package/dist/storage/cache/registry.d.ts +42 -0
- package/dist/storage/cache/registry.d.ts.map +1 -0
- package/dist/storage/cache/registry.js +26 -0
- package/dist/storage/cache/schemas.cjs +6 -2
- package/dist/storage/cache/schemas.d.ts +2 -3
- package/dist/storage/cache/schemas.d.ts.map +1 -1
- package/dist/storage/cache/schemas.js +4 -2
- package/dist/storage/database/factory.cjs +8 -47
- package/dist/storage/database/factory.d.ts +34 -8
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +9 -38
- package/dist/storage/database/index.cjs +58 -0
- package/dist/storage/database/index.d.ts +45 -0
- package/dist/storage/database/index.d.ts.map +1 -0
- package/dist/storage/database/index.js +37 -0
- 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/provider.cjs +16 -0
- package/dist/storage/database/provider.d.ts +56 -0
- package/dist/storage/database/provider.d.ts.map +1 -0
- package/dist/storage/database/provider.js +0 -0
- package/dist/storage/database/providers/index.cjs +34 -0
- package/dist/storage/database/providers/index.d.ts +9 -0
- package/dist/storage/database/providers/index.d.ts.map +1 -0
- package/dist/storage/database/providers/index.js +9 -0
- package/dist/storage/database/providers/memory.cjs +40 -0
- package/dist/storage/database/providers/memory.d.ts +16 -0
- package/dist/storage/database/providers/memory.d.ts.map +1 -0
- package/dist/storage/database/providers/memory.js +17 -0
- package/dist/storage/database/providers/postgres.cjs +62 -0
- package/dist/storage/database/providers/postgres.d.ts +19 -0
- package/dist/storage/database/providers/postgres.d.ts.map +1 -0
- package/dist/storage/database/providers/postgres.js +29 -0
- package/dist/storage/database/providers/sqlite.cjs +66 -0
- package/dist/storage/database/providers/sqlite.d.ts +20 -0
- package/dist/storage/database/providers/sqlite.d.ts.map +1 -0
- package/dist/storage/database/providers/sqlite.js +33 -0
- package/dist/storage/database/registry.cjs +50 -0
- package/dist/storage/database/registry.d.ts +42 -0
- package/dist/storage/database/registry.d.ts.map +1 -0
- package/dist/storage/database/registry.js +26 -0
- package/dist/storage/database/schemas.cjs +8 -2
- package/dist/storage/database/schemas.d.ts +3 -4
- package/dist/storage/database/schemas.d.ts.map +1 -1
- package/dist/storage/database/schemas.js +5 -2
- package/dist/storage/database/sqlite-store.js +1 -1
- package/dist/storage/error-codes.cjs +6 -0
- package/dist/storage/error-codes.d.ts +7 -1
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +7 -1
- package/dist/storage/errors.cjs +80 -0
- package/dist/storage/errors.d.ts +24 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +81 -1
- package/dist/storage/index.cjs +47 -4
- package/dist/storage/index.d.ts +34 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +33 -4
- package/dist/storage/schemas.cjs +4 -0
- package/dist/storage/schemas.d.ts +17 -50
- package/dist/storage/schemas.d.ts.map +1 -1
- package/dist/storage/schemas.js +6 -2
- package/dist/storage/storage-manager.cjs +6 -6
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +4 -4
- 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.cjs +7 -6
- package/dist/systemPrompt/in-built-prompts.d.ts +2 -2
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -1
- package/dist/systemPrompt/in-built-prompts.js +7 -6
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.cjs +2 -2
- package/dist/systemPrompt/registry.d.ts +1 -1
- package/dist/systemPrompt/registry.d.ts.map +1 -1
- package/dist/systemPrompt/registry.js +3 -3
- package/dist/systemPrompt/schemas.cjs +2 -2
- package/dist/systemPrompt/schemas.d.ts +18 -18
- package/dist/systemPrompt/schemas.js +3 -3
- package/dist/telemetry/decorators.js +1 -1
- package/dist/telemetry/error-codes.js +1 -1
- package/dist/telemetry/errors.js +1 -1
- 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.js +1 -1
- 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/custom-tool-registry.cjs +64 -0
- package/dist/tools/custom-tool-registry.d.ts +120 -0
- package/dist/tools/custom-tool-registry.d.ts.map +1 -0
- package/dist/tools/custom-tool-registry.js +40 -0
- package/dist/tools/custom-tool-schema-registry.cjs +164 -0
- package/dist/tools/custom-tool-schema-registry.d.ts +86 -0
- package/dist/tools/custom-tool-schema-registry.d.ts.map +1 -0
- package/dist/tools/custom-tool-schema-registry.js +140 -0
- 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 +5 -0
- package/dist/tools/error-codes.d.ts +6 -1
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +6 -1
- package/dist/tools/errors.cjs +71 -0
- package/dist/tools/errors.d.ts +33 -0
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +72 -1
- package/dist/tools/index.cjs +15 -1
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +13 -2
- package/dist/tools/internal-tools/constants.cjs +3 -9
- package/dist/tools/internal-tools/constants.d.ts +1 -1
- package/dist/tools/internal-tools/constants.d.ts.map +1 -1
- package/dist/tools/internal-tools/constants.js +4 -10
- 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/delegate-to-url-tool.js +1 -1
- package/dist/tools/internal-tools/implementations/get-resource-tool.cjs +113 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts +30 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/get-resource-tool.js +90 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.cjs +91 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts +24 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/list-resources-tool.js +68 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -1
- package/dist/tools/internal-tools/provider.cjs +175 -31
- package/dist/tools/internal-tools/provider.d.ts +62 -14
- package/dist/tools/internal-tools/provider.d.ts.map +1 -1
- package/dist/tools/internal-tools/provider.js +176 -32
- package/dist/tools/internal-tools/registry.cjs +19 -43
- package/dist/tools/internal-tools/registry.d.ts +32 -11
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +20 -44
- package/dist/tools/schemas.cjs +36 -6
- package/dist/tools/schemas.d.ts +74 -5
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +30 -6
- package/dist/tools/tool-manager.cjs +279 -30
- package/dist/tools/tool-manager.d.ts +45 -4
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +284 -31
- package/dist/tools/types.d.ts +63 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.cjs +19 -1
- package/dist/utils/api-key-resolver.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +20 -2
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/{llm/tokenizer/anthropic.cjs → utils/defer.cjs} +19 -20
- 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/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 -3
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.cjs +18 -3
- package/dist/utils/redactor.d.ts +0 -7
- package/dist/utils/redactor.d.ts.map +1 -1
- package/dist/utils/redactor.js +19 -4
- 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.js +1 -1
- package/dist/utils/service-initializer.cjs +15 -37
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +16 -38
- package/dist/utils/user-info.js +1 -1
- package/dist/utils/zod-schema-converter.js +1 -1
- package/package.json +10 -8
- 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/context/compression/types.d.ts +0 -18
- package/dist/context/compression/types.d.ts.map +0 -1
- 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 -203
- 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 -184
- 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.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.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 -41
- 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/tools/internal-tools/implementations/bash-exec-tool.cjs +0 -106
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +0 -13
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +0 -73
- package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +0 -49
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +0 -26
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +0 -62
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +0 -39
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +0 -57
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +0 -34
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +0 -71
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +0 -48
- package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +0 -47
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +0 -24
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +0 -55
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/read-file-tool.js +0 -32
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +0 -56
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +0 -12
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +0 -1
- package/dist/tools/internal-tools/implementations/write-file-tool.js +0 -33
- package/dist/utils/env-file.cjs +0 -118
- package/dist/utils/env-file.d.ts +0 -5
- package/dist/utils/env-file.d.ts.map +0 -1
- package/dist/utils/env-file.js +0 -85
- /package/dist/context/{compression/types.js → compaction/provider.js} +0 -0
- /package/dist/context/{compression → compaction}/types.cjs +0 -0
- /package/dist/{llm/formatters → context/compaction}/types.js +0 -0
- /package/dist/{llm/formatters → image}/types.cjs +0 -0
|
@@ -2,13 +2,20 @@ import {
|
|
|
2
2
|
__decorateElement,
|
|
3
3
|
__decoratorStart,
|
|
4
4
|
__runInitializers
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-PTJYTZNU.js";
|
|
6
6
|
var _ToolManager_decorators, _init;
|
|
7
7
|
import { InternalToolsProvider } from "./internal-tools/provider.js";
|
|
8
8
|
import { ToolError } from "./errors.js";
|
|
9
|
+
import { ToolErrorCode } from "./error-codes.js";
|
|
10
|
+
import { DextoRuntimeError } from "../errors/index.js";
|
|
9
11
|
import { DextoLogComponent } from "../logger/v2/types.js";
|
|
10
12
|
import { ApprovalStatus } from "../approval/types.js";
|
|
11
13
|
import { InstrumentClass } from "../telemetry/decorators.js";
|
|
14
|
+
import {
|
|
15
|
+
generateBashPatternKey,
|
|
16
|
+
generateBashPatternSuggestions,
|
|
17
|
+
isDangerousCommand
|
|
18
|
+
} from "./bash-pattern-utils.js";
|
|
12
19
|
_ToolManager_decorators = [InstrumentClass({
|
|
13
20
|
prefix: "tool",
|
|
14
21
|
excludeMethods: [
|
|
@@ -33,6 +40,7 @@ let _ToolManager = class _ToolManager {
|
|
|
33
40
|
// Tool source prefixing - ALL tools get prefixed by source
|
|
34
41
|
static MCP_TOOL_PREFIX = "mcp--";
|
|
35
42
|
static INTERNAL_TOOL_PREFIX = "internal--";
|
|
43
|
+
static CUSTOM_TOOL_PREFIX = "custom--";
|
|
36
44
|
// Tool caching for performance
|
|
37
45
|
toolsCache = {};
|
|
38
46
|
cacheValid = false;
|
|
@@ -45,11 +53,15 @@ let _ToolManager = class _ToolManager {
|
|
|
45
53
|
this.agentEventBus = agentEventBus;
|
|
46
54
|
this.toolPolicies = toolPolicies;
|
|
47
55
|
this.logger = logger.createChild(DextoLogComponent.TOOLS);
|
|
48
|
-
if (options?.internalToolsConfig && options.internalToolsConfig.length > 0) {
|
|
56
|
+
if (options?.internalToolsConfig && options.internalToolsConfig.length > 0 || options?.customToolsConfig && options.customToolsConfig.length > 0) {
|
|
57
|
+
const internalToolsServices = {
|
|
58
|
+
...options.internalToolsServices,
|
|
59
|
+
approvalManager
|
|
60
|
+
};
|
|
49
61
|
this.internalToolsProvider = new InternalToolsProvider(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
options.
|
|
62
|
+
internalToolsServices,
|
|
63
|
+
options.internalToolsConfig || [],
|
|
64
|
+
options.customToolsConfig || [],
|
|
53
65
|
this.logger
|
|
54
66
|
);
|
|
55
67
|
}
|
|
@@ -74,6 +86,16 @@ let _ToolManager = class _ToolManager {
|
|
|
74
86
|
this.stateManager = stateManager;
|
|
75
87
|
this.logger.debug("Plugin support configured for ToolManager");
|
|
76
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Set agent reference for custom tools (called after construction to avoid circular dependencies)
|
|
91
|
+
* Must be called before initialize() if custom tools are configured
|
|
92
|
+
*/
|
|
93
|
+
setAgent(agent) {
|
|
94
|
+
if (this.internalToolsProvider) {
|
|
95
|
+
this.internalToolsProvider.setAgent(agent);
|
|
96
|
+
this.logger.debug("Agent reference configured for custom tools");
|
|
97
|
+
}
|
|
98
|
+
}
|
|
77
99
|
/**
|
|
78
100
|
* Invalidate the tools cache when tool sources change
|
|
79
101
|
*/
|
|
@@ -100,6 +122,37 @@ let _ToolManager = class _ToolManager {
|
|
|
100
122
|
this.invalidateCache();
|
|
101
123
|
});
|
|
102
124
|
}
|
|
125
|
+
// ==================== Bash Pattern Approval Helpers ====================
|
|
126
|
+
/**
|
|
127
|
+
* Check if a tool name represents a bash execution tool
|
|
128
|
+
*/
|
|
129
|
+
isBashTool(toolName) {
|
|
130
|
+
return toolName === "bash_exec" || toolName === "internal--bash_exec" || toolName === "custom--bash_exec";
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if a bash command is covered by any approved pattern.
|
|
134
|
+
* Generates a pattern key from the command, then checks if it's covered by stored patterns.
|
|
135
|
+
*
|
|
136
|
+
* Returns approval info if covered, or pattern suggestions if not.
|
|
137
|
+
*/
|
|
138
|
+
checkBashPatternApproval(command) {
|
|
139
|
+
const patternKey = generateBashPatternKey(command);
|
|
140
|
+
if (!patternKey) {
|
|
141
|
+
if (isDangerousCommand(command)) {
|
|
142
|
+
this.logger.debug(
|
|
143
|
+
`Skipping pattern generation for dangerous command: ${command.split(/\s+/)[0]}`
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
return { approved: false, suggestedPatterns: [] };
|
|
147
|
+
}
|
|
148
|
+
if (this.approvalManager.matchesBashPattern(patternKey)) {
|
|
149
|
+
return { approved: true };
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
approved: false,
|
|
153
|
+
suggestedPatterns: generateBashPatternSuggestions(command)
|
|
154
|
+
};
|
|
155
|
+
}
|
|
103
156
|
getMcpManager() {
|
|
104
157
|
return this.mcpManager;
|
|
105
158
|
}
|
|
@@ -128,6 +181,7 @@ let _ToolManager = class _ToolManager {
|
|
|
128
181
|
const allTools = {};
|
|
129
182
|
let mcpTools = {};
|
|
130
183
|
let internalTools = {};
|
|
184
|
+
let customTools = {};
|
|
131
185
|
try {
|
|
132
186
|
mcpTools = await this.mcpManager.getAllTools();
|
|
133
187
|
} catch (error) {
|
|
@@ -137,13 +191,21 @@ let _ToolManager = class _ToolManager {
|
|
|
137
191
|
mcpTools = {};
|
|
138
192
|
}
|
|
139
193
|
try {
|
|
140
|
-
internalTools = this.internalToolsProvider?.
|
|
194
|
+
internalTools = this.internalToolsProvider?.getInternalTools() || {};
|
|
141
195
|
} catch (error) {
|
|
142
196
|
this.logger.error(
|
|
143
197
|
`Failed to get internal tools: ${error instanceof Error ? error.message : String(error)}`
|
|
144
198
|
);
|
|
145
199
|
internalTools = {};
|
|
146
200
|
}
|
|
201
|
+
try {
|
|
202
|
+
customTools = this.internalToolsProvider?.getCustomTools() || {};
|
|
203
|
+
} catch (error) {
|
|
204
|
+
this.logger.error(
|
|
205
|
+
`Failed to get custom tools: ${error instanceof Error ? error.message : String(error)}`
|
|
206
|
+
);
|
|
207
|
+
customTools = {};
|
|
208
|
+
}
|
|
147
209
|
for (const [toolName, toolDef] of Object.entries(internalTools)) {
|
|
148
210
|
const qualifiedName = `${_ToolManager.INTERNAL_TOOL_PREFIX}${toolName}`;
|
|
149
211
|
allTools[qualifiedName] = {
|
|
@@ -152,6 +214,14 @@ let _ToolManager = class _ToolManager {
|
|
|
152
214
|
description: `${toolDef.description || "No description provided"} (internal tool)`
|
|
153
215
|
};
|
|
154
216
|
}
|
|
217
|
+
for (const [toolName, toolDef] of Object.entries(customTools)) {
|
|
218
|
+
const qualifiedName = `${_ToolManager.CUSTOM_TOOL_PREFIX}${toolName}`;
|
|
219
|
+
allTools[qualifiedName] = {
|
|
220
|
+
...toolDef,
|
|
221
|
+
name: qualifiedName,
|
|
222
|
+
description: `${toolDef.description || "No description provided"} (custom tool)`
|
|
223
|
+
};
|
|
224
|
+
}
|
|
155
225
|
for (const [toolName, toolDef] of Object.entries(mcpTools)) {
|
|
156
226
|
const qualifiedName = `${_ToolManager.MCP_TOOL_PREFIX}${toolName}`;
|
|
157
227
|
allTools[qualifiedName] = {
|
|
@@ -163,8 +233,9 @@ let _ToolManager = class _ToolManager {
|
|
|
163
233
|
const totalTools = Object.keys(allTools).length;
|
|
164
234
|
const mcpCount = Object.keys(mcpTools).length;
|
|
165
235
|
const internalCount = Object.keys(internalTools).length;
|
|
236
|
+
const customCount = Object.keys(customTools).length;
|
|
166
237
|
this.logger.debug(
|
|
167
|
-
`\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP
|
|
238
|
+
`\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP, ${internalCount} internal, ${customCount} custom)`
|
|
168
239
|
);
|
|
169
240
|
return allTools;
|
|
170
241
|
}
|
|
@@ -184,15 +255,41 @@ let _ToolManager = class _ToolManager {
|
|
|
184
255
|
/**
|
|
185
256
|
* Execute a tool by routing based on universal prefix
|
|
186
257
|
* ALL tools must have source prefix - no exceptions
|
|
258
|
+
*
|
|
259
|
+
* @param toolName The fully qualified tool name (e.g., "internal--edit_file")
|
|
260
|
+
* @param args The arguments for the tool
|
|
261
|
+
* @param toolCallId The unique tool call ID for tracking (from LLM or generated for direct calls)
|
|
262
|
+
* @param sessionId Optional session ID for context
|
|
263
|
+
* @param abortSignal Optional abort signal for cancellation support
|
|
187
264
|
*/
|
|
188
|
-
async executeTool(toolName, args, sessionId) {
|
|
189
|
-
this.logger.debug(`\u{1F527} Tool execution requested: '${toolName}'`);
|
|
265
|
+
async executeTool(toolName, args, toolCallId, sessionId, abortSignal) {
|
|
266
|
+
this.logger.debug(`\u{1F527} Tool execution requested: '${toolName}' (toolCallId: ${toolCallId})`);
|
|
190
267
|
this.logger.debug(`Tool args: ${JSON.stringify(args, null, 2)}`);
|
|
191
|
-
|
|
268
|
+
if (sessionId) {
|
|
269
|
+
this.agentEventBus.emit("llm:tool-call", {
|
|
270
|
+
toolName,
|
|
271
|
+
args,
|
|
272
|
+
callId: toolCallId,
|
|
273
|
+
sessionId
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
const { requireApproval, approvalStatus } = await this.handleToolApproval(
|
|
277
|
+
toolName,
|
|
278
|
+
args,
|
|
279
|
+
toolCallId,
|
|
280
|
+
sessionId
|
|
281
|
+
);
|
|
192
282
|
this.logger.debug(`\u2705 Tool execution approved: ${toolName}`);
|
|
193
283
|
this.logger.info(
|
|
194
284
|
`\u{1F527} Tool execution started for ${toolName}, sessionId: ${sessionId ?? "global"}`
|
|
195
285
|
);
|
|
286
|
+
if (sessionId) {
|
|
287
|
+
this.agentEventBus.emit("tool:running", {
|
|
288
|
+
toolName,
|
|
289
|
+
toolCallId,
|
|
290
|
+
sessionId
|
|
291
|
+
});
|
|
292
|
+
}
|
|
196
293
|
const startTime = Date.now();
|
|
197
294
|
if (this.pluginManager && this.sessionManager && this.stateManager) {
|
|
198
295
|
const beforePayload = {
|
|
@@ -236,16 +333,33 @@ let _ToolManager = class _ToolManager {
|
|
|
236
333
|
result = await this.internalToolsProvider.executeTool(
|
|
237
334
|
actualToolName,
|
|
238
335
|
args,
|
|
239
|
-
sessionId
|
|
336
|
+
sessionId,
|
|
337
|
+
abortSignal
|
|
338
|
+
);
|
|
339
|
+
} else if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
|
|
340
|
+
this.logger.debug(`\u{1F527} Detected custom tool: '${toolName}'`);
|
|
341
|
+
const actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
|
|
342
|
+
if (actualToolName.length === 0) {
|
|
343
|
+
throw ToolError.invalidName(toolName, "tool name cannot be empty after prefix");
|
|
344
|
+
}
|
|
345
|
+
if (!this.internalToolsProvider) {
|
|
346
|
+
throw ToolError.internalToolsNotInitialized(toolName);
|
|
347
|
+
}
|
|
348
|
+
this.logger.debug(`\u{1F3AF} Custom routing: '${toolName}' -> '${actualToolName}'`);
|
|
349
|
+
result = await this.internalToolsProvider.executeTool(
|
|
350
|
+
actualToolName,
|
|
351
|
+
args,
|
|
352
|
+
sessionId,
|
|
353
|
+
abortSignal
|
|
240
354
|
);
|
|
241
355
|
} else {
|
|
242
356
|
this.logger.debug(`\u{1F527} Detected tool without proper prefix: '${toolName}'`);
|
|
243
357
|
const stats = await this.getToolStats();
|
|
244
358
|
this.logger.error(
|
|
245
|
-
`\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*' or '${_ToolManager.
|
|
359
|
+
`\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*', '${_ToolManager.INTERNAL_TOOL_PREFIX}*', or '${_ToolManager.CUSTOM_TOOL_PREFIX}*')`
|
|
246
360
|
);
|
|
247
361
|
this.logger.debug(
|
|
248
|
-
`Available: ${stats.mcp} MCP
|
|
362
|
+
`Available: ${stats.mcp} MCP, ${stats.internal} internal, ${stats.custom} custom tools`
|
|
249
363
|
);
|
|
250
364
|
throw ToolError.notFound(toolName);
|
|
251
365
|
}
|
|
@@ -274,7 +388,10 @@ let _ToolManager = class _ToolManager {
|
|
|
274
388
|
);
|
|
275
389
|
result = modifiedPayload.result;
|
|
276
390
|
}
|
|
277
|
-
return
|
|
391
|
+
return {
|
|
392
|
+
result,
|
|
393
|
+
...requireApproval && { requireApproval, approvalStatus }
|
|
394
|
+
};
|
|
278
395
|
} catch (error) {
|
|
279
396
|
const duration = Date.now() - startTime;
|
|
280
397
|
this.logger.error(
|
|
@@ -308,7 +425,11 @@ let _ToolManager = class _ToolManager {
|
|
|
308
425
|
}
|
|
309
426
|
if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
|
|
310
427
|
const actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
|
|
311
|
-
return this.internalToolsProvider?.
|
|
428
|
+
return this.internalToolsProvider?.hasInternalTool(actualToolName) ?? false;
|
|
429
|
+
}
|
|
430
|
+
if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
|
|
431
|
+
const actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
|
|
432
|
+
return this.internalToolsProvider?.hasCustomTool(actualToolName) ?? false;
|
|
312
433
|
}
|
|
313
434
|
return false;
|
|
314
435
|
}
|
|
@@ -318,6 +439,7 @@ let _ToolManager = class _ToolManager {
|
|
|
318
439
|
async getToolStats() {
|
|
319
440
|
let mcpTools = {};
|
|
320
441
|
let internalTools = {};
|
|
442
|
+
let customTools = {};
|
|
321
443
|
try {
|
|
322
444
|
mcpTools = await this.mcpManager.getAllTools();
|
|
323
445
|
} catch (error) {
|
|
@@ -327,24 +449,33 @@ let _ToolManager = class _ToolManager {
|
|
|
327
449
|
mcpTools = {};
|
|
328
450
|
}
|
|
329
451
|
try {
|
|
330
|
-
internalTools = this.internalToolsProvider?.
|
|
452
|
+
internalTools = this.internalToolsProvider?.getInternalTools() || {};
|
|
331
453
|
} catch (error) {
|
|
332
454
|
this.logger.error(
|
|
333
455
|
`Failed to get internal tools for stats: ${error instanceof Error ? error.message : String(error)}`
|
|
334
456
|
);
|
|
335
457
|
internalTools = {};
|
|
336
458
|
}
|
|
459
|
+
try {
|
|
460
|
+
customTools = this.internalToolsProvider?.getCustomTools() || {};
|
|
461
|
+
} catch (error) {
|
|
462
|
+
this.logger.error(
|
|
463
|
+
`Failed to get custom tools for stats: ${error instanceof Error ? error.message : String(error)}`
|
|
464
|
+
);
|
|
465
|
+
customTools = {};
|
|
466
|
+
}
|
|
337
467
|
const mcpCount = Object.keys(mcpTools).length;
|
|
338
468
|
const internalCount = Object.keys(internalTools).length;
|
|
469
|
+
const customCount = Object.keys(customTools).length;
|
|
339
470
|
return {
|
|
340
|
-
total: mcpCount + internalCount,
|
|
341
|
-
// No conflicts with universal prefixing
|
|
471
|
+
total: mcpCount + internalCount + customCount,
|
|
342
472
|
mcp: mcpCount,
|
|
343
|
-
internal: internalCount
|
|
473
|
+
internal: internalCount,
|
|
474
|
+
custom: customCount
|
|
344
475
|
};
|
|
345
476
|
}
|
|
346
477
|
/**
|
|
347
|
-
* Get the source of a tool (mcp, internal, or unknown)
|
|
478
|
+
* Get the source of a tool (mcp, internal, custom, or unknown)
|
|
348
479
|
* @param toolName The name of the tool to check
|
|
349
480
|
* @returns The source of the tool
|
|
350
481
|
*/
|
|
@@ -355,6 +486,9 @@ let _ToolManager = class _ToolManager {
|
|
|
355
486
|
if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX) && toolName.length > _ToolManager.INTERNAL_TOOL_PREFIX.length) {
|
|
356
487
|
return "internal";
|
|
357
488
|
}
|
|
489
|
+
if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX) && toolName.length > _ToolManager.CUSTOM_TOOL_PREFIX.length) {
|
|
490
|
+
return "custom";
|
|
491
|
+
}
|
|
358
492
|
return "unknown";
|
|
359
493
|
}
|
|
360
494
|
/**
|
|
@@ -410,12 +544,73 @@ let _ToolManager = class _ToolManager {
|
|
|
410
544
|
(pattern) => this.matchesToolPolicy(toolName, pattern)
|
|
411
545
|
);
|
|
412
546
|
}
|
|
547
|
+
/**
|
|
548
|
+
* Check if a tool has a custom approval override and handle it.
|
|
549
|
+
* Tools can implement getApprovalOverride() to request specialized approval flows
|
|
550
|
+
* (e.g., directory access approval for file tools) instead of default tool confirmation.
|
|
551
|
+
*
|
|
552
|
+
* @param toolName The fully qualified tool name
|
|
553
|
+
* @param args The tool arguments
|
|
554
|
+
* @param sessionId Optional session ID
|
|
555
|
+
* @returns { handled: true } if custom approval was processed, { handled: false } to continue normal flow
|
|
556
|
+
*/
|
|
557
|
+
async checkCustomApprovalOverride(toolName, args, sessionId) {
|
|
558
|
+
let actualToolName;
|
|
559
|
+
if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
|
|
560
|
+
actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
|
|
561
|
+
} else if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
|
|
562
|
+
actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
|
|
563
|
+
}
|
|
564
|
+
if (!actualToolName || !this.internalToolsProvider) {
|
|
565
|
+
return { handled: false };
|
|
566
|
+
}
|
|
567
|
+
const tool = this.internalToolsProvider.getTool(actualToolName);
|
|
568
|
+
if (!tool?.getApprovalOverride) {
|
|
569
|
+
return { handled: false };
|
|
570
|
+
}
|
|
571
|
+
const approvalRequest = tool.getApprovalOverride(args);
|
|
572
|
+
if (!approvalRequest) {
|
|
573
|
+
return { handled: false };
|
|
574
|
+
}
|
|
575
|
+
this.logger.debug(
|
|
576
|
+
`Tool '${toolName}' requested custom approval: type=${approvalRequest.type}`
|
|
577
|
+
);
|
|
578
|
+
if (sessionId && !approvalRequest.sessionId) {
|
|
579
|
+
approvalRequest.sessionId = sessionId;
|
|
580
|
+
}
|
|
581
|
+
const response = await this.approvalManager.requestApproval(approvalRequest);
|
|
582
|
+
if (response.status === ApprovalStatus.APPROVED) {
|
|
583
|
+
if (tool.onApprovalGranted) {
|
|
584
|
+
tool.onApprovalGranted(response);
|
|
585
|
+
}
|
|
586
|
+
this.logger.info(
|
|
587
|
+
`Custom approval granted for '${toolName}', type=${approvalRequest.type}, session=${sessionId ?? "global"}`
|
|
588
|
+
);
|
|
589
|
+
return { handled: true };
|
|
590
|
+
}
|
|
591
|
+
this.logger.info(
|
|
592
|
+
`Custom approval denied for '${toolName}', type=${approvalRequest.type}, reason=${response.reason ?? "unknown"}`
|
|
593
|
+
);
|
|
594
|
+
if (approvalRequest.type === "directory_access") {
|
|
595
|
+
const metadata = approvalRequest.metadata;
|
|
596
|
+
throw ToolError.directoryAccessDenied(
|
|
597
|
+
metadata?.parentDir ?? "unknown directory",
|
|
598
|
+
sessionId
|
|
599
|
+
);
|
|
600
|
+
}
|
|
601
|
+
throw ToolError.executionDenied(toolName, sessionId);
|
|
602
|
+
}
|
|
413
603
|
/**
|
|
414
604
|
* Handle tool approval/confirmation flow
|
|
415
605
|
* Checks allowed list, manages approval modes (manual, auto-approve, auto-deny),
|
|
416
606
|
* and handles remember choice logic
|
|
607
|
+
*
|
|
608
|
+
* @param toolName The fully qualified tool name
|
|
609
|
+
* @param args The arguments for the tool
|
|
610
|
+
* @param toolCallId The unique tool call ID for tracking parallel tool calls
|
|
611
|
+
* @param sessionId Optional session ID for context
|
|
417
612
|
*/
|
|
418
|
-
async handleToolApproval(toolName, args, sessionId) {
|
|
613
|
+
async handleToolApproval(toolName, args, toolCallId, sessionId) {
|
|
419
614
|
if (this.isInAlwaysDenyList(toolName)) {
|
|
420
615
|
this.logger.info(
|
|
421
616
|
`Tool '${toolName}' is in static deny list \u2013 blocking execution (session: ${sessionId ?? "global"})`
|
|
@@ -423,22 +618,43 @@ let _ToolManager = class _ToolManager {
|
|
|
423
618
|
this.logger.debug(`\u{1F6AB} Tool execution blocked by policy: ${toolName}`);
|
|
424
619
|
throw ToolError.executionDenied(toolName, sessionId);
|
|
425
620
|
}
|
|
621
|
+
const customApprovalResult = await this.checkCustomApprovalOverride(
|
|
622
|
+
toolName,
|
|
623
|
+
args,
|
|
624
|
+
sessionId
|
|
625
|
+
);
|
|
626
|
+
if (customApprovalResult.handled) {
|
|
627
|
+
return { requireApproval: true, approvalStatus: "approved" };
|
|
628
|
+
}
|
|
426
629
|
if (this.isInAlwaysAllowList(toolName)) {
|
|
427
630
|
this.logger.info(
|
|
428
631
|
`Tool '${toolName}' is in static allow list \u2013 skipping confirmation (session: ${sessionId ?? "global"})`
|
|
429
632
|
);
|
|
430
|
-
return;
|
|
633
|
+
return { requireApproval: false };
|
|
431
634
|
}
|
|
432
635
|
const isAllowed = await this.allowedToolsProvider.isToolAllowed(toolName, sessionId);
|
|
433
636
|
if (isAllowed) {
|
|
434
637
|
this.logger.info(
|
|
435
638
|
`Tool '${toolName}' already allowed for session '${sessionId ?? "global"}' \u2013 skipping confirmation.`
|
|
436
639
|
);
|
|
437
|
-
return;
|
|
640
|
+
return { requireApproval: false };
|
|
641
|
+
}
|
|
642
|
+
let bashPatternResult;
|
|
643
|
+
if (this.isBashTool(toolName)) {
|
|
644
|
+
const command = args.command;
|
|
645
|
+
if (command) {
|
|
646
|
+
bashPatternResult = this.checkBashPatternApproval(command);
|
|
647
|
+
if (bashPatternResult.approved) {
|
|
648
|
+
this.logger.info(
|
|
649
|
+
`Bash command '${command}' matched approved pattern \u2013 skipping confirmation.`
|
|
650
|
+
);
|
|
651
|
+
return { requireApproval: false };
|
|
652
|
+
}
|
|
653
|
+
}
|
|
438
654
|
}
|
|
439
655
|
if (this.approvalMode === "auto-approve") {
|
|
440
656
|
this.logger.debug(`\u{1F7E2} Auto-approving tool execution: ${toolName}`);
|
|
441
|
-
return;
|
|
657
|
+
return { requireApproval: false };
|
|
442
658
|
}
|
|
443
659
|
if (this.approvalMode === "auto-deny") {
|
|
444
660
|
this.logger.debug(`\u{1F6AB} Auto-denying tool execution: ${toolName}`);
|
|
@@ -448,21 +664,57 @@ let _ToolManager = class _ToolManager {
|
|
|
448
664
|
`Tool confirmation requested for ${toolName}, sessionId: ${sessionId ?? "global"}`
|
|
449
665
|
);
|
|
450
666
|
try {
|
|
667
|
+
let displayPreview;
|
|
668
|
+
const actualToolName = toolName.replace(/^internal--/, "");
|
|
669
|
+
const internalTool = this.internalToolsProvider?.getTool(actualToolName);
|
|
670
|
+
if (internalTool?.generatePreview) {
|
|
671
|
+
try {
|
|
672
|
+
const context = { sessionId };
|
|
673
|
+
const preview = await internalTool.generatePreview(args, context);
|
|
674
|
+
displayPreview = preview ?? void 0;
|
|
675
|
+
this.logger.debug(`Generated preview for ${toolName}`);
|
|
676
|
+
} catch (previewError) {
|
|
677
|
+
if (previewError instanceof DextoRuntimeError && previewError.code === ToolErrorCode.VALIDATION_FAILED) {
|
|
678
|
+
this.logger.debug(
|
|
679
|
+
`Validation failed for ${toolName}: ${previewError.message}`
|
|
680
|
+
);
|
|
681
|
+
throw previewError;
|
|
682
|
+
}
|
|
683
|
+
this.logger.debug(
|
|
684
|
+
`Preview generation failed for ${toolName}: ${previewError instanceof Error ? previewError.message : String(previewError)}`
|
|
685
|
+
);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
451
688
|
const requestData = {
|
|
452
689
|
toolName,
|
|
690
|
+
toolCallId,
|
|
453
691
|
args
|
|
454
692
|
};
|
|
455
693
|
if (sessionId !== void 0) {
|
|
456
694
|
requestData.sessionId = sessionId;
|
|
457
695
|
}
|
|
696
|
+
if (displayPreview !== void 0) {
|
|
697
|
+
requestData.displayPreview = displayPreview;
|
|
698
|
+
}
|
|
699
|
+
if (bashPatternResult?.suggestedPatterns && bashPatternResult.suggestedPatterns.length > 0) {
|
|
700
|
+
requestData.suggestedPatterns = bashPatternResult.suggestedPatterns;
|
|
701
|
+
}
|
|
458
702
|
const response = await this.approvalManager.requestToolConfirmation(requestData);
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
const
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
703
|
+
if (response.status === ApprovalStatus.APPROVED && response.data) {
|
|
704
|
+
const rememberChoice = "rememberChoice" in response.data ? response.data.rememberChoice : false;
|
|
705
|
+
const rememberPattern = "rememberPattern" in response.data ? response.data.rememberPattern : void 0;
|
|
706
|
+
if (rememberChoice) {
|
|
707
|
+
const allowSessionId = sessionId ?? response.sessionId;
|
|
708
|
+
await this.allowedToolsProvider.allowTool(toolName, allowSessionId);
|
|
709
|
+
this.logger.info(
|
|
710
|
+
`Tool '${toolName}' added to allowed tools for session '${allowSessionId ?? "global"}' (remember choice selected)`
|
|
711
|
+
);
|
|
712
|
+
} else if (rememberPattern && typeof rememberPattern === "string" && this.isBashTool(toolName)) {
|
|
713
|
+
this.approvalManager.addBashPattern(rememberPattern);
|
|
714
|
+
this.logger.info(
|
|
715
|
+
`Bash pattern '${rememberPattern}' added for session approval`
|
|
716
|
+
);
|
|
717
|
+
}
|
|
466
718
|
}
|
|
467
719
|
const approved = response.status === ApprovalStatus.APPROVED;
|
|
468
720
|
if (!approved) {
|
|
@@ -483,6 +735,7 @@ let _ToolManager = class _ToolManager {
|
|
|
483
735
|
this.logger.info(
|
|
484
736
|
`Tool confirmation approved for ${toolName}, sessionId: ${sessionId ?? "global"}`
|
|
485
737
|
);
|
|
738
|
+
return { requireApproval: true, approvalStatus: "approved" };
|
|
486
739
|
} catch (error) {
|
|
487
740
|
this.logger.error(
|
|
488
741
|
`Tool confirmation error for ${toolName}: ${error instanceof Error ? error.message : String(error)}`
|
package/dist/tools/types.d.ts
CHANGED
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
import type { JSONSchema7 } from 'json-schema';
|
|
2
2
|
import type { ZodSchema } from 'zod';
|
|
3
|
+
import type { ToolDisplayData } from './display-types.js';
|
|
4
|
+
import type { ApprovalRequestDetails, ApprovalResponse } from '../approval/types.js';
|
|
3
5
|
/**
|
|
4
6
|
* Context passed to tool execution
|
|
5
7
|
*/
|
|
6
8
|
export interface ToolExecutionContext {
|
|
7
9
|
/** Session ID if available */
|
|
8
10
|
sessionId?: string | undefined;
|
|
11
|
+
/** Abort signal for cancellation support */
|
|
12
|
+
abortSignal?: AbortSignal | undefined;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Result of tool execution, including approval metadata
|
|
16
|
+
*/
|
|
17
|
+
export interface ToolExecutionResult {
|
|
18
|
+
/** The actual result data from tool execution */
|
|
19
|
+
result: unknown;
|
|
20
|
+
/** Whether this tool required user approval before execution */
|
|
21
|
+
requireApproval?: boolean;
|
|
22
|
+
/** The approval status (only present if requireApproval is true) */
|
|
23
|
+
approvalStatus?: 'approved' | 'rejected';
|
|
9
24
|
}
|
|
10
25
|
/**
|
|
11
26
|
* Internal tool interface - for tools implemented within Dexto
|
|
@@ -19,6 +34,54 @@ export interface InternalTool {
|
|
|
19
34
|
inputSchema: ZodSchema;
|
|
20
35
|
/** The actual function that executes the tool - input is validated by Zod before execution */
|
|
21
36
|
execute: (input: unknown, context?: ToolExecutionContext) => Promise<unknown> | unknown;
|
|
37
|
+
/**
|
|
38
|
+
* Optional preview generator for approval UI.
|
|
39
|
+
* Called before requesting user approval to generate display data (e.g., diff preview).
|
|
40
|
+
* Returns null if no preview is available.
|
|
41
|
+
*/
|
|
42
|
+
generatePreview?: (input: unknown, context?: ToolExecutionContext) => Promise<ToolDisplayData | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Optional custom approval override.
|
|
45
|
+
* If present and returns non-null, this approval request is used instead of
|
|
46
|
+
* the default tool confirmation. Allows tools to request specialized approval
|
|
47
|
+
* flows (e.g., directory access approval for file tools).
|
|
48
|
+
*
|
|
49
|
+
* @param args The validated input arguments for the tool
|
|
50
|
+
* @returns ApprovalRequestDetails for custom approval, or null to use default tool confirmation
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* // File tool requesting directory access approval for external paths
|
|
55
|
+
* getApprovalOverride: (args) => {
|
|
56
|
+
* const filePath = (args as {file_path: string}).file_path;
|
|
57
|
+
* if (!isPathWithinAllowed(filePath)) {
|
|
58
|
+
* return {
|
|
59
|
+
* type: ApprovalType.DIRECTORY_ACCESS,
|
|
60
|
+
* metadata: { path: filePath, operation: 'read', ... }
|
|
61
|
+
* };
|
|
62
|
+
* }
|
|
63
|
+
* return null; // Use default tool confirmation
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
getApprovalOverride?: (args: unknown) => ApprovalRequestDetails | null;
|
|
68
|
+
/**
|
|
69
|
+
* Optional callback invoked when custom approval is granted.
|
|
70
|
+
* Allows tools to handle approval responses (e.g., remember approved directories).
|
|
71
|
+
* Only called when getApprovalOverride returned non-null and approval was granted.
|
|
72
|
+
*
|
|
73
|
+
* @param response The approval response from ApprovalManager
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* onApprovalGranted: (response) => {
|
|
78
|
+
* if (response.data?.rememberDirectory) {
|
|
79
|
+
* directoryApproval.addApproved(parentDir, 'session');
|
|
80
|
+
* }
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
onApprovalGranted?: (response: ApprovalResponse) => void;
|
|
22
85
|
}
|
|
23
86
|
/**
|
|
24
87
|
* Standard tool set interface - used by AI/LLM services
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oEAAoE;IACpE,cAAc,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;CAC5C;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IAEX,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IAEpB,+CAA+C;IAC/C,WAAW,EAAE,SAAS,CAAC;IAEvB,8FAA8F;IAC9F,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAExF;;;;OAIG;IACH,eAAe,CAAC,EAAE,CACd,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,oBAAoB,KAC7B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAErC;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,sBAAsB,GAAG,IAAI,CAAC;IAEvE;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC5D;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,WAAW,CAAC;KAC3B,CAAC;CACL;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/E"}
|
|
@@ -31,7 +31,25 @@ const PROVIDER_API_KEY_MAP = {
|
|
|
31
31
|
google: ["GOOGLE_GENERATIVE_AI_API_KEY", "GOOGLE_API_KEY", "GEMINI_API_KEY"],
|
|
32
32
|
groq: ["GROQ_API_KEY"],
|
|
33
33
|
cohere: ["COHERE_API_KEY"],
|
|
34
|
-
xai: ["XAI_API_KEY", "X_AI_API_KEY"]
|
|
34
|
+
xai: ["XAI_API_KEY", "X_AI_API_KEY"],
|
|
35
|
+
openrouter: ["OPENROUTER_API_KEY"],
|
|
36
|
+
litellm: ["LITELLM_API_KEY", "LITELLM_KEY"],
|
|
37
|
+
glama: ["GLAMA_API_KEY"],
|
|
38
|
+
// Vertex uses ADC (Application Default Credentials), not API keys
|
|
39
|
+
// GOOGLE_APPLICATION_CREDENTIALS points to service account JSON (optional)
|
|
40
|
+
// Primary config is GOOGLE_VERTEX_PROJECT (required) + GOOGLE_VERTEX_LOCATION (optional)
|
|
41
|
+
vertex: [],
|
|
42
|
+
// Bedrock supports two auth methods:
|
|
43
|
+
// 1. AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (simplest)
|
|
44
|
+
// 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY + AWS_REGION (IAM credentials)
|
|
45
|
+
// AWS_SESSION_TOKEN (optional, for temporary credentials)
|
|
46
|
+
bedrock: ["AWS_BEARER_TOKEN_BEDROCK"],
|
|
47
|
+
// Local providers don't require API keys
|
|
48
|
+
local: [],
|
|
49
|
+
// Native node-llama-cpp execution
|
|
50
|
+
ollama: []
|
|
51
|
+
// Ollama server (no authentication required)
|
|
52
|
+
// TODO: dexto: ['DEXTO_API_KEY'],
|
|
35
53
|
// perplexity: ['PERPLEXITY_API_KEY'],
|
|
36
54
|
// together: ['TOGETHER_API_KEY'],
|
|
37
55
|
// fireworks: ['FIREWORKS_API_KEY'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/api-key-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;GAGG;AAGH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"api-key-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/api-key-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;GAGG;AAGH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CA4B9D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAelF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAGpE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-PTJYTZNU.js";
|
|
2
2
|
const PROVIDER_API_KEY_MAP = {
|
|
3
3
|
openai: ["OPENAI_API_KEY", "OPENAI_KEY"],
|
|
4
4
|
"openai-compatible": ["OPENAI_API_KEY", "OPENAI_KEY"],
|
|
@@ -7,7 +7,25 @@ const PROVIDER_API_KEY_MAP = {
|
|
|
7
7
|
google: ["GOOGLE_GENERATIVE_AI_API_KEY", "GOOGLE_API_KEY", "GEMINI_API_KEY"],
|
|
8
8
|
groq: ["GROQ_API_KEY"],
|
|
9
9
|
cohere: ["COHERE_API_KEY"],
|
|
10
|
-
xai: ["XAI_API_KEY", "X_AI_API_KEY"]
|
|
10
|
+
xai: ["XAI_API_KEY", "X_AI_API_KEY"],
|
|
11
|
+
openrouter: ["OPENROUTER_API_KEY"],
|
|
12
|
+
litellm: ["LITELLM_API_KEY", "LITELLM_KEY"],
|
|
13
|
+
glama: ["GLAMA_API_KEY"],
|
|
14
|
+
// Vertex uses ADC (Application Default Credentials), not API keys
|
|
15
|
+
// GOOGLE_APPLICATION_CREDENTIALS points to service account JSON (optional)
|
|
16
|
+
// Primary config is GOOGLE_VERTEX_PROJECT (required) + GOOGLE_VERTEX_LOCATION (optional)
|
|
17
|
+
vertex: [],
|
|
18
|
+
// Bedrock supports two auth methods:
|
|
19
|
+
// 1. AWS_BEARER_TOKEN_BEDROCK - Bedrock API key (simplest)
|
|
20
|
+
// 2. AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY + AWS_REGION (IAM credentials)
|
|
21
|
+
// AWS_SESSION_TOKEN (optional, for temporary credentials)
|
|
22
|
+
bedrock: ["AWS_BEARER_TOKEN_BEDROCK"],
|
|
23
|
+
// Local providers don't require API keys
|
|
24
|
+
local: [],
|
|
25
|
+
// Native node-llama-cpp execution
|
|
26
|
+
ollama: []
|
|
27
|
+
// Ollama server (no authentication required)
|
|
28
|
+
// TODO: dexto: ['DEXTO_API_KEY'],
|
|
11
29
|
// perplexity: ['PERPLEXITY_API_KEY'],
|
|
12
30
|
// together: ['TOGETHER_API_KEY'],
|
|
13
31
|
// fireworks: ['FIREWORKS_API_KEY'],
|