@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
|
@@ -68,9 +68,12 @@ __export(tool_manager_exports, {
|
|
|
68
68
|
module.exports = __toCommonJS(tool_manager_exports);
|
|
69
69
|
var import_provider = require("./internal-tools/provider.js");
|
|
70
70
|
var import_errors = require("./errors.js");
|
|
71
|
+
var import_error_codes = require("./error-codes.js");
|
|
72
|
+
var import_errors2 = require("../errors/index.js");
|
|
71
73
|
var import_types2 = require("../logger/v2/types.js");
|
|
72
74
|
var import_types3 = require("../approval/types.js");
|
|
73
75
|
var import_decorators = require("../telemetry/decorators.js");
|
|
76
|
+
var import_bash_pattern_utils = require("./bash-pattern-utils.js");
|
|
74
77
|
var _ToolManager_decorators, _init;
|
|
75
78
|
_ToolManager_decorators = [(0, import_decorators.InstrumentClass)({
|
|
76
79
|
prefix: "tool",
|
|
@@ -96,6 +99,7 @@ let _ToolManager = class _ToolManager {
|
|
|
96
99
|
// Tool source prefixing - ALL tools get prefixed by source
|
|
97
100
|
static MCP_TOOL_PREFIX = "mcp--";
|
|
98
101
|
static INTERNAL_TOOL_PREFIX = "internal--";
|
|
102
|
+
static CUSTOM_TOOL_PREFIX = "custom--";
|
|
99
103
|
// Tool caching for performance
|
|
100
104
|
toolsCache = {};
|
|
101
105
|
cacheValid = false;
|
|
@@ -108,11 +112,15 @@ let _ToolManager = class _ToolManager {
|
|
|
108
112
|
this.agentEventBus = agentEventBus;
|
|
109
113
|
this.toolPolicies = toolPolicies;
|
|
110
114
|
this.logger = logger.createChild(import_types2.DextoLogComponent.TOOLS);
|
|
111
|
-
if (options?.internalToolsConfig && options.internalToolsConfig.length > 0) {
|
|
115
|
+
if (options?.internalToolsConfig && options.internalToolsConfig.length > 0 || options?.customToolsConfig && options.customToolsConfig.length > 0) {
|
|
116
|
+
const internalToolsServices = {
|
|
117
|
+
...options.internalToolsServices,
|
|
118
|
+
approvalManager
|
|
119
|
+
};
|
|
112
120
|
this.internalToolsProvider = new import_provider.InternalToolsProvider(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
options.
|
|
121
|
+
internalToolsServices,
|
|
122
|
+
options.internalToolsConfig || [],
|
|
123
|
+
options.customToolsConfig || [],
|
|
116
124
|
this.logger
|
|
117
125
|
);
|
|
118
126
|
}
|
|
@@ -137,6 +145,16 @@ let _ToolManager = class _ToolManager {
|
|
|
137
145
|
this.stateManager = stateManager;
|
|
138
146
|
this.logger.debug("Plugin support configured for ToolManager");
|
|
139
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Set agent reference for custom tools (called after construction to avoid circular dependencies)
|
|
150
|
+
* Must be called before initialize() if custom tools are configured
|
|
151
|
+
*/
|
|
152
|
+
setAgent(agent) {
|
|
153
|
+
if (this.internalToolsProvider) {
|
|
154
|
+
this.internalToolsProvider.setAgent(agent);
|
|
155
|
+
this.logger.debug("Agent reference configured for custom tools");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
140
158
|
/**
|
|
141
159
|
* Invalidate the tools cache when tool sources change
|
|
142
160
|
*/
|
|
@@ -163,6 +181,37 @@ let _ToolManager = class _ToolManager {
|
|
|
163
181
|
this.invalidateCache();
|
|
164
182
|
});
|
|
165
183
|
}
|
|
184
|
+
// ==================== Bash Pattern Approval Helpers ====================
|
|
185
|
+
/**
|
|
186
|
+
* Check if a tool name represents a bash execution tool
|
|
187
|
+
*/
|
|
188
|
+
isBashTool(toolName) {
|
|
189
|
+
return toolName === "bash_exec" || toolName === "internal--bash_exec" || toolName === "custom--bash_exec";
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Check if a bash command is covered by any approved pattern.
|
|
193
|
+
* Generates a pattern key from the command, then checks if it's covered by stored patterns.
|
|
194
|
+
*
|
|
195
|
+
* Returns approval info if covered, or pattern suggestions if not.
|
|
196
|
+
*/
|
|
197
|
+
checkBashPatternApproval(command) {
|
|
198
|
+
const patternKey = (0, import_bash_pattern_utils.generateBashPatternKey)(command);
|
|
199
|
+
if (!patternKey) {
|
|
200
|
+
if ((0, import_bash_pattern_utils.isDangerousCommand)(command)) {
|
|
201
|
+
this.logger.debug(
|
|
202
|
+
`Skipping pattern generation for dangerous command: ${command.split(/\s+/)[0]}`
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
return { approved: false, suggestedPatterns: [] };
|
|
206
|
+
}
|
|
207
|
+
if (this.approvalManager.matchesBashPattern(patternKey)) {
|
|
208
|
+
return { approved: true };
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
approved: false,
|
|
212
|
+
suggestedPatterns: (0, import_bash_pattern_utils.generateBashPatternSuggestions)(command)
|
|
213
|
+
};
|
|
214
|
+
}
|
|
166
215
|
getMcpManager() {
|
|
167
216
|
return this.mcpManager;
|
|
168
217
|
}
|
|
@@ -191,6 +240,7 @@ let _ToolManager = class _ToolManager {
|
|
|
191
240
|
const allTools = {};
|
|
192
241
|
let mcpTools = {};
|
|
193
242
|
let internalTools = {};
|
|
243
|
+
let customTools = {};
|
|
194
244
|
try {
|
|
195
245
|
mcpTools = await this.mcpManager.getAllTools();
|
|
196
246
|
} catch (error) {
|
|
@@ -200,13 +250,21 @@ let _ToolManager = class _ToolManager {
|
|
|
200
250
|
mcpTools = {};
|
|
201
251
|
}
|
|
202
252
|
try {
|
|
203
|
-
internalTools = this.internalToolsProvider?.
|
|
253
|
+
internalTools = this.internalToolsProvider?.getInternalTools() || {};
|
|
204
254
|
} catch (error) {
|
|
205
255
|
this.logger.error(
|
|
206
256
|
`Failed to get internal tools: ${error instanceof Error ? error.message : String(error)}`
|
|
207
257
|
);
|
|
208
258
|
internalTools = {};
|
|
209
259
|
}
|
|
260
|
+
try {
|
|
261
|
+
customTools = this.internalToolsProvider?.getCustomTools() || {};
|
|
262
|
+
} catch (error) {
|
|
263
|
+
this.logger.error(
|
|
264
|
+
`Failed to get custom tools: ${error instanceof Error ? error.message : String(error)}`
|
|
265
|
+
);
|
|
266
|
+
customTools = {};
|
|
267
|
+
}
|
|
210
268
|
for (const [toolName, toolDef] of Object.entries(internalTools)) {
|
|
211
269
|
const qualifiedName = `${_ToolManager.INTERNAL_TOOL_PREFIX}${toolName}`;
|
|
212
270
|
allTools[qualifiedName] = {
|
|
@@ -215,6 +273,14 @@ let _ToolManager = class _ToolManager {
|
|
|
215
273
|
description: `${toolDef.description || "No description provided"} (internal tool)`
|
|
216
274
|
};
|
|
217
275
|
}
|
|
276
|
+
for (const [toolName, toolDef] of Object.entries(customTools)) {
|
|
277
|
+
const qualifiedName = `${_ToolManager.CUSTOM_TOOL_PREFIX}${toolName}`;
|
|
278
|
+
allTools[qualifiedName] = {
|
|
279
|
+
...toolDef,
|
|
280
|
+
name: qualifiedName,
|
|
281
|
+
description: `${toolDef.description || "No description provided"} (custom tool)`
|
|
282
|
+
};
|
|
283
|
+
}
|
|
218
284
|
for (const [toolName, toolDef] of Object.entries(mcpTools)) {
|
|
219
285
|
const qualifiedName = `${_ToolManager.MCP_TOOL_PREFIX}${toolName}`;
|
|
220
286
|
allTools[qualifiedName] = {
|
|
@@ -226,8 +292,9 @@ let _ToolManager = class _ToolManager {
|
|
|
226
292
|
const totalTools = Object.keys(allTools).length;
|
|
227
293
|
const mcpCount = Object.keys(mcpTools).length;
|
|
228
294
|
const internalCount = Object.keys(internalTools).length;
|
|
295
|
+
const customCount = Object.keys(customTools).length;
|
|
229
296
|
this.logger.debug(
|
|
230
|
-
`\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP
|
|
297
|
+
`\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP, ${internalCount} internal, ${customCount} custom)`
|
|
231
298
|
);
|
|
232
299
|
return allTools;
|
|
233
300
|
}
|
|
@@ -247,15 +314,41 @@ let _ToolManager = class _ToolManager {
|
|
|
247
314
|
/**
|
|
248
315
|
* Execute a tool by routing based on universal prefix
|
|
249
316
|
* ALL tools must have source prefix - no exceptions
|
|
317
|
+
*
|
|
318
|
+
* @param toolName The fully qualified tool name (e.g., "internal--edit_file")
|
|
319
|
+
* @param args The arguments for the tool
|
|
320
|
+
* @param toolCallId The unique tool call ID for tracking (from LLM or generated for direct calls)
|
|
321
|
+
* @param sessionId Optional session ID for context
|
|
322
|
+
* @param abortSignal Optional abort signal for cancellation support
|
|
250
323
|
*/
|
|
251
|
-
async executeTool(toolName, args, sessionId) {
|
|
252
|
-
this.logger.debug(`\u{1F527} Tool execution requested: '${toolName}'`);
|
|
324
|
+
async executeTool(toolName, args, toolCallId, sessionId, abortSignal) {
|
|
325
|
+
this.logger.debug(`\u{1F527} Tool execution requested: '${toolName}' (toolCallId: ${toolCallId})`);
|
|
253
326
|
this.logger.debug(`Tool args: ${JSON.stringify(args, null, 2)}`);
|
|
254
|
-
|
|
327
|
+
if (sessionId) {
|
|
328
|
+
this.agentEventBus.emit("llm:tool-call", {
|
|
329
|
+
toolName,
|
|
330
|
+
args,
|
|
331
|
+
callId: toolCallId,
|
|
332
|
+
sessionId
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
const { requireApproval, approvalStatus } = await this.handleToolApproval(
|
|
336
|
+
toolName,
|
|
337
|
+
args,
|
|
338
|
+
toolCallId,
|
|
339
|
+
sessionId
|
|
340
|
+
);
|
|
255
341
|
this.logger.debug(`\u2705 Tool execution approved: ${toolName}`);
|
|
256
342
|
this.logger.info(
|
|
257
343
|
`\u{1F527} Tool execution started for ${toolName}, sessionId: ${sessionId ?? "global"}`
|
|
258
344
|
);
|
|
345
|
+
if (sessionId) {
|
|
346
|
+
this.agentEventBus.emit("tool:running", {
|
|
347
|
+
toolName,
|
|
348
|
+
toolCallId,
|
|
349
|
+
sessionId
|
|
350
|
+
});
|
|
351
|
+
}
|
|
259
352
|
const startTime = Date.now();
|
|
260
353
|
if (this.pluginManager && this.sessionManager && this.stateManager) {
|
|
261
354
|
const beforePayload = {
|
|
@@ -299,16 +392,33 @@ let _ToolManager = class _ToolManager {
|
|
|
299
392
|
result = await this.internalToolsProvider.executeTool(
|
|
300
393
|
actualToolName,
|
|
301
394
|
args,
|
|
302
|
-
sessionId
|
|
395
|
+
sessionId,
|
|
396
|
+
abortSignal
|
|
397
|
+
);
|
|
398
|
+
} else if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
|
|
399
|
+
this.logger.debug(`\u{1F527} Detected custom tool: '${toolName}'`);
|
|
400
|
+
const actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
|
|
401
|
+
if (actualToolName.length === 0) {
|
|
402
|
+
throw import_errors.ToolError.invalidName(toolName, "tool name cannot be empty after prefix");
|
|
403
|
+
}
|
|
404
|
+
if (!this.internalToolsProvider) {
|
|
405
|
+
throw import_errors.ToolError.internalToolsNotInitialized(toolName);
|
|
406
|
+
}
|
|
407
|
+
this.logger.debug(`\u{1F3AF} Custom routing: '${toolName}' -> '${actualToolName}'`);
|
|
408
|
+
result = await this.internalToolsProvider.executeTool(
|
|
409
|
+
actualToolName,
|
|
410
|
+
args,
|
|
411
|
+
sessionId,
|
|
412
|
+
abortSignal
|
|
303
413
|
);
|
|
304
414
|
} else {
|
|
305
415
|
this.logger.debug(`\u{1F527} Detected tool without proper prefix: '${toolName}'`);
|
|
306
416
|
const stats = await this.getToolStats();
|
|
307
417
|
this.logger.error(
|
|
308
|
-
`\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*' or '${_ToolManager.
|
|
418
|
+
`\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*', '${_ToolManager.INTERNAL_TOOL_PREFIX}*', or '${_ToolManager.CUSTOM_TOOL_PREFIX}*')`
|
|
309
419
|
);
|
|
310
420
|
this.logger.debug(
|
|
311
|
-
`Available: ${stats.mcp} MCP
|
|
421
|
+
`Available: ${stats.mcp} MCP, ${stats.internal} internal, ${stats.custom} custom tools`
|
|
312
422
|
);
|
|
313
423
|
throw import_errors.ToolError.notFound(toolName);
|
|
314
424
|
}
|
|
@@ -337,7 +447,10 @@ let _ToolManager = class _ToolManager {
|
|
|
337
447
|
);
|
|
338
448
|
result = modifiedPayload.result;
|
|
339
449
|
}
|
|
340
|
-
return
|
|
450
|
+
return {
|
|
451
|
+
result,
|
|
452
|
+
...requireApproval && { requireApproval, approvalStatus }
|
|
453
|
+
};
|
|
341
454
|
} catch (error) {
|
|
342
455
|
const duration = Date.now() - startTime;
|
|
343
456
|
this.logger.error(
|
|
@@ -371,7 +484,11 @@ let _ToolManager = class _ToolManager {
|
|
|
371
484
|
}
|
|
372
485
|
if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
|
|
373
486
|
const actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
|
|
374
|
-
return this.internalToolsProvider?.
|
|
487
|
+
return this.internalToolsProvider?.hasInternalTool(actualToolName) ?? false;
|
|
488
|
+
}
|
|
489
|
+
if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
|
|
490
|
+
const actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
|
|
491
|
+
return this.internalToolsProvider?.hasCustomTool(actualToolName) ?? false;
|
|
375
492
|
}
|
|
376
493
|
return false;
|
|
377
494
|
}
|
|
@@ -381,6 +498,7 @@ let _ToolManager = class _ToolManager {
|
|
|
381
498
|
async getToolStats() {
|
|
382
499
|
let mcpTools = {};
|
|
383
500
|
let internalTools = {};
|
|
501
|
+
let customTools = {};
|
|
384
502
|
try {
|
|
385
503
|
mcpTools = await this.mcpManager.getAllTools();
|
|
386
504
|
} catch (error) {
|
|
@@ -390,24 +508,33 @@ let _ToolManager = class _ToolManager {
|
|
|
390
508
|
mcpTools = {};
|
|
391
509
|
}
|
|
392
510
|
try {
|
|
393
|
-
internalTools = this.internalToolsProvider?.
|
|
511
|
+
internalTools = this.internalToolsProvider?.getInternalTools() || {};
|
|
394
512
|
} catch (error) {
|
|
395
513
|
this.logger.error(
|
|
396
514
|
`Failed to get internal tools for stats: ${error instanceof Error ? error.message : String(error)}`
|
|
397
515
|
);
|
|
398
516
|
internalTools = {};
|
|
399
517
|
}
|
|
518
|
+
try {
|
|
519
|
+
customTools = this.internalToolsProvider?.getCustomTools() || {};
|
|
520
|
+
} catch (error) {
|
|
521
|
+
this.logger.error(
|
|
522
|
+
`Failed to get custom tools for stats: ${error instanceof Error ? error.message : String(error)}`
|
|
523
|
+
);
|
|
524
|
+
customTools = {};
|
|
525
|
+
}
|
|
400
526
|
const mcpCount = Object.keys(mcpTools).length;
|
|
401
527
|
const internalCount = Object.keys(internalTools).length;
|
|
528
|
+
const customCount = Object.keys(customTools).length;
|
|
402
529
|
return {
|
|
403
|
-
total: mcpCount + internalCount,
|
|
404
|
-
// No conflicts with universal prefixing
|
|
530
|
+
total: mcpCount + internalCount + customCount,
|
|
405
531
|
mcp: mcpCount,
|
|
406
|
-
internal: internalCount
|
|
532
|
+
internal: internalCount,
|
|
533
|
+
custom: customCount
|
|
407
534
|
};
|
|
408
535
|
}
|
|
409
536
|
/**
|
|
410
|
-
* Get the source of a tool (mcp, internal, or unknown)
|
|
537
|
+
* Get the source of a tool (mcp, internal, custom, or unknown)
|
|
411
538
|
* @param toolName The name of the tool to check
|
|
412
539
|
* @returns The source of the tool
|
|
413
540
|
*/
|
|
@@ -418,6 +545,9 @@ let _ToolManager = class _ToolManager {
|
|
|
418
545
|
if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX) && toolName.length > _ToolManager.INTERNAL_TOOL_PREFIX.length) {
|
|
419
546
|
return "internal";
|
|
420
547
|
}
|
|
548
|
+
if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX) && toolName.length > _ToolManager.CUSTOM_TOOL_PREFIX.length) {
|
|
549
|
+
return "custom";
|
|
550
|
+
}
|
|
421
551
|
return "unknown";
|
|
422
552
|
}
|
|
423
553
|
/**
|
|
@@ -473,12 +603,73 @@ let _ToolManager = class _ToolManager {
|
|
|
473
603
|
(pattern) => this.matchesToolPolicy(toolName, pattern)
|
|
474
604
|
);
|
|
475
605
|
}
|
|
606
|
+
/**
|
|
607
|
+
* Check if a tool has a custom approval override and handle it.
|
|
608
|
+
* Tools can implement getApprovalOverride() to request specialized approval flows
|
|
609
|
+
* (e.g., directory access approval for file tools) instead of default tool confirmation.
|
|
610
|
+
*
|
|
611
|
+
* @param toolName The fully qualified tool name
|
|
612
|
+
* @param args The tool arguments
|
|
613
|
+
* @param sessionId Optional session ID
|
|
614
|
+
* @returns { handled: true } if custom approval was processed, { handled: false } to continue normal flow
|
|
615
|
+
*/
|
|
616
|
+
async checkCustomApprovalOverride(toolName, args, sessionId) {
|
|
617
|
+
let actualToolName;
|
|
618
|
+
if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
|
|
619
|
+
actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
|
|
620
|
+
} else if (toolName.startsWith(_ToolManager.CUSTOM_TOOL_PREFIX)) {
|
|
621
|
+
actualToolName = toolName.substring(_ToolManager.CUSTOM_TOOL_PREFIX.length);
|
|
622
|
+
}
|
|
623
|
+
if (!actualToolName || !this.internalToolsProvider) {
|
|
624
|
+
return { handled: false };
|
|
625
|
+
}
|
|
626
|
+
const tool = this.internalToolsProvider.getTool(actualToolName);
|
|
627
|
+
if (!tool?.getApprovalOverride) {
|
|
628
|
+
return { handled: false };
|
|
629
|
+
}
|
|
630
|
+
const approvalRequest = tool.getApprovalOverride(args);
|
|
631
|
+
if (!approvalRequest) {
|
|
632
|
+
return { handled: false };
|
|
633
|
+
}
|
|
634
|
+
this.logger.debug(
|
|
635
|
+
`Tool '${toolName}' requested custom approval: type=${approvalRequest.type}`
|
|
636
|
+
);
|
|
637
|
+
if (sessionId && !approvalRequest.sessionId) {
|
|
638
|
+
approvalRequest.sessionId = sessionId;
|
|
639
|
+
}
|
|
640
|
+
const response = await this.approvalManager.requestApproval(approvalRequest);
|
|
641
|
+
if (response.status === import_types3.ApprovalStatus.APPROVED) {
|
|
642
|
+
if (tool.onApprovalGranted) {
|
|
643
|
+
tool.onApprovalGranted(response);
|
|
644
|
+
}
|
|
645
|
+
this.logger.info(
|
|
646
|
+
`Custom approval granted for '${toolName}', type=${approvalRequest.type}, session=${sessionId ?? "global"}`
|
|
647
|
+
);
|
|
648
|
+
return { handled: true };
|
|
649
|
+
}
|
|
650
|
+
this.logger.info(
|
|
651
|
+
`Custom approval denied for '${toolName}', type=${approvalRequest.type}, reason=${response.reason ?? "unknown"}`
|
|
652
|
+
);
|
|
653
|
+
if (approvalRequest.type === "directory_access") {
|
|
654
|
+
const metadata = approvalRequest.metadata;
|
|
655
|
+
throw import_errors.ToolError.directoryAccessDenied(
|
|
656
|
+
metadata?.parentDir ?? "unknown directory",
|
|
657
|
+
sessionId
|
|
658
|
+
);
|
|
659
|
+
}
|
|
660
|
+
throw import_errors.ToolError.executionDenied(toolName, sessionId);
|
|
661
|
+
}
|
|
476
662
|
/**
|
|
477
663
|
* Handle tool approval/confirmation flow
|
|
478
664
|
* Checks allowed list, manages approval modes (manual, auto-approve, auto-deny),
|
|
479
665
|
* and handles remember choice logic
|
|
666
|
+
*
|
|
667
|
+
* @param toolName The fully qualified tool name
|
|
668
|
+
* @param args The arguments for the tool
|
|
669
|
+
* @param toolCallId The unique tool call ID for tracking parallel tool calls
|
|
670
|
+
* @param sessionId Optional session ID for context
|
|
480
671
|
*/
|
|
481
|
-
async handleToolApproval(toolName, args, sessionId) {
|
|
672
|
+
async handleToolApproval(toolName, args, toolCallId, sessionId) {
|
|
482
673
|
if (this.isInAlwaysDenyList(toolName)) {
|
|
483
674
|
this.logger.info(
|
|
484
675
|
`Tool '${toolName}' is in static deny list \u2013 blocking execution (session: ${sessionId ?? "global"})`
|
|
@@ -486,22 +677,43 @@ let _ToolManager = class _ToolManager {
|
|
|
486
677
|
this.logger.debug(`\u{1F6AB} Tool execution blocked by policy: ${toolName}`);
|
|
487
678
|
throw import_errors.ToolError.executionDenied(toolName, sessionId);
|
|
488
679
|
}
|
|
680
|
+
const customApprovalResult = await this.checkCustomApprovalOverride(
|
|
681
|
+
toolName,
|
|
682
|
+
args,
|
|
683
|
+
sessionId
|
|
684
|
+
);
|
|
685
|
+
if (customApprovalResult.handled) {
|
|
686
|
+
return { requireApproval: true, approvalStatus: "approved" };
|
|
687
|
+
}
|
|
489
688
|
if (this.isInAlwaysAllowList(toolName)) {
|
|
490
689
|
this.logger.info(
|
|
491
690
|
`Tool '${toolName}' is in static allow list \u2013 skipping confirmation (session: ${sessionId ?? "global"})`
|
|
492
691
|
);
|
|
493
|
-
return;
|
|
692
|
+
return { requireApproval: false };
|
|
494
693
|
}
|
|
495
694
|
const isAllowed = await this.allowedToolsProvider.isToolAllowed(toolName, sessionId);
|
|
496
695
|
if (isAllowed) {
|
|
497
696
|
this.logger.info(
|
|
498
697
|
`Tool '${toolName}' already allowed for session '${sessionId ?? "global"}' \u2013 skipping confirmation.`
|
|
499
698
|
);
|
|
500
|
-
return;
|
|
699
|
+
return { requireApproval: false };
|
|
700
|
+
}
|
|
701
|
+
let bashPatternResult;
|
|
702
|
+
if (this.isBashTool(toolName)) {
|
|
703
|
+
const command = args.command;
|
|
704
|
+
if (command) {
|
|
705
|
+
bashPatternResult = this.checkBashPatternApproval(command);
|
|
706
|
+
if (bashPatternResult.approved) {
|
|
707
|
+
this.logger.info(
|
|
708
|
+
`Bash command '${command}' matched approved pattern \u2013 skipping confirmation.`
|
|
709
|
+
);
|
|
710
|
+
return { requireApproval: false };
|
|
711
|
+
}
|
|
712
|
+
}
|
|
501
713
|
}
|
|
502
714
|
if (this.approvalMode === "auto-approve") {
|
|
503
715
|
this.logger.debug(`\u{1F7E2} Auto-approving tool execution: ${toolName}`);
|
|
504
|
-
return;
|
|
716
|
+
return { requireApproval: false };
|
|
505
717
|
}
|
|
506
718
|
if (this.approvalMode === "auto-deny") {
|
|
507
719
|
this.logger.debug(`\u{1F6AB} Auto-denying tool execution: ${toolName}`);
|
|
@@ -511,21 +723,57 @@ let _ToolManager = class _ToolManager {
|
|
|
511
723
|
`Tool confirmation requested for ${toolName}, sessionId: ${sessionId ?? "global"}`
|
|
512
724
|
);
|
|
513
725
|
try {
|
|
726
|
+
let displayPreview;
|
|
727
|
+
const actualToolName = toolName.replace(/^internal--/, "");
|
|
728
|
+
const internalTool = this.internalToolsProvider?.getTool(actualToolName);
|
|
729
|
+
if (internalTool?.generatePreview) {
|
|
730
|
+
try {
|
|
731
|
+
const context = { sessionId };
|
|
732
|
+
const preview = await internalTool.generatePreview(args, context);
|
|
733
|
+
displayPreview = preview ?? void 0;
|
|
734
|
+
this.logger.debug(`Generated preview for ${toolName}`);
|
|
735
|
+
} catch (previewError) {
|
|
736
|
+
if (previewError instanceof import_errors2.DextoRuntimeError && previewError.code === import_error_codes.ToolErrorCode.VALIDATION_FAILED) {
|
|
737
|
+
this.logger.debug(
|
|
738
|
+
`Validation failed for ${toolName}: ${previewError.message}`
|
|
739
|
+
);
|
|
740
|
+
throw previewError;
|
|
741
|
+
}
|
|
742
|
+
this.logger.debug(
|
|
743
|
+
`Preview generation failed for ${toolName}: ${previewError instanceof Error ? previewError.message : String(previewError)}`
|
|
744
|
+
);
|
|
745
|
+
}
|
|
746
|
+
}
|
|
514
747
|
const requestData = {
|
|
515
748
|
toolName,
|
|
749
|
+
toolCallId,
|
|
516
750
|
args
|
|
517
751
|
};
|
|
518
752
|
if (sessionId !== void 0) {
|
|
519
753
|
requestData.sessionId = sessionId;
|
|
520
754
|
}
|
|
755
|
+
if (displayPreview !== void 0) {
|
|
756
|
+
requestData.displayPreview = displayPreview;
|
|
757
|
+
}
|
|
758
|
+
if (bashPatternResult?.suggestedPatterns && bashPatternResult.suggestedPatterns.length > 0) {
|
|
759
|
+
requestData.suggestedPatterns = bashPatternResult.suggestedPatterns;
|
|
760
|
+
}
|
|
521
761
|
const response = await this.approvalManager.requestToolConfirmation(requestData);
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
const
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
762
|
+
if (response.status === import_types3.ApprovalStatus.APPROVED && response.data) {
|
|
763
|
+
const rememberChoice = "rememberChoice" in response.data ? response.data.rememberChoice : false;
|
|
764
|
+
const rememberPattern = "rememberPattern" in response.data ? response.data.rememberPattern : void 0;
|
|
765
|
+
if (rememberChoice) {
|
|
766
|
+
const allowSessionId = sessionId ?? response.sessionId;
|
|
767
|
+
await this.allowedToolsProvider.allowTool(toolName, allowSessionId);
|
|
768
|
+
this.logger.info(
|
|
769
|
+
`Tool '${toolName}' added to allowed tools for session '${allowSessionId ?? "global"}' (remember choice selected)`
|
|
770
|
+
);
|
|
771
|
+
} else if (rememberPattern && typeof rememberPattern === "string" && this.isBashTool(toolName)) {
|
|
772
|
+
this.approvalManager.addBashPattern(rememberPattern);
|
|
773
|
+
this.logger.info(
|
|
774
|
+
`Bash pattern '${rememberPattern}' added for session approval`
|
|
775
|
+
);
|
|
776
|
+
}
|
|
529
777
|
}
|
|
530
778
|
const approved = response.status === import_types3.ApprovalStatus.APPROVED;
|
|
531
779
|
if (!approved) {
|
|
@@ -546,6 +794,7 @@ let _ToolManager = class _ToolManager {
|
|
|
546
794
|
this.logger.info(
|
|
547
795
|
`Tool confirmation approved for ${toolName}, sessionId: ${sessionId ?? "global"}`
|
|
548
796
|
);
|
|
797
|
+
return { requireApproval: true, approvalStatus: "approved" };
|
|
549
798
|
} catch (error) {
|
|
550
799
|
this.logger.error(
|
|
551
800
|
`Tool confirmation error for ${toolName}: ${error instanceof Error ? error.message : String(error)}`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MCPManager } from '../mcp/manager.js';
|
|
2
2
|
import { InternalToolsServices } from './internal-tools/registry.js';
|
|
3
|
-
import type { InternalToolsConfig, ToolPolicies } from './schemas.js';
|
|
3
|
+
import type { InternalToolsConfig, CustomToolsConfig, ToolPolicies } from './schemas.js';
|
|
4
4
|
import { ToolSet } from './types.js';
|
|
5
5
|
import type { IDextoLogger } from '../logger/v2/types.js';
|
|
6
6
|
import type { AgentEventBus } from '../events/index.js';
|
|
@@ -15,6 +15,7 @@ import type { AgentStateManager } from '../agent/state-manager.js';
|
|
|
15
15
|
export interface InternalToolsOptions {
|
|
16
16
|
internalToolsServices?: InternalToolsServices;
|
|
17
17
|
internalToolsConfig?: InternalToolsConfig;
|
|
18
|
+
customToolsConfig?: CustomToolsConfig;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
21
|
* Unified Tool Manager - Single interface for all tool operations
|
|
@@ -55,6 +56,7 @@ export declare class ToolManager {
|
|
|
55
56
|
private stateManager?;
|
|
56
57
|
private static readonly MCP_TOOL_PREFIX;
|
|
57
58
|
private static readonly INTERNAL_TOOL_PREFIX;
|
|
59
|
+
private static readonly CUSTOM_TOOL_PREFIX;
|
|
58
60
|
private toolsCache;
|
|
59
61
|
private cacheValid;
|
|
60
62
|
private logger;
|
|
@@ -67,6 +69,11 @@ export declare class ToolManager {
|
|
|
67
69
|
* Set plugin support services (called after construction to avoid circular dependencies)
|
|
68
70
|
*/
|
|
69
71
|
setPluginSupport(pluginManager: PluginManager, sessionManager: SessionManager, stateManager: AgentStateManager): void;
|
|
72
|
+
/**
|
|
73
|
+
* Set agent reference for custom tools (called after construction to avoid circular dependencies)
|
|
74
|
+
* Must be called before initialize() if custom tools are configured
|
|
75
|
+
*/
|
|
76
|
+
setAgent(agent: any): void;
|
|
70
77
|
/**
|
|
71
78
|
* Invalidate the tools cache when tool sources change
|
|
72
79
|
*/
|
|
@@ -75,6 +82,17 @@ export declare class ToolManager {
|
|
|
75
82
|
* Set up listeners for MCP notifications to invalidate cache on changes
|
|
76
83
|
*/
|
|
77
84
|
private setupNotificationListeners;
|
|
85
|
+
/**
|
|
86
|
+
* Check if a tool name represents a bash execution tool
|
|
87
|
+
*/
|
|
88
|
+
private isBashTool;
|
|
89
|
+
/**
|
|
90
|
+
* Check if a bash command is covered by any approved pattern.
|
|
91
|
+
* Generates a pattern key from the command, then checks if it's covered by stored patterns.
|
|
92
|
+
*
|
|
93
|
+
* Returns approval info if covered, or pattern suggestions if not.
|
|
94
|
+
*/
|
|
95
|
+
private checkBashPatternApproval;
|
|
78
96
|
getMcpManager(): MCPManager;
|
|
79
97
|
/**
|
|
80
98
|
* Get all MCP tools (delegates to mcpManager.getAllTools())
|
|
@@ -105,8 +123,14 @@ export declare class ToolManager {
|
|
|
105
123
|
/**
|
|
106
124
|
* Execute a tool by routing based on universal prefix
|
|
107
125
|
* ALL tools must have source prefix - no exceptions
|
|
126
|
+
*
|
|
127
|
+
* @param toolName The fully qualified tool name (e.g., "internal--edit_file")
|
|
128
|
+
* @param args The arguments for the tool
|
|
129
|
+
* @param toolCallId The unique tool call ID for tracking (from LLM or generated for direct calls)
|
|
130
|
+
* @param sessionId Optional session ID for context
|
|
131
|
+
* @param abortSignal Optional abort signal for cancellation support
|
|
108
132
|
*/
|
|
109
|
-
executeTool(toolName: string, args: Record<string, unknown>, sessionId?: string): Promise<
|
|
133
|
+
executeTool(toolName: string, args: Record<string, unknown>, toolCallId: string, sessionId?: string, abortSignal?: AbortSignal): Promise<import('./types.js').ToolExecutionResult>;
|
|
110
134
|
/**
|
|
111
135
|
* Check if a tool exists (must have proper source prefix)
|
|
112
136
|
*/
|
|
@@ -118,13 +142,14 @@ export declare class ToolManager {
|
|
|
118
142
|
total: number;
|
|
119
143
|
mcp: number;
|
|
120
144
|
internal: number;
|
|
145
|
+
custom: number;
|
|
121
146
|
}>;
|
|
122
147
|
/**
|
|
123
|
-
* Get the source of a tool (mcp, internal, or unknown)
|
|
148
|
+
* Get the source of a tool (mcp, internal, custom, or unknown)
|
|
124
149
|
* @param toolName The name of the tool to check
|
|
125
150
|
* @returns The source of the tool
|
|
126
151
|
*/
|
|
127
|
-
getToolSource(toolName: string): 'mcp' | 'internal' | 'unknown';
|
|
152
|
+
getToolSource(toolName: string): 'mcp' | 'internal' | 'custom' | 'unknown';
|
|
128
153
|
/**
|
|
129
154
|
* Check if a tool matches a policy pattern
|
|
130
155
|
* Supports both exact matching and suffix matching for MCP tools with server prefixes
|
|
@@ -153,10 +178,26 @@ export declare class ToolManager {
|
|
|
153
178
|
* @returns true if the tool is in the allow list
|
|
154
179
|
*/
|
|
155
180
|
private isInAlwaysAllowList;
|
|
181
|
+
/**
|
|
182
|
+
* Check if a tool has a custom approval override and handle it.
|
|
183
|
+
* Tools can implement getApprovalOverride() to request specialized approval flows
|
|
184
|
+
* (e.g., directory access approval for file tools) instead of default tool confirmation.
|
|
185
|
+
*
|
|
186
|
+
* @param toolName The fully qualified tool name
|
|
187
|
+
* @param args The tool arguments
|
|
188
|
+
* @param sessionId Optional session ID
|
|
189
|
+
* @returns { handled: true } if custom approval was processed, { handled: false } to continue normal flow
|
|
190
|
+
*/
|
|
191
|
+
private checkCustomApprovalOverride;
|
|
156
192
|
/**
|
|
157
193
|
* Handle tool approval/confirmation flow
|
|
158
194
|
* Checks allowed list, manages approval modes (manual, auto-approve, auto-deny),
|
|
159
195
|
* and handles remember choice logic
|
|
196
|
+
*
|
|
197
|
+
* @param toolName The fully qualified tool name
|
|
198
|
+
* @param args The arguments for the tool
|
|
199
|
+
* @param toolCallId The unique tool call ID for tracking parallel tool calls
|
|
200
|
+
* @param sessionId Optional session ID for context
|
|
160
201
|
*/
|
|
161
202
|
private handleToolApproval;
|
|
162
203
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACzF,OAAO,EAAE,OAAO,EAAwB,MAAM,YAAY,CAAC;AAK3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQnE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBASa,WAAW;IACpB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,qBAAqB,CAAC,CAAwB;IACtD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,oBAAoB,CAAwB;IACpD,OAAO,CAAC,YAAY,CAA0C;IAC9D,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,YAAY,CAA2B;IAG/C,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAoB;IAGzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAW;IAClD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAgB;IAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAc;IAGxD,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAe;gBAGzB,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,oBAAoB,EAAE,qBAAqB,EAC3C,YAAY,EAAE,QAAQ,GAAG,cAAc,GAAG,WAAW,EACrD,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,YAAY;IAkCxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;IACH,gBAAgB,CACZ,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,YAAY,EAAE,iBAAiB,GAChC,IAAI;IAOP;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI;IAO1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAqBlC;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IA6BhC,aAAa,IAAI,UAAU;IAI3B;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;;;;;;;;;;;;OAaG;YACW,aAAa;IA6E3B;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAUrC;;;;;;;;;OASG;IACG,WAAW,CACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,WAAW,GAC1B,OAAO,CAAC,OAAO,YAAY,EAAE,mBAAmB,CAAC;IAsMpD;;OAEG;IACG,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuBjD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IA4CF;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS;IAsB1E;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAS1B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;;;;;;;;OASG;YACW,2BAA2B;IAwEzC;;;;;;;;;OASG;YACW,kBAAkB;IA6MhC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;OAEG;IACH,uBAAuB,IAAI,MAAM,EAAE;IAInC;;OAEG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAI5C;;OAEG;IACH,sBAAsB,IAAI,IAAI;CAGjC"}
|