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