@dexto/core 1.1.10 → 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.cjs
CHANGED
|
@@ -24,20 +24,71 @@ module.exports = __toCommonJS(manager_exports);
|
|
|
24
24
|
var import_mcp_client = require("./mcp-client.js");
|
|
25
25
|
var import_logger = require("../logger/index.js");
|
|
26
26
|
var import_errors = require("./errors.js");
|
|
27
|
+
var import_events = require("../events/index.js");
|
|
27
28
|
class MCPManager {
|
|
28
29
|
clients = /* @__PURE__ */ new Map();
|
|
29
30
|
connectionErrors = {};
|
|
30
|
-
|
|
31
|
-
serverToolsMap = /* @__PURE__ */ new Map();
|
|
31
|
+
toolCache = /* @__PURE__ */ new Map();
|
|
32
32
|
toolConflicts = /* @__PURE__ */ new Set();
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
// Track which tool names have conflicts
|
|
34
|
+
promptCache = /* @__PURE__ */ new Map();
|
|
35
|
+
resourceCache = /* @__PURE__ */ new Map();
|
|
35
36
|
sanitizedNameToServerMap = /* @__PURE__ */ new Map();
|
|
37
|
+
approvalManager = null;
|
|
38
|
+
// Will be set by service initializer
|
|
36
39
|
// Use a distinctive delimiter that won't appear in normal server/tool names
|
|
37
40
|
// Using double hyphen as it's allowed in LLM tool name patterns (^[a-zA-Z0-9_-]+$)
|
|
38
41
|
static SERVER_DELIMITER = "--";
|
|
39
42
|
constructor() {
|
|
40
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Set the approval manager for handling elicitation requests from MCP servers
|
|
46
|
+
*
|
|
47
|
+
* TODO: Consider making ApprovalManager a required constructor parameter instead of using a setter.
|
|
48
|
+
* This would make the dependency explicit and remove the need for defensive `if (!approvalManager)` checks.
|
|
49
|
+
* Current setter pattern is useful if we want to expose MCPManager as a standalone service to end-users
|
|
50
|
+
* without requiring them to know about ApprovalManager.
|
|
51
|
+
*/
|
|
52
|
+
setApprovalManager(approvalManager) {
|
|
53
|
+
this.approvalManager = approvalManager;
|
|
54
|
+
for (const [_name, client] of this.clients.entries()) {
|
|
55
|
+
if (client instanceof import_mcp_client.MCPClient) {
|
|
56
|
+
client.setApprovalManager(approvalManager);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
buildQualifiedResourceKey(serverName, resourceUri) {
|
|
61
|
+
return `mcp:${serverName}:${resourceUri}`;
|
|
62
|
+
}
|
|
63
|
+
parseQualifiedResourceKey(key) {
|
|
64
|
+
if (!key.startsWith("mcp:")) {
|
|
65
|
+
throw import_errors.MCPError.resourceNotFound(key);
|
|
66
|
+
}
|
|
67
|
+
const [, serverName, ...rest] = key.split(":");
|
|
68
|
+
if (!serverName || rest.length === 0) {
|
|
69
|
+
throw import_errors.MCPError.resourceNotFound(key);
|
|
70
|
+
}
|
|
71
|
+
return { serverName, resourceUri: rest.join(":") };
|
|
72
|
+
}
|
|
73
|
+
removeServerResources(serverName) {
|
|
74
|
+
for (const [key, entry] of Array.from(this.resourceCache.entries())) {
|
|
75
|
+
if (entry.serverName === serverName) {
|
|
76
|
+
this.resourceCache.delete(key);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
getResourceCacheEntry(resourceKey) {
|
|
81
|
+
if (this.resourceCache.has(resourceKey)) {
|
|
82
|
+
return this.resourceCache.get(resourceKey);
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
const { serverName, resourceUri } = this.parseQualifiedResourceKey(resourceKey);
|
|
86
|
+
const canonicalKey = this.buildQualifiedResourceKey(serverName, resourceUri);
|
|
87
|
+
return this.resourceCache.get(canonicalKey);
|
|
88
|
+
} catch {
|
|
89
|
+
return void 0;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
41
92
|
/**
|
|
42
93
|
* Register a client that provides tools (and potentially more)
|
|
43
94
|
* @param name Unique name for the client
|
|
@@ -55,53 +106,66 @@ class MCPManager {
|
|
|
55
106
|
}
|
|
56
107
|
this.clients.set(name, client);
|
|
57
108
|
this.sanitizedNameToServerMap.set(sanitizedName, name);
|
|
109
|
+
this.setupClientNotifications(name, client);
|
|
58
110
|
import_logger.logger.info(`Registered client: ${name}`);
|
|
59
111
|
delete this.connectionErrors[name];
|
|
60
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Clears all cached data for a disconnected MCP client
|
|
115
|
+
*
|
|
116
|
+
* Performs comprehensive cleanup of tool, prompt, and resource caches.
|
|
117
|
+
* Uses two-pass algorithm to detect and resolve tool name conflicts:
|
|
118
|
+
* if a conflicted tool now has only one provider, restores simple name.
|
|
119
|
+
*
|
|
120
|
+
* @param clientName - The name/identifier of the MCP server being removed
|
|
121
|
+
* @private
|
|
122
|
+
*/
|
|
61
123
|
clearClientCache(clientName) {
|
|
62
124
|
const client = this.clients.get(clientName);
|
|
63
125
|
if (!client) return;
|
|
64
|
-
const hadServerTools = this.serverToolsMap.has(clientName);
|
|
65
|
-
this.serverToolsMap.delete(clientName);
|
|
66
126
|
const sanitizedName = this.sanitizeServerName(clientName);
|
|
67
127
|
if (this.sanitizedNameToServerMap.get(sanitizedName) === clientName) {
|
|
68
128
|
this.sanitizedNameToServerMap.delete(sanitizedName);
|
|
69
129
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
130
|
+
const removedToolBaseNames = /* @__PURE__ */ new Set();
|
|
131
|
+
for (const [toolKey, entry] of Array.from(this.toolCache.entries())) {
|
|
132
|
+
if (entry.serverName === clientName) {
|
|
133
|
+
const delimiterIndex = toolKey.lastIndexOf(MCPManager.SERVER_DELIMITER);
|
|
134
|
+
const baseName = delimiterIndex === -1 ? toolKey : toolKey.substring(delimiterIndex + MCPManager.SERVER_DELIMITER.length);
|
|
135
|
+
removedToolBaseNames.add(baseName);
|
|
136
|
+
this.toolCache.delete(toolKey);
|
|
77
137
|
}
|
|
78
|
-
);
|
|
79
|
-
if (hadServerTools) {
|
|
80
|
-
this.rebuildToolConflicts();
|
|
81
138
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
139
|
+
for (const baseName of removedToolBaseNames) {
|
|
140
|
+
const remainingTools = Array.from(this.toolCache.entries()).filter(([key, _]) => {
|
|
141
|
+
const delimiterIndex = key.lastIndexOf(MCPManager.SERVER_DELIMITER);
|
|
142
|
+
const bn = delimiterIndex === -1 ? key : key.substring(delimiterIndex + MCPManager.SERVER_DELIMITER.length);
|
|
143
|
+
return bn === baseName;
|
|
144
|
+
});
|
|
145
|
+
if (remainingTools.length === 0) {
|
|
146
|
+
this.toolConflicts.delete(baseName);
|
|
147
|
+
} else if (remainingTools.length === 1 && this.toolConflicts.has(baseName)) {
|
|
148
|
+
const singleTool = remainingTools[0];
|
|
149
|
+
if (singleTool) {
|
|
150
|
+
const [qualifiedKey, entry] = singleTool;
|
|
151
|
+
this.toolCache.delete(qualifiedKey);
|
|
152
|
+
this.toolCache.set(baseName, entry);
|
|
153
|
+
this.toolConflicts.delete(baseName);
|
|
154
|
+
import_logger.logger.debug(`Restored tool '${baseName}' to simple name (conflict resolved)`);
|
|
155
|
+
}
|
|
90
156
|
}
|
|
91
157
|
}
|
|
92
|
-
for (const [
|
|
93
|
-
if (
|
|
94
|
-
this.
|
|
95
|
-
this.toolToClientMap.delete(toolName);
|
|
158
|
+
for (const [promptName, entry] of Array.from(this.promptCache.entries())) {
|
|
159
|
+
if (entry.serverName === clientName) {
|
|
160
|
+
this.promptCache.delete(promptName);
|
|
96
161
|
}
|
|
97
162
|
}
|
|
98
|
-
for (const [
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
this.toolToClientMap.set(toolName, client);
|
|
102
|
-
}
|
|
163
|
+
for (const [key, entry] of Array.from(this.resourceCache.entries())) {
|
|
164
|
+
if (entry.client === client || entry.serverName === clientName) {
|
|
165
|
+
this.resourceCache.delete(key);
|
|
103
166
|
}
|
|
104
167
|
}
|
|
168
|
+
import_logger.logger.debug(`Cleared cache for client: ${clientName}`);
|
|
105
169
|
}
|
|
106
170
|
/**
|
|
107
171
|
* Sanitize server name for use in tool prefixing.
|
|
@@ -110,25 +174,80 @@ class MCPManager {
|
|
|
110
174
|
sanitizeServerName(serverName) {
|
|
111
175
|
return serverName.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
112
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Updates internal caches for a connected MCP client
|
|
179
|
+
*
|
|
180
|
+
* This method performs initial cache population after a client connects.
|
|
181
|
+
* It fetches and caches tools, prompts, and resources from the MCP server,
|
|
182
|
+
* implementing conflict detection and resolution for tool names.
|
|
183
|
+
*
|
|
184
|
+
* @param clientName - The name/identifier of the MCP server
|
|
185
|
+
* @param client - The connected MCP client instance
|
|
186
|
+
*
|
|
187
|
+
* @remarks
|
|
188
|
+
* **Tool Caching:**
|
|
189
|
+
* - Fetches all tools and caches them with full definitions
|
|
190
|
+
* - Detects naming conflicts when multiple servers provide same tool name
|
|
191
|
+
* - On conflict: uses qualified names (`server--toolname`) for all conflicting tools
|
|
192
|
+
* - Updates toolConflicts set to track which base names have conflicts
|
|
193
|
+
*
|
|
194
|
+
* **Prompt Caching:**
|
|
195
|
+
* - Fetches all prompts and their metadata (description, arguments)
|
|
196
|
+
* - Stores full prompt definitions in promptCache for efficient access
|
|
197
|
+
* - Falls back to minimal metadata if full definition fetch fails
|
|
198
|
+
*
|
|
199
|
+
* **Resource Caching:**
|
|
200
|
+
* - Fetches all resource summaries (uri, name, mimeType)
|
|
201
|
+
* - Stores resource metadata in resourceCache for quick lookups
|
|
202
|
+
*
|
|
203
|
+
* **Error Handling:**
|
|
204
|
+
* - Tool fetch errors abort caching entirely (early return)
|
|
205
|
+
* - Prompt/resource errors log warnings but don't block other caching
|
|
206
|
+
* - Individual prompt metadata errors are caught and logged
|
|
207
|
+
*
|
|
208
|
+
* @private
|
|
209
|
+
*/
|
|
113
210
|
async updateClientCache(clientName, client) {
|
|
114
|
-
const serverTools = /* @__PURE__ */ new Map();
|
|
115
|
-
this.serverToolsMap.set(clientName, serverTools);
|
|
116
211
|
try {
|
|
117
212
|
const tools = await client.getTools();
|
|
118
213
|
import_logger.logger.debug(
|
|
119
214
|
`\u{1F527} Discovered ${Object.keys(tools).length} tools from server '${clientName}': [${Object.keys(tools).join(", ")}]`
|
|
120
215
|
);
|
|
121
216
|
for (const toolName in tools) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
217
|
+
const toolDef = tools[toolName];
|
|
218
|
+
if (!toolDef) continue;
|
|
219
|
+
const existingEntry = this.toolCache.get(toolName);
|
|
220
|
+
if (existingEntry && existingEntry.serverName !== clientName) {
|
|
125
221
|
this.toolConflicts.add(toolName);
|
|
126
|
-
this.
|
|
222
|
+
this.toolCache.delete(toolName);
|
|
223
|
+
const existingSanitized = this.sanitizeServerName(existingEntry.serverName);
|
|
224
|
+
const existingQualified = `${existingSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
225
|
+
this.toolCache.set(existingQualified, existingEntry);
|
|
226
|
+
const newSanitized = this.sanitizeServerName(clientName);
|
|
227
|
+
const newQualified = `${newSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
228
|
+
this.toolCache.set(newQualified, {
|
|
229
|
+
serverName: clientName,
|
|
230
|
+
client,
|
|
231
|
+
definition: toolDef
|
|
232
|
+
});
|
|
127
233
|
import_logger.logger.warn(
|
|
128
|
-
`\u26A0\uFE0F Tool conflict detected for '${toolName}' -
|
|
234
|
+
`\u26A0\uFE0F Tool conflict detected for '${toolName}' - using server prefixes: ${existingQualified}, ${newQualified}`
|
|
129
235
|
);
|
|
130
|
-
} else if (
|
|
131
|
-
this.
|
|
236
|
+
} else if (this.toolConflicts.has(toolName)) {
|
|
237
|
+
const sanitizedName = this.sanitizeServerName(clientName);
|
|
238
|
+
const qualifiedName = `${sanitizedName}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
239
|
+
this.toolCache.set(qualifiedName, {
|
|
240
|
+
serverName: clientName,
|
|
241
|
+
client,
|
|
242
|
+
definition: toolDef
|
|
243
|
+
});
|
|
244
|
+
import_logger.logger.debug(`\u2705 Tool '${qualifiedName}' cached (known conflict)`);
|
|
245
|
+
} else {
|
|
246
|
+
this.toolCache.set(toolName, {
|
|
247
|
+
serverName: clientName,
|
|
248
|
+
client,
|
|
249
|
+
definition: toolDef
|
|
250
|
+
});
|
|
132
251
|
import_logger.logger.debug(`\u2705 Tool '${toolName}' mapped to ${clientName}`);
|
|
133
252
|
}
|
|
134
253
|
}
|
|
@@ -143,17 +262,33 @@ class MCPManager {
|
|
|
143
262
|
}
|
|
144
263
|
try {
|
|
145
264
|
const prompts = await client.listPrompts();
|
|
146
|
-
prompts
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
265
|
+
for (const prompt of prompts) {
|
|
266
|
+
const definition = {
|
|
267
|
+
name: prompt.name,
|
|
268
|
+
...prompt.title && { title: prompt.title },
|
|
269
|
+
...prompt.description && { description: prompt.description },
|
|
270
|
+
...prompt.arguments && { arguments: prompt.arguments }
|
|
271
|
+
};
|
|
272
|
+
this.promptCache.set(prompt.name, {
|
|
273
|
+
serverName: clientName,
|
|
274
|
+
client,
|
|
275
|
+
definition
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
import_logger.logger.debug(`Cached ${prompts.length} prompts for client: ${clientName}`);
|
|
150
279
|
} catch (error) {
|
|
151
280
|
import_logger.logger.debug(`Skipping prompts for client ${clientName}: ${error}`);
|
|
152
281
|
}
|
|
153
282
|
try {
|
|
283
|
+
this.removeServerResources(clientName);
|
|
154
284
|
const resources = await client.listResources();
|
|
155
|
-
resources.forEach((
|
|
156
|
-
this.
|
|
285
|
+
resources.forEach((summary) => {
|
|
286
|
+
const key = this.buildQualifiedResourceKey(clientName, summary.uri);
|
|
287
|
+
this.resourceCache.set(key, {
|
|
288
|
+
serverName: clientName,
|
|
289
|
+
client,
|
|
290
|
+
summary
|
|
291
|
+
});
|
|
157
292
|
});
|
|
158
293
|
import_logger.logger.debug(`Cached resources for client: ${clientName}`);
|
|
159
294
|
} catch (error) {
|
|
@@ -161,45 +296,28 @@ class MCPManager {
|
|
|
161
296
|
}
|
|
162
297
|
}
|
|
163
298
|
/**
|
|
164
|
-
* Get all available MCP tools from
|
|
165
|
-
* Conflicted tools are
|
|
299
|
+
* Get all available MCP tools from cache (no network calls).
|
|
300
|
+
* Conflicted tools are already stored with qualified names.
|
|
166
301
|
* @returns Promise resolving to a ToolSet mapping tool names to Tool definitions
|
|
167
302
|
*/
|
|
168
303
|
async getAllTools() {
|
|
169
304
|
const allTools = {};
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
if (
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const clientTools = await getClientTools(client);
|
|
180
|
-
const toolDef = clientTools[toolName];
|
|
181
|
-
if (toolDef) {
|
|
182
|
-
allTools[toolName] = toolDef;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
for (const [serverName, serverTools] of this.serverToolsMap.entries()) {
|
|
186
|
-
for (const [toolName, client] of serverTools.entries()) {
|
|
187
|
-
if (this.toolConflicts.has(toolName)) {
|
|
188
|
-
const sanitizedServerName = this.sanitizeServerName(serverName);
|
|
189
|
-
const qualifiedName = `${sanitizedServerName}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
190
|
-
const clientTools = await getClientTools(client);
|
|
191
|
-
const toolDef = clientTools[toolName];
|
|
192
|
-
if (toolDef) {
|
|
193
|
-
allTools[qualifiedName] = {
|
|
194
|
-
...toolDef,
|
|
195
|
-
description: toolDef.description ? `${toolDef.description} (via ${serverName})` : `Tool from ${serverName}`
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
}
|
|
305
|
+
for (const [toolKey, entry] of this.toolCache.entries()) {
|
|
306
|
+
const toolDef = entry.definition;
|
|
307
|
+
if (toolKey.includes(MCPManager.SERVER_DELIMITER)) {
|
|
308
|
+
allTools[toolKey] = {
|
|
309
|
+
...toolDef,
|
|
310
|
+
description: toolDef.description ? `${toolDef.description} (via ${entry.serverName})` : `Tool from ${entry.serverName}`
|
|
311
|
+
};
|
|
312
|
+
} else {
|
|
313
|
+
allTools[toolKey] = toolDef;
|
|
199
314
|
}
|
|
200
315
|
}
|
|
316
|
+
const serverNames = Array.from(
|
|
317
|
+
new Set(Array.from(this.toolCache.values()).map((e) => e.serverName))
|
|
318
|
+
);
|
|
201
319
|
import_logger.logger.debug(
|
|
202
|
-
`\u{1F527} MCP
|
|
320
|
+
`\u{1F527} MCP tools from cache: ${Object.keys(allTools).length} total tools, ${this.toolConflicts.size} conflicts, connected servers: ${serverNames.join(", ")}`
|
|
203
321
|
);
|
|
204
322
|
if (import_logger.logger.getLevel() === "debug") {
|
|
205
323
|
Object.keys(allTools).forEach((toolName) => {
|
|
@@ -227,7 +345,7 @@ class MCPManager {
|
|
|
227
345
|
delimiterIndex + MCPManager.SERVER_DELIMITER.length
|
|
228
346
|
);
|
|
229
347
|
const originalServerName = this.sanitizedNameToServerMap.get(serverPrefix);
|
|
230
|
-
if (originalServerName && this.
|
|
348
|
+
if (originalServerName && this.toolCache.has(toolName)) {
|
|
231
349
|
return { serverName: originalServerName, toolName: actualToolName };
|
|
232
350
|
}
|
|
233
351
|
return null;
|
|
@@ -239,12 +357,7 @@ class MCPManager {
|
|
|
239
357
|
* @returns The client that provides the tool, or undefined if not found
|
|
240
358
|
*/
|
|
241
359
|
getToolClient(toolName) {
|
|
242
|
-
|
|
243
|
-
if (parsed) {
|
|
244
|
-
const serverTools = this.serverToolsMap.get(parsed.serverName);
|
|
245
|
-
return serverTools?.get(parsed.toolName);
|
|
246
|
-
}
|
|
247
|
-
return this.toolToClientMap.get(toolName);
|
|
360
|
+
return this.toolCache.get(toolName)?.client;
|
|
248
361
|
}
|
|
249
362
|
/**
|
|
250
363
|
* Execute a specific MCP tool with the given arguments.
|
|
@@ -257,13 +370,8 @@ class MCPManager {
|
|
|
257
370
|
const client = this.getToolClient(toolName);
|
|
258
371
|
if (!client) {
|
|
259
372
|
import_logger.logger.error(`\u274C No MCP tool found: ${toolName}`);
|
|
260
|
-
import_logger.logger.debug(
|
|
261
|
-
`Available MCP tools: ${Array.from(this.toolToClientMap.keys()).join(", ")}`
|
|
262
|
-
);
|
|
373
|
+
import_logger.logger.debug(`Available MCP tools: ${Array.from(this.toolCache.keys()).join(", ")}`);
|
|
263
374
|
import_logger.logger.debug(`Conflicted tools: ${Array.from(this.toolConflicts).join(", ")}`);
|
|
264
|
-
import_logger.logger.debug(
|
|
265
|
-
`Server tools map keys: ${Array.from(this.serverToolsMap.keys()).join(", ")}`
|
|
266
|
-
);
|
|
267
375
|
throw import_errors.MCPError.toolNotFound(toolName);
|
|
268
376
|
}
|
|
269
377
|
const parsed = this.parseQualifiedToolName(toolName);
|
|
@@ -285,7 +393,7 @@ class MCPManager {
|
|
|
285
393
|
* @returns Promise resolving to an array of unique prompt names.
|
|
286
394
|
*/
|
|
287
395
|
async listAllPrompts() {
|
|
288
|
-
return Array.from(this.
|
|
396
|
+
return Array.from(this.promptCache.keys());
|
|
289
397
|
}
|
|
290
398
|
/**
|
|
291
399
|
* Get the client that provides a specific prompt from the cache.
|
|
@@ -293,7 +401,7 @@ class MCPManager {
|
|
|
293
401
|
* @returns The client instance or undefined.
|
|
294
402
|
*/
|
|
295
403
|
getPromptClient(promptName) {
|
|
296
|
-
return this.
|
|
404
|
+
return this.promptCache.get(promptName)?.client;
|
|
297
405
|
}
|
|
298
406
|
/**
|
|
299
407
|
* Get a specific prompt definition by name.
|
|
@@ -309,31 +417,64 @@ class MCPManager {
|
|
|
309
417
|
return await client.getPrompt(name, args);
|
|
310
418
|
}
|
|
311
419
|
/**
|
|
312
|
-
* Get
|
|
313
|
-
* @
|
|
420
|
+
* Get cached prompt metadata (no network calls).
|
|
421
|
+
* @param promptName Name of the prompt.
|
|
422
|
+
* @returns Cached prompt definition or undefined if not cached.
|
|
423
|
+
*/
|
|
424
|
+
getPromptMetadata(promptName) {
|
|
425
|
+
const entry = this.promptCache.get(promptName);
|
|
426
|
+
return entry?.definition;
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Get all cached prompt metadata (no network calls).
|
|
430
|
+
* @returns Array of all cached prompt definitions with server info.
|
|
431
|
+
*/
|
|
432
|
+
getAllPromptMetadata() {
|
|
433
|
+
return Array.from(this.promptCache.entries()).map(([promptName, entry]) => ({
|
|
434
|
+
promptName,
|
|
435
|
+
serverName: entry.serverName,
|
|
436
|
+
definition: entry.definition
|
|
437
|
+
}));
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Get all cached MCP resources (no network calls).
|
|
314
441
|
*/
|
|
315
442
|
async listAllResources() {
|
|
316
|
-
return Array.from(this.
|
|
443
|
+
return Array.from(this.resourceCache.entries()).map(([key, { serverName, summary }]) => ({
|
|
444
|
+
key,
|
|
445
|
+
serverName,
|
|
446
|
+
summary
|
|
447
|
+
}));
|
|
317
448
|
}
|
|
318
449
|
/**
|
|
319
|
-
*
|
|
320
|
-
|
|
321
|
-
|
|
450
|
+
* Determine if a qualified MCP resource is cached.
|
|
451
|
+
*/
|
|
452
|
+
hasResource(resourceKey) {
|
|
453
|
+
return this.getResourceCacheEntry(resourceKey) !== void 0;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Get cached resource metadata by qualified key.
|
|
322
457
|
*/
|
|
323
|
-
|
|
324
|
-
|
|
458
|
+
getResource(resourceKey) {
|
|
459
|
+
const entry = this.getResourceCacheEntry(resourceKey);
|
|
460
|
+
if (!entry) return void 0;
|
|
461
|
+
return {
|
|
462
|
+
key: resourceKey,
|
|
463
|
+
serverName: entry.serverName,
|
|
464
|
+
summary: entry.summary
|
|
465
|
+
};
|
|
325
466
|
}
|
|
326
467
|
/**
|
|
327
|
-
* Read a specific resource by URI.
|
|
328
|
-
* @param
|
|
468
|
+
* Read a specific resource by qualified URI.
|
|
469
|
+
* @param resourceKey Qualified resource key in the form mcp:server:uri.
|
|
329
470
|
* @returns Promise resolving to the resource content.
|
|
330
471
|
*/
|
|
331
|
-
async readResource(
|
|
332
|
-
const
|
|
333
|
-
if (!
|
|
334
|
-
throw import_errors.MCPError.resourceNotFound(
|
|
472
|
+
async readResource(resourceKey) {
|
|
473
|
+
const entry = this.getResourceCacheEntry(resourceKey);
|
|
474
|
+
if (!entry) {
|
|
475
|
+
throw import_errors.MCPError.resourceNotFound(resourceKey);
|
|
335
476
|
}
|
|
336
|
-
return await client.readResource(uri);
|
|
477
|
+
return await entry.client.readResource(entry.summary.uri);
|
|
337
478
|
}
|
|
338
479
|
/**
|
|
339
480
|
* Initialize clients from server configurations
|
|
@@ -390,6 +531,9 @@ class MCPManager {
|
|
|
390
531
|
try {
|
|
391
532
|
import_logger.logger.info(`Attempting to connect to new server '${name}'...`);
|
|
392
533
|
await client.connect(config, name);
|
|
534
|
+
if (this.approvalManager) {
|
|
535
|
+
client.setApprovalManager(this.approvalManager);
|
|
536
|
+
}
|
|
393
537
|
this.registerClient(name, client);
|
|
394
538
|
await this.updateClientCache(name, client);
|
|
395
539
|
import_logger.logger.info(`Successfully connected and cached new server '${name}'`);
|
|
@@ -415,6 +559,20 @@ class MCPManager {
|
|
|
415
559
|
getFailedConnections() {
|
|
416
560
|
return this.connectionErrors;
|
|
417
561
|
}
|
|
562
|
+
/**
|
|
563
|
+
* Refresh all client caches by re-fetching capabilities from servers
|
|
564
|
+
* Useful when you want to force a full refresh of tools, prompts, and resources
|
|
565
|
+
* In normal operation, caches are automatically kept fresh via server notifications
|
|
566
|
+
*/
|
|
567
|
+
async refresh() {
|
|
568
|
+
import_logger.logger.debug("Refreshing all MCPManager caches...");
|
|
569
|
+
const refreshPromises = [];
|
|
570
|
+
for (const [clientName, client] of this.clients.entries()) {
|
|
571
|
+
refreshPromises.push(this.updateClientCache(clientName, client));
|
|
572
|
+
}
|
|
573
|
+
await Promise.all(refreshPromises);
|
|
574
|
+
import_logger.logger.debug(`\u2705 MCPManager cache refresh complete for ${this.clients.size} client(s)`);
|
|
575
|
+
}
|
|
418
576
|
/**
|
|
419
577
|
* Disconnect and remove a specific client by name.
|
|
420
578
|
* @param name The name of the client to remove.
|
|
@@ -458,14 +616,204 @@ class MCPManager {
|
|
|
458
616
|
await Promise.all(disconnectPromises);
|
|
459
617
|
this.clients.clear();
|
|
460
618
|
this.connectionErrors = {};
|
|
461
|
-
this.
|
|
462
|
-
this.serverToolsMap.clear();
|
|
619
|
+
this.toolCache.clear();
|
|
463
620
|
this.toolConflicts.clear();
|
|
464
|
-
this.
|
|
465
|
-
this.
|
|
621
|
+
this.promptCache.clear();
|
|
622
|
+
this.resourceCache.clear();
|
|
466
623
|
this.sanitizedNameToServerMap.clear();
|
|
467
624
|
import_logger.logger.info("Disconnected all clients and cleared caches.");
|
|
468
625
|
}
|
|
626
|
+
/**
|
|
627
|
+
* Set up notification listeners for a specific client
|
|
628
|
+
*/
|
|
629
|
+
setupClientNotifications(clientName, client) {
|
|
630
|
+
try {
|
|
631
|
+
client.on("resourceUpdated", async (params) => {
|
|
632
|
+
import_logger.logger.debug(
|
|
633
|
+
`Received resource update notification from ${clientName}: ${params.uri}`
|
|
634
|
+
);
|
|
635
|
+
await this.handleResourceUpdated(clientName, params);
|
|
636
|
+
});
|
|
637
|
+
client.on("promptsListChanged", async () => {
|
|
638
|
+
import_logger.logger.debug(`Received prompts list change notification from ${clientName}`);
|
|
639
|
+
await this.handlePromptsListChanged(clientName, client);
|
|
640
|
+
});
|
|
641
|
+
client.on("toolsListChanged", async () => {
|
|
642
|
+
import_logger.logger.debug(`Received tools list change notification from ${clientName}`);
|
|
643
|
+
await this.handleToolsListChanged(clientName, client);
|
|
644
|
+
});
|
|
645
|
+
import_logger.logger.debug(`Set up notification listeners for client: ${clientName}`);
|
|
646
|
+
} catch (error) {
|
|
647
|
+
import_logger.logger.warn(`Failed to set up notification listeners for ${clientName}: ${error}`);
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
/**
|
|
651
|
+
* Handle resource updated notification
|
|
652
|
+
*/
|
|
653
|
+
async handleResourceUpdated(serverName, params) {
|
|
654
|
+
try {
|
|
655
|
+
const client = this.clients.get(serverName);
|
|
656
|
+
if (client) {
|
|
657
|
+
const key = this.buildQualifiedResourceKey(serverName, params.uri);
|
|
658
|
+
try {
|
|
659
|
+
const resources = await client.listResources();
|
|
660
|
+
const updatedResource = resources.find((r) => r.uri === params.uri);
|
|
661
|
+
if (updatedResource) {
|
|
662
|
+
this.resourceCache.set(key, {
|
|
663
|
+
serverName,
|
|
664
|
+
client,
|
|
665
|
+
summary: updatedResource
|
|
666
|
+
});
|
|
667
|
+
import_logger.logger.debug(`Updated resource cache for: ${params.uri}`);
|
|
668
|
+
}
|
|
669
|
+
} catch (error) {
|
|
670
|
+
import_logger.logger.warn(`Failed to refresh resource ${params.uri}: ${error}`);
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
import_events.eventBus.emit("dexto:mcpResourceUpdated", {
|
|
674
|
+
serverName,
|
|
675
|
+
resourceUri: params.uri
|
|
676
|
+
});
|
|
677
|
+
} catch (error) {
|
|
678
|
+
import_logger.logger.error(`Error handling resource update: ${error}`);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
/**
|
|
682
|
+
* Handle prompts list changed notification
|
|
683
|
+
*/
|
|
684
|
+
async handlePromptsListChanged(serverName, client) {
|
|
685
|
+
try {
|
|
686
|
+
const existingPrompts = Array.from(this.promptCache.entries()).filter(([_, entry]) => entry.client === client).map(([promptName]) => promptName);
|
|
687
|
+
existingPrompts.forEach((promptName) => {
|
|
688
|
+
this.promptCache.delete(promptName);
|
|
689
|
+
});
|
|
690
|
+
try {
|
|
691
|
+
const newPrompts = await client.listPrompts();
|
|
692
|
+
for (const prompt of newPrompts) {
|
|
693
|
+
const definition = {
|
|
694
|
+
name: prompt.name,
|
|
695
|
+
...prompt.title && { title: prompt.title },
|
|
696
|
+
...prompt.description && { description: prompt.description },
|
|
697
|
+
...prompt.arguments && { arguments: prompt.arguments }
|
|
698
|
+
};
|
|
699
|
+
this.promptCache.set(prompt.name, {
|
|
700
|
+
serverName,
|
|
701
|
+
client,
|
|
702
|
+
definition
|
|
703
|
+
});
|
|
704
|
+
}
|
|
705
|
+
const promptNames = newPrompts.map((p) => p.name);
|
|
706
|
+
import_logger.logger.debug(
|
|
707
|
+
`Updated prompts cache for ${serverName}: [${promptNames.join(", ")}]`
|
|
708
|
+
);
|
|
709
|
+
import_events.eventBus.emit("dexto:mcpPromptsListChanged", {
|
|
710
|
+
serverName,
|
|
711
|
+
prompts: promptNames
|
|
712
|
+
});
|
|
713
|
+
} catch (error) {
|
|
714
|
+
import_logger.logger.warn(`Failed to refresh prompts for ${serverName}: ${error}`);
|
|
715
|
+
}
|
|
716
|
+
} catch (error) {
|
|
717
|
+
import_logger.logger.error(`Error handling prompts list change: ${error}`);
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
/**
|
|
721
|
+
* Handle tools list changed notification
|
|
722
|
+
*/
|
|
723
|
+
async handleToolsListChanged(serverName, client) {
|
|
724
|
+
try {
|
|
725
|
+
const removedToolBaseNames = /* @__PURE__ */ new Set();
|
|
726
|
+
for (const [toolKey, entry] of Array.from(this.toolCache.entries())) {
|
|
727
|
+
if (entry.serverName === serverName) {
|
|
728
|
+
const delimiterIndex = toolKey.lastIndexOf(MCPManager.SERVER_DELIMITER);
|
|
729
|
+
const baseName = delimiterIndex === -1 ? toolKey : toolKey.substring(
|
|
730
|
+
delimiterIndex + MCPManager.SERVER_DELIMITER.length
|
|
731
|
+
);
|
|
732
|
+
removedToolBaseNames.add(baseName);
|
|
733
|
+
this.toolCache.delete(toolKey);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
try {
|
|
737
|
+
const tools = await client.getTools();
|
|
738
|
+
const toolNames = Object.keys(tools);
|
|
739
|
+
import_logger.logger.debug(
|
|
740
|
+
`\u{1F527} Refreshing tools from server '${serverName}': [${toolNames.join(", ")}]`
|
|
741
|
+
);
|
|
742
|
+
for (const toolName in tools) {
|
|
743
|
+
const toolDef = tools[toolName];
|
|
744
|
+
if (!toolDef) continue;
|
|
745
|
+
const existingEntry = this.toolCache.get(toolName);
|
|
746
|
+
if (existingEntry && existingEntry.serverName !== serverName) {
|
|
747
|
+
this.toolConflicts.add(toolName);
|
|
748
|
+
this.toolCache.delete(toolName);
|
|
749
|
+
const existingSanitized = this.sanitizeServerName(existingEntry.serverName);
|
|
750
|
+
const existingQualified = `${existingSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
751
|
+
this.toolCache.set(existingQualified, existingEntry);
|
|
752
|
+
const newSanitized = this.sanitizeServerName(serverName);
|
|
753
|
+
const newQualified = `${newSanitized}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
754
|
+
this.toolCache.set(newQualified, {
|
|
755
|
+
serverName,
|
|
756
|
+
client,
|
|
757
|
+
definition: toolDef
|
|
758
|
+
});
|
|
759
|
+
import_logger.logger.warn(
|
|
760
|
+
`\u26A0\uFE0F Tool conflict detected for '${toolName}' - using server prefixes: ${existingQualified}, ${newQualified}`
|
|
761
|
+
);
|
|
762
|
+
} else if (this.toolConflicts.has(toolName)) {
|
|
763
|
+
const sanitizedName = this.sanitizeServerName(serverName);
|
|
764
|
+
const qualifiedName = `${sanitizedName}${MCPManager.SERVER_DELIMITER}${toolName}`;
|
|
765
|
+
this.toolCache.set(qualifiedName, {
|
|
766
|
+
serverName,
|
|
767
|
+
client,
|
|
768
|
+
definition: toolDef
|
|
769
|
+
});
|
|
770
|
+
import_logger.logger.debug(`\u2705 Tool '${qualifiedName}' cached (known conflict)`);
|
|
771
|
+
} else {
|
|
772
|
+
this.toolCache.set(toolName, {
|
|
773
|
+
serverName,
|
|
774
|
+
client,
|
|
775
|
+
definition: toolDef
|
|
776
|
+
});
|
|
777
|
+
import_logger.logger.debug(`\u2705 Tool '${toolName}' mapped to ${serverName}`);
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
for (const baseName of removedToolBaseNames) {
|
|
781
|
+
const remainingTools = Array.from(this.toolCache.entries()).filter(
|
|
782
|
+
([key, _]) => {
|
|
783
|
+
const delimiterIndex = key.lastIndexOf(MCPManager.SERVER_DELIMITER);
|
|
784
|
+
const bn = delimiterIndex === -1 ? key : key.substring(
|
|
785
|
+
delimiterIndex + MCPManager.SERVER_DELIMITER.length
|
|
786
|
+
);
|
|
787
|
+
return bn === baseName;
|
|
788
|
+
}
|
|
789
|
+
);
|
|
790
|
+
if (remainingTools.length === 0) {
|
|
791
|
+
this.toolConflicts.delete(baseName);
|
|
792
|
+
} else if (remainingTools.length === 1 && this.toolConflicts.has(baseName)) {
|
|
793
|
+
const singleTool = remainingTools[0];
|
|
794
|
+
if (singleTool) {
|
|
795
|
+
const [qualifiedKey, entry] = singleTool;
|
|
796
|
+
this.toolCache.delete(qualifiedKey);
|
|
797
|
+
this.toolCache.set(baseName, entry);
|
|
798
|
+
this.toolConflicts.delete(baseName);
|
|
799
|
+
import_logger.logger.debug(
|
|
800
|
+
`Restored tool '${baseName}' to simple name (conflict resolved)`
|
|
801
|
+
);
|
|
802
|
+
}
|
|
803
|
+
}
|
|
804
|
+
}
|
|
805
|
+
import_logger.logger.debug(`Updated tools cache for ${serverName}: [${toolNames.join(", ")}]`);
|
|
806
|
+
import_events.eventBus.emit("dexto:mcpToolsListChanged", {
|
|
807
|
+
serverName,
|
|
808
|
+
tools: toolNames
|
|
809
|
+
});
|
|
810
|
+
} catch (error) {
|
|
811
|
+
import_logger.logger.warn(`Failed to refresh tools for ${serverName}: ${error}`);
|
|
812
|
+
}
|
|
813
|
+
} catch (error) {
|
|
814
|
+
import_logger.logger.error(`Error handling tools list change: ${error}`);
|
|
815
|
+
}
|
|
816
|
+
}
|
|
469
817
|
}
|
|
470
818
|
// Annotate the CommonJS export names for ESM import in node:
|
|
471
819
|
0 && (module.exports = {
|