@dexto/core 1.1.11 → 1.2.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 +24 -4
- package/dist/Dexto.cjs +4 -14
- package/dist/Dexto.d.ts +8 -29
- package/dist/Dexto.d.ts.map +1 -1
- package/dist/Dexto.js +4 -12
- package/dist/agent/DextoAgent.cjs +92 -3
- package/dist/agent/DextoAgent.d.ts +12 -4
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +52 -3
- package/dist/agent/agentCard.js +1 -0
- package/dist/agent/error-codes.cjs +1 -0
- package/dist/agent/error-codes.d.ts +1 -0
- package/dist/agent/error-codes.d.ts.map +1 -1
- package/dist/agent/error-codes.js +2 -0
- 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 -0
- package/dist/agent/index.js +1 -0
- package/dist/agent/registry/error-codes.js +1 -0
- package/dist/agent/registry/errors.js +1 -0
- package/dist/agent/registry/registry.js +1 -0
- package/dist/agent/registry/types.js +1 -0
- package/dist/agent/registry/user-registry.js +1 -0
- package/dist/agent/schemas.cjs +6 -1
- package/dist/agent/schemas.d.ts +113 -3
- package/dist/agent/schemas.d.ts.map +1 -1
- package/dist/agent/schemas.js +7 -1
- package/dist/agent/state-manager.js +1 -0
- package/dist/approval/error-codes.js +1 -0
- package/dist/approval/errors.js +1 -0
- package/dist/approval/index.js +1 -0
- package/dist/approval/manager.cjs +30 -0
- package/dist/approval/manager.d.ts +23 -1
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +31 -0
- package/dist/approval/providers/event-based-approval-provider.js +1 -0
- package/dist/approval/providers/factory.js +1 -0
- package/dist/approval/providers/noop-approval-provider.js +1 -0
- package/dist/approval/schemas.cjs +36 -0
- package/dist/approval/schemas.d.ts +173 -0
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +33 -0
- package/dist/approval/types.cjs +1 -0
- package/dist/approval/types.d.ts +27 -1
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +2 -0
- package/dist/chunk-C6A6W6XS.js +53 -0
- package/dist/config/agent-resolver.js +1 -0
- package/dist/config/error-codes.js +1 -0
- package/dist/config/errors.js +1 -0
- package/dist/config/loader.js +1 -0
- package/dist/config/writer.js +1 -0
- package/dist/context/compression/middle-removal.js +1 -0
- package/dist/context/compression/oldest-removal.js +1 -0
- package/dist/context/error-codes.js +1 -0
- package/dist/context/errors.js +1 -0
- package/dist/context/index.js +1 -0
- package/dist/context/manager.cjs +36 -1
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +27 -1
- package/dist/context/media-helpers.js +1 -0
- package/dist/context/utils.cjs +102 -6
- package/dist/context/utils.d.ts +35 -2
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +100 -6
- package/dist/errors/DextoBaseError.js +1 -0
- package/dist/errors/DextoRuntimeError.js +1 -0
- package/dist/errors/DextoValidationError.js +1 -0
- package/dist/errors/index.js +1 -0
- package/dist/errors/result-bridge.js +1 -0
- package/dist/errors/types.cjs +3 -0
- package/dist/errors/types.d.ts +7 -2
- package/dist/errors/types.d.ts.map +1 -1
- package/dist/errors/types.js +4 -0
- package/dist/events/index.cjs +1 -0
- package/dist/events/index.d.ts +6 -2
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +2 -0
- package/dist/filesystem/error-codes.cjs +53 -0
- package/dist/filesystem/error-codes.d.ts +31 -0
- package/dist/filesystem/error-codes.d.ts.map +1 -0
- package/dist/filesystem/error-codes.js +30 -0
- package/dist/filesystem/errors.cjs +303 -0
- package/dist/filesystem/errors.d.ts +109 -0
- package/dist/filesystem/errors.d.ts.map +1 -0
- package/dist/filesystem/errors.js +280 -0
- package/dist/filesystem/filesystem-service.cjs +482 -0
- package/dist/filesystem/filesystem-service.d.ts +57 -0
- package/dist/filesystem/filesystem-service.d.ts.map +1 -0
- package/dist/filesystem/filesystem-service.js +449 -0
- package/dist/filesystem/index.cjs +37 -0
- package/dist/filesystem/index.d.ts +11 -0
- package/dist/filesystem/index.d.ts.map +1 -0
- package/dist/filesystem/index.js +11 -0
- package/dist/filesystem/path-validator.cjs +172 -0
- package/dist/filesystem/path-validator.d.ts +53 -0
- package/dist/filesystem/path-validator.d.ts.map +1 -0
- package/dist/filesystem/path-validator.js +139 -0
- package/dist/filesystem/types.cjs +16 -0
- package/dist/filesystem/types.d.ts +171 -0
- package/dist/filesystem/types.d.ts.map +1 -0
- package/dist/filesystem/types.js +0 -0
- package/dist/index.browser.js +1 -0
- package/dist/index.cjs +3 -3
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/llm/error-codes.js +1 -0
- package/dist/llm/errors.js +1 -0
- package/dist/llm/formatters/anthropic.js +1 -0
- package/dist/llm/formatters/factory.js +1 -0
- package/dist/llm/formatters/openai.js +1 -0
- package/dist/llm/formatters/vercel.js +1 -0
- package/dist/llm/registry.cjs +15 -15
- package/dist/llm/registry.d.ts +1 -1
- package/dist/llm/registry.js +16 -15
- package/dist/llm/resolver.js +1 -0
- package/dist/llm/schemas.cjs +6 -2
- package/dist/llm/schemas.d.ts +10 -0
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +7 -2
- package/dist/llm/services/anthropic.cjs +67 -0
- package/dist/llm/services/anthropic.d.ts +6 -0
- package/dist/llm/services/anthropic.d.ts.map +1 -1
- package/dist/llm/services/anthropic.js +27 -0
- package/dist/llm/services/factory.js +1 -0
- package/dist/llm/services/openai.cjs +87 -0
- package/dist/llm/services/openai.d.ts +6 -0
- package/dist/llm/services/openai.d.ts.map +1 -1
- package/dist/llm/services/openai.js +47 -0
- package/dist/llm/services/test-utils.integration.cjs +1 -1
- package/dist/llm/services/test-utils.integration.js +2 -1
- package/dist/llm/services/vercel.cjs +144 -97
- package/dist/llm/services/vercel.d.ts +6 -1
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +105 -98
- package/dist/llm/tokenizer/anthropic.js +1 -0
- package/dist/llm/tokenizer/default.js +1 -0
- package/dist/llm/tokenizer/factory.js +1 -0
- package/dist/llm/tokenizer/google.js +1 -0
- package/dist/llm/tokenizer/openai.cjs +1 -1
- package/dist/llm/tokenizer/openai.d.ts +1 -1
- package/dist/llm/tokenizer/openai.js +2 -1
- package/dist/llm/tokenizer/types.js +1 -0
- package/dist/llm/types.d.ts +2 -2
- package/dist/llm/types.d.ts.map +1 -1
- package/dist/llm/types.js +1 -0
- package/dist/llm/validation.js +1 -0
- package/dist/logger/browser.js +1 -0
- package/dist/logger/logger.d.ts +42 -0
- package/dist/logger/logger.d.ts.map +1 -1
- package/dist/logger/logger.js +1 -0
- 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 -0
- package/dist/mcp/errors.cjs +12 -0
- package/dist/mcp/errors.d.ts +7 -0
- package/dist/mcp/errors.d.ts.map +1 -1
- package/dist/mcp/errors.js +13 -0
- package/dist/mcp/manager.cjs +66 -16
- package/dist/mcp/manager.d.ts +7 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +67 -16
- package/dist/mcp/mcp-client.js +1 -0
- package/dist/mcp/resolver.js +1 -0
- package/dist/mcp/schemas.js +1 -0
- package/dist/mcp/types.d.ts +1 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/memory/error-codes.js +1 -0
- package/dist/memory/errors.js +1 -0
- package/dist/memory/index.js +1 -0
- package/dist/memory/manager.js +1 -0
- package/dist/memory/schemas.js +1 -0
- package/dist/plugins/builtins/content-policy.js +1 -0
- package/dist/plugins/builtins/response-sanitizer.js +1 -0
- package/dist/plugins/error-codes.js +1 -0
- package/dist/plugins/index.js +1 -0
- package/dist/plugins/loader.js +1 -0
- package/dist/plugins/manager.js +1 -0
- package/dist/plugins/registrations/builtins.js +1 -0
- package/dist/plugins/schemas.js +1 -0
- package/dist/preferences/constants.js +1 -0
- package/dist/preferences/error-codes.js +1 -0
- package/dist/preferences/errors.js +1 -0
- package/dist/preferences/index.js +1 -0
- package/dist/preferences/loader.cjs +3 -1
- package/dist/preferences/loader.d.ts +10 -1
- package/dist/preferences/loader.d.ts.map +1 -1
- package/dist/preferences/loader.js +4 -1
- package/dist/preferences/schemas.cjs +2 -1
- package/dist/preferences/schemas.d.ts +8 -0
- package/dist/preferences/schemas.d.ts.map +1 -1
- package/dist/preferences/schemas.js +3 -1
- package/dist/process/command-validator.cjs +544 -0
- package/dist/process/command-validator.d.ts +46 -0
- package/dist/process/command-validator.d.ts.map +1 -0
- package/dist/process/command-validator.js +521 -0
- package/dist/process/error-codes.cjs +47 -0
- package/dist/process/error-codes.d.ts +25 -0
- package/dist/process/error-codes.d.ts.map +1 -0
- package/dist/process/error-codes.js +24 -0
- package/dist/process/errors.cjs +244 -0
- package/dist/process/errors.d.ts +87 -0
- package/dist/process/errors.d.ts.map +1 -0
- package/dist/process/errors.js +221 -0
- package/dist/process/index.cjs +37 -0
- package/dist/process/index.d.ts +11 -0
- package/dist/process/index.d.ts.map +1 -0
- package/dist/process/index.js +11 -0
- package/dist/process/process-service.cjs +443 -0
- package/dist/process/process-service.d.ts +62 -0
- package/dist/process/process-service.d.ts.map +1 -0
- package/dist/process/process-service.js +410 -0
- package/dist/process/types.cjs +16 -0
- package/dist/process/types.d.ts +107 -0
- package/dist/process/types.d.ts.map +1 -0
- package/dist/process/types.js +0 -0
- package/dist/prompts/error-codes.js +1 -0
- package/dist/prompts/errors.js +1 -0
- package/dist/prompts/index.js +1 -0
- package/dist/prompts/name-validation.js +1 -0
- package/dist/prompts/prompt-manager.js +1 -0
- package/dist/prompts/providers/custom-prompt-provider.js +1 -0
- package/dist/prompts/providers/file-prompt-provider.js +1 -0
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -0
- package/dist/prompts/providers/starter-prompt-provider.js +1 -0
- package/dist/prompts/schemas.js +1 -0
- package/dist/prompts/utils.js +1 -0
- package/dist/resources/error-codes.js +1 -0
- package/dist/resources/errors.js +1 -0
- package/dist/resources/handlers/blob-handler.js +1 -0
- package/dist/resources/handlers/factory.js +1 -0
- package/dist/resources/handlers/filesystem-handler.cjs +1 -1
- package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -1
- package/dist/resources/handlers/filesystem-handler.js +2 -1
- package/dist/resources/index.js +1 -0
- package/dist/resources/internal-provider.js +1 -0
- package/dist/resources/manager.js +1 -0
- package/dist/resources/reference-parser.js +1 -0
- package/dist/resources/schemas.js +1 -0
- package/dist/search/index.js +1 -0
- package/dist/search/search-service.js +1 -0
- package/dist/session/chat-session.cjs +2 -2
- package/dist/session/chat-session.d.ts +2 -2
- package/dist/session/chat-session.js +3 -2
- package/dist/session/error-codes.js +1 -0
- package/dist/session/errors.js +1 -0
- package/dist/session/history/database.js +1 -0
- package/dist/session/history/factory.js +1 -0
- package/dist/session/history/memory.js +1 -0
- package/dist/session/index.js +1 -0
- package/dist/session/schemas.js +1 -0
- package/dist/session/session-manager.d.ts +6 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +1 -0
- package/dist/session/title-generator.js +1 -0
- package/dist/storage/blob/factory.cjs +3 -3
- package/dist/storage/blob/factory.d.ts +3 -1
- package/dist/storage/blob/factory.d.ts.map +1 -1
- package/dist/storage/blob/factory.js +4 -3
- package/dist/storage/blob/local-blob-store.cjs +18 -2
- package/dist/storage/blob/local-blob-store.d.ts +2 -1
- package/dist/storage/blob/local-blob-store.d.ts.map +1 -1
- package/dist/storage/blob/local-blob-store.js +19 -2
- package/dist/storage/blob/schemas.js +1 -0
- package/dist/storage/cache/factory.js +1 -0
- package/dist/storage/cache/memory-cache-store.js +1 -0
- package/dist/storage/cache/redis-store.js +1 -0
- package/dist/storage/cache/schemas.js +1 -0
- package/dist/storage/database/factory.cjs +7 -5
- package/dist/storage/database/factory.d.ts +3 -1
- package/dist/storage/database/factory.d.ts.map +1 -1
- package/dist/storage/database/factory.js +8 -5
- package/dist/storage/database/memory-database-store.js +1 -0
- package/dist/storage/database/postgres-store.js +1 -0
- package/dist/storage/database/schemas.cjs +1 -1
- package/dist/storage/database/schemas.js +2 -1
- package/dist/storage/database/sqlite-store.cjs +20 -2
- package/dist/storage/database/sqlite-store.d.ts +2 -1
- package/dist/storage/database/sqlite-store.d.ts.map +1 -1
- package/dist/storage/database/sqlite-store.js +21 -2
- package/dist/storage/error-codes.cjs +1 -0
- package/dist/storage/error-codes.d.ts +1 -0
- package/dist/storage/error-codes.d.ts.map +1 -1
- package/dist/storage/error-codes.js +2 -0
- package/dist/storage/errors.cjs +15 -0
- package/dist/storage/errors.d.ts +4 -0
- package/dist/storage/errors.d.ts.map +1 -1
- package/dist/storage/errors.js +16 -0
- package/dist/storage/index.js +1 -0
- package/dist/storage/schemas.js +1 -0
- package/dist/storage/storage-manager.cjs +7 -5
- package/dist/storage/storage-manager.d.ts +5 -2
- package/dist/storage/storage-manager.d.ts.map +1 -1
- package/dist/storage/storage-manager.js +8 -5
- package/dist/systemPrompt/contributors.js +1 -0
- package/dist/systemPrompt/error-codes.js +1 -0
- package/dist/systemPrompt/errors.js +1 -0
- package/dist/systemPrompt/in-built-prompts.js +1 -0
- package/dist/systemPrompt/index.js +1 -0
- package/dist/systemPrompt/manager.js +1 -0
- package/dist/systemPrompt/registry.js +1 -0
- package/dist/systemPrompt/schemas.js +1 -0
- package/dist/telemetry/decorators.cjs +175 -0
- package/dist/telemetry/decorators.d.ts +17 -0
- package/dist/telemetry/decorators.d.ts.map +1 -0
- package/dist/telemetry/decorators.js +157 -0
- package/dist/telemetry/exporters.cjs +108 -0
- package/dist/telemetry/exporters.d.ts +29 -0
- package/dist/telemetry/exporters.d.ts.map +1 -0
- package/dist/telemetry/exporters.js +85 -0
- package/dist/telemetry/index.cjs +28 -0
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +5 -0
- package/dist/telemetry/schemas.cjs +71 -0
- package/dist/telemetry/schemas.d.ts +54 -0
- package/dist/telemetry/schemas.d.ts.map +1 -0
- package/dist/telemetry/schemas.js +48 -0
- package/dist/telemetry/telemetry.cjs +228 -0
- package/dist/telemetry/telemetry.d.ts +74 -0
- package/dist/telemetry/telemetry.d.ts.map +1 -0
- package/dist/telemetry/telemetry.js +205 -0
- package/dist/telemetry/types.cjs +16 -0
- package/dist/telemetry/types.d.ts +22 -0
- package/dist/telemetry/types.d.ts.map +1 -0
- package/dist/telemetry/types.js +0 -0
- package/dist/telemetry/utils.cjs +87 -0
- package/dist/telemetry/utils.d.ts +21 -0
- package/dist/telemetry/utils.d.ts.map +1 -0
- package/dist/telemetry/utils.js +62 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +1 -0
- package/dist/tools/error-codes.js +1 -0
- package/dist/tools/errors.js +1 -0
- package/dist/tools/index.js +1 -0
- package/dist/tools/internal-tools/constants.cjs +39 -0
- package/dist/tools/internal-tools/constants.d.ts +12 -0
- package/dist/tools/internal-tools/constants.d.ts.map +1 -0
- package/dist/tools/internal-tools/constants.js +16 -0
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +1 -0
- package/dist/tools/internal-tools/implementations/bash-exec-tool.cjs +106 -0
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts +13 -0
- package/dist/tools/internal-tools/implementations/bash-exec-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/bash-exec-tool.js +73 -0
- package/dist/tools/internal-tools/implementations/bash-output-tool.cjs +49 -0
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts +12 -0
- package/dist/tools/internal-tools/implementations/bash-output-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/bash-output-tool.js +26 -0
- package/dist/tools/internal-tools/implementations/edit-file-tool.cjs +62 -0
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts +12 -0
- package/dist/tools/internal-tools/implementations/edit-file-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/edit-file-tool.js +39 -0
- package/dist/tools/internal-tools/implementations/glob-files-tool.cjs +57 -0
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts +12 -0
- package/dist/tools/internal-tools/implementations/glob-files-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/glob-files-tool.js +34 -0
- package/dist/tools/internal-tools/implementations/grep-content-tool.cjs +71 -0
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts +12 -0
- package/dist/tools/internal-tools/implementations/grep-content-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/grep-content-tool.js +48 -0
- package/dist/tools/internal-tools/implementations/kill-process-tool.cjs +47 -0
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts +12 -0
- package/dist/tools/internal-tools/implementations/kill-process-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/kill-process-tool.js +24 -0
- package/dist/tools/internal-tools/implementations/read-file-tool.cjs +55 -0
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts +12 -0
- package/dist/tools/internal-tools/implementations/read-file-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/read-file-tool.js +32 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.js +1 -0
- package/dist/tools/internal-tools/implementations/write-file-tool.cjs +56 -0
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts +12 -0
- package/dist/tools/internal-tools/implementations/write-file-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/write-file-tool.js +33 -0
- package/dist/tools/internal-tools/index.cjs +3 -1
- package/dist/tools/internal-tools/index.d.ts +1 -0
- package/dist/tools/internal-tools/index.d.ts.map +1 -1
- package/dist/tools/internal-tools/index.js +1 -0
- package/dist/tools/internal-tools/provider.js +1 -0
- package/dist/tools/internal-tools/registry.cjs +40 -4
- package/dist/tools/internal-tools/registry.d.ts +5 -9
- package/dist/tools/internal-tools/registry.d.ts.map +1 -1
- package/dist/tools/internal-tools/registry.js +41 -3
- package/dist/tools/schemas.cjs +18 -5
- package/dist/tools/schemas.d.ts +30 -1
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +15 -2
- package/dist/tools/tool-manager.cjs +158 -19
- package/dist/tools/tool-manager.d.ts +48 -2
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +118 -19
- package/dist/utils/api-key-resolver.js +1 -0
- package/dist/utils/api-key-store.js +1 -0
- package/dist/utils/async-context.js +1 -0
- package/dist/utils/debug.js +1 -0
- package/dist/utils/env.js +1 -0
- package/dist/utils/error-conversion.js +1 -0
- package/dist/utils/execution-context.js +1 -0
- package/dist/utils/fs-walk.js +1 -0
- package/dist/utils/path.js +1 -0
- package/dist/utils/port-utils.js +1 -0
- package/dist/utils/redactor.js +1 -0
- package/dist/utils/result.js +1 -0
- package/dist/utils/safe-stringify.js +1 -0
- package/dist/utils/schema-metadata.js +1 -0
- package/dist/utils/schema.js +1 -0
- package/dist/utils/service-initializer.cjs +42 -4
- package/dist/utils/service-initializer.d.ts +2 -1
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +33 -4
- package/dist/utils/user-info.js +1 -0
- package/dist/utils/zod-schema-converter.js +1 -0
- package/package.json +11 -1
package/dist/tools/schemas.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
1
2
|
import { z } from "zod";
|
|
2
|
-
import { INTERNAL_TOOL_NAMES } from "./internal-tools/
|
|
3
|
+
import { INTERNAL_TOOL_NAMES } from "./internal-tools/constants.js";
|
|
3
4
|
const TOOL_CONFIRMATION_MODES = ["event-based", "auto-approve", "auto-deny"];
|
|
4
5
|
const ALLOWED_TOOLS_STORAGE_TYPES = ["memory", "storage"];
|
|
5
6
|
const DEFAULT_TOOL_CONFIRMATION_MODE = "event-based";
|
|
@@ -7,6 +8,14 @@ const DEFAULT_ALLOWED_TOOLS_STORAGE = "storage";
|
|
|
7
8
|
const InternalToolsSchema = z.array(z.enum(INTERNAL_TOOL_NAMES).describe("Available internal tool names")).default([]).describe(
|
|
8
9
|
`Array of internal tool names to enable. Empty array = disabled. Available tools: ${INTERNAL_TOOL_NAMES.join(", ")}`
|
|
9
10
|
);
|
|
11
|
+
const ToolPoliciesSchema = z.object({
|
|
12
|
+
alwaysAllow: z.array(z.string()).default([]).describe(
|
|
13
|
+
'Tools that never require approval (low-risk). Use full qualified names (e.g., "internal--ask_user", "mcp--filesystem--read_file")'
|
|
14
|
+
),
|
|
15
|
+
alwaysDeny: z.array(z.string()).default([]).describe(
|
|
16
|
+
'Tools that are always denied (high-risk). Takes precedence over alwaysAllow. Use full qualified names (e.g., "mcp--filesystem--delete_file")'
|
|
17
|
+
)
|
|
18
|
+
}).strict().default({ alwaysAllow: [], alwaysDeny: [] }).describe("Static tool policies for allow/deny lists");
|
|
10
19
|
const ToolConfirmationConfigSchema = z.object({
|
|
11
20
|
mode: z.enum(TOOL_CONFIRMATION_MODES).default(DEFAULT_TOOL_CONFIRMATION_MODE).describe(
|
|
12
21
|
"Tool confirmation mode: event-based (interactive), auto-approve (all tools), auto-deny (no tools)"
|
|
@@ -16,6 +25,9 @@ const ToolConfirmationConfigSchema = z.object({
|
|
|
16
25
|
),
|
|
17
26
|
allowedToolsStorage: z.enum(ALLOWED_TOOLS_STORAGE_TYPES).default(DEFAULT_ALLOWED_TOOLS_STORAGE).describe(
|
|
18
27
|
"Storage type for remembered tool approvals: memory (session-only) or storage (persistent)"
|
|
28
|
+
),
|
|
29
|
+
toolPolicies: ToolPoliciesSchema.optional().describe(
|
|
30
|
+
"Static tool policies for fine-grained allow/deny control. Deny list takes precedence over allow list."
|
|
19
31
|
)
|
|
20
32
|
}).strict().describe("Tool confirmation and approval configuration");
|
|
21
33
|
export {
|
|
@@ -24,5 +36,6 @@ export {
|
|
|
24
36
|
DEFAULT_TOOL_CONFIRMATION_MODE,
|
|
25
37
|
InternalToolsSchema,
|
|
26
38
|
TOOL_CONFIRMATION_MODES,
|
|
27
|
-
ToolConfirmationConfigSchema
|
|
39
|
+
ToolConfirmationConfigSchema,
|
|
40
|
+
ToolPoliciesSchema
|
|
28
41
|
};
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
8
|
+
var __typeError = (msg) => {
|
|
9
|
+
throw TypeError(msg);
|
|
10
|
+
};
|
|
11
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
6
13
|
var __export = (target, all) => {
|
|
7
14
|
for (var name in all)
|
|
8
15
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -16,6 +23,44 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
23
|
return to;
|
|
17
24
|
};
|
|
18
25
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
26
|
+
var __decoratorStart = (base) => [, , , __create(base?.[__knownSymbol("metadata")] ?? null)];
|
|
27
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
28
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
29
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
30
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
31
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
32
|
+
for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);
|
|
33
|
+
return value;
|
|
34
|
+
};
|
|
35
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
36
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
37
|
+
var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];
|
|
38
|
+
var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
39
|
+
var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {
|
|
40
|
+
return __privateGet(this, extra);
|
|
41
|
+
}, set [name](x) {
|
|
42
|
+
return __privateSet(this, extra, x);
|
|
43
|
+
} }, name));
|
|
44
|
+
k ? p && k < 4 && __name(extra, (k > 2 ? "set " : k > 1 ? "get " : "") + name) : __name(target, name);
|
|
45
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
46
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
47
|
+
if (k) {
|
|
48
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };
|
|
49
|
+
if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];
|
|
50
|
+
if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;
|
|
51
|
+
}
|
|
52
|
+
it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;
|
|
53
|
+
if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);
|
|
54
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
55
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
56
|
+
}
|
|
57
|
+
return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;
|
|
58
|
+
};
|
|
59
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
60
|
+
var __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the "in" operator on this value') : member.has(obj);
|
|
61
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
62
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
63
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
19
64
|
var tool_manager_exports = {};
|
|
20
65
|
__export(tool_manager_exports, {
|
|
21
66
|
ToolManager: () => ToolManager
|
|
@@ -25,13 +70,25 @@ var import_provider = require("./internal-tools/provider.js");
|
|
|
25
70
|
var import_errors = require("./errors.js");
|
|
26
71
|
var import_logger = require("../logger/index.js");
|
|
27
72
|
var import_types2 = require("../approval/types.js");
|
|
28
|
-
|
|
73
|
+
var import_decorators = require("../telemetry/decorators.js");
|
|
74
|
+
var _ToolManager_decorators, _init;
|
|
75
|
+
_ToolManager_decorators = [(0, import_decorators.InstrumentClass)({
|
|
76
|
+
prefix: "tool",
|
|
77
|
+
excludeMethods: [
|
|
78
|
+
"setPluginManager",
|
|
79
|
+
"setStateManager",
|
|
80
|
+
"getApprovalManager",
|
|
81
|
+
"getAllowedToolsProvider"
|
|
82
|
+
]
|
|
83
|
+
})];
|
|
84
|
+
let _ToolManager = class _ToolManager {
|
|
29
85
|
mcpManager;
|
|
30
86
|
internalToolsProvider;
|
|
31
87
|
approvalManager;
|
|
32
88
|
allowedToolsProvider;
|
|
33
89
|
approvalMode;
|
|
34
90
|
agentEventBus;
|
|
91
|
+
toolPolicies;
|
|
35
92
|
// Plugin support - set after construction to avoid circular dependencies
|
|
36
93
|
pluginManager;
|
|
37
94
|
sessionManager;
|
|
@@ -42,12 +99,13 @@ class ToolManager {
|
|
|
42
99
|
// Tool caching for performance
|
|
43
100
|
toolsCache = {};
|
|
44
101
|
cacheValid = false;
|
|
45
|
-
constructor(mcpManager, approvalManager, allowedToolsProvider, approvalMode, agentEventBus, options) {
|
|
102
|
+
constructor(mcpManager, approvalManager, allowedToolsProvider, approvalMode, agentEventBus, toolPolicies, options) {
|
|
46
103
|
this.mcpManager = mcpManager;
|
|
47
104
|
this.approvalManager = approvalManager;
|
|
48
105
|
this.allowedToolsProvider = allowedToolsProvider;
|
|
49
106
|
this.approvalMode = approvalMode;
|
|
50
107
|
this.agentEventBus = agentEventBus;
|
|
108
|
+
this.toolPolicies = toolPolicies;
|
|
51
109
|
if (options?.internalToolsConfig && options.internalToolsConfig.length > 0) {
|
|
52
110
|
this.internalToolsProvider = new import_provider.InternalToolsProvider(
|
|
53
111
|
options.internalToolsServices || {},
|
|
@@ -111,6 +169,16 @@ class ToolManager {
|
|
|
111
169
|
/**
|
|
112
170
|
* Build all tools from sources with universal prefixing
|
|
113
171
|
* ALL tools get prefixed by their source - no exceptions
|
|
172
|
+
*
|
|
173
|
+
* TODO: Rethink tool naming convention for more consistency
|
|
174
|
+
* Current issue: MCP tools have dynamic naming based on conflicts:
|
|
175
|
+
* - No conflict: mcp--toolName
|
|
176
|
+
* - With conflict: mcp--serverName--toolName
|
|
177
|
+
* This makes policy configuration fragile. Consider:
|
|
178
|
+
* 1. Always including server name: mcp--serverName--toolName (breaking change)
|
|
179
|
+
* 2. Using a different delimiter pattern that's more predictable
|
|
180
|
+
* 3. Providing a tool discovery command to help users find exact names
|
|
181
|
+
* Related: Tool policies now support dual matching (exact + suffix) as a workaround
|
|
114
182
|
*/
|
|
115
183
|
async buildAllTools() {
|
|
116
184
|
const allTools = {};
|
|
@@ -133,7 +201,7 @@ class ToolManager {
|
|
|
133
201
|
internalTools = {};
|
|
134
202
|
}
|
|
135
203
|
for (const [toolName, toolDef] of Object.entries(internalTools)) {
|
|
136
|
-
const qualifiedName = `${
|
|
204
|
+
const qualifiedName = `${_ToolManager.INTERNAL_TOOL_PREFIX}${toolName}`;
|
|
137
205
|
allTools[qualifiedName] = {
|
|
138
206
|
...toolDef,
|
|
139
207
|
name: qualifiedName,
|
|
@@ -141,7 +209,7 @@ class ToolManager {
|
|
|
141
209
|
};
|
|
142
210
|
}
|
|
143
211
|
for (const [toolName, toolDef] of Object.entries(mcpTools)) {
|
|
144
|
-
const qualifiedName = `${
|
|
212
|
+
const qualifiedName = `${_ToolManager.MCP_TOOL_PREFIX}${toolName}`;
|
|
145
213
|
allTools[qualifiedName] = {
|
|
146
214
|
...toolDef,
|
|
147
215
|
name: qualifiedName,
|
|
@@ -152,7 +220,7 @@ class ToolManager {
|
|
|
152
220
|
const mcpCount = Object.keys(mcpTools).length;
|
|
153
221
|
const internalCount = Object.keys(internalTools).length;
|
|
154
222
|
import_logger.logger.debug(
|
|
155
|
-
`\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP \u2192 ${
|
|
223
|
+
`\u{1F527} Unified tool discovery: ${totalTools} total tools (${mcpCount} MCP \u2192 ${_ToolManager.MCP_TOOL_PREFIX}*, ${internalCount} internal \u2192 ${_ToolManager.INTERNAL_TOOL_PREFIX}*)`
|
|
156
224
|
);
|
|
157
225
|
return allTools;
|
|
158
226
|
}
|
|
@@ -203,17 +271,17 @@ class ToolManager {
|
|
|
203
271
|
}
|
|
204
272
|
try {
|
|
205
273
|
let result;
|
|
206
|
-
if (toolName.startsWith(
|
|
274
|
+
if (toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
|
|
207
275
|
import_logger.logger.debug(`\u{1F527} Detected MCP tool: '${toolName}'`);
|
|
208
|
-
const actualToolName = toolName.substring(
|
|
276
|
+
const actualToolName = toolName.substring(_ToolManager.MCP_TOOL_PREFIX.length);
|
|
209
277
|
if (actualToolName.length === 0) {
|
|
210
278
|
throw import_errors.ToolError.invalidName(toolName, "tool name cannot be empty after prefix");
|
|
211
279
|
}
|
|
212
280
|
import_logger.logger.debug(`\u{1F3AF} MCP routing: '${toolName}' -> '${actualToolName}'`);
|
|
213
281
|
result = await this.mcpManager.executeTool(actualToolName, args, sessionId);
|
|
214
|
-
} else if (toolName.startsWith(
|
|
282
|
+
} else if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
|
|
215
283
|
import_logger.logger.debug(`\u{1F527} Detected internal tool: '${toolName}'`);
|
|
216
|
-
const actualToolName = toolName.substring(
|
|
284
|
+
const actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
|
|
217
285
|
if (actualToolName.length === 0) {
|
|
218
286
|
throw import_errors.ToolError.invalidName(toolName, "tool name cannot be empty after prefix");
|
|
219
287
|
}
|
|
@@ -230,7 +298,7 @@ class ToolManager {
|
|
|
230
298
|
import_logger.logger.debug(`\u{1F527} Detected tool without proper prefix: '${toolName}'`);
|
|
231
299
|
const stats = await this.getToolStats();
|
|
232
300
|
import_logger.logger.error(
|
|
233
|
-
`\u274C Tool missing source prefix: '${toolName}' (expected '${
|
|
301
|
+
`\u274C Tool missing source prefix: '${toolName}' (expected '${_ToolManager.MCP_TOOL_PREFIX}*' or '${_ToolManager.INTERNAL_TOOL_PREFIX}*')`
|
|
234
302
|
);
|
|
235
303
|
import_logger.logger.debug(`Available: ${stats.mcp} MCP tools, ${stats.internal} internal tools`);
|
|
236
304
|
throw import_errors.ToolError.notFound(toolName);
|
|
@@ -288,12 +356,12 @@ class ToolManager {
|
|
|
288
356
|
* Check if a tool exists (must have proper source prefix)
|
|
289
357
|
*/
|
|
290
358
|
async hasTool(toolName) {
|
|
291
|
-
if (toolName.startsWith(
|
|
292
|
-
const actualToolName = toolName.substring(
|
|
359
|
+
if (toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
|
|
360
|
+
const actualToolName = toolName.substring(_ToolManager.MCP_TOOL_PREFIX.length);
|
|
293
361
|
return this.mcpManager.getToolClient(actualToolName) !== void 0;
|
|
294
362
|
}
|
|
295
|
-
if (toolName.startsWith(
|
|
296
|
-
const actualToolName = toolName.substring(
|
|
363
|
+
if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX)) {
|
|
364
|
+
const actualToolName = toolName.substring(_ToolManager.INTERNAL_TOOL_PREFIX.length);
|
|
297
365
|
return this.internalToolsProvider?.hasTool(actualToolName) ?? false;
|
|
298
366
|
}
|
|
299
367
|
return false;
|
|
@@ -335,20 +403,86 @@ class ToolManager {
|
|
|
335
403
|
* @returns The source of the tool
|
|
336
404
|
*/
|
|
337
405
|
getToolSource(toolName) {
|
|
338
|
-
if (toolName.startsWith(
|
|
406
|
+
if (toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX) && toolName.length > _ToolManager.MCP_TOOL_PREFIX.length) {
|
|
339
407
|
return "mcp";
|
|
340
408
|
}
|
|
341
|
-
if (toolName.startsWith(
|
|
409
|
+
if (toolName.startsWith(_ToolManager.INTERNAL_TOOL_PREFIX) && toolName.length > _ToolManager.INTERNAL_TOOL_PREFIX.length) {
|
|
342
410
|
return "internal";
|
|
343
411
|
}
|
|
344
412
|
return "unknown";
|
|
345
413
|
}
|
|
414
|
+
/**
|
|
415
|
+
* Check if a tool matches a policy pattern
|
|
416
|
+
* Supports both exact matching and suffix matching for MCP tools with server prefixes
|
|
417
|
+
*
|
|
418
|
+
* Examples:
|
|
419
|
+
* - Policy "mcp--read_file" matches "mcp--read_file" (exact)
|
|
420
|
+
* - Policy "mcp--read_file" matches "mcp--filesystem--read_file" (suffix)
|
|
421
|
+
* - Policy "internal--ask_user" matches "internal--ask_user" (exact only)
|
|
422
|
+
*
|
|
423
|
+
* @param toolName The fully qualified tool name (e.g., "mcp--filesystem--read_file")
|
|
424
|
+
* @param policyPattern The policy pattern to match against (e.g., "mcp--read_file")
|
|
425
|
+
* @returns true if the tool matches the policy pattern
|
|
426
|
+
*/
|
|
427
|
+
matchesToolPolicy(toolName, policyPattern) {
|
|
428
|
+
if (toolName === policyPattern) {
|
|
429
|
+
return true;
|
|
430
|
+
}
|
|
431
|
+
if (policyPattern.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
|
|
432
|
+
const baseName = policyPattern.substring(_ToolManager.MCP_TOOL_PREFIX.length);
|
|
433
|
+
if (toolName.endsWith(`--${baseName}`) && toolName.startsWith(_ToolManager.MCP_TOOL_PREFIX)) {
|
|
434
|
+
return true;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
return false;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Check if a tool is in the static alwaysDeny list
|
|
441
|
+
* Supports both exact and suffix matching (e.g., "mcp--read_file" matches "mcp--server--read_file")
|
|
442
|
+
* @param toolName The fully qualified tool name to check
|
|
443
|
+
* @returns true if the tool is in the deny list
|
|
444
|
+
*/
|
|
445
|
+
isInAlwaysDenyList(toolName) {
|
|
446
|
+
if (!this.toolPolicies?.alwaysDeny) {
|
|
447
|
+
return false;
|
|
448
|
+
}
|
|
449
|
+
return this.toolPolicies.alwaysDeny.some(
|
|
450
|
+
(pattern) => this.matchesToolPolicy(toolName, pattern)
|
|
451
|
+
);
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Check if a tool is in the static alwaysAllow list
|
|
455
|
+
* Supports both exact and suffix matching (e.g., "mcp--read_file" matches "mcp--server--read_file")
|
|
456
|
+
* @param toolName The fully qualified tool name to check
|
|
457
|
+
* @returns true if the tool is in the allow list
|
|
458
|
+
*/
|
|
459
|
+
isInAlwaysAllowList(toolName) {
|
|
460
|
+
if (!this.toolPolicies?.alwaysAllow) {
|
|
461
|
+
return false;
|
|
462
|
+
}
|
|
463
|
+
return this.toolPolicies.alwaysAllow.some(
|
|
464
|
+
(pattern) => this.matchesToolPolicy(toolName, pattern)
|
|
465
|
+
);
|
|
466
|
+
}
|
|
346
467
|
/**
|
|
347
468
|
* Handle tool approval/confirmation flow
|
|
348
469
|
* Checks allowed list, manages approval modes (event-based, auto-approve, auto-deny),
|
|
349
470
|
* and handles remember choice logic
|
|
350
471
|
*/
|
|
351
472
|
async handleToolApproval(toolName, args, sessionId) {
|
|
473
|
+
if (this.isInAlwaysDenyList(toolName)) {
|
|
474
|
+
import_logger.logger.info(
|
|
475
|
+
`Tool '${toolName}' is in static deny list \u2013 blocking execution (session: ${sessionId ?? "global"})`
|
|
476
|
+
);
|
|
477
|
+
import_logger.logger.debug(`\u{1F6AB} Tool execution blocked by policy: ${toolName}`);
|
|
478
|
+
throw import_errors.ToolError.executionDenied(toolName, sessionId);
|
|
479
|
+
}
|
|
480
|
+
if (this.isInAlwaysAllowList(toolName)) {
|
|
481
|
+
import_logger.logger.info(
|
|
482
|
+
`Tool '${toolName}' is in static allow list \u2013 skipping confirmation (session: ${sessionId ?? "global"})`
|
|
483
|
+
);
|
|
484
|
+
return;
|
|
485
|
+
}
|
|
352
486
|
const isAllowed = await this.allowedToolsProvider.isToolAllowed(toolName, sessionId);
|
|
353
487
|
if (isAllowed) {
|
|
354
488
|
import_logger.logger.info(
|
|
@@ -378,9 +512,10 @@ class ToolManager {
|
|
|
378
512
|
const response = await this.approvalManager.requestToolConfirmation(requestData);
|
|
379
513
|
const rememberChoice = response.data && "rememberChoice" in response.data ? response.data.rememberChoice : false;
|
|
380
514
|
if (response.status === import_types2.ApprovalStatus.APPROVED && rememberChoice) {
|
|
381
|
-
|
|
515
|
+
const allowSessionId = sessionId ?? response.sessionId;
|
|
516
|
+
await this.allowedToolsProvider.allowTool(toolName, allowSessionId);
|
|
382
517
|
import_logger.logger.info(
|
|
383
|
-
`Tool '${toolName}' added to allowed tools for session '${
|
|
518
|
+
`Tool '${toolName}' added to allowed tools for session '${allowSessionId ?? "global"}' (remember choice selected)`
|
|
384
519
|
);
|
|
385
520
|
}
|
|
386
521
|
const approved = response.status === import_types2.ApprovalStatus.APPROVED;
|
|
@@ -428,7 +563,11 @@ class ToolManager {
|
|
|
428
563
|
cancelAllConfirmations() {
|
|
429
564
|
this.approvalManager.cancelAllApprovals();
|
|
430
565
|
}
|
|
431
|
-
}
|
|
566
|
+
};
|
|
567
|
+
_init = __decoratorStart(null);
|
|
568
|
+
_ToolManager = __decorateElement(_init, 0, "ToolManager", _ToolManager_decorators, _ToolManager);
|
|
569
|
+
__runInitializers(_init, 1, _ToolManager);
|
|
570
|
+
let ToolManager = _ToolManager;
|
|
432
571
|
// Annotate the CommonJS export names for ESM import in node:
|
|
433
572
|
0 && (module.exports = {
|
|
434
573
|
ToolManager
|
|
@@ -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 } from './schemas.js';
|
|
3
|
+
import type { InternalToolsConfig, ToolPolicies } from './schemas.js';
|
|
4
4
|
import { ToolSet } from './types.js';
|
|
5
5
|
import type { AgentEventBus } from '../events/index.js';
|
|
6
6
|
import type { ApprovalManager } from '../approval/manager.js';
|
|
@@ -33,6 +33,13 @@ export interface InternalToolsOptions {
|
|
|
33
33
|
* LLMService → ToolManager → [MCPManager, InternalToolsProvider]
|
|
34
34
|
* ↓
|
|
35
35
|
* ApprovalManager (for confirmations)
|
|
36
|
+
*
|
|
37
|
+
* TODO (Telemetry): Add OpenTelemetry metrics collection
|
|
38
|
+
* - Tool execution counters (by tool name, source: MCP/internal)
|
|
39
|
+
* - Tool execution latency histograms
|
|
40
|
+
* - Tool success/failure rate counters
|
|
41
|
+
* - Tool approval/denial counters
|
|
42
|
+
* See feature-plans/telemetry.md for details
|
|
36
43
|
*/
|
|
37
44
|
export declare class ToolManager {
|
|
38
45
|
private mcpManager;
|
|
@@ -41,6 +48,7 @@ export declare class ToolManager {
|
|
|
41
48
|
private allowedToolsProvider;
|
|
42
49
|
private approvalMode;
|
|
43
50
|
private agentEventBus;
|
|
51
|
+
private toolPolicies;
|
|
44
52
|
private pluginManager?;
|
|
45
53
|
private sessionManager?;
|
|
46
54
|
private stateManager?;
|
|
@@ -48,7 +56,7 @@ export declare class ToolManager {
|
|
|
48
56
|
private static readonly INTERNAL_TOOL_PREFIX;
|
|
49
57
|
private toolsCache;
|
|
50
58
|
private cacheValid;
|
|
51
|
-
constructor(mcpManager: MCPManager, approvalManager: ApprovalManager, allowedToolsProvider: IAllowedToolsProvider, approvalMode: 'event-based' | 'auto-approve' | 'auto-deny', agentEventBus: AgentEventBus, options?: InternalToolsOptions);
|
|
59
|
+
constructor(mcpManager: MCPManager, approvalManager: ApprovalManager, allowedToolsProvider: IAllowedToolsProvider, approvalMode: 'event-based' | 'auto-approve' | 'auto-deny', agentEventBus: AgentEventBus, toolPolicies?: ToolPolicies, options?: InternalToolsOptions);
|
|
52
60
|
/**
|
|
53
61
|
* Initialize the ToolManager and its components
|
|
54
62
|
*/
|
|
@@ -74,6 +82,16 @@ export declare class ToolManager {
|
|
|
74
82
|
/**
|
|
75
83
|
* Build all tools from sources with universal prefixing
|
|
76
84
|
* ALL tools get prefixed by their source - no exceptions
|
|
85
|
+
*
|
|
86
|
+
* TODO: Rethink tool naming convention for more consistency
|
|
87
|
+
* Current issue: MCP tools have dynamic naming based on conflicts:
|
|
88
|
+
* - No conflict: mcp--toolName
|
|
89
|
+
* - With conflict: mcp--serverName--toolName
|
|
90
|
+
* This makes policy configuration fragile. Consider:
|
|
91
|
+
* 1. Always including server name: mcp--serverName--toolName (breaking change)
|
|
92
|
+
* 2. Using a different delimiter pattern that's more predictable
|
|
93
|
+
* 3. Providing a tool discovery command to help users find exact names
|
|
94
|
+
* Related: Tool policies now support dual matching (exact + suffix) as a workaround
|
|
77
95
|
*/
|
|
78
96
|
private buildAllTools;
|
|
79
97
|
/**
|
|
@@ -105,6 +123,34 @@ export declare class ToolManager {
|
|
|
105
123
|
* @returns The source of the tool
|
|
106
124
|
*/
|
|
107
125
|
getToolSource(toolName: string): 'mcp' | 'internal' | 'unknown';
|
|
126
|
+
/**
|
|
127
|
+
* Check if a tool matches a policy pattern
|
|
128
|
+
* Supports both exact matching and suffix matching for MCP tools with server prefixes
|
|
129
|
+
*
|
|
130
|
+
* Examples:
|
|
131
|
+
* - Policy "mcp--read_file" matches "mcp--read_file" (exact)
|
|
132
|
+
* - Policy "mcp--read_file" matches "mcp--filesystem--read_file" (suffix)
|
|
133
|
+
* - Policy "internal--ask_user" matches "internal--ask_user" (exact only)
|
|
134
|
+
*
|
|
135
|
+
* @param toolName The fully qualified tool name (e.g., "mcp--filesystem--read_file")
|
|
136
|
+
* @param policyPattern The policy pattern to match against (e.g., "mcp--read_file")
|
|
137
|
+
* @returns true if the tool matches the policy pattern
|
|
138
|
+
*/
|
|
139
|
+
private matchesToolPolicy;
|
|
140
|
+
/**
|
|
141
|
+
* Check if a tool is in the static alwaysDeny list
|
|
142
|
+
* Supports both exact and suffix matching (e.g., "mcp--read_file" matches "mcp--server--read_file")
|
|
143
|
+
* @param toolName The fully qualified tool name to check
|
|
144
|
+
* @returns true if the tool is in the deny list
|
|
145
|
+
*/
|
|
146
|
+
private isInAlwaysDenyList;
|
|
147
|
+
/**
|
|
148
|
+
* Check if a tool is in the static alwaysAllow list
|
|
149
|
+
* Supports both exact and suffix matching (e.g., "mcp--read_file" matches "mcp--server--read_file")
|
|
150
|
+
* @param toolName The fully qualified tool name to check
|
|
151
|
+
* @returns true if the tool is in the allow list
|
|
152
|
+
*/
|
|
153
|
+
private isInAlwaysAllowList;
|
|
108
154
|
/**
|
|
109
155
|
* Handle tool approval/confirmation flow
|
|
110
156
|
* Checks allowed list, manages approval modes (event-based, auto-approve, auto-deny),
|
|
@@ -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,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-manager.d.ts","sourceRoot":"","sources":["../../src/tools/tool-manager.ts"],"names":[],"mappings":"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"}
|