@dexto/core 1.1.10 → 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 +251 -0
- package/dist/Dexto.d.ts +191 -0
- package/dist/Dexto.d.ts.map +1 -0
- package/dist/Dexto.js +228 -0
- package/dist/agent/DextoAgent.cjs +520 -126
- package/dist/agent/DextoAgent.d.ts +182 -106
- package/dist/agent/DextoAgent.d.ts.map +1 -0
- package/dist/agent/DextoAgent.js +480 -126
- package/dist/agent/agentCard.d.ts +4 -7
- package/dist/agent/agentCard.d.ts.map +1 -0
- package/dist/agent/agentCard.js +1 -0
- package/dist/agent/error-codes.cjs +3 -0
- package/dist/agent/error-codes.d.ts +5 -3
- package/dist/agent/error-codes.d.ts.map +1 -0
- package/dist/agent/error-codes.js +4 -0
- package/dist/agent/errors.cjs +26 -0
- package/dist/agent/errors.d.ts +10 -17
- package/dist/agent/errors.d.ts.map +1 -0
- package/dist/agent/errors.js +27 -0
- package/dist/agent/index.cjs +3 -0
- package/dist/agent/index.d.ts +6 -57
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +3 -0
- package/dist/agent/registry/error-codes.cjs +2 -0
- package/dist/agent/registry/error-codes.d.ts +4 -3
- package/dist/agent/registry/error-codes.d.ts.map +1 -0
- package/dist/agent/registry/error-codes.js +3 -0
- package/dist/agent/registry/errors.cjs +58 -28
- package/dist/agent/registry/errors.d.ts +32 -36
- package/dist/agent/registry/errors.d.ts.map +1 -0
- package/dist/agent/registry/errors.js +59 -28
- package/dist/agent/registry/registry.cjs +242 -54
- package/dist/agent/registry/registry.d.ts +84 -21
- package/dist/agent/registry/registry.d.ts.map +1 -0
- package/dist/agent/registry/registry.js +252 -55
- package/dist/agent/registry/types.cjs +36 -3
- package/dist/agent/registry/types.d.ts +66 -24
- package/dist/agent/registry/types.d.ts.map +1 -0
- package/dist/agent/registry/types.js +34 -2
- package/dist/agent/registry/user-registry.cjs +140 -0
- package/dist/agent/registry/user-registry.d.ts +34 -0
- package/dist/agent/registry/user-registry.d.ts.map +1 -0
- package/dist/agent/registry/user-registry.js +105 -0
- package/dist/agent/schemas.cjs +22 -3
- package/dist/agent/schemas.d.ts +811 -479
- package/dist/agent/schemas.d.ts.map +1 -0
- package/dist/agent/schemas.js +23 -3
- package/dist/agent/state-manager.d.ts +7 -12
- package/dist/agent/state-manager.d.ts.map +1 -0
- package/dist/agent/state-manager.js +1 -0
- package/dist/approval/error-codes.cjs +44 -0
- package/dist/approval/error-codes.d.ts +21 -0
- package/dist/approval/error-codes.d.ts.map +1 -0
- package/dist/approval/error-codes.js +21 -0
- package/dist/approval/errors.cjs +251 -0
- package/dist/approval/errors.d.ts +110 -0
- package/dist/approval/errors.d.ts.map +1 -0
- package/dist/approval/errors.js +228 -0
- package/dist/approval/index.cjs +84 -0
- package/dist/approval/index.d.ts +12 -0
- package/dist/approval/index.d.ts.map +1 -0
- package/dist/approval/index.js +56 -0
- package/dist/approval/manager.cjs +189 -0
- package/dist/approval/manager.d.ts +131 -0
- package/dist/approval/manager.d.ts.map +1 -0
- package/dist/approval/manager.js +166 -0
- package/dist/approval/providers/event-based-approval-provider.cjs +156 -0
- package/dist/approval/providers/event-based-approval-provider.d.ts +39 -0
- package/dist/approval/providers/event-based-approval-provider.d.ts.map +1 -0
- package/dist/approval/providers/event-based-approval-provider.js +133 -0
- package/dist/approval/providers/factory.cjs +38 -0
- package/dist/approval/providers/factory.d.ts +12 -0
- package/dist/approval/providers/factory.d.ts.map +1 -0
- package/dist/approval/providers/factory.js +15 -0
- package/dist/approval/providers/noop-approval-provider.cjs +54 -0
- package/dist/approval/providers/noop-approval-provider.d.ts +18 -0
- package/dist/approval/providers/noop-approval-provider.d.ts.map +1 -0
- package/dist/approval/providers/noop-approval-provider.js +31 -0
- package/dist/approval/schemas.cjs +204 -0
- package/dist/approval/schemas.d.ts +775 -0
- package/dist/approval/schemas.d.ts.map +1 -0
- package/dist/approval/schemas.js +159 -0
- package/dist/approval/types.cjs +42 -0
- package/dist/approval/types.d.ts +166 -0
- package/dist/approval/types.d.ts.map +1 -0
- package/dist/approval/types.js +18 -0
- package/dist/chunk-C6A6W6XS.js +53 -0
- package/dist/config/agent-resolver.d.ts +3 -4
- package/dist/config/agent-resolver.d.ts.map +1 -0
- package/dist/config/agent-resolver.js +1 -0
- package/dist/config/error-codes.d.ts +2 -3
- package/dist/config/error-codes.d.ts.map +1 -0
- package/dist/config/error-codes.js +1 -0
- package/dist/config/errors.d.ts +3 -18
- package/dist/config/errors.d.ts.map +1 -0
- package/dist/config/errors.js +1 -0
- package/dist/config/index.d.ts +4 -7
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/loader.d.ts +2 -5
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +1 -0
- package/dist/config/writer.d.ts +8 -11
- package/dist/config/writer.d.ts.map +1 -0
- package/dist/config/writer.js +1 -0
- package/dist/context/compression/middle-removal.d.ts +3 -6
- package/dist/context/compression/middle-removal.d.ts.map +1 -0
- package/dist/context/compression/middle-removal.js +1 -0
- package/dist/context/compression/oldest-removal.d.ts +3 -6
- package/dist/context/compression/oldest-removal.d.ts.map +1 -0
- package/dist/context/compression/oldest-removal.js +1 -0
- package/dist/context/compression/types.d.ts +2 -5
- package/dist/context/compression/types.d.ts.map +1 -0
- package/dist/context/error-codes.d.ts +2 -3
- package/dist/context/error-codes.d.ts.map +1 -0
- package/dist/context/error-codes.js +1 -0
- package/dist/context/errors.d.ts +3 -18
- package/dist/context/errors.d.ts.map +1 -0
- package/dist/context/errors.js +1 -0
- package/dist/context/index.cjs +11 -0
- package/dist/context/index.d.ts +4 -19
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +6 -0
- package/dist/context/manager.cjs +156 -24
- package/dist/context/manager.d.ts +28 -20
- package/dist/context/manager.d.ts.map +1 -0
- package/dist/context/manager.js +153 -25
- package/dist/context/media-helpers.cjs +40 -0
- package/dist/context/media-helpers.d.ts +15 -0
- package/dist/context/media-helpers.d.ts.map +1 -0
- package/dist/context/media-helpers.js +16 -0
- package/dist/context/types.d.ts +27 -10
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/utils.cjs +907 -71
- package/dist/context/utils.d.ts +111 -15
- package/dist/context/utils.d.ts.map +1 -0
- package/dist/context/utils.js +896 -70
- package/dist/errors/DextoBaseError.d.ts +2 -3
- package/dist/errors/DextoBaseError.d.ts.map +1 -0
- package/dist/errors/DextoBaseError.js +1 -0
- package/dist/errors/DextoRuntimeError.d.ts +5 -16
- package/dist/errors/DextoRuntimeError.d.ts.map +1 -0
- package/dist/errors/DextoRuntimeError.js +1 -0
- package/dist/errors/DextoValidationError.d.ts +3 -16
- package/dist/errors/DextoValidationError.d.ts.map +1 -0
- package/dist/errors/DextoValidationError.js +1 -0
- package/dist/errors/index.d.ts +7 -14
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +1 -0
- package/dist/errors/result-bridge.d.ts +3 -18
- package/dist/errors/result-bridge.d.ts.map +1 -0
- package/dist/errors/result-bridge.js +1 -0
- package/dist/errors/types.cjs +7 -0
- package/dist/errors/types.d.ts +32 -20
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +8 -0
- package/dist/events/index.cjs +9 -3
- package/dist/events/index.d.ts +67 -35
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +10 -3
- 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.d.ts +171 -0
- package/dist/filesystem/types.d.ts.map +1 -0
- package/dist/index.browser.cjs +36 -0
- package/dist/index.browser.d.ts +24 -51
- package/dist/index.browser.d.ts.map +1 -0
- package/dist/index.browser.js +35 -1
- package/dist/index.cjs +29 -1
- package/dist/index.d.ts +34 -89
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/llm/error-codes.d.ts +2 -3
- package/dist/llm/error-codes.d.ts.map +1 -0
- package/dist/llm/error-codes.js +1 -0
- package/dist/llm/errors.d.ts +3 -18
- package/dist/llm/errors.d.ts.map +1 -0
- package/dist/llm/errors.js +1 -0
- package/dist/llm/formatters/anthropic.d.ts +2 -4
- package/dist/llm/formatters/anthropic.d.ts.map +1 -0
- package/dist/llm/formatters/anthropic.js +1 -0
- package/dist/llm/formatters/factory.d.ts +3 -6
- package/dist/llm/formatters/factory.d.ts.map +1 -0
- package/dist/llm/formatters/factory.js +1 -0
- package/dist/llm/formatters/openai.d.ts +2 -4
- package/dist/llm/formatters/openai.d.ts.map +1 -0
- package/dist/llm/formatters/openai.js +1 -0
- package/dist/llm/formatters/types.d.ts +2 -4
- package/dist/llm/formatters/types.d.ts.map +1 -0
- package/dist/llm/formatters/vercel.d.ts +6 -7
- package/dist/llm/formatters/vercel.d.ts.map +1 -0
- package/dist/llm/formatters/vercel.js +1 -0
- package/dist/llm/index.d.ts +8 -39
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/registry.cjs +30 -16
- package/dist/llm/registry.d.ts +27 -30
- package/dist/llm/registry.d.ts.map +1 -0
- package/dist/llm/registry.js +31 -16
- package/dist/llm/resolver.d.ts +6 -20
- package/dist/llm/resolver.d.ts.map +1 -0
- package/dist/llm/resolver.js +1 -0
- package/dist/llm/schemas.cjs +6 -2
- package/dist/llm/schemas.d.ts +25 -17
- package/dist/llm/schemas.d.ts.map +1 -0
- package/dist/llm/schemas.js +7 -2
- package/dist/llm/services/anthropic.cjs +91 -11
- package/dist/llm/services/anthropic.d.ts +13 -32
- package/dist/llm/services/anthropic.d.ts.map +1 -0
- package/dist/llm/services/anthropic.js +51 -11
- package/dist/llm/services/factory.cjs +21 -15
- package/dist/llm/services/factory.d.ts +5 -32
- package/dist/llm/services/factory.d.ts.map +1 -0
- package/dist/llm/services/factory.js +22 -15
- package/dist/llm/services/index.d.ts +2 -21
- package/dist/llm/services/index.d.ts.map +1 -0
- package/dist/llm/services/openai.cjs +120 -16
- package/dist/llm/services/openai.d.ts +13 -32
- package/dist/llm/services/openai.d.ts.map +1 -0
- package/dist/llm/services/openai.js +80 -16
- package/dist/llm/services/test-utils.integration.cjs +3 -3
- package/dist/llm/services/test-utils.integration.d.ts +8 -49
- package/dist/llm/services/test-utils.integration.d.ts.map +1 -0
- package/dist/llm/services/test-utils.integration.js +4 -3
- package/dist/llm/services/types.d.ts +5 -22
- package/dist/llm/services/types.d.ts.map +1 -0
- package/dist/llm/services/vercel.cjs +152 -74
- package/dist/llm/services/vercel.d.ts +18 -36
- package/dist/llm/services/vercel.d.ts.map +1 -0
- package/dist/llm/services/vercel.js +113 -75
- package/dist/llm/tokenizer/anthropic.d.ts +2 -4
- package/dist/llm/tokenizer/anthropic.d.ts.map +1 -0
- package/dist/llm/tokenizer/anthropic.js +1 -0
- package/dist/llm/tokenizer/default.d.ts +2 -4
- package/dist/llm/tokenizer/default.d.ts.map +1 -0
- package/dist/llm/tokenizer/default.js +1 -0
- package/dist/llm/tokenizer/factory.d.ts +3 -5
- package/dist/llm/tokenizer/factory.d.ts.map +1 -0
- package/dist/llm/tokenizer/factory.js +1 -0
- package/dist/llm/tokenizer/google.d.ts +2 -4
- package/dist/llm/tokenizer/google.d.ts.map +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 +3 -5
- package/dist/llm/tokenizer/openai.d.ts.map +1 -0
- package/dist/llm/tokenizer/openai.js +2 -1
- package/dist/llm/tokenizer/types.d.ts +3 -4
- package/dist/llm/tokenizer/types.d.ts.map +1 -0
- package/dist/llm/tokenizer/types.js +1 -0
- package/dist/llm/types.d.ts +11 -12
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +1 -0
- package/dist/llm/validation.d.ts +8 -23
- package/dist/llm/validation.d.ts.map +1 -0
- package/dist/llm/validation.js +1 -0
- package/dist/logger/browser.d.ts +4 -5
- package/dist/logger/browser.d.ts.map +1 -0
- package/dist/logger/browser.js +1 -0
- package/dist/logger/index.d.ts +2 -1
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/logger.cjs +35 -7
- package/dist/logger/logger.d.ts +47 -5
- package/dist/logger/logger.d.ts.map +1 -0
- package/dist/logger/logger.js +36 -7
- package/dist/mcp/error-codes.cjs +1 -0
- package/dist/mcp/error-codes.d.ts +3 -3
- package/dist/mcp/error-codes.d.ts.map +1 -0
- package/dist/mcp/error-codes.js +2 -0
- package/dist/mcp/errors.cjs +12 -0
- package/dist/mcp/errors.d.ts +9 -17
- package/dist/mcp/errors.d.ts.map +1 -0
- package/dist/mcp/errors.js +13 -0
- package/dist/mcp/index.d.ts +8 -26
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/manager.cjs +528 -130
- package/dist/mcp/manager.d.ts +124 -58
- package/dist/mcp/manager.d.ts.map +1 -0
- package/dist/mcp/manager.js +529 -130
- package/dist/mcp/mcp-client.cjs +172 -10
- package/dist/mcp/mcp-client.d.ts +36 -14
- package/dist/mcp/mcp-client.d.ts.map +1 -0
- package/dist/mcp/mcp-client.js +177 -10
- package/dist/mcp/resolver.d.ts +5 -20
- package/dist/mcp/resolver.d.ts.map +1 -0
- package/dist/mcp/resolver.js +1 -0
- package/dist/mcp/schemas.cjs +13 -5
- package/dist/mcp/schemas.d.ts +31 -28
- package/dist/mcp/schemas.d.ts.map +1 -0
- package/dist/mcp/schemas.js +11 -5
- package/dist/mcp/types.d.ts +19 -11
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/memory/error-codes.cjs +39 -0
- package/dist/memory/error-codes.d.ts +15 -0
- package/dist/memory/error-codes.d.ts.map +1 -0
- package/dist/memory/error-codes.js +16 -0
- package/dist/memory/errors.cjs +112 -0
- package/dist/memory/errors.d.ts +16 -0
- package/dist/memory/errors.d.ts.map +1 -0
- package/dist/memory/errors.js +89 -0
- package/dist/memory/index.cjs +43 -0
- package/dist/memory/index.d.ts +6 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +19 -0
- package/dist/memory/manager.cjs +214 -0
- package/dist/memory/manager.d.ts +56 -0
- package/dist/memory/manager.d.ts.map +1 -0
- package/dist/memory/manager.js +196 -0
- package/dist/memory/schemas.cjs +82 -0
- package/dist/memory/schemas.d.ts +129 -0
- package/dist/memory/schemas.d.ts.map +1 -0
- package/dist/memory/schemas.js +54 -0
- package/dist/memory/types.d.ts +76 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/plugins/builtins/content-policy.cjs +112 -0
- package/dist/plugins/builtins/content-policy.d.ts +26 -0
- package/dist/plugins/builtins/content-policy.d.ts.map +1 -0
- package/dist/plugins/builtins/content-policy.js +89 -0
- package/dist/plugins/builtins/response-sanitizer.cjs +102 -0
- package/dist/plugins/builtins/response-sanitizer.d.ts +25 -0
- package/dist/plugins/builtins/response-sanitizer.d.ts.map +1 -0
- package/dist/plugins/builtins/response-sanitizer.js +79 -0
- package/dist/plugins/error-codes.cjs +39 -0
- package/dist/plugins/error-codes.d.ts +26 -0
- package/dist/plugins/error-codes.d.ts.map +1 -0
- package/dist/plugins/error-codes.js +16 -0
- package/dist/plugins/index.cjs +54 -0
- package/dist/plugins/index.d.ts +19 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +25 -0
- package/dist/plugins/loader.cjs +151 -0
- package/dist/plugins/loader.d.ts +30 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +125 -0
- package/dist/plugins/manager.cjs +386 -0
- package/dist/plugins/manager.d.ts +97 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +363 -0
- package/dist/plugins/registrations/builtins.cjs +51 -0
- package/dist/plugins/registrations/builtins.d.ts +17 -0
- package/dist/plugins/registrations/builtins.d.ts.map +1 -0
- package/dist/plugins/registrations/builtins.js +28 -0
- package/dist/plugins/schemas.cjs +61 -0
- package/dist/plugins/schemas.d.ts +138 -0
- package/dist/plugins/schemas.d.ts.map +1 -0
- package/dist/plugins/schemas.js +36 -0
- package/dist/{storage/backend/cache-backend.cjs → plugins/types.cjs} +2 -2
- package/dist/plugins/types.d.ts +152 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/preferences/constants.d.ts +2 -3
- package/dist/preferences/constants.d.ts.map +1 -0
- package/dist/preferences/constants.js +1 -0
- package/dist/preferences/error-codes.d.ts +2 -3
- package/dist/preferences/error-codes.d.ts.map +1 -0
- package/dist/preferences/error-codes.js +1 -0
- package/dist/preferences/errors.d.ts +4 -19
- package/dist/preferences/errors.d.ts.map +1 -0
- package/dist/preferences/errors.js +1 -0
- package/dist/preferences/index.d.ts +5 -20
- package/dist/preferences/index.d.ts.map +1 -0
- package/dist/preferences/index.js +1 -0
- package/dist/preferences/loader.cjs +3 -1
- package/dist/preferences/loader.d.ts +18 -12
- package/dist/preferences/loader.d.ts.map +1 -0
- package/dist/preferences/loader.js +4 -1
- package/dist/preferences/schemas.cjs +2 -1
- package/dist/preferences/schemas.d.ts +27 -21
- package/dist/preferences/schemas.d.ts.map +1 -0
- 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/{storage/backend/database-backend.cjs → process/types.cjs} +2 -2
- package/dist/process/types.d.ts +107 -0
- package/dist/process/types.d.ts.map +1 -0
- package/dist/prompts/error-codes.cjs +38 -0
- package/dist/prompts/error-codes.d.ts +15 -0
- package/dist/prompts/error-codes.d.ts.map +1 -0
- package/dist/prompts/error-codes.js +15 -0
- package/dist/prompts/errors.cjs +144 -0
- package/dist/prompts/errors.d.ts +45 -0
- package/dist/prompts/errors.d.ts.map +1 -0
- package/dist/prompts/errors.js +121 -0
- package/dist/prompts/index.cjs +53 -0
- package/dist/prompts/index.d.ts +13 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +21 -0
- package/dist/prompts/name-validation.cjs +45 -0
- package/dist/prompts/name-validation.d.ts +9 -0
- package/dist/prompts/name-validation.d.ts.map +1 -0
- package/dist/prompts/name-validation.js +19 -0
- package/dist/prompts/prompt-manager.cjs +374 -0
- package/dist/prompts/prompt-manager.d.ts +74 -0
- package/dist/prompts/prompt-manager.d.ts.map +1 -0
- package/dist/prompts/prompt-manager.js +353 -0
- package/dist/prompts/providers/custom-prompt-provider.cjs +283 -0
- package/dist/prompts/providers/custom-prompt-provider.d.ts +36 -0
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/custom-prompt-provider.js +260 -0
- package/dist/prompts/providers/file-prompt-provider.cjs +399 -0
- package/dist/prompts/providers/file-prompt-provider.d.ts +47 -0
- package/dist/prompts/providers/file-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/file-prompt-provider.js +376 -0
- package/dist/prompts/providers/mcp-prompt-provider.cjs +102 -0
- package/dist/prompts/providers/mcp-prompt-provider.d.ts +35 -0
- package/dist/prompts/providers/mcp-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/mcp-prompt-provider.js +79 -0
- package/dist/prompts/providers/starter-prompt-provider.cjs +170 -0
- package/dist/prompts/providers/starter-prompt-provider.d.ts +45 -0
- package/dist/prompts/providers/starter-prompt-provider.d.ts.map +1 -0
- package/dist/prompts/providers/starter-prompt-provider.js +147 -0
- package/dist/prompts/schemas.cjs +54 -0
- package/dist/prompts/schemas.d.ts +65 -0
- package/dist/prompts/schemas.d.ts.map +1 -0
- package/dist/prompts/schemas.js +31 -0
- package/dist/prompts/types.cjs +16 -0
- package/dist/prompts/types.d.ts +64 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/types.js +0 -0
- package/dist/prompts/utils.cjs +176 -0
- package/dist/prompts/utils.d.ts +32 -0
- package/dist/prompts/utils.d.ts.map +1 -0
- package/dist/prompts/utils.js +150 -0
- package/dist/resources/error-codes.cjs +38 -0
- package/dist/resources/error-codes.d.ts +13 -0
- package/dist/resources/error-codes.d.ts.map +1 -0
- package/dist/resources/error-codes.js +15 -0
- package/dist/resources/errors.cjs +155 -0
- package/dist/resources/errors.d.ts +48 -0
- package/dist/resources/errors.d.ts.map +1 -0
- package/dist/resources/errors.js +132 -0
- package/dist/resources/handlers/blob-handler.cjs +230 -0
- package/dist/resources/handlers/blob-handler.d.ts +38 -0
- package/dist/resources/handlers/blob-handler.d.ts.map +1 -0
- package/dist/resources/handlers/blob-handler.js +207 -0
- package/dist/resources/handlers/factory.cjs +50 -0
- package/dist/resources/handlers/factory.d.ts +11 -0
- package/dist/resources/handlers/factory.d.ts.map +1 -0
- package/dist/resources/handlers/factory.js +26 -0
- package/dist/resources/handlers/filesystem-handler.cjs +385 -0
- package/dist/resources/handlers/filesystem-handler.d.ts +35 -0
- package/dist/resources/handlers/filesystem-handler.d.ts.map +1 -0
- package/dist/resources/handlers/filesystem-handler.js +352 -0
- package/dist/resources/handlers/types.cjs +16 -0
- package/dist/resources/handlers/types.d.ts +15 -0
- package/dist/resources/handlers/types.d.ts.map +1 -0
- package/dist/resources/handlers/types.js +0 -0
- package/dist/resources/index.cjs +58 -0
- package/dist/resources/index.d.ts +39 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +35 -0
- package/dist/resources/internal-provider.cjs +141 -0
- package/dist/resources/internal-provider.d.ts +19 -0
- package/dist/resources/internal-provider.d.ts.map +1 -0
- package/dist/resources/internal-provider.js +118 -0
- package/dist/resources/manager.cjs +221 -0
- package/dist/resources/manager.d.ts +29 -0
- package/dist/resources/manager.d.ts.map +1 -0
- package/dist/resources/manager.js +198 -0
- package/dist/resources/reference-parser.cjs +217 -0
- package/dist/resources/reference-parser.d.ts +33 -0
- package/dist/resources/reference-parser.d.ts.map +1 -0
- package/dist/resources/reference-parser.js +191 -0
- package/dist/resources/schemas.cjs +98 -0
- package/dist/resources/schemas.d.ts +212 -0
- package/dist/resources/schemas.d.ts.map +1 -0
- package/dist/resources/schemas.js +73 -0
- package/dist/resources/types.cjs +16 -0
- package/dist/resources/types.d.ts +57 -0
- package/dist/resources/types.d.ts.map +1 -0
- package/dist/resources/types.js +0 -0
- package/dist/search/index.d.ts +2 -4
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +1 -0
- package/dist/search/search-service.d.ts +5 -9
- package/dist/search/search-service.d.ts.map +1 -0
- package/dist/search/search-service.js +1 -0
- package/dist/search/types.d.ts +7 -10
- package/dist/search/types.d.ts.map +1 -0
- package/dist/session/chat-session.cjs +105 -12
- package/dist/session/chat-session.d.ts +32 -43
- package/dist/session/chat-session.d.ts.map +1 -0
- package/dist/session/chat-session.js +106 -12
- package/dist/session/error-codes.d.ts +2 -3
- package/dist/session/error-codes.d.ts.map +1 -0
- package/dist/session/error-codes.js +1 -0
- package/dist/session/errors.d.ts +2 -17
- package/dist/session/errors.d.ts.map +1 -0
- package/dist/session/errors.js +1 -0
- package/dist/session/history/database.d.ts +6 -9
- package/dist/session/history/database.d.ts.map +1 -0
- package/dist/session/history/database.js +1 -0
- package/dist/session/history/factory.d.ts +4 -8
- package/dist/session/history/factory.d.ts.map +1 -0
- package/dist/session/history/factory.js +1 -0
- package/dist/session/history/memory.cjs +39 -0
- package/dist/session/history/memory.d.ts +14 -0
- package/dist/session/history/memory.d.ts.map +1 -0
- package/dist/session/history/memory.js +16 -0
- package/dist/session/history/types.d.ts +3 -6
- package/dist/session/history/types.d.ts.map +1 -0
- package/dist/session/index.d.ts +3 -50
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +1 -0
- package/dist/session/schemas.d.ts +4 -6
- package/dist/session/schemas.d.ts.map +1 -0
- package/dist/session/schemas.js +1 -0
- package/dist/session/session-manager.cjs +63 -29
- package/dist/session/session-manager.d.ts +33 -43
- package/dist/session/session-manager.d.ts.map +1 -0
- package/dist/session/session-manager.js +64 -29
- package/dist/session/title-generator.cjs +140 -0
- package/dist/session/title-generator.d.ts +22 -0
- package/dist/session/title-generator.d.ts.map +1 -0
- package/dist/session/title-generator.js +116 -0
- package/dist/storage/blob/factory.cjs +50 -0
- package/dist/storage/blob/factory.d.ts +10 -0
- package/dist/storage/blob/factory.d.ts.map +1 -0
- package/dist/storage/blob/factory.js +27 -0
- package/dist/storage/blob/local-blob-store.cjs +503 -0
- package/dist/storage/blob/local-blob-store.d.ts +57 -0
- package/dist/storage/blob/local-blob-store.d.ts.map +1 -0
- package/dist/storage/blob/local-blob-store.js +470 -0
- package/dist/storage/blob/schemas.cjs +53 -0
- package/dist/storage/blob/schemas.d.ts +80 -0
- package/dist/storage/blob/schemas.d.ts.map +1 -0
- package/dist/storage/blob/schemas.js +29 -0
- package/dist/storage/blob/types.cjs +16 -0
- package/dist/storage/blob/types.d.ts +154 -0
- package/dist/storage/blob/types.d.ts.map +1 -0
- package/dist/storage/blob/types.js +0 -0
- package/dist/storage/cache/factory.cjs +63 -0
- package/dist/storage/cache/factory.d.ts +8 -0
- package/dist/storage/cache/factory.d.ts.map +1 -0
- package/dist/storage/cache/factory.js +30 -0
- package/dist/storage/cache/memory-cache-store.cjs +107 -0
- package/dist/storage/cache/memory-cache-store.d.ts +26 -0
- package/dist/storage/cache/memory-cache-store.d.ts.map +1 -0
- package/dist/storage/cache/memory-cache-store.js +84 -0
- package/dist/storage/{backend/redis-backend.cjs → cache/redis-store.cjs} +8 -22
- package/dist/storage/{backend/redis-backend.d.ts → cache/redis-store.d.ts} +8 -14
- package/dist/storage/cache/redis-store.d.ts.map +1 -0
- package/dist/storage/{backend/redis-backend.js → cache/redis-store.js} +5 -18
- package/dist/storage/cache/schemas.cjs +77 -0
- package/dist/storage/cache/schemas.d.ts +151 -0
- package/dist/storage/cache/schemas.d.ts.map +1 -0
- package/dist/storage/cache/schemas.js +53 -0
- package/dist/storage/cache/types.cjs +16 -0
- package/dist/storage/{backend/cache-backend.d.cts → cache/types.d.ts} +3 -4
- package/dist/storage/cache/types.d.ts.map +1 -0
- package/dist/storage/cache/types.js +0 -0
- package/dist/storage/database/factory.cjs +86 -0
- package/dist/storage/database/factory.d.ts +10 -0
- package/dist/storage/database/factory.d.ts.map +1 -0
- package/dist/storage/database/factory.js +53 -0
- package/dist/storage/{backend/memory-backend.cjs → database/memory-database-store.cjs} +10 -28
- package/dist/storage/{backend/memory-backend.d.ts → database/memory-database-store.d.ts} +7 -12
- package/dist/storage/database/memory-database-store.d.ts.map +1 -0
- package/dist/storage/{backend/memory-backend.js → database/memory-database-store.js} +7 -24
- package/dist/storage/{backend/postgres-backend.cjs → database/postgres-store.cjs} +11 -11
- package/dist/storage/{backend/postgres-backend.d.ts → database/postgres-store.d.ts} +8 -11
- package/dist/storage/database/postgres-store.d.ts.map +1 -0
- package/dist/storage/{backend/postgres-backend.js → database/postgres-store.js} +8 -7
- package/dist/storage/database/schemas.cjs +89 -0
- package/dist/storage/database/schemas.d.ts +227 -0
- package/dist/storage/database/schemas.d.ts.map +1 -0
- package/dist/storage/database/schemas.js +65 -0
- package/dist/storage/{backend/sqlite-backend.cjs → database/sqlite-store.cjs} +35 -16
- package/dist/storage/{backend/sqlite-backend.d.cts → database/sqlite-store.d.ts} +9 -11
- package/dist/storage/database/sqlite-store.d.ts.map +1 -0
- package/dist/storage/{backend/sqlite-backend.js → database/sqlite-store.js} +32 -12
- package/dist/storage/database/types.cjs +16 -0
- package/dist/storage/{backend/database-backend.d.cts → database/types.d.ts} +3 -4
- package/dist/storage/database/types.d.ts.map +1 -0
- package/dist/storage/database/types.js +0 -0
- package/dist/storage/error-codes.cjs +16 -0
- package/dist/storage/error-codes.d.ts +20 -5
- package/dist/storage/error-codes.d.ts.map +1 -0
- package/dist/storage/error-codes.js +17 -0
- package/dist/storage/errors.cjs +210 -7
- package/dist/storage/errors.d.ts +75 -19
- package/dist/storage/errors.d.ts.map +1 -0
- package/dist/storage/errors.js +205 -1
- package/dist/storage/index.cjs +24 -5
- package/dist/storage/index.d.ts +48 -7
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +21 -4
- package/dist/storage/schemas.cjs +22 -84
- package/dist/storage/schemas.d.ts +98 -574
- package/dist/storage/schemas.d.ts.map +1 -0
- package/dist/storage/schemas.js +26 -84
- package/dist/storage/storage-manager.cjs +135 -118
- package/dist/storage/storage-manager.d.ts +55 -26
- package/dist/storage/storage-manager.d.ts.map +1 -0
- package/dist/storage/storage-manager.js +135 -107
- package/dist/storage/types.d.ts +7 -5
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/systemPrompt/contributors.cjs +54 -0
- package/dist/systemPrompt/contributors.d.ts +30 -15
- package/dist/systemPrompt/contributors.d.ts.map +1 -0
- package/dist/systemPrompt/contributors.js +54 -0
- package/dist/systemPrompt/error-codes.d.ts +2 -3
- package/dist/systemPrompt/error-codes.d.ts.map +1 -0
- package/dist/systemPrompt/error-codes.js +1 -0
- package/dist/systemPrompt/errors.d.ts +2 -17
- package/dist/systemPrompt/errors.d.ts.map +1 -0
- package/dist/systemPrompt/errors.js +1 -0
- package/dist/systemPrompt/in-built-prompts.cjs +13 -15
- package/dist/systemPrompt/in-built-prompts.d.ts +4 -14
- package/dist/systemPrompt/in-built-prompts.d.ts.map +1 -0
- package/dist/systemPrompt/in-built-prompts.js +14 -15
- package/dist/systemPrompt/index.cjs +11 -0
- package/dist/systemPrompt/index.d.ts +7 -14
- package/dist/systemPrompt/index.d.ts.map +1 -0
- package/dist/systemPrompt/index.js +9 -0
- package/dist/systemPrompt/manager.cjs +24 -6
- package/dist/systemPrompt/manager.d.ts +8 -16
- package/dist/systemPrompt/manager.d.ts.map +1 -0
- package/dist/systemPrompt/manager.js +25 -6
- package/dist/systemPrompt/registry.d.ts +6 -16
- package/dist/systemPrompt/registry.d.ts.map +1 -0
- package/dist/systemPrompt/registry.js +1 -0
- package/dist/systemPrompt/schemas.cjs +17 -3
- package/dist/systemPrompt/schemas.d.ts +204 -30
- package/dist/systemPrompt/schemas.d.ts.map +1 -0
- package/dist/systemPrompt/schemas.js +18 -3
- package/dist/systemPrompt/types.d.ts +3 -12
- package/dist/systemPrompt/types.d.ts.map +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.cjs +1 -1
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +6 -12
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +2 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +3 -5
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +9 -9
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +7 -13
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +1 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +10 -9
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +2 -3
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +1 -0
- package/dist/tools/error-codes.d.ts +2 -3
- package/dist/tools/error-codes.d.ts.map +1 -0
- package/dist/tools/error-codes.js +1 -0
- package/dist/tools/errors.d.ts +2 -17
- package/dist/tools/errors.d.ts.map +1 -0
- package/dist/tools/errors.js +1 -0
- package/dist/tools/index.cjs +0 -2
- package/dist/tools/index.d.ts +11 -19
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1 -1
- 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.cjs +57 -0
- package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts +18 -0
- package/dist/tools/internal-tools/implementations/ask-user-tool.d.ts.map +1 -0
- package/dist/tools/internal-tools/implementations/ask-user-tool.js +34 -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.d.ts +3 -11
- package/dist/tools/internal-tools/implementations/search-history-tool.d.ts.map +1 -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 +4 -13
- package/dist/tools/internal-tools/index.d.ts.map +1 -0
- package/dist/tools/internal-tools/index.js +1 -0
- package/dist/tools/internal-tools/provider.cjs +9 -11
- package/dist/tools/internal-tools/provider.d.ts +6 -20
- package/dist/tools/internal-tools/provider.d.ts.map +1 -0
- package/dist/tools/internal-tools/provider.js +10 -11
- package/dist/tools/internal-tools/registry.cjs +45 -4
- package/dist/tools/internal-tools/registry.d.ts +13 -22
- package/dist/tools/internal-tools/registry.d.ts.map +1 -0
- package/dist/tools/internal-tools/registry.js +46 -3
- package/dist/tools/schemas.cjs +32 -7
- package/dist/tools/schemas.d.ts +41 -8
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +25 -4
- package/dist/tools/tool-manager.cjs +329 -30
- package/dist/tools/tool-manager.d.ts +94 -22
- package/dist/tools/tool-manager.d.ts.map +1 -0
- package/dist/tools/tool-manager.js +289 -30
- package/dist/tools/types.d.ts +9 -11
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/utils/api-key-resolver.d.ts +5 -7
- package/dist/utils/api-key-resolver.d.ts.map +1 -0
- package/dist/utils/api-key-resolver.js +1 -0
- package/dist/utils/api-key-store.d.ts +5 -7
- package/dist/utils/api-key-store.d.ts.map +1 -0
- package/dist/utils/api-key-store.js +1 -0
- package/dist/utils/async-context.cjs +51 -0
- package/dist/utils/async-context.d.ts +68 -0
- package/dist/utils/async-context.d.ts.map +1 -0
- package/dist/utils/async-context.js +25 -0
- package/dist/utils/debug.cjs +40 -0
- package/dist/utils/debug.d.ts +2 -0
- package/dist/utils/debug.d.ts.map +1 -0
- package/dist/utils/debug.js +17 -0
- package/dist/utils/env.d.ts +4 -5
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +1 -0
- package/dist/utils/error-conversion.d.ts +2 -3
- package/dist/utils/error-conversion.d.ts.map +1 -0
- package/dist/utils/error-conversion.js +1 -0
- package/dist/utils/execution-context.d.ts +5 -6
- package/dist/utils/execution-context.d.ts.map +1 -0
- package/dist/utils/execution-context.js +1 -0
- package/dist/utils/fs-walk.d.ts +2 -3
- package/dist/utils/fs-walk.d.ts.map +1 -0
- package/dist/utils/fs-walk.js +1 -0
- package/dist/utils/index.cjs +3 -1
- package/dist/utils/index.d.ts +14 -63
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/path.d.ts +9 -10
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +1 -0
- package/dist/utils/port-utils.d.ts +2 -3
- package/dist/utils/port-utils.d.ts.map +1 -0
- package/dist/utils/port-utils.js +1 -0
- package/dist/utils/redactor.d.ts +2 -3
- package/dist/utils/redactor.d.ts.map +1 -0
- package/dist/utils/redactor.js +1 -0
- package/dist/utils/result.d.ts +14 -27
- package/dist/utils/result.d.ts.map +1 -0
- package/dist/utils/result.js +1 -0
- package/dist/utils/safe-stringify.d.ts +2 -3
- package/dist/utils/safe-stringify.d.ts.map +1 -0
- package/dist/utils/safe-stringify.js +1 -0
- package/dist/utils/schema-metadata.cjs +235 -0
- package/dist/utils/schema-metadata.d.ts +82 -0
- package/dist/utils/schema-metadata.d.ts.map +1 -0
- package/dist/utils/schema-metadata.js +208 -0
- package/dist/utils/schema.d.ts +2 -3
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +1 -0
- package/dist/utils/service-initializer.cjs +110 -35
- package/dist/utils/service-initializer.d.ts +19 -43
- package/dist/utils/service-initializer.d.ts.map +1 -0
- package/dist/utils/service-initializer.js +101 -35
- package/dist/utils/user-info.d.ts +2 -3
- package/dist/utils/user-info.d.ts.map +1 -0
- package/dist/utils/user-info.js +1 -0
- package/dist/utils/zod-schema-converter.d.ts +3 -5
- package/dist/utils/zod-schema-converter.d.ts.map +1 -0
- package/dist/utils/zod-schema-converter.js +1 -0
- package/package.json +16 -4
- package/dist/agent/DextoAgent.d.cts +0 -541
- package/dist/agent/agentCard.d.cts +0 -20
- package/dist/agent/error-codes.d.cts +0 -14
- package/dist/agent/errors.d.cts +0 -44
- package/dist/agent/index.d.cts +0 -60
- package/dist/agent/registry/error-codes.d.cts +0 -20
- package/dist/agent/registry/errors.d.cts +0 -67
- package/dist/agent/registry/registry.d.cts +0 -67
- package/dist/agent/registry/types.d.cts +0 -100
- package/dist/agent/schemas.d.cts +0 -1502
- package/dist/agent/state-manager.d.cts +0 -97
- package/dist/config/agent-resolver.d.cts +0 -15
- package/dist/config/error-codes.d.cts +0 -17
- package/dist/config/errors.d.cts +0 -49
- package/dist/config/index.d.cts +0 -7
- package/dist/config/loader.d.cts +0 -19
- package/dist/config/writer.d.cts +0 -38
- package/dist/context/compression/middle-removal.d.cts +0 -48
- package/dist/context/compression/oldest-removal.d.cts +0 -43
- package/dist/context/compression/types.d.cts +0 -21
- package/dist/context/error-codes.d.cts +0 -19
- package/dist/context/errors.d.cts +0 -36
- package/dist/context/index.d.cts +0 -19
- package/dist/context/manager.d.cts +0 -254
- package/dist/context/types.d.cts +0 -113
- package/dist/context/utils.d.cts +0 -79
- package/dist/errors/DextoBaseError.d.cts +0 -15
- package/dist/errors/DextoRuntimeError.d.cts +0 -37
- package/dist/errors/DextoValidationError.d.cts +0 -65
- package/dist/errors/index.d.cts +0 -18
- package/dist/errors/result-bridge.d.cts +0 -39
- package/dist/errors/types.d.cts +0 -62
- package/dist/events/index.d.cts +0 -272
- package/dist/index.browser.d.cts +0 -53
- package/dist/index.d.cts +0 -89
- package/dist/llm/error-codes.d.cts +0 -26
- package/dist/llm/errors.d.cts +0 -58
- package/dist/llm/formatters/anthropic.d.cts +0 -45
- package/dist/llm/formatters/factory.d.cts +0 -12
- package/dist/llm/formatters/openai.d.cts +0 -38
- package/dist/llm/formatters/types.d.cts +0 -43
- package/dist/llm/formatters/vercel.d.cts +0 -48
- package/dist/llm/index.d.cts +0 -39
- package/dist/llm/registry.d.cts +0 -176
- package/dist/llm/resolver.d.cts +0 -34
- package/dist/llm/schemas.d.cts +0 -111
- package/dist/llm/services/anthropic.d.cts +0 -65
- package/dist/llm/services/factory.d.cts +0 -39
- package/dist/llm/services/index.d.cts +0 -21
- package/dist/llm/services/openai.d.cts +0 -65
- package/dist/llm/services/test-utils.integration.d.cts +0 -83
- package/dist/llm/services/types.d.cts +0 -56
- package/dist/llm/services/vercel.d.cts +0 -72
- package/dist/llm/tokenizer/anthropic.d.cts +0 -21
- package/dist/llm/tokenizer/default.d.cts +0 -16
- package/dist/llm/tokenizer/factory.d.cts +0 -12
- package/dist/llm/tokenizer/google.d.cts +0 -31
- package/dist/llm/tokenizer/openai.d.cts +0 -32
- package/dist/llm/tokenizer/types.d.cts +0 -19
- package/dist/llm/types.d.cts +0 -29
- package/dist/llm/validation.d.cts +0 -60
- package/dist/logger/browser.d.cts +0 -29
- package/dist/logger/index.d.cts +0 -1
- package/dist/logger/logger.d.cts +0 -52
- package/dist/mcp/error-codes.d.cts +0 -16
- package/dist/mcp/errors.d.cts +0 -72
- package/dist/mcp/index.d.cts +0 -26
- package/dist/mcp/manager.d.cts +0 -163
- package/dist/mcp/mcp-client.d.cts +0 -108
- package/dist/mcp/resolver.d.cts +0 -22
- package/dist/mcp/schemas.d.cts +0 -266
- package/dist/mcp/types.d.cts +0 -21
- package/dist/preferences/constants.d.cts +0 -3
- package/dist/preferences/error-codes.d.cts +0 -9
- package/dist/preferences/errors.d.cts +0 -33
- package/dist/preferences/index.d.cts +0 -21
- package/dist/preferences/loader.d.cts +0 -45
- package/dist/preferences/schemas.d.cts +0 -104
- package/dist/search/index.d.cts +0 -5
- package/dist/search/search-service.d.cts +0 -47
- package/dist/search/types.d.cts +0 -78
- package/dist/session/chat-session.d.cts +0 -284
- package/dist/session/error-codes.d.cts +0 -13
- package/dist/session/errors.d.cts +0 -58
- package/dist/session/history/database.d.cts +0 -28
- package/dist/session/history/factory.d.cts +0 -11
- package/dist/session/history/types.d.cts +0 -17
- package/dist/session/index.d.cts +0 -53
- package/dist/session/schemas.d.cts +0 -16
- package/dist/session/session-manager.d.cts +0 -219
- package/dist/storage/backend/cache-backend.d.ts +0 -15
- package/dist/storage/backend/database-backend.d.ts +0 -19
- package/dist/storage/backend/memory-backend.d.cts +0 -34
- package/dist/storage/backend/postgres-backend.d.cts +0 -37
- package/dist/storage/backend/redis-backend.d.cts +0 -36
- package/dist/storage/backend/sqlite-backend.d.ts +0 -35
- package/dist/storage/backend/types.d.cts +0 -14
- package/dist/storage/backend/types.d.ts +0 -14
- package/dist/storage/error-codes.d.cts +0 -14
- package/dist/storage/errors.d.cts +0 -63
- package/dist/storage/index.d.cts +0 -7
- package/dist/storage/schemas.d.cts +0 -856
- package/dist/storage/storage-manager.d.cts +0 -52
- package/dist/storage/types.d.cts +0 -5
- package/dist/systemPrompt/contributors.d.cts +0 -44
- package/dist/systemPrompt/error-codes.d.cts +0 -13
- package/dist/systemPrompt/errors.d.cts +0 -55
- package/dist/systemPrompt/in-built-prompts.d.cts +0 -28
- package/dist/systemPrompt/index.d.cts +0 -14
- package/dist/systemPrompt/manager.d.cts +0 -31
- package/dist/systemPrompt/registry.d.cts +0 -20
- package/dist/systemPrompt/schemas.d.cts +0 -401
- package/dist/systemPrompt/types.d.cts +0 -19
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +0 -19
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +0 -17
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +0 -26
- package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +0 -35
- package/dist/tools/confirmation/event-based-confirmation-provider.cjs +0 -158
- package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +0 -41
- package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +0 -41
- package/dist/tools/confirmation/event-based-confirmation-provider.js +0 -134
- package/dist/tools/confirmation/factory.cjs +0 -52
- package/dist/tools/confirmation/factory.d.cts +0 -37
- package/dist/tools/confirmation/factory.d.ts +0 -37
- package/dist/tools/confirmation/factory.js +0 -28
- package/dist/tools/confirmation/noop-confirmation-provider.cjs +0 -49
- package/dist/tools/confirmation/noop-confirmation-provider.d.cts +0 -22
- package/dist/tools/confirmation/noop-confirmation-provider.d.ts +0 -22
- package/dist/tools/confirmation/noop-confirmation-provider.js +0 -25
- package/dist/tools/confirmation/types.d.cts +0 -46
- package/dist/tools/confirmation/types.d.ts +0 -46
- package/dist/tools/error-codes.d.cts +0 -18
- package/dist/tools/errors.d.cts +0 -97
- package/dist/tools/index.d.cts +0 -19
- package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +0 -15
- package/dist/tools/internal-tools/index.d.cts +0 -13
- package/dist/tools/internal-tools/provider.d.cts +0 -66
- package/dist/tools/internal-tools/registry.d.cts +0 -45
- package/dist/tools/schemas.d.cts +0 -21
- package/dist/tools/tool-manager.d.cts +0 -106
- package/dist/tools/types.d.cts +0 -66
- package/dist/utils/api-key-resolver.d.cts +0 -23
- package/dist/utils/api-key-store.d.cts +0 -26
- package/dist/utils/env.d.cts +0 -29
- package/dist/utils/error-conversion.d.cts +0 -13
- package/dist/utils/execution-context.d.cts +0 -21
- package/dist/utils/fs-walk.d.cts +0 -9
- package/dist/utils/index.d.cts +0 -63
- package/dist/utils/path.d.cts +0 -54
- package/dist/utils/port-utils.d.cts +0 -11
- package/dist/utils/port-utils.spec.d.cts +0 -2
- package/dist/utils/port-utils.spec.d.ts +0 -2
- package/dist/utils/redactor.d.cts +0 -18
- package/dist/utils/result.d.cts +0 -180
- package/dist/utils/safe-stringify.d.cts +0 -7
- package/dist/utils/schema.d.cts +0 -6
- package/dist/utils/service-initializer.d.cts +0 -63
- package/dist/utils/user-info.d.cts +0 -3
- package/dist/utils/zod-schema-converter.d.cts +0 -13
- /package/dist/{storage/backend → filesystem}/types.cjs +0 -0
- /package/dist/{storage/backend → filesystem}/types.js +0 -0
- /package/dist/{tools/confirmation → memory}/types.cjs +0 -0
- /package/dist/{tools/confirmation → memory}/types.js +0 -0
- /package/dist/{storage/backend/cache-backend.js → plugins/types.js} +0 -0
- /package/dist/{storage/backend/database-backend.js → process/types.js} +0 -0
package/dist/mcp/manager.js
CHANGED
|
@@ -1,20 +1,74 @@
|
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
1
2
|
import { MCPClient } from "./mcp-client.js";
|
|
2
3
|
import { logger } from "../logger/index.js";
|
|
3
4
|
import { MCPError } from "./errors.js";
|
|
5
|
+
import { eventBus } from "../events/index.js";
|
|
4
6
|
class MCPManager {
|
|
5
7
|
clients = /* @__PURE__ */ new Map();
|
|
6
8
|
connectionErrors = {};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
configCache = /* @__PURE__ */ new Map();
|
|
10
|
+
// Store original configs for restart
|
|
11
|
+
toolCache = /* @__PURE__ */ new Map();
|
|
9
12
|
toolConflicts = /* @__PURE__ */ new Set();
|
|
10
|
-
|
|
11
|
-
|
|
13
|
+
// Track which tool names have conflicts
|
|
14
|
+
promptCache = /* @__PURE__ */ new Map();
|
|
15
|
+
resourceCache = /* @__PURE__ */ new Map();
|
|
12
16
|
sanitizedNameToServerMap = /* @__PURE__ */ new Map();
|
|
17
|
+
approvalManager = null;
|
|
18
|
+
// Will be set by service initializer
|
|
13
19
|
// Use a distinctive delimiter that won't appear in normal server/tool names
|
|
14
20
|
// Using double hyphen as it's allowed in LLM tool name patterns (^[a-zA-Z0-9_-]+$)
|
|
15
21
|
static SERVER_DELIMITER = "--";
|
|
16
22
|
constructor() {
|
|
17
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Set the approval manager for handling elicitation requests from MCP servers
|
|
26
|
+
*
|
|
27
|
+
* TODO: Consider making ApprovalManager a required constructor parameter instead of using a setter.
|
|
28
|
+
* This would make the dependency explicit and remove the need for defensive `if (!approvalManager)` checks.
|
|
29
|
+
* Current setter pattern is useful if we want to expose MCPManager as a standalone service to end-users
|
|
30
|
+
* without requiring them to know about ApprovalManager.
|
|
31
|
+
*/
|
|
32
|
+
setApprovalManager(approvalManager) {
|
|
33
|
+
this.approvalManager = approvalManager;
|
|
34
|
+
for (const [_name, client] of this.clients.entries()) {
|
|
35
|
+
if (client instanceof MCPClient) {
|
|
36
|
+
client.setApprovalManager(approvalManager);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
buildQualifiedResourceKey(serverName, resourceUri) {
|
|
41
|
+
return `mcp:${serverName}:${resourceUri}`;
|
|
42
|
+
}
|
|
43
|
+
parseQualifiedResourceKey(key) {
|
|
44
|
+
if (!key.startsWith("mcp:")) {
|
|
45
|
+
throw MCPError.resourceNotFound(key);
|
|
46
|
+
}
|
|
47
|
+
const [, serverName, ...rest] = key.split(":");
|
|
48
|
+
if (!serverName || rest.length === 0) {
|
|
49
|
+
throw MCPError.resourceNotFound(key);
|
|
50
|
+
}
|
|
51
|
+
return { serverName, resourceUri: rest.join(":") };
|
|
52
|
+
}
|
|
53
|
+
removeServerResources(serverName) {
|
|
54
|
+
for (const [key, entry] of Array.from(this.resourceCache.entries())) {
|
|
55
|
+
if (entry.serverName === serverName) {
|
|
56
|
+
this.resourceCache.delete(key);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
getResourceCacheEntry(resourceKey) {
|
|
61
|
+
if (this.resourceCache.has(resourceKey)) {
|
|
62
|
+
return this.resourceCache.get(resourceKey);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const { serverName, resourceUri } = this.parseQualifiedResourceKey(resourceKey);
|
|
66
|
+
const canonicalKey = this.buildQualifiedResourceKey(serverName, resourceUri);
|
|
67
|
+
return this.resourceCache.get(canonicalKey);
|
|
68
|
+
} catch {
|
|
69
|
+
return void 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
18
72
|
/**
|
|
19
73
|
* Register a client that provides tools (and potentially more)
|
|
20
74
|
* @param name Unique name for the client
|
|
@@ -32,53 +86,66 @@ class MCPManager {
|
|
|
32
86
|
}
|
|
33
87
|
this.clients.set(name, client);
|
|
34
88
|
this.sanitizedNameToServerMap.set(sanitizedName, name);
|
|
89
|
+
this.setupClientNotifications(name, client);
|
|
35
90
|
logger.info(`Registered client: ${name}`);
|
|
36
91
|
delete this.connectionErrors[name];
|
|
37
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Clears all cached data for a disconnected MCP client
|
|
95
|
+
*
|
|
96
|
+
* Performs comprehensive cleanup of tool, prompt, and resource caches.
|
|
97
|
+
* Uses two-pass algorithm to detect and resolve tool name conflicts:
|
|
98
|
+
* if a conflicted tool now has only one provider, restores simple name.
|
|
99
|
+
*
|
|
100
|
+
* @param clientName - The name/identifier of the MCP server being removed
|
|
101
|
+
* @private
|
|
102
|
+
*/
|
|
38
103
|
clearClientCache(clientName) {
|
|
39
104
|
const client = this.clients.get(clientName);
|
|
40
105
|
if (!client) return;
|
|
41
|
-
const hadServerTools = this.serverToolsMap.has(clientName);
|
|
42
|
-
this.serverToolsMap.delete(clientName);
|
|
43
106
|
const sanitizedName = this.sanitizeServerName(clientName);
|
|
44
107
|
if (this.sanitizedNameToServerMap.get(sanitizedName) === clientName) {
|
|
45
108
|
this.sanitizedNameToServerMap.delete(sanitizedName);
|
|
46
109
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
110
|
+
const removedToolBaseNames = /* @__PURE__ */ new Set();
|
|
111
|
+
for (const [toolKey, entry] of Array.from(this.toolCache.entries())) {
|
|
112
|
+
if (entry.serverName === clientName) {
|
|
113
|
+
const delimiterIndex = toolKey.lastIndexOf(MCPManager.SERVER_DELIMITER);
|
|
114
|
+
const baseName = delimiterIndex === -1 ? toolKey : toolKey.substring(delimiterIndex + MCPManager.SERVER_DELIMITER.length);
|
|
115
|
+
removedToolBaseNames.add(baseName);
|
|
116
|
+
this.toolCache.delete(toolKey);
|
|
54
117
|
}
|
|
55
|
-
);
|
|
56
|
-
if (hadServerTools) {
|
|
57
|
-
this.rebuildToolConflicts();
|
|
58
118
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
119
|
+
for (const baseName of removedToolBaseNames) {
|
|
120
|
+
const remainingTools = Array.from(this.toolCache.entries()).filter(([key, _]) => {
|
|
121
|
+
const delimiterIndex = key.lastIndexOf(MCPManager.SERVER_DELIMITER);
|
|
122
|
+
const bn = delimiterIndex === -1 ? key : key.substring(delimiterIndex + MCPManager.SERVER_DELIMITER.length);
|
|
123
|
+
return bn === baseName;
|
|
124
|
+
});
|
|
125
|
+
if (remainingTools.length === 0) {
|
|
126
|
+
this.toolConflicts.delete(baseName);
|
|
127
|
+
} else if (remainingTools.length === 1 && this.toolConflicts.has(baseName)) {
|
|
128
|
+
const singleTool = remainingTools[0];
|
|
129
|
+
if (singleTool) {
|
|
130
|
+
const [qualifiedKey, entry] = singleTool;
|
|
131
|
+
this.toolCache.delete(qualifiedKey);
|
|
132
|
+
this.toolCache.set(baseName, entry);
|
|
133
|
+
this.toolConflicts.delete(baseName);
|
|
134
|
+
logger.debug(`Restored tool '${baseName}' to simple name (conflict resolved)`);
|
|
135
|
+
}
|
|
67
136
|
}
|
|
68
137
|
}
|
|
69
|
-
for (const [
|
|
70
|
-
if (
|
|
71
|
-
this.
|
|
72
|
-
this.toolToClientMap.delete(toolName);
|
|
138
|
+
for (const [promptName, entry] of Array.from(this.promptCache.entries())) {
|
|
139
|
+
if (entry.serverName === clientName) {
|
|
140
|
+
this.promptCache.delete(promptName);
|
|
73
141
|
}
|
|
74
142
|
}
|
|
75
|
-
for (const [
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
this.toolToClientMap.set(toolName, client);
|
|
79
|
-
}
|
|
143
|
+
for (const [key, entry] of Array.from(this.resourceCache.entries())) {
|
|
144
|
+
if (entry.client === client || entry.serverName === clientName) {
|
|
145
|
+
this.resourceCache.delete(key);
|
|
80
146
|
}
|
|
81
147
|
}
|
|
148
|
+
logger.debug(`Cleared cache for client: ${clientName}`);
|
|
82
149
|
}
|
|
83
150
|
/**
|
|
84
151
|
* Sanitize server name for use in tool prefixing.
|
|
@@ -87,25 +154,80 @@ class MCPManager {
|
|
|
87
154
|
sanitizeServerName(serverName) {
|
|
88
155
|
return serverName.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
89
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Updates internal caches for a connected MCP client
|
|
159
|
+
*
|
|
160
|
+
* This method performs initial cache population after a client connects.
|
|
161
|
+
* It fetches and caches tools, prompts, and resources from the MCP server,
|
|
162
|
+
* implementing conflict detection and resolution for tool names.
|
|
163
|
+
*
|
|
164
|
+
* @param clientName - The name/identifier of the MCP server
|
|
165
|
+
* @param client - The connected MCP client instance
|
|
166
|
+
*
|
|
167
|
+
* @remarks
|
|
168
|
+
* **Tool Caching:**
|
|
169
|
+
* - Fetches all tools and caches them with full definitions
|
|
170
|
+
* - Detects naming conflicts when multiple servers provide same tool name
|
|
171
|
+
* - On conflict: uses qualified names (`server--toolname`) for all conflicting tools
|
|
172
|
+
* - Updates toolConflicts set to track which base names have conflicts
|
|
173
|
+
*
|
|
174
|
+
* **Prompt Caching:**
|
|
175
|
+
* - Fetches all prompts and their metadata (description, arguments)
|
|
176
|
+
* - Stores full prompt definitions in promptCache for efficient access
|
|
177
|
+
* - Falls back to minimal metadata if full definition fetch fails
|
|
178
|
+
*
|
|
179
|
+
* **Resource Caching:**
|
|
180
|
+
* - Fetches all resource summaries (uri, name, mimeType)
|
|
181
|
+
* - Stores resource metadata in resourceCache for quick lookups
|
|
182
|
+
*
|
|
183
|
+
* **Error Handling:**
|
|
184
|
+
* - Tool fetch errors abort caching entirely (early return)
|
|
185
|
+
* - Prompt/resource errors log warnings but don't block other caching
|
|
186
|
+
* - Individual prompt metadata errors are caught and logged
|
|
187
|
+
*
|
|
188
|
+
* @private
|
|
189
|
+
*/
|
|
90
190
|
async updateClientCache(clientName, client) {
|
|
91
|
-
const serverTools = /* @__PURE__ */ new Map();
|
|
92
|
-
this.serverToolsMap.set(clientName, serverTools);
|
|
93
191
|
try {
|
|
94
192
|
const tools = await client.getTools();
|
|
95
193
|
logger.debug(
|
|
96
194
|
`\u{1F527} Discovered ${Object.keys(tools).length} tools from server '${clientName}': [${Object.keys(tools).join(", ")}]`
|
|
97
195
|
);
|
|
98
196
|
for (const toolName in tools) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
197
|
+
const toolDef = tools[toolName];
|
|
198
|
+
if (!toolDef) continue;
|
|
199
|
+
const existingEntry = this.toolCache.get(toolName);
|
|
200
|
+
if (existingEntry && existingEntry.serverName !== clientName) {
|
|
102
201
|
this.toolConflicts.add(toolName);
|
|
103
|
-
this.
|
|
202
|
+
this.toolCache.delete(toolName);
|
|
203
|
+
const existingSanitized = this.sanitizeServerName(existingEntry.serverName);
|
|
204
|
+
const existingQualified = `${existingSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
205
|
+
this.toolCache.set(existingQualified, existingEntry);
|
|
206
|
+
const newSanitized = this.sanitizeServerName(clientName);
|
|
207
|
+
const newQualified = `${newSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
208
|
+
this.toolCache.set(newQualified, {
|
|
209
|
+
serverName: clientName,
|
|
210
|
+
client,
|
|
211
|
+
definition: toolDef
|
|
212
|
+
});
|
|
104
213
|
logger.warn(
|
|
105
|
-
`\u26A0\uFE0F Tool conflict detected for '${toolName}' -
|
|
214
|
+
`\u26A0\uFE0F Tool conflict detected for '${toolName}' - using server prefixes: ${existingQualified}, ${newQualified}`
|
|
106
215
|
);
|
|
107
|
-
} else if (
|
|
108
|
-
this.
|
|
216
|
+
} else if (this.toolConflicts.has(toolName)) {
|
|
217
|
+
const sanitizedName = this.sanitizeServerName(clientName);
|
|
218
|
+
const qualifiedName = `${sanitizedName}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
219
|
+
this.toolCache.set(qualifiedName, {
|
|
220
|
+
serverName: clientName,
|
|
221
|
+
client,
|
|
222
|
+
definition: toolDef
|
|
223
|
+
});
|
|
224
|
+
logger.debug(`\u2705 Tool '${qualifiedName}' cached (known conflict)`);
|
|
225
|
+
} else {
|
|
226
|
+
this.toolCache.set(toolName, {
|
|
227
|
+
serverName: clientName,
|
|
228
|
+
client,
|
|
229
|
+
definition: toolDef
|
|
230
|
+
});
|
|
109
231
|
logger.debug(`\u2705 Tool '${toolName}' mapped to ${clientName}`);
|
|
110
232
|
}
|
|
111
233
|
}
|
|
@@ -120,17 +242,33 @@ class MCPManager {
|
|
|
120
242
|
}
|
|
121
243
|
try {
|
|
122
244
|
const prompts = await client.listPrompts();
|
|
123
|
-
prompts
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
245
|
+
for (const prompt of prompts) {
|
|
246
|
+
const definition = {
|
|
247
|
+
name: prompt.name,
|
|
248
|
+
...prompt.title && { title: prompt.title },
|
|
249
|
+
...prompt.description && { description: prompt.description },
|
|
250
|
+
...prompt.arguments && { arguments: prompt.arguments }
|
|
251
|
+
};
|
|
252
|
+
this.promptCache.set(prompt.name, {
|
|
253
|
+
serverName: clientName,
|
|
254
|
+
client,
|
|
255
|
+
definition
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
logger.debug(`Cached ${prompts.length} prompts for client: ${clientName}`);
|
|
127
259
|
} catch (error) {
|
|
128
260
|
logger.debug(`Skipping prompts for client ${clientName}: ${error}`);
|
|
129
261
|
}
|
|
130
262
|
try {
|
|
263
|
+
this.removeServerResources(clientName);
|
|
131
264
|
const resources = await client.listResources();
|
|
132
|
-
resources.forEach((
|
|
133
|
-
this.
|
|
265
|
+
resources.forEach((summary) => {
|
|
266
|
+
const key = this.buildQualifiedResourceKey(clientName, summary.uri);
|
|
267
|
+
this.resourceCache.set(key, {
|
|
268
|
+
serverName: clientName,
|
|
269
|
+
client,
|
|
270
|
+
summary
|
|
271
|
+
});
|
|
134
272
|
});
|
|
135
273
|
logger.debug(`Cached resources for client: ${clientName}`);
|
|
136
274
|
} catch (error) {
|
|
@@ -138,45 +276,28 @@ class MCPManager {
|
|
|
138
276
|
}
|
|
139
277
|
}
|
|
140
278
|
/**
|
|
141
|
-
* Get all available MCP tools from
|
|
142
|
-
* Conflicted tools are
|
|
279
|
+
* Get all available MCP tools from cache (no network calls).
|
|
280
|
+
* Conflicted tools are already stored with qualified names.
|
|
143
281
|
* @returns Promise resolving to a ToolSet mapping tool names to Tool definitions
|
|
144
282
|
*/
|
|
145
283
|
async getAllTools() {
|
|
146
284
|
const allTools = {};
|
|
147
|
-
const
|
|
148
|
-
|
|
149
|
-
if (
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const clientTools = await getClientTools(client);
|
|
157
|
-
const toolDef = clientTools[toolName];
|
|
158
|
-
if (toolDef) {
|
|
159
|
-
allTools[toolName] = toolDef;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
for (const [serverName, serverTools] of this.serverToolsMap.entries()) {
|
|
163
|
-
for (const [toolName, client] of serverTools.entries()) {
|
|
164
|
-
if (this.toolConflicts.has(toolName)) {
|
|
165
|
-
const sanitizedServerName = this.sanitizeServerName(serverName);
|
|
166
|
-
const qualifiedName = `${sanitizedServerName}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
167
|
-
const clientTools = await getClientTools(client);
|
|
168
|
-
const toolDef = clientTools[toolName];
|
|
169
|
-
if (toolDef) {
|
|
170
|
-
allTools[qualifiedName] = {
|
|
171
|
-
...toolDef,
|
|
172
|
-
description: toolDef.description ? `${toolDef.description} (via ${serverName})` : `Tool from ${serverName}`
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
}
|
|
285
|
+
for (const [toolKey, entry] of this.toolCache.entries()) {
|
|
286
|
+
const toolDef = entry.definition;
|
|
287
|
+
if (toolKey.includes(MCPManager.SERVER_DELIMITER)) {
|
|
288
|
+
allTools[toolKey] = {
|
|
289
|
+
...toolDef,
|
|
290
|
+
description: toolDef.description ? `${toolDef.description} (via ${entry.serverName})` : `Tool from ${entry.serverName}`
|
|
291
|
+
};
|
|
292
|
+
} else {
|
|
293
|
+
allTools[toolKey] = toolDef;
|
|
176
294
|
}
|
|
177
295
|
}
|
|
296
|
+
const serverNames = Array.from(
|
|
297
|
+
new Set(Array.from(this.toolCache.values()).map((e) => e.serverName))
|
|
298
|
+
);
|
|
178
299
|
logger.debug(
|
|
179
|
-
`\u{1F527} MCP
|
|
300
|
+
`\u{1F527} MCP tools from cache: ${Object.keys(allTools).length} total tools, ${this.toolConflicts.size} conflicts, connected servers: ${serverNames.join(", ")}`
|
|
180
301
|
);
|
|
181
302
|
if (logger.getLevel() === "debug") {
|
|
182
303
|
Object.keys(allTools).forEach((toolName) => {
|
|
@@ -204,7 +325,7 @@ class MCPManager {
|
|
|
204
325
|
delimiterIndex + MCPManager.SERVER_DELIMITER.length
|
|
205
326
|
);
|
|
206
327
|
const originalServerName = this.sanitizedNameToServerMap.get(serverPrefix);
|
|
207
|
-
if (originalServerName && this.
|
|
328
|
+
if (originalServerName && this.toolCache.has(toolName)) {
|
|
208
329
|
return { serverName: originalServerName, toolName: actualToolName };
|
|
209
330
|
}
|
|
210
331
|
return null;
|
|
@@ -216,12 +337,7 @@ class MCPManager {
|
|
|
216
337
|
* @returns The client that provides the tool, or undefined if not found
|
|
217
338
|
*/
|
|
218
339
|
getToolClient(toolName) {
|
|
219
|
-
|
|
220
|
-
if (parsed) {
|
|
221
|
-
const serverTools = this.serverToolsMap.get(parsed.serverName);
|
|
222
|
-
return serverTools?.get(parsed.toolName);
|
|
223
|
-
}
|
|
224
|
-
return this.toolToClientMap.get(toolName);
|
|
340
|
+
return this.toolCache.get(toolName)?.client;
|
|
225
341
|
}
|
|
226
342
|
/**
|
|
227
343
|
* Execute a specific MCP tool with the given arguments.
|
|
@@ -234,13 +350,8 @@ class MCPManager {
|
|
|
234
350
|
const client = this.getToolClient(toolName);
|
|
235
351
|
if (!client) {
|
|
236
352
|
logger.error(`\u274C No MCP tool found: ${toolName}`);
|
|
237
|
-
logger.debug(
|
|
238
|
-
`Available MCP tools: ${Array.from(this.toolToClientMap.keys()).join(", ")}`
|
|
239
|
-
);
|
|
353
|
+
logger.debug(`Available MCP tools: ${Array.from(this.toolCache.keys()).join(", ")}`);
|
|
240
354
|
logger.debug(`Conflicted tools: ${Array.from(this.toolConflicts).join(", ")}`);
|
|
241
|
-
logger.debug(
|
|
242
|
-
`Server tools map keys: ${Array.from(this.serverToolsMap.keys()).join(", ")}`
|
|
243
|
-
);
|
|
244
355
|
throw MCPError.toolNotFound(toolName);
|
|
245
356
|
}
|
|
246
357
|
const parsed = this.parseQualifiedToolName(toolName);
|
|
@@ -262,7 +373,7 @@ class MCPManager {
|
|
|
262
373
|
* @returns Promise resolving to an array of unique prompt names.
|
|
263
374
|
*/
|
|
264
375
|
async listAllPrompts() {
|
|
265
|
-
return Array.from(this.
|
|
376
|
+
return Array.from(this.promptCache.keys());
|
|
266
377
|
}
|
|
267
378
|
/**
|
|
268
379
|
* Get the client that provides a specific prompt from the cache.
|
|
@@ -270,7 +381,7 @@ class MCPManager {
|
|
|
270
381
|
* @returns The client instance or undefined.
|
|
271
382
|
*/
|
|
272
383
|
getPromptClient(promptName) {
|
|
273
|
-
return this.
|
|
384
|
+
return this.promptCache.get(promptName)?.client;
|
|
274
385
|
}
|
|
275
386
|
/**
|
|
276
387
|
* Get a specific prompt definition by name.
|
|
@@ -286,31 +397,64 @@ class MCPManager {
|
|
|
286
397
|
return await client.getPrompt(name, args);
|
|
287
398
|
}
|
|
288
399
|
/**
|
|
289
|
-
* Get
|
|
290
|
-
* @
|
|
400
|
+
* Get cached prompt metadata (no network calls).
|
|
401
|
+
* @param promptName Name of the prompt.
|
|
402
|
+
* @returns Cached prompt definition or undefined if not cached.
|
|
403
|
+
*/
|
|
404
|
+
getPromptMetadata(promptName) {
|
|
405
|
+
const entry = this.promptCache.get(promptName);
|
|
406
|
+
return entry?.definition;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Get all cached prompt metadata (no network calls).
|
|
410
|
+
* @returns Array of all cached prompt definitions with server info.
|
|
411
|
+
*/
|
|
412
|
+
getAllPromptMetadata() {
|
|
413
|
+
return Array.from(this.promptCache.entries()).map(([promptName, entry]) => ({
|
|
414
|
+
promptName,
|
|
415
|
+
serverName: entry.serverName,
|
|
416
|
+
definition: entry.definition
|
|
417
|
+
}));
|
|
418
|
+
}
|
|
419
|
+
/**
|
|
420
|
+
* Get all cached MCP resources (no network calls).
|
|
291
421
|
*/
|
|
292
422
|
async listAllResources() {
|
|
293
|
-
return Array.from(this.
|
|
423
|
+
return Array.from(this.resourceCache.entries()).map(([key, { serverName, summary }]) => ({
|
|
424
|
+
key,
|
|
425
|
+
serverName,
|
|
426
|
+
summary
|
|
427
|
+
}));
|
|
294
428
|
}
|
|
295
429
|
/**
|
|
296
|
-
*
|
|
297
|
-
* @param resourceUri URI of the resource.
|
|
298
|
-
* @returns The client instance or undefined.
|
|
430
|
+
* Determine if a qualified MCP resource is cached.
|
|
299
431
|
*/
|
|
300
|
-
|
|
301
|
-
return this.
|
|
432
|
+
hasResource(resourceKey) {
|
|
433
|
+
return this.getResourceCacheEntry(resourceKey) !== void 0;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Get cached resource metadata by qualified key.
|
|
437
|
+
*/
|
|
438
|
+
getResource(resourceKey) {
|
|
439
|
+
const entry = this.getResourceCacheEntry(resourceKey);
|
|
440
|
+
if (!entry) return void 0;
|
|
441
|
+
return {
|
|
442
|
+
key: resourceKey,
|
|
443
|
+
serverName: entry.serverName,
|
|
444
|
+
summary: entry.summary
|
|
445
|
+
};
|
|
302
446
|
}
|
|
303
447
|
/**
|
|
304
|
-
* Read a specific resource by URI.
|
|
305
|
-
* @param
|
|
448
|
+
* Read a specific resource by qualified URI.
|
|
449
|
+
* @param resourceKey Qualified resource key in the form mcp:server:uri.
|
|
306
450
|
* @returns Promise resolving to the resource content.
|
|
307
451
|
*/
|
|
308
|
-
async readResource(
|
|
309
|
-
const
|
|
310
|
-
if (!
|
|
311
|
-
throw MCPError.resourceNotFound(
|
|
452
|
+
async readResource(resourceKey) {
|
|
453
|
+
const entry = this.getResourceCacheEntry(resourceKey);
|
|
454
|
+
if (!entry) {
|
|
455
|
+
throw MCPError.resourceNotFound(resourceKey);
|
|
312
456
|
}
|
|
313
|
-
return await client.readResource(uri);
|
|
457
|
+
return await entry.client.readResource(entry.summary.uri);
|
|
314
458
|
}
|
|
315
459
|
/**
|
|
316
460
|
* Initialize clients from server configurations
|
|
@@ -367,8 +511,12 @@ class MCPManager {
|
|
|
367
511
|
try {
|
|
368
512
|
logger.info(`Attempting to connect to new server '${name}'...`);
|
|
369
513
|
await client.connect(config, name);
|
|
514
|
+
if (this.approvalManager) {
|
|
515
|
+
client.setApprovalManager(this.approvalManager);
|
|
516
|
+
}
|
|
370
517
|
this.registerClient(name, client);
|
|
371
518
|
await this.updateClientCache(name, client);
|
|
519
|
+
this.configCache.set(name, config);
|
|
372
520
|
logger.info(`Successfully connected and cached new server '${name}'`);
|
|
373
521
|
} catch (error) {
|
|
374
522
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
@@ -392,6 +540,20 @@ class MCPManager {
|
|
|
392
540
|
getFailedConnections() {
|
|
393
541
|
return this.connectionErrors;
|
|
394
542
|
}
|
|
543
|
+
/**
|
|
544
|
+
* Refresh all client caches by re-fetching capabilities from servers
|
|
545
|
+
* Useful when you want to force a full refresh of tools, prompts, and resources
|
|
546
|
+
* In normal operation, caches are automatically kept fresh via server notifications
|
|
547
|
+
*/
|
|
548
|
+
async refresh() {
|
|
549
|
+
logger.debug("Refreshing all MCPManager caches...");
|
|
550
|
+
const refreshPromises = [];
|
|
551
|
+
for (const [clientName, client] of this.clients.entries()) {
|
|
552
|
+
refreshPromises.push(this.updateClientCache(clientName, client));
|
|
553
|
+
}
|
|
554
|
+
await Promise.all(refreshPromises);
|
|
555
|
+
logger.debug(`\u2705 MCPManager cache refresh complete for ${this.clients.size} client(s)`);
|
|
556
|
+
}
|
|
395
557
|
/**
|
|
396
558
|
* Disconnect and remove a specific client by name.
|
|
397
559
|
* @param name The name of the client to remove.
|
|
@@ -399,18 +561,17 @@ class MCPManager {
|
|
|
399
561
|
async removeClient(name) {
|
|
400
562
|
const client = this.clients.get(name);
|
|
401
563
|
if (client) {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
);
|
|
410
|
-
}
|
|
564
|
+
try {
|
|
565
|
+
await client.disconnect();
|
|
566
|
+
logger.info(`Successfully disconnected client: ${name}`);
|
|
567
|
+
} catch (error) {
|
|
568
|
+
logger.error(
|
|
569
|
+
`Error disconnecting client '${name}': ${error instanceof Error ? error.message : String(error)}`
|
|
570
|
+
);
|
|
411
571
|
}
|
|
412
572
|
this.clearClientCache(name);
|
|
413
573
|
this.clients.delete(name);
|
|
574
|
+
this.configCache.delete(name);
|
|
414
575
|
logger.info(`Removed client from manager: ${name}`);
|
|
415
576
|
}
|
|
416
577
|
if (this.connectionErrors[name]) {
|
|
@@ -418,31 +579,269 @@ class MCPManager {
|
|
|
418
579
|
logger.info(`Cleared connection error for removed client: ${name}`);
|
|
419
580
|
}
|
|
420
581
|
}
|
|
582
|
+
/**
|
|
583
|
+
* Restart a specific MCP server by disconnecting and reconnecting with original config.
|
|
584
|
+
* @param name The name of the server to restart.
|
|
585
|
+
* @throws Error if server doesn't exist or config is not cached.
|
|
586
|
+
*/
|
|
587
|
+
async restartServer(name) {
|
|
588
|
+
const config = this.configCache.get(name);
|
|
589
|
+
if (!config) {
|
|
590
|
+
throw MCPError.serverNotFound(
|
|
591
|
+
name,
|
|
592
|
+
"Server config not found - cannot restart dynamically added servers without stored config"
|
|
593
|
+
);
|
|
594
|
+
}
|
|
595
|
+
const client = this.clients.get(name);
|
|
596
|
+
logger.info(`Restarting MCP server '${name}'...`);
|
|
597
|
+
if (client) {
|
|
598
|
+
try {
|
|
599
|
+
await client.disconnect();
|
|
600
|
+
logger.info(`Disconnected server '${name}' for restart`);
|
|
601
|
+
} catch (error) {
|
|
602
|
+
logger.warn(
|
|
603
|
+
`Error disconnecting server '${name}' during restart (continuing): ${error instanceof Error ? error.message : String(error)}`
|
|
604
|
+
);
|
|
605
|
+
}
|
|
606
|
+
} else {
|
|
607
|
+
logger.info(
|
|
608
|
+
`No active client found for '${name}' during restart; attempting fresh connection`
|
|
609
|
+
);
|
|
610
|
+
}
|
|
611
|
+
this.clearClientCache(name);
|
|
612
|
+
this.clients.delete(name);
|
|
613
|
+
delete this.connectionErrors[name];
|
|
614
|
+
try {
|
|
615
|
+
const newClient = new MCPClient();
|
|
616
|
+
await newClient.connect(config, name);
|
|
617
|
+
if (this.approvalManager) {
|
|
618
|
+
newClient.setApprovalManager(this.approvalManager);
|
|
619
|
+
}
|
|
620
|
+
this.registerClient(name, newClient);
|
|
621
|
+
await this.updateClientCache(name, newClient);
|
|
622
|
+
logger.info(`Successfully restarted server '${name}'`);
|
|
623
|
+
eventBus.emit("dexto:mcpServerRestarted", { serverName: name });
|
|
624
|
+
} catch (error) {
|
|
625
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
626
|
+
this.connectionErrors[name] = errorMsg;
|
|
627
|
+
logger.error(`Failed to restart server '${name}': ${errorMsg}`);
|
|
628
|
+
throw MCPError.connectionFailed(name, errorMsg);
|
|
629
|
+
}
|
|
630
|
+
}
|
|
421
631
|
/**
|
|
422
632
|
* Disconnect all clients and clear caches
|
|
423
633
|
*/
|
|
424
634
|
async disconnectAll() {
|
|
425
635
|
const disconnectPromises = [];
|
|
426
636
|
for (const [name, client] of Array.from(this.clients.entries())) {
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
);
|
|
433
|
-
}
|
|
637
|
+
disconnectPromises.push(
|
|
638
|
+
client.disconnect().then(() => logger.info(`Disconnected client: ${name}`)).catch(
|
|
639
|
+
(error) => logger.error(`Failed to disconnect client '${name}': ${error}`)
|
|
640
|
+
)
|
|
641
|
+
);
|
|
434
642
|
}
|
|
435
643
|
await Promise.all(disconnectPromises);
|
|
436
644
|
this.clients.clear();
|
|
437
645
|
this.connectionErrors = {};
|
|
438
|
-
this.
|
|
439
|
-
this.
|
|
646
|
+
this.configCache.clear();
|
|
647
|
+
this.toolCache.clear();
|
|
440
648
|
this.toolConflicts.clear();
|
|
441
|
-
this.
|
|
442
|
-
this.
|
|
649
|
+
this.promptCache.clear();
|
|
650
|
+
this.resourceCache.clear();
|
|
443
651
|
this.sanitizedNameToServerMap.clear();
|
|
444
652
|
logger.info("Disconnected all clients and cleared caches.");
|
|
445
653
|
}
|
|
654
|
+
/**
|
|
655
|
+
* Set up notification listeners for a specific client
|
|
656
|
+
*/
|
|
657
|
+
setupClientNotifications(clientName, client) {
|
|
658
|
+
try {
|
|
659
|
+
client.on("resourceUpdated", async (params) => {
|
|
660
|
+
logger.debug(
|
|
661
|
+
`Received resource update notification from ${clientName}: ${params.uri}`
|
|
662
|
+
);
|
|
663
|
+
await this.handleResourceUpdated(clientName, params);
|
|
664
|
+
});
|
|
665
|
+
client.on("promptsListChanged", async () => {
|
|
666
|
+
logger.debug(`Received prompts list change notification from ${clientName}`);
|
|
667
|
+
await this.handlePromptsListChanged(clientName, client);
|
|
668
|
+
});
|
|
669
|
+
client.on("toolsListChanged", async () => {
|
|
670
|
+
logger.debug(`Received tools list change notification from ${clientName}`);
|
|
671
|
+
await this.handleToolsListChanged(clientName, client);
|
|
672
|
+
});
|
|
673
|
+
logger.debug(`Set up notification listeners for client: ${clientName}`);
|
|
674
|
+
} catch (error) {
|
|
675
|
+
logger.warn(`Failed to set up notification listeners for ${clientName}: ${error}`);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
/**
|
|
679
|
+
* Handle resource updated notification
|
|
680
|
+
*/
|
|
681
|
+
async handleResourceUpdated(serverName, params) {
|
|
682
|
+
try {
|
|
683
|
+
const client = this.clients.get(serverName);
|
|
684
|
+
if (client) {
|
|
685
|
+
const key = this.buildQualifiedResourceKey(serverName, params.uri);
|
|
686
|
+
try {
|
|
687
|
+
const resources = await client.listResources();
|
|
688
|
+
const updatedResource = resources.find((r) => r.uri === params.uri);
|
|
689
|
+
if (updatedResource) {
|
|
690
|
+
this.resourceCache.set(key, {
|
|
691
|
+
serverName,
|
|
692
|
+
client,
|
|
693
|
+
summary: updatedResource
|
|
694
|
+
});
|
|
695
|
+
logger.debug(`Updated resource cache for: ${params.uri}`);
|
|
696
|
+
}
|
|
697
|
+
} catch (error) {
|
|
698
|
+
logger.warn(`Failed to refresh resource ${params.uri}: ${error}`);
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
eventBus.emit("dexto:mcpResourceUpdated", {
|
|
702
|
+
serverName,
|
|
703
|
+
resourceUri: params.uri
|
|
704
|
+
});
|
|
705
|
+
} catch (error) {
|
|
706
|
+
logger.error(`Error handling resource update: ${error}`);
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
/**
|
|
710
|
+
* Handle prompts list changed notification
|
|
711
|
+
*/
|
|
712
|
+
async handlePromptsListChanged(serverName, client) {
|
|
713
|
+
try {
|
|
714
|
+
const existingPrompts = Array.from(this.promptCache.entries()).filter(([_, entry]) => entry.client === client).map(([promptName]) => promptName);
|
|
715
|
+
existingPrompts.forEach((promptName) => {
|
|
716
|
+
this.promptCache.delete(promptName);
|
|
717
|
+
});
|
|
718
|
+
try {
|
|
719
|
+
const newPrompts = await client.listPrompts();
|
|
720
|
+
for (const prompt of newPrompts) {
|
|
721
|
+
const definition = {
|
|
722
|
+
name: prompt.name,
|
|
723
|
+
...prompt.title && { title: prompt.title },
|
|
724
|
+
...prompt.description && { description: prompt.description },
|
|
725
|
+
...prompt.arguments && { arguments: prompt.arguments }
|
|
726
|
+
};
|
|
727
|
+
this.promptCache.set(prompt.name, {
|
|
728
|
+
serverName,
|
|
729
|
+
client,
|
|
730
|
+
definition
|
|
731
|
+
});
|
|
732
|
+
}
|
|
733
|
+
const promptNames = newPrompts.map((p) => p.name);
|
|
734
|
+
logger.debug(
|
|
735
|
+
`Updated prompts cache for ${serverName}: [${promptNames.join(", ")}]`
|
|
736
|
+
);
|
|
737
|
+
eventBus.emit("dexto:mcpPromptsListChanged", {
|
|
738
|
+
serverName,
|
|
739
|
+
prompts: promptNames
|
|
740
|
+
});
|
|
741
|
+
} catch (error) {
|
|
742
|
+
logger.warn(`Failed to refresh prompts for ${serverName}: ${error}`);
|
|
743
|
+
}
|
|
744
|
+
} catch (error) {
|
|
745
|
+
logger.error(`Error handling prompts list change: ${error}`);
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
/**
|
|
749
|
+
* Handle tools list changed notification
|
|
750
|
+
*/
|
|
751
|
+
async handleToolsListChanged(serverName, client) {
|
|
752
|
+
try {
|
|
753
|
+
const removedToolBaseNames = /* @__PURE__ */ new Set();
|
|
754
|
+
for (const [toolKey, entry] of Array.from(this.toolCache.entries())) {
|
|
755
|
+
if (entry.serverName === serverName) {
|
|
756
|
+
const delimiterIndex = toolKey.lastIndexOf(MCPManager.SERVER_DELIMITER);
|
|
757
|
+
const baseName = delimiterIndex === -1 ? toolKey : toolKey.substring(
|
|
758
|
+
delimiterIndex + MCPManager.SERVER_DELIMITER.length
|
|
759
|
+
);
|
|
760
|
+
removedToolBaseNames.add(baseName);
|
|
761
|
+
this.toolCache.delete(toolKey);
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
try {
|
|
765
|
+
const tools = await client.getTools();
|
|
766
|
+
const toolNames = Object.keys(tools);
|
|
767
|
+
logger.debug(
|
|
768
|
+
`\u{1F527} Refreshing tools from server '${serverName}': [${toolNames.join(", ")}]`
|
|
769
|
+
);
|
|
770
|
+
for (const toolName in tools) {
|
|
771
|
+
const toolDef = tools[toolName];
|
|
772
|
+
if (!toolDef) continue;
|
|
773
|
+
const existingEntry = this.toolCache.get(toolName);
|
|
774
|
+
if (existingEntry && existingEntry.serverName !== serverName) {
|
|
775
|
+
this.toolConflicts.add(toolName);
|
|
776
|
+
this.toolCache.delete(toolName);
|
|
777
|
+
const existingSanitized = this.sanitizeServerName(existingEntry.serverName);
|
|
778
|
+
const existingQualified = `${existingSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
779
|
+
this.toolCache.set(existingQualified, existingEntry);
|
|
780
|
+
const newSanitized = this.sanitizeServerName(serverName);
|
|
781
|
+
const newQualified = `${newSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
782
|
+
this.toolCache.set(newQualified, {
|
|
783
|
+
serverName,
|
|
784
|
+
client,
|
|
785
|
+
definition: toolDef
|
|
786
|
+
});
|
|
787
|
+
logger.warn(
|
|
788
|
+
`\u26A0\uFE0F Tool conflict detected for '${toolName}' - using server prefixes: ${existingQualified}, ${newQualified}`
|
|
789
|
+
);
|
|
790
|
+
} else if (this.toolConflicts.has(toolName)) {
|
|
791
|
+
const sanitizedName = this.sanitizeServerName(serverName);
|
|
792
|
+
const qualifiedName = `${sanitizedName}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
793
|
+
this.toolCache.set(qualifiedName, {
|
|
794
|
+
serverName,
|
|
795
|
+
client,
|
|
796
|
+
definition: toolDef
|
|
797
|
+
});
|
|
798
|
+
logger.debug(`\u2705 Tool '${qualifiedName}' cached (known conflict)`);
|
|
799
|
+
} else {
|
|
800
|
+
this.toolCache.set(toolName, {
|
|
801
|
+
serverName,
|
|
802
|
+
client,
|
|
803
|
+
definition: toolDef
|
|
804
|
+
});
|
|
805
|
+
logger.debug(`\u2705 Tool '${toolName}' mapped to ${serverName}`);
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
for (const baseName of removedToolBaseNames) {
|
|
809
|
+
const remainingTools = Array.from(this.toolCache.entries()).filter(
|
|
810
|
+
([key, _]) => {
|
|
811
|
+
const delimiterIndex = key.lastIndexOf(MCPManager.SERVER_DELIMITER);
|
|
812
|
+
const bn = delimiterIndex === -1 ? key : key.substring(
|
|
813
|
+
delimiterIndex + MCPManager.SERVER_DELIMITER.length
|
|
814
|
+
);
|
|
815
|
+
return bn === baseName;
|
|
816
|
+
}
|
|
817
|
+
);
|
|
818
|
+
if (remainingTools.length === 0) {
|
|
819
|
+
this.toolConflicts.delete(baseName);
|
|
820
|
+
} else if (remainingTools.length === 1 && this.toolConflicts.has(baseName)) {
|
|
821
|
+
const singleTool = remainingTools[0];
|
|
822
|
+
if (singleTool) {
|
|
823
|
+
const [qualifiedKey, entry] = singleTool;
|
|
824
|
+
this.toolCache.delete(qualifiedKey);
|
|
825
|
+
this.toolCache.set(baseName, entry);
|
|
826
|
+
this.toolConflicts.delete(baseName);
|
|
827
|
+
logger.debug(
|
|
828
|
+
`Restored tool '${baseName}' to simple name (conflict resolved)`
|
|
829
|
+
);
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
}
|
|
833
|
+
logger.debug(`Updated tools cache for ${serverName}: [${toolNames.join(", ")}]`);
|
|
834
|
+
eventBus.emit("dexto:mcpToolsListChanged", {
|
|
835
|
+
serverName,
|
|
836
|
+
tools: toolNames
|
|
837
|
+
});
|
|
838
|
+
} catch (error) {
|
|
839
|
+
logger.warn(`Failed to refresh tools for ${serverName}: ${error}`);
|
|
840
|
+
}
|
|
841
|
+
} catch (error) {
|
|
842
|
+
logger.error(`Error handling tools list change: ${error}`);
|
|
843
|
+
}
|
|
844
|
+
}
|
|
446
845
|
}
|
|
447
846
|
export {
|
|
448
847
|
MCPManager
|