@dexto/core 1.1.4 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +125 -0
- package/dist/agent/DextoAgent.cjs +793 -0
- package/dist/agent/DextoAgent.d.cts +473 -0
- package/dist/agent/DextoAgent.d.ts +473 -0
- package/dist/agent/DextoAgent.js +774 -0
- package/dist/agent/agentCard.cjs +44 -0
- package/dist/agent/agentCard.d.cts +20 -0
- package/dist/agent/agentCard.d.ts +20 -0
- package/dist/agent/agentCard.js +20 -0
- package/dist/agent/error-codes.cjs +35 -0
- package/dist/agent/error-codes.d.cts +14 -0
- package/dist/agent/error-codes.d.ts +14 -0
- package/dist/agent/error-codes.js +11 -0
- package/dist/agent/errors.cjs +84 -0
- package/dist/agent/errors.d.cts +40 -0
- package/dist/agent/errors.d.ts +40 -0
- package/dist/agent/errors.js +60 -0
- package/dist/agent/index.cjs +44 -0
- package/dist/agent/index.d.cts +60 -0
- package/dist/agent/index.d.ts +60 -0
- package/dist/agent/index.js +13 -0
- package/dist/agent/registry/error-codes.cjs +42 -0
- package/dist/agent/registry/error-codes.d.cts +20 -0
- package/dist/agent/registry/error-codes.d.ts +20 -0
- package/dist/agent/registry/error-codes.js +18 -0
- package/dist/agent/registry/errors.cjs +158 -0
- package/dist/agent/registry/errors.d.cts +67 -0
- package/dist/agent/registry/errors.d.ts +67 -0
- package/dist/{chunk-PI6XFMEW.js → agent/registry/errors.js} +43 -50
- package/dist/agent/registry/registry.cjs +291 -0
- package/dist/agent/registry/registry.d.cts +67 -0
- package/dist/agent/registry/registry.d.ts +67 -0
- package/dist/agent/registry/registry.js +256 -0
- package/dist/agent/registry/types.cjs +41 -0
- package/dist/agent/registry/types.d.cts +100 -0
- package/dist/agent/registry/types.d.ts +100 -0
- package/dist/agent/registry/types.js +16 -0
- package/dist/agent/schemas.cjs +113 -0
- package/dist/agent/schemas.d.cts +1502 -0
- package/dist/agent/schemas.d.ts +1502 -0
- package/dist/agent/schemas.js +88 -0
- package/dist/agent/state-manager.cjs +214 -0
- package/dist/agent/state-manager.d.cts +97 -0
- package/dist/agent/state-manager.d.ts +97 -0
- package/dist/agent/state-manager.js +190 -0
- package/dist/config/agent-resolver.cjs +153 -0
- package/dist/config/agent-resolver.d.cts +15 -0
- package/dist/config/agent-resolver.d.ts +15 -0
- package/dist/config/agent-resolver.js +122 -0
- package/dist/config/error-codes.cjs +39 -0
- package/dist/config/error-codes.d.cts +17 -0
- package/dist/config/error-codes.d.ts +17 -0
- package/dist/config/error-codes.js +15 -0
- package/dist/config/errors.cjs +126 -0
- package/dist/config/errors.d.cts +49 -0
- package/dist/config/errors.d.ts +49 -0
- package/dist/config/errors.js +102 -0
- package/dist/config/index.cjs +26 -0
- package/dist/config/index.d.cts +7 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.js +3 -0
- package/dist/config/loader.cjs +119 -0
- package/dist/config/loader.d.cts +19 -0
- package/dist/config/loader.d.ts +19 -0
- package/dist/config/loader.js +85 -0
- package/dist/config/writer.cjs +182 -0
- package/dist/config/writer.d.cts +38 -0
- package/dist/config/writer.d.ts +38 -0
- package/dist/config/writer.js +146 -0
- package/dist/context/compression/middle-removal.cjs +95 -0
- package/dist/context/compression/middle-removal.d.cts +48 -0
- package/dist/context/compression/middle-removal.d.ts +48 -0
- package/dist/context/compression/middle-removal.js +71 -0
- package/dist/context/compression/oldest-removal.cjs +70 -0
- package/dist/context/compression/oldest-removal.d.cts +43 -0
- package/dist/context/compression/oldest-removal.d.ts +43 -0
- package/dist/context/compression/oldest-removal.js +46 -0
- package/dist/context/compression/types.cjs +16 -0
- package/dist/context/compression/types.d.cts +21 -0
- package/dist/context/compression/types.d.ts +21 -0
- package/dist/context/compression/types.js +0 -0
- package/dist/context/error-codes.cjs +41 -0
- package/dist/context/error-codes.d.cts +19 -0
- package/dist/context/error-codes.d.ts +19 -0
- package/dist/context/error-codes.js +17 -0
- package/dist/context/errors.cjs +146 -0
- package/dist/context/errors.d.cts +36 -0
- package/dist/context/errors.d.ts +36 -0
- package/dist/context/errors.js +122 -0
- package/dist/context/index.cjs +24 -0
- package/dist/context/index.d.cts +19 -0
- package/dist/context/index.d.ts +19 -0
- package/dist/context/index.js +2 -0
- package/dist/context/manager.cjs +516 -0
- package/dist/context/manager.d.cts +254 -0
- package/dist/context/manager.d.ts +254 -0
- package/dist/context/manager.js +492 -0
- package/dist/context/types.cjs +16 -0
- package/dist/context/types.d.cts +113 -0
- package/dist/context/types.d.ts +113 -0
- package/dist/context/types.js +0 -0
- package/dist/context/utils.cjs +406 -0
- package/dist/context/utils.d.cts +79 -0
- package/dist/context/utils.d.ts +79 -0
- package/dist/context/utils.js +374 -0
- package/dist/errors/DextoBaseError.cjs +36 -0
- package/dist/errors/DextoBaseError.d.cts +15 -0
- package/dist/errors/DextoBaseError.d.ts +15 -0
- package/dist/errors/DextoBaseError.js +12 -0
- package/dist/errors/DextoRuntimeError.cjs +50 -0
- package/dist/errors/DextoRuntimeError.d.cts +37 -0
- package/dist/errors/DextoRuntimeError.d.ts +37 -0
- package/dist/errors/DextoRuntimeError.js +26 -0
- package/dist/errors/DextoValidationError.cjs +118 -0
- package/dist/errors/DextoValidationError.d.cts +65 -0
- package/dist/errors/DextoValidationError.d.ts +65 -0
- package/dist/{chunk-XFQLRBHE.js → errors/DextoValidationError.js} +4 -32
- package/dist/errors/index.cjs +42 -0
- package/dist/errors/index.d.cts +18 -0
- package/dist/errors/index.d.ts +18 -0
- package/dist/errors/index.js +13 -0
- package/dist/errors/result-bridge.cjs +38 -0
- package/dist/errors/result-bridge.d.cts +39 -0
- package/dist/errors/result-bridge.d.ts +39 -0
- package/dist/errors/result-bridge.js +14 -0
- package/dist/errors/types.cjs +54 -0
- package/dist/errors/types.d.cts +62 -0
- package/dist/errors/types.d.ts +62 -0
- package/dist/errors/types.js +29 -0
- package/dist/events/index.cjs +169 -0
- package/dist/events/index.d.cts +272 -0
- package/dist/events/index.d.ts +272 -0
- package/dist/events/index.js +136 -0
- package/dist/index.browser.cjs +9 -220
- package/dist/index.browser.d.cts +53 -379
- package/dist/index.browser.d.ts +53 -379
- package/dist/index.browser.js +4 -210
- package/dist/index.cjs +31 -15266
- package/dist/index.d.cts +89 -6842
- package/dist/index.d.ts +89 -6842
- package/dist/index.js +14 -9914
- package/dist/llm/error-codes.cjs +48 -0
- package/dist/llm/error-codes.d.cts +26 -0
- package/dist/llm/error-codes.d.ts +26 -0
- package/dist/llm/error-codes.js +24 -0
- package/dist/llm/errors.cjs +108 -0
- package/dist/llm/errors.d.cts +58 -0
- package/dist/llm/errors.d.ts +58 -0
- package/dist/llm/errors.js +84 -0
- package/dist/llm/formatters/anthropic.cjs +246 -0
- package/dist/llm/formatters/anthropic.d.cts +45 -0
- package/dist/llm/formatters/anthropic.d.ts +45 -0
- package/dist/llm/formatters/anthropic.js +227 -0
- package/dist/llm/formatters/factory.cjs +51 -0
- package/dist/llm/formatters/factory.d.cts +12 -0
- package/dist/llm/formatters/factory.d.ts +12 -0
- package/dist/llm/formatters/factory.js +27 -0
- package/dist/llm/formatters/openai.cjs +167 -0
- package/dist/llm/formatters/openai.d.cts +38 -0
- package/dist/llm/formatters/openai.d.ts +38 -0
- package/dist/llm/formatters/openai.js +147 -0
- package/dist/llm/formatters/types.cjs +16 -0
- package/dist/llm/formatters/types.d.cts +43 -0
- package/dist/llm/formatters/types.d.ts +43 -0
- package/dist/llm/formatters/types.js +0 -0
- package/dist/llm/formatters/vercel.cjs +411 -0
- package/dist/llm/formatters/vercel.d.cts +48 -0
- package/dist/llm/formatters/vercel.d.ts +48 -0
- package/dist/llm/formatters/vercel.js +387 -0
- package/dist/llm/index.cjs +34 -0
- package/dist/llm/index.d.cts +39 -0
- package/dist/llm/index.d.ts +39 -0
- package/dist/llm/index.js +7 -0
- package/dist/llm/registry.cjs +881 -0
- package/dist/llm/registry.d.cts +176 -0
- package/dist/llm/registry.d.ts +176 -0
- package/dist/{chunk-J6AXCN3H.js → llm/registry.js} +25 -455
- package/dist/llm/resolver.cjs +154 -0
- package/dist/llm/resolver.d.cts +34 -0
- package/dist/llm/resolver.d.ts +34 -0
- package/dist/llm/resolver.js +136 -0
- package/dist/llm/schemas.cjs +188 -0
- package/dist/llm/schemas.d.cts +111 -0
- package/dist/llm/schemas.d.ts +111 -0
- package/dist/llm/schemas.js +172 -0
- package/dist/llm/services/anthropic.cjs +398 -0
- package/dist/llm/services/anthropic.d.cts +65 -0
- package/dist/llm/services/anthropic.d.ts +65 -0
- package/dist/llm/services/anthropic.js +374 -0
- package/dist/llm/services/factory.cjs +164 -0
- package/dist/llm/services/factory.d.cts +39 -0
- package/dist/llm/services/factory.d.ts +39 -0
- package/dist/llm/services/factory.js +130 -0
- package/dist/llm/services/index.cjs +22 -0
- package/dist/llm/services/index.d.cts +21 -0
- package/dist/llm/services/index.d.ts +21 -0
- package/dist/llm/services/index.js +1 -0
- package/dist/llm/services/openai.cjs +470 -0
- package/dist/llm/services/openai.d.cts +65 -0
- package/dist/llm/services/openai.d.ts +65 -0
- package/dist/llm/services/openai.js +446 -0
- package/dist/llm/services/test-utils.integration.cjs +169 -0
- package/dist/llm/services/test-utils.integration.d.cts +83 -0
- package/dist/llm/services/test-utils.integration.d.ts +83 -0
- package/dist/llm/services/test-utils.integration.js +142 -0
- package/dist/llm/services/types.cjs +16 -0
- package/dist/llm/services/types.d.cts +56 -0
- package/dist/llm/services/types.d.ts +56 -0
- package/dist/llm/services/types.js +0 -0
- package/dist/llm/services/vercel.cjs +525 -0
- package/dist/llm/services/vercel.d.cts +72 -0
- package/dist/llm/services/vercel.d.ts +72 -0
- package/dist/llm/services/vercel.js +506 -0
- package/dist/llm/tokenizer/anthropic.cjs +43 -0
- package/dist/llm/tokenizer/anthropic.d.cts +21 -0
- package/dist/llm/tokenizer/anthropic.d.ts +21 -0
- package/dist/llm/tokenizer/anthropic.js +19 -0
- package/dist/llm/tokenizer/default.cjs +41 -0
- package/dist/llm/tokenizer/default.d.cts +16 -0
- package/dist/llm/tokenizer/default.d.ts +16 -0
- package/dist/llm/tokenizer/default.js +17 -0
- package/dist/llm/tokenizer/factory.cjs +44 -0
- package/dist/llm/tokenizer/factory.d.cts +12 -0
- package/dist/llm/tokenizer/factory.d.ts +12 -0
- package/dist/llm/tokenizer/factory.js +20 -0
- package/dist/llm/tokenizer/google.cjs +52 -0
- package/dist/llm/tokenizer/google.d.cts +31 -0
- package/dist/llm/tokenizer/google.d.ts +31 -0
- package/dist/llm/tokenizer/google.js +28 -0
- package/dist/llm/tokenizer/openai.cjs +108 -0
- package/dist/llm/tokenizer/openai.d.cts +32 -0
- package/dist/llm/tokenizer/openai.d.ts +32 -0
- package/dist/llm/tokenizer/openai.js +83 -0
- package/dist/llm/tokenizer/types.cjs +33 -0
- package/dist/llm/tokenizer/types.d.cts +19 -0
- package/dist/llm/tokenizer/types.d.ts +19 -0
- package/dist/llm/tokenizer/types.js +9 -0
- package/dist/llm/types.cjs +42 -0
- package/dist/llm/types.d.cts +29 -0
- package/dist/llm/types.d.ts +29 -0
- package/dist/llm/types.js +16 -0
- package/dist/llm/validation.cjs +162 -0
- package/dist/llm/validation.d.cts +60 -0
- package/dist/llm/validation.d.ts +60 -0
- package/dist/llm/validation.js +138 -0
- package/dist/logger/browser.cjs +86 -0
- package/dist/logger/browser.d.cts +29 -0
- package/dist/logger/browser.d.ts +29 -0
- package/dist/logger/browser.js +61 -0
- package/dist/logger/index.cjs +22 -0
- package/dist/logger/index.d.cts +1 -0
- package/dist/logger/index.d.ts +1 -0
- package/dist/logger/index.js +1 -0
- package/dist/logger/logger.cjs +362 -0
- package/dist/logger/logger.d.cts +52 -0
- package/dist/logger/logger.d.ts +52 -0
- package/dist/logger/logger.js +327 -0
- package/dist/mcp/error-codes.cjs +38 -0
- package/dist/mcp/error-codes.d.cts +16 -0
- package/dist/mcp/error-codes.d.ts +16 -0
- package/dist/mcp/error-codes.js +14 -0
- package/dist/mcp/errors.cjs +131 -0
- package/dist/mcp/errors.d.cts +72 -0
- package/dist/mcp/errors.d.ts +72 -0
- package/dist/mcp/errors.js +107 -0
- package/dist/mcp/index.cjs +34 -0
- package/dist/mcp/index.d.cts +26 -0
- package/dist/mcp/index.d.ts +26 -0
- package/dist/mcp/index.js +7 -0
- package/dist/mcp/manager.cjs +473 -0
- package/dist/mcp/manager.d.cts +163 -0
- package/dist/mcp/manager.d.ts +163 -0
- package/dist/mcp/manager.js +449 -0
- package/dist/mcp/mcp-client.cjs +420 -0
- package/dist/mcp/mcp-client.d.cts +108 -0
- package/dist/mcp/mcp-client.d.ts +108 -0
- package/dist/mcp/mcp-client.js +396 -0
- package/dist/mcp/resolver.cjs +78 -0
- package/dist/mcp/resolver.d.cts +22 -0
- package/dist/mcp/resolver.d.ts +22 -0
- package/dist/mcp/resolver.js +56 -0
- package/dist/mcp/schemas.cjs +82 -0
- package/dist/mcp/schemas.d.cts +266 -0
- package/dist/mcp/schemas.d.ts +266 -0
- package/dist/mcp/schemas.js +54 -0
- package/dist/mcp/types.cjs +16 -0
- package/dist/mcp/types.d.cts +21 -0
- package/dist/mcp/types.d.ts +21 -0
- package/dist/mcp/types.js +0 -0
- package/dist/preferences/constants.cjs +28 -0
- package/dist/preferences/constants.d.cts +3 -0
- package/dist/preferences/constants.d.ts +3 -0
- package/dist/preferences/constants.js +4 -0
- package/dist/preferences/error-codes.cjs +35 -0
- package/dist/preferences/error-codes.d.cts +9 -0
- package/dist/preferences/error-codes.d.ts +9 -0
- package/dist/preferences/error-codes.js +11 -0
- package/dist/preferences/errors.cjs +75 -0
- package/dist/preferences/errors.d.cts +33 -0
- package/dist/preferences/errors.d.ts +33 -0
- package/dist/preferences/errors.js +50 -0
- package/dist/preferences/index.cjs +55 -0
- package/dist/preferences/index.d.cts +21 -0
- package/dist/preferences/index.d.ts +21 -0
- package/dist/preferences/index.js +31 -0
- package/dist/preferences/loader.cjs +136 -0
- package/dist/preferences/loader.d.cts +45 -0
- package/dist/preferences/loader.d.ts +45 -0
- package/dist/preferences/loader.js +107 -0
- package/dist/preferences/schemas.cjs +74 -0
- package/dist/preferences/schemas.d.cts +104 -0
- package/dist/preferences/schemas.d.ts +104 -0
- package/dist/preferences/schemas.js +47 -0
- package/dist/search/index.cjs +28 -0
- package/dist/search/index.d.cts +5 -0
- package/dist/search/index.d.ts +5 -0
- package/dist/search/index.js +4 -0
- package/dist/search/search-service.cjs +245 -0
- package/dist/search/search-service.d.cts +47 -0
- package/dist/search/search-service.d.ts +47 -0
- package/dist/search/search-service.js +221 -0
- package/dist/search/types.cjs +16 -0
- package/dist/search/types.d.cts +78 -0
- package/dist/search/types.d.ts +78 -0
- package/dist/search/types.js +0 -0
- package/dist/session/chat-session.cjs +354 -0
- package/dist/session/chat-session.d.cts +284 -0
- package/dist/session/chat-session.d.ts +284 -0
- package/dist/session/chat-session.js +333 -0
- package/dist/session/error-codes.cjs +35 -0
- package/dist/session/error-codes.d.cts +13 -0
- package/dist/session/error-codes.d.ts +13 -0
- package/dist/session/error-codes.js +11 -0
- package/dist/session/errors.cjs +93 -0
- package/dist/session/errors.d.cts +58 -0
- package/dist/session/errors.d.ts +58 -0
- package/dist/session/errors.js +69 -0
- package/dist/session/history/database.cjs +95 -0
- package/dist/session/history/database.d.cts +28 -0
- package/dist/session/history/database.d.ts +28 -0
- package/dist/session/history/database.js +71 -0
- package/dist/session/history/factory.cjs +31 -0
- package/dist/session/history/factory.d.cts +11 -0
- package/dist/session/history/factory.d.ts +11 -0
- package/dist/session/history/factory.js +7 -0
- package/dist/session/history/types.cjs +16 -0
- package/dist/session/history/types.d.cts +17 -0
- package/dist/session/history/types.d.ts +17 -0
- package/dist/session/history/types.js +0 -0
- package/dist/session/index.cjs +37 -0
- package/dist/session/index.d.cts +53 -0
- package/dist/session/index.d.ts +53 -0
- package/dist/session/index.js +10 -0
- package/dist/session/schemas.cjs +32 -0
- package/dist/session/schemas.d.cts +16 -0
- package/dist/session/schemas.d.ts +16 -0
- package/dist/session/schemas.js +8 -0
- package/dist/session/session-manager.cjs +481 -0
- package/dist/session/session-manager.d.cts +219 -0
- package/dist/session/session-manager.d.ts +219 -0
- package/dist/session/session-manager.js +457 -0
- package/dist/storage/backend/cache-backend.cjs +16 -0
- package/dist/storage/backend/cache-backend.d.cts +15 -0
- package/dist/storage/backend/cache-backend.d.ts +15 -0
- package/dist/storage/backend/cache-backend.js +0 -0
- package/dist/storage/backend/database-backend.cjs +16 -0
- package/dist/storage/backend/database-backend.d.cts +19 -0
- package/dist/storage/backend/database-backend.d.ts +19 -0
- package/dist/storage/backend/database-backend.js +0 -0
- package/dist/storage/backend/memory-backend.cjs +140 -0
- package/dist/storage/backend/memory-backend.d.cts +34 -0
- package/dist/storage/backend/memory-backend.d.ts +34 -0
- package/dist/storage/backend/memory-backend.js +116 -0
- package/dist/storage/backend/postgres-backend.cjs +231 -0
- package/dist/storage/backend/postgres-backend.d.cts +37 -0
- package/dist/storage/backend/postgres-backend.d.ts +37 -0
- package/dist/{postgres-backend-WMWS7RAT.js → storage/backend/postgres-backend.js} +3 -12
- package/dist/storage/backend/redis-backend.cjs +184 -0
- package/dist/storage/backend/redis-backend.d.cts +36 -0
- package/dist/storage/backend/redis-backend.d.ts +36 -0
- package/dist/{redis-backend-BNLN3XHX.js → storage/backend/redis-backend.js} +3 -12
- package/dist/storage/backend/sqlite-backend.cjs +271 -0
- package/dist/storage/backend/sqlite-backend.d.cts +35 -0
- package/dist/storage/backend/sqlite-backend.d.ts +35 -0
- package/dist/{sqlite-backend-AR6XNK2Q.js → storage/backend/sqlite-backend.js} +6 -17
- package/dist/storage/backend/types.cjs +16 -0
- package/dist/storage/backend/types.d.cts +14 -0
- package/dist/storage/backend/types.d.ts +14 -0
- package/dist/storage/backend/types.js +0 -0
- package/dist/storage/error-codes.cjs +36 -0
- package/dist/storage/error-codes.d.cts +14 -0
- package/dist/storage/error-codes.d.ts +14 -0
- package/dist/storage/error-codes.js +12 -0
- package/dist/storage/errors.cjs +104 -0
- package/dist/storage/errors.d.cts +63 -0
- package/dist/storage/errors.d.ts +63 -0
- package/dist/{chunk-F2QFAECT.js → storage/errors.js} +23 -30
- package/dist/storage/index.cjs +33 -0
- package/dist/storage/index.d.cts +7 -0
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.js +7 -0
- package/dist/storage/schemas.cjs +113 -0
- package/dist/storage/schemas.d.cts +856 -0
- package/dist/storage/schemas.d.ts +856 -0
- package/dist/storage/schemas.js +89 -0
- package/dist/storage/storage-manager.cjs +208 -0
- package/dist/storage/storage-manager.d.cts +52 -0
- package/dist/storage/storage-manager.d.ts +52 -0
- package/dist/storage/storage-manager.js +173 -0
- package/dist/storage/types.cjs +16 -0
- package/dist/storage/types.d.cts +5 -0
- package/dist/storage/types.d.ts +5 -0
- package/dist/storage/types.js +0 -0
- package/dist/systemPrompt/contributors.cjs +146 -0
- package/dist/systemPrompt/contributors.d.cts +44 -0
- package/dist/systemPrompt/contributors.d.ts +44 -0
- package/dist/systemPrompt/contributors.js +120 -0
- package/dist/systemPrompt/error-codes.cjs +35 -0
- package/dist/systemPrompt/error-codes.d.cts +13 -0
- package/dist/systemPrompt/error-codes.d.ts +13 -0
- package/dist/systemPrompt/error-codes.js +11 -0
- package/dist/systemPrompt/errors.cjs +93 -0
- package/dist/systemPrompt/errors.d.cts +55 -0
- package/dist/systemPrompt/errors.d.ts +55 -0
- package/dist/systemPrompt/errors.js +69 -0
- package/dist/systemPrompt/in-built-prompts.cjs +68 -0
- package/dist/systemPrompt/in-built-prompts.d.cts +28 -0
- package/dist/systemPrompt/in-built-prompts.d.ts +28 -0
- package/dist/systemPrompt/in-built-prompts.js +42 -0
- package/dist/systemPrompt/index.cjs +30 -0
- package/dist/systemPrompt/index.d.cts +14 -0
- package/dist/systemPrompt/index.d.ts +14 -0
- package/dist/systemPrompt/index.js +5 -0
- package/dist/systemPrompt/manager.cjs +93 -0
- package/dist/systemPrompt/manager.d.cts +31 -0
- package/dist/systemPrompt/manager.d.ts +31 -0
- package/dist/systemPrompt/manager.js +69 -0
- package/dist/systemPrompt/registry.cjs +51 -0
- package/dist/systemPrompt/registry.d.cts +20 -0
- package/dist/systemPrompt/registry.d.ts +20 -0
- package/dist/systemPrompt/registry.js +15 -0
- package/dist/systemPrompt/schemas.cjs +107 -0
- package/dist/systemPrompt/schemas.d.cts +401 -0
- package/dist/systemPrompt/schemas.d.ts +401 -0
- package/dist/systemPrompt/schemas.js +81 -0
- package/dist/systemPrompt/types.cjs +16 -0
- package/dist/systemPrompt/types.d.cts +19 -0
- package/dist/systemPrompt/types.d.ts +19 -0
- package/dist/systemPrompt/types.js +0 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.cjs +44 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.cts +19 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts +19 -0
- package/dist/tools/confirmation/allowed-tools-provider/factory.js +20 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.cjs +62 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.cts +17 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts +17 -0
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.js +38 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +68 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.cts +26 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts +26 -0
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +44 -0
- package/dist/tools/confirmation/allowed-tools-provider/types.cjs +16 -0
- package/dist/tools/confirmation/allowed-tools-provider/types.d.cts +35 -0
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +35 -0
- package/dist/tools/confirmation/allowed-tools-provider/types.js +0 -0
- package/dist/tools/confirmation/event-based-confirmation-provider.cjs +158 -0
- package/dist/tools/confirmation/event-based-confirmation-provider.d.cts +41 -0
- package/dist/tools/confirmation/event-based-confirmation-provider.d.ts +41 -0
- package/dist/tools/confirmation/event-based-confirmation-provider.js +134 -0
- package/dist/tools/confirmation/factory.cjs +52 -0
- package/dist/tools/confirmation/factory.d.cts +37 -0
- package/dist/tools/confirmation/factory.d.ts +37 -0
- package/dist/tools/confirmation/factory.js +28 -0
- package/dist/tools/confirmation/noop-confirmation-provider.cjs +49 -0
- package/dist/tools/confirmation/noop-confirmation-provider.d.cts +22 -0
- package/dist/tools/confirmation/noop-confirmation-provider.d.ts +22 -0
- package/dist/tools/confirmation/noop-confirmation-provider.js +25 -0
- package/dist/tools/confirmation/types.cjs +16 -0
- package/dist/tools/confirmation/types.d.cts +46 -0
- package/dist/tools/confirmation/types.d.ts +46 -0
- package/dist/tools/confirmation/types.js +0 -0
- package/dist/tools/error-codes.cjs +40 -0
- package/dist/tools/error-codes.d.cts +18 -0
- package/dist/tools/error-codes.d.ts +18 -0
- package/dist/tools/error-codes.js +16 -0
- package/dist/tools/errors.cjs +164 -0
- package/dist/tools/errors.d.cts +97 -0
- package/dist/tools/errors.d.ts +97 -0
- package/dist/tools/errors.js +140 -0
- package/dist/tools/index.cjs +37 -0
- package/dist/tools/index.d.cts +19 -0
- package/dist/tools/index.d.ts +19 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.cjs +61 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.d.cts +15 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.d.ts +15 -0
- package/dist/tools/internal-tools/implementations/search-history-tool.js +37 -0
- package/dist/tools/internal-tools/index.cjs +24 -0
- package/dist/tools/internal-tools/index.d.cts +13 -0
- package/dist/tools/internal-tools/index.d.ts +13 -0
- package/dist/tools/internal-tools/index.js +2 -0
- package/dist/tools/internal-tools/provider.cjs +159 -0
- package/dist/tools/internal-tools/provider.d.cts +66 -0
- package/dist/tools/internal-tools/provider.d.ts +66 -0
- package/dist/tools/internal-tools/provider.js +135 -0
- package/dist/tools/internal-tools/registry.cjs +43 -0
- package/dist/tools/internal-tools/registry.d.cts +45 -0
- package/dist/tools/internal-tools/registry.d.ts +45 -0
- package/dist/tools/internal-tools/registry.js +17 -0
- package/dist/tools/schemas.cjs +45 -0
- package/dist/tools/schemas.d.cts +21 -0
- package/dist/tools/schemas.d.ts +21 -0
- package/dist/tools/schemas.js +20 -0
- package/dist/tools/tool-manager.cjs +275 -0
- package/dist/tools/tool-manager.d.cts +106 -0
- package/dist/tools/tool-manager.d.ts +106 -0
- package/dist/tools/tool-manager.js +251 -0
- package/dist/tools/types.cjs +16 -0
- package/dist/tools/types.d.cts +66 -0
- package/dist/tools/types.d.ts +66 -0
- package/dist/tools/types.js +0 -0
- package/dist/utils/api-key-resolver.cjs +62 -0
- package/dist/utils/api-key-resolver.d.cts +23 -0
- package/dist/utils/api-key-resolver.d.ts +23 -0
- package/dist/utils/api-key-resolver.js +36 -0
- package/dist/utils/api-key-store.cjs +56 -0
- package/dist/utils/api-key-store.d.cts +26 -0
- package/dist/utils/api-key-store.d.ts +26 -0
- package/dist/utils/api-key-store.js +30 -0
- package/dist/utils/env.cjs +154 -0
- package/dist/utils/env.d.cts +29 -0
- package/dist/utils/env.d.ts +29 -0
- package/dist/utils/env.js +118 -0
- package/dist/utils/error-conversion.cjs +53 -0
- package/dist/utils/error-conversion.d.cts +13 -0
- package/dist/utils/error-conversion.d.ts +13 -0
- package/dist/utils/error-conversion.js +29 -0
- package/dist/utils/execution-context.cjs +85 -0
- package/dist/utils/execution-context.d.cts +21 -0
- package/dist/utils/execution-context.d.ts +21 -0
- package/dist/utils/execution-context.js +49 -0
- package/dist/{chunk-MVKLS3LM.js → utils/fs-walk.cjs} +27 -18
- package/dist/utils/fs-walk.d.cts +9 -0
- package/dist/utils/fs-walk.d.ts +9 -0
- package/dist/utils/fs-walk.js +18 -0
- package/dist/utils/index.cjs +44 -0
- package/dist/utils/index.d.cts +63 -0
- package/dist/utils/index.d.ts +63 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/path.cjs +197 -0
- package/dist/utils/path.d.cts +54 -0
- package/dist/utils/path.d.ts +54 -0
- package/dist/utils/path.js +159 -0
- package/dist/utils/port-utils.cjs +37 -0
- package/dist/utils/port-utils.d.cts +11 -0
- package/dist/utils/port-utils.d.ts +11 -0
- package/dist/utils/port-utils.js +13 -0
- package/dist/utils/port-utils.spec.cjs +26 -0
- package/dist/utils/port-utils.spec.d.cts +2 -0
- package/dist/utils/port-utils.spec.d.ts +2 -0
- package/dist/utils/port-utils.spec.js +25 -0
- package/dist/utils/redactor.cjs +105 -0
- package/dist/utils/redactor.d.cts +18 -0
- package/dist/utils/redactor.d.ts +18 -0
- package/dist/utils/redactor.js +81 -0
- package/dist/utils/result.cjs +115 -0
- package/dist/utils/result.d.cts +180 -0
- package/dist/utils/result.d.ts +180 -0
- package/dist/utils/result.js +82 -0
- package/dist/utils/safe-stringify.cjs +57 -0
- package/dist/utils/safe-stringify.d.cts +7 -0
- package/dist/utils/safe-stringify.d.ts +7 -0
- package/dist/utils/safe-stringify.js +33 -0
- package/dist/utils/schema.cjs +42 -0
- package/dist/utils/schema.d.cts +6 -0
- package/dist/utils/schema.d.ts +6 -0
- package/dist/utils/schema.js +18 -0
- package/dist/utils/service-initializer.cjs +119 -0
- package/dist/utils/service-initializer.d.cts +63 -0
- package/dist/utils/service-initializer.d.ts +63 -0
- package/dist/utils/service-initializer.js +95 -0
- package/dist/utils/user-info.cjs +30 -0
- package/dist/utils/user-info.d.cts +3 -0
- package/dist/utils/user-info.d.ts +3 -0
- package/dist/utils/user-info.js +6 -0
- package/dist/utils/zod-schema-converter.cjs +112 -0
- package/dist/utils/zod-schema-converter.d.cts +13 -0
- package/dist/utils/zod-schema-converter.d.ts +13 -0
- package/dist/utils/zod-schema-converter.js +87 -0
- package/package.json +2 -2
- package/dist/chunk-D62MHQBE.js +0 -2203
- package/dist/chunk-FCJVTIBV.js +0 -535
- package/dist/chunk-TPERKLLN.js +0 -75
- package/dist/errors-ZZ4Z3FKB.js +0 -10
- package/dist/loader-HBNEYPQZ.js +0 -20
- package/dist/path-TP7WBDED.js +0 -21
- package/dist/registry-Z4DFXODW.js +0 -14
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
2
|
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
3
|
+
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
4
|
+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
5
|
+
import { logger } from "../logger/index.js";
|
|
6
|
+
import { resolveBundledScript } from "../utils/path.js";
|
|
7
|
+
import { MCPError } from "./errors.js";
|
|
8
|
+
class MCPClient {
|
|
9
|
+
client = null;
|
|
10
|
+
transport = null;
|
|
11
|
+
isConnected = false;
|
|
12
|
+
serverCommand = null;
|
|
13
|
+
originalArgs = null;
|
|
14
|
+
resolvedArgs = null;
|
|
15
|
+
serverEnv = null;
|
|
16
|
+
serverSpawned = false;
|
|
17
|
+
serverPid = null;
|
|
18
|
+
serverAlias = null;
|
|
19
|
+
timeout = 6e4;
|
|
20
|
+
// Default timeout value
|
|
21
|
+
async connect(config, serverName) {
|
|
22
|
+
this.timeout = config.timeout ?? 3e4;
|
|
23
|
+
if (config.type === "stdio") {
|
|
24
|
+
const stdioConfig = config;
|
|
25
|
+
let command = stdioConfig.command;
|
|
26
|
+
if (process.platform === "win32" && command === "npx") {
|
|
27
|
+
command = "C:\\Program Files\\nodejs\\npx.cmd";
|
|
28
|
+
}
|
|
29
|
+
return this.connectViaStdio(command, stdioConfig.args, stdioConfig.env, serverName);
|
|
30
|
+
} else if (config.type === "sse") {
|
|
31
|
+
const sseConfig = config;
|
|
32
|
+
return this.connectViaSSE(sseConfig.url, sseConfig.headers, serverName);
|
|
33
|
+
} else if (config.type === "http") {
|
|
34
|
+
const httpConfig = config;
|
|
35
|
+
return this.connectViaHttp(httpConfig.url, httpConfig.headers || {}, serverName);
|
|
36
|
+
} else {
|
|
37
|
+
const _exhaustive = config;
|
|
38
|
+
throw MCPError.protocolError(`Unsupported server type: ${JSON.stringify(_exhaustive)}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Connect to an MCP server via stdio
|
|
43
|
+
* @param command Command to run
|
|
44
|
+
* @param args Arguments for the command
|
|
45
|
+
* @param env Environment variables
|
|
46
|
+
* @param serverAlias Optional server alias/name to show in logs
|
|
47
|
+
*/
|
|
48
|
+
async connectViaStdio(command, args = [], env, serverAlias) {
|
|
49
|
+
this.serverCommand = command;
|
|
50
|
+
this.originalArgs = [...args];
|
|
51
|
+
this.resolvedArgs = [...this.originalArgs];
|
|
52
|
+
this.serverEnv = env || null;
|
|
53
|
+
this.serverAlias = serverAlias || null;
|
|
54
|
+
if (command === "node" && this.resolvedArgs && this.resolvedArgs.length > 0 && this.resolvedArgs[0]?.startsWith("dist/")) {
|
|
55
|
+
try {
|
|
56
|
+
const scriptRelativePath = this.resolvedArgs[0];
|
|
57
|
+
this.resolvedArgs[0] = resolveBundledScript(scriptRelativePath);
|
|
58
|
+
logger.debug(
|
|
59
|
+
`Resolved bundled script path: ${scriptRelativePath} -> ${this.resolvedArgs[0]}`
|
|
60
|
+
);
|
|
61
|
+
} catch (e) {
|
|
62
|
+
logger.warn(
|
|
63
|
+
`Failed to resolve path for bundled script ${this.resolvedArgs[0]}: ${JSON.stringify(e, null, 2)}`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
logger.info("=======================================");
|
|
68
|
+
logger.info(`MCP SERVER: ${command} ${this.resolvedArgs.join(" ")}`, null, "magenta");
|
|
69
|
+
if (env) {
|
|
70
|
+
logger.info("Environment:");
|
|
71
|
+
Object.entries(env).forEach(([key, _]) => {
|
|
72
|
+
logger.info(` ${key}= [value hidden]`);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
logger.info("=======================================\n");
|
|
76
|
+
const serverName = this.serverAlias ? `"${this.serverAlias}" (${command} ${this.resolvedArgs.join(" ")})` : `${command} ${this.resolvedArgs.join(" ")}`;
|
|
77
|
+
logger.info(`Connecting to MCP server: ${serverName}`);
|
|
78
|
+
const expandedEnv = {
|
|
79
|
+
...process.env,
|
|
80
|
+
...env || {}
|
|
81
|
+
};
|
|
82
|
+
this.transport = new StdioClientTransport({
|
|
83
|
+
command,
|
|
84
|
+
args: this.resolvedArgs,
|
|
85
|
+
env: expandedEnv
|
|
86
|
+
});
|
|
87
|
+
this.client = new Client(
|
|
88
|
+
{
|
|
89
|
+
name: "Dexto-stdio-mcp-client",
|
|
90
|
+
version: "1.0.0"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
capabilities: { tools: {} }
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
try {
|
|
97
|
+
logger.info("Establishing connection...");
|
|
98
|
+
await this.client.connect(this.transport);
|
|
99
|
+
this.serverSpawned = true;
|
|
100
|
+
logger.info(`\u2705 Stdio SERVER ${serverName} SPAWNED`);
|
|
101
|
+
logger.info("Connection established!\n\n");
|
|
102
|
+
this.isConnected = true;
|
|
103
|
+
return this.client;
|
|
104
|
+
} catch (error) {
|
|
105
|
+
logger.error(
|
|
106
|
+
`Failed to connect to MCP server ${serverName}: ${JSON.stringify(error.message, null, 2)}`
|
|
107
|
+
);
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async connectViaSSE(url, headers = {}, serverName) {
|
|
112
|
+
logger.debug(`Connecting to SSE MCP server at url: ${url}`);
|
|
113
|
+
this.transport = new SSEClientTransport(new URL(url), {
|
|
114
|
+
// For regular HTTP requests
|
|
115
|
+
requestInit: {
|
|
116
|
+
headers
|
|
117
|
+
}
|
|
118
|
+
// Need to implement eventSourceInit for SSE events.
|
|
119
|
+
});
|
|
120
|
+
logger.debug(`[connectViaSSE] SSE transport: ${JSON.stringify(this.transport, null, 2)}`);
|
|
121
|
+
this.client = new Client(
|
|
122
|
+
{
|
|
123
|
+
name: "Dexto-sse-mcp-client",
|
|
124
|
+
version: "1.0.0"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
capabilities: { tools: {} }
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
try {
|
|
131
|
+
logger.info("Establishing connection...");
|
|
132
|
+
await this.client.connect(this.transport);
|
|
133
|
+
this.serverSpawned = true;
|
|
134
|
+
logger.info(`\u2705 ${serverName} SSE SERVER SPAWNED`);
|
|
135
|
+
logger.info("Connection established!\n\n");
|
|
136
|
+
this.isConnected = true;
|
|
137
|
+
return this.client;
|
|
138
|
+
} catch (error) {
|
|
139
|
+
logger.error(
|
|
140
|
+
`Failed to connect to SSE MCP server ${url}: ${JSON.stringify(error.message, null, 2)}`
|
|
141
|
+
);
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Connect to an MCP server via Streamable HTTP transport
|
|
147
|
+
*/
|
|
148
|
+
async connectViaHttp(url, headers = {}, serverAlias) {
|
|
149
|
+
logger.info(`Connecting to HTTP MCP server at ${url}`);
|
|
150
|
+
this.transport = new StreamableHTTPClientTransport(new URL(url), {
|
|
151
|
+
requestInit: { headers: headers || {} }
|
|
152
|
+
});
|
|
153
|
+
this.client = new Client(
|
|
154
|
+
{ name: "Dexto-http-mcp-client", version: "1.0.0" },
|
|
155
|
+
{ capabilities: { tools: {} } }
|
|
156
|
+
);
|
|
157
|
+
try {
|
|
158
|
+
logger.info("Establishing HTTP connection...");
|
|
159
|
+
await this.client.connect(this.transport);
|
|
160
|
+
this.isConnected = true;
|
|
161
|
+
logger.info(`\u2705 HTTP SERVER ${serverAlias ?? url} CONNECTED`);
|
|
162
|
+
return this.client;
|
|
163
|
+
} catch (error) {
|
|
164
|
+
logger.error(
|
|
165
|
+
`Failed to connect to HTTP MCP server ${url}: ${JSON.stringify(error.message, null, 2)}`
|
|
166
|
+
);
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Disconnect from the server
|
|
172
|
+
*/
|
|
173
|
+
async disconnect() {
|
|
174
|
+
if (this.transport && typeof this.transport.close === "function") {
|
|
175
|
+
try {
|
|
176
|
+
await this.transport.close();
|
|
177
|
+
this.isConnected = false;
|
|
178
|
+
this.serverSpawned = false;
|
|
179
|
+
logger.info("Disconnected from MCP server");
|
|
180
|
+
} catch (error) {
|
|
181
|
+
logger.error(
|
|
182
|
+
`Error disconnecting from MCP server: ${JSON.stringify(error.message, null, 2)}`
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Call a tool with given name and arguments
|
|
189
|
+
* @param name Tool name
|
|
190
|
+
* @param args Tool arguments
|
|
191
|
+
* @returns Result of the tool execution
|
|
192
|
+
*/
|
|
193
|
+
async callTool(name, args) {
|
|
194
|
+
this.ensureConnected();
|
|
195
|
+
try {
|
|
196
|
+
logger.debug(`Calling tool '${name}' with args: ${JSON.stringify(args, null, 2)}`);
|
|
197
|
+
let toolArgs = args;
|
|
198
|
+
if (typeof args === "string") {
|
|
199
|
+
try {
|
|
200
|
+
toolArgs = JSON.parse(args);
|
|
201
|
+
} catch {
|
|
202
|
+
toolArgs = { input: args };
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
logger.debug(`Using timeout: ${this.timeout}`);
|
|
206
|
+
const result = await this.client.callTool(
|
|
207
|
+
{ name, arguments: toolArgs },
|
|
208
|
+
void 0,
|
|
209
|
+
// resultSchema (optional)
|
|
210
|
+
{ timeout: this.timeout }
|
|
211
|
+
// Use server-specific timeout, default 1 minute
|
|
212
|
+
);
|
|
213
|
+
const logResult = JSON.stringify(
|
|
214
|
+
result,
|
|
215
|
+
(key, value) => {
|
|
216
|
+
if (key === "data" && typeof value === "string" && value.length > 100) {
|
|
217
|
+
return `[Base64 data: ${value.length} chars]`;
|
|
218
|
+
}
|
|
219
|
+
return value;
|
|
220
|
+
},
|
|
221
|
+
2
|
|
222
|
+
);
|
|
223
|
+
logger.debug(`Tool '${name}' result: ${logResult}`);
|
|
224
|
+
if (result === null || result === void 0) {
|
|
225
|
+
return "Tool executed successfully with no result data.";
|
|
226
|
+
}
|
|
227
|
+
return result;
|
|
228
|
+
} catch (error) {
|
|
229
|
+
logger.error(`Tool call '${name}' failed: ${JSON.stringify(error, null, 2)}`);
|
|
230
|
+
return `Error executing tool '${name}': ${error instanceof Error ? error.message : String(error)}`;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Get the list of tools provided by this client
|
|
235
|
+
* @returns Array of available tools
|
|
236
|
+
*/
|
|
237
|
+
async getTools() {
|
|
238
|
+
this.ensureConnected();
|
|
239
|
+
const tools = {};
|
|
240
|
+
try {
|
|
241
|
+
const listToolResult = await this.client.listTools({});
|
|
242
|
+
logger.silly(`listTools result: ${JSON.stringify(listToolResult, null, 2)}`);
|
|
243
|
+
if (listToolResult && listToolResult.tools) {
|
|
244
|
+
listToolResult.tools.forEach((tool) => {
|
|
245
|
+
if (!tool.description) {
|
|
246
|
+
logger.warn(`Tool '${tool.name}' is missing a description`);
|
|
247
|
+
}
|
|
248
|
+
if (!tool.inputSchema) {
|
|
249
|
+
throw MCPError.invalidToolSchema(tool.name, "missing input schema");
|
|
250
|
+
}
|
|
251
|
+
tools[tool.name] = {
|
|
252
|
+
description: tool.description ?? "",
|
|
253
|
+
parameters: tool.inputSchema
|
|
254
|
+
};
|
|
255
|
+
});
|
|
256
|
+
} else {
|
|
257
|
+
throw MCPError.protocolError(
|
|
258
|
+
"listTools did not return the expected structure: missing tools"
|
|
259
|
+
);
|
|
260
|
+
}
|
|
261
|
+
} catch (error) {
|
|
262
|
+
logger.warn(
|
|
263
|
+
`Failed to get tools from MCP server, proceeding with zero tools: ${JSON.stringify(error, null, 2)}`
|
|
264
|
+
);
|
|
265
|
+
return tools;
|
|
266
|
+
}
|
|
267
|
+
return tools;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get the list of prompts provided by this client
|
|
271
|
+
* @returns Array of available prompt names
|
|
272
|
+
* TODO: Turn exception logs back into error and only call this based on capabilities of the server
|
|
273
|
+
*/
|
|
274
|
+
async listPrompts() {
|
|
275
|
+
this.ensureConnected();
|
|
276
|
+
try {
|
|
277
|
+
const response = await this.client.listPrompts();
|
|
278
|
+
logger.debug(`listPrompts response: ${JSON.stringify(response, null, 2)}`);
|
|
279
|
+
return response.prompts.map((p) => p.name);
|
|
280
|
+
} catch (error) {
|
|
281
|
+
logger.debug(
|
|
282
|
+
`Failed to list prompts from MCP server (optional feature), skipping: ${JSON.stringify(error, null, 2)}`
|
|
283
|
+
);
|
|
284
|
+
return [];
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Get a specific prompt definition
|
|
289
|
+
* @param name Name of the prompt
|
|
290
|
+
* @param args Arguments for the prompt (optional)
|
|
291
|
+
* @returns Prompt definition (structure depends on SDK)
|
|
292
|
+
* TODO: Turn exception logs back into error and only call this based on capabilities of the server
|
|
293
|
+
*/
|
|
294
|
+
async getPrompt(name, args) {
|
|
295
|
+
this.ensureConnected();
|
|
296
|
+
try {
|
|
297
|
+
logger.debug(`Getting prompt '${name}' with args: ${JSON.stringify(args, null, 2)}`);
|
|
298
|
+
const response = await this.client.getPrompt(
|
|
299
|
+
{ name, arguments: args },
|
|
300
|
+
{ timeout: this.timeout }
|
|
301
|
+
);
|
|
302
|
+
logger.debug(`getPrompt '${name}' response: ${JSON.stringify(response, null, 2)}`);
|
|
303
|
+
return response;
|
|
304
|
+
} catch (error) {
|
|
305
|
+
logger.debug(
|
|
306
|
+
`Failed to get prompt '${name}' from MCP server: ${JSON.stringify(error, null, 2)}`
|
|
307
|
+
);
|
|
308
|
+
throw MCPError.protocolError(
|
|
309
|
+
`Error getting prompt '${name}': ${error instanceof Error ? error.message : String(error)}`
|
|
310
|
+
);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Get the list of resources provided by this client
|
|
315
|
+
* @returns Array of available resource URIs
|
|
316
|
+
* TODO: Turn exception logs back into error and only call this based on capabilities of the server
|
|
317
|
+
*/
|
|
318
|
+
async listResources() {
|
|
319
|
+
this.ensureConnected();
|
|
320
|
+
try {
|
|
321
|
+
const response = await this.client.listResources();
|
|
322
|
+
logger.debug(`listResources response: ${JSON.stringify(response, null, 2)}`);
|
|
323
|
+
return response.resources.map((r) => r.uri);
|
|
324
|
+
} catch (error) {
|
|
325
|
+
logger.debug(
|
|
326
|
+
`Failed to list resources from MCP server (optional feature), skipping: ${JSON.stringify(error, null, 2)}`
|
|
327
|
+
);
|
|
328
|
+
return [];
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Read the content of a specific resource
|
|
333
|
+
* @param uri URI of the resource
|
|
334
|
+
* @returns Content of the resource (structure depends on SDK)
|
|
335
|
+
*/
|
|
336
|
+
async readResource(uri) {
|
|
337
|
+
this.ensureConnected();
|
|
338
|
+
try {
|
|
339
|
+
logger.debug(`Reading resource '${uri}'`);
|
|
340
|
+
const response = await this.client.readResource({ uri }, { timeout: this.timeout });
|
|
341
|
+
logger.debug(`readResource '${uri}' response: ${JSON.stringify(response, null, 2)}`);
|
|
342
|
+
return response;
|
|
343
|
+
} catch (error) {
|
|
344
|
+
logger.debug(
|
|
345
|
+
`Failed to read resource '${uri}' from MCP server: ${JSON.stringify(error, null, 2)}`
|
|
346
|
+
);
|
|
347
|
+
throw MCPError.protocolError(
|
|
348
|
+
`Error reading resource '${uri}': ${error instanceof Error ? error.message : String(error)}`
|
|
349
|
+
);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Check if the client is connected
|
|
354
|
+
*/
|
|
355
|
+
getConnectionStatus() {
|
|
356
|
+
return this.isConnected;
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Get the connected client
|
|
360
|
+
*/
|
|
361
|
+
getClient() {
|
|
362
|
+
return this.client;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Get server status information
|
|
366
|
+
*/
|
|
367
|
+
getServerInfo() {
|
|
368
|
+
return {
|
|
369
|
+
spawned: this.serverSpawned,
|
|
370
|
+
pid: this.serverPid,
|
|
371
|
+
command: this.serverCommand,
|
|
372
|
+
originalArgs: this.originalArgs,
|
|
373
|
+
resolvedArgs: this.resolvedArgs,
|
|
374
|
+
env: this.serverEnv,
|
|
375
|
+
alias: this.serverAlias
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Get the client instance once connected
|
|
380
|
+
* @returns Promise with the MCP client
|
|
381
|
+
*/
|
|
382
|
+
async getConnectedClient() {
|
|
383
|
+
if (!this.client || !this.isConnected) {
|
|
384
|
+
throw MCPError.clientNotConnected();
|
|
385
|
+
}
|
|
386
|
+
return this.client;
|
|
387
|
+
}
|
|
388
|
+
ensureConnected() {
|
|
389
|
+
if (!this.isConnected || !this.client) {
|
|
390
|
+
throw MCPError.clientNotConnected("Please call connect() first");
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
export {
|
|
395
|
+
MCPClient
|
|
396
|
+
};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var resolver_exports = {};
|
|
20
|
+
__export(resolver_exports, {
|
|
21
|
+
resolveAndValidateMcpServerConfig: () => resolveAndValidateMcpServerConfig
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(resolver_exports);
|
|
24
|
+
var import_result = require("../utils/result.js");
|
|
25
|
+
var import_types = require("../errors/types.cjs");
|
|
26
|
+
var import_error_codes = require("./error-codes.js");
|
|
27
|
+
var import_schemas = require("./schemas.js");
|
|
28
|
+
function resolveAndValidateMcpServerConfig(serverName, serverConfig, existingServerNames = []) {
|
|
29
|
+
const { candidate, warnings } = resolveMcpServerConfig(
|
|
30
|
+
serverName,
|
|
31
|
+
serverConfig,
|
|
32
|
+
existingServerNames
|
|
33
|
+
);
|
|
34
|
+
if ((0, import_result.hasErrors)(warnings)) {
|
|
35
|
+
return (0, import_result.fail)(warnings);
|
|
36
|
+
}
|
|
37
|
+
return validateMcpServerConfig(candidate, warnings);
|
|
38
|
+
}
|
|
39
|
+
function resolveMcpServerConfig(serverName, candidate, existingServerNames) {
|
|
40
|
+
const warnings = [];
|
|
41
|
+
if (typeof serverName !== "string" || serverName.trim() === "") {
|
|
42
|
+
warnings.push({
|
|
43
|
+
code: import_error_codes.MCPErrorCode.SCHEMA_VALIDATION,
|
|
44
|
+
message: "Server name must be a non-empty string",
|
|
45
|
+
severity: "error",
|
|
46
|
+
scope: import_types.ErrorScope.MCP,
|
|
47
|
+
type: import_types.ErrorType.USER,
|
|
48
|
+
context: { serverName }
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const dup = existingServerNames.find(
|
|
52
|
+
(n) => n.toLowerCase() === serverName.toLowerCase() && n !== serverName
|
|
53
|
+
);
|
|
54
|
+
if (dup) {
|
|
55
|
+
warnings.push({
|
|
56
|
+
code: import_error_codes.MCPErrorCode.DUPLICATE_NAME,
|
|
57
|
+
message: `Server name '${serverName}' is similar to existing '${dup}' (case differs)`,
|
|
58
|
+
severity: "warning",
|
|
59
|
+
scope: import_types.ErrorScope.MCP,
|
|
60
|
+
type: import_types.ErrorType.USER,
|
|
61
|
+
context: { serverName }
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return { candidate, warnings };
|
|
65
|
+
}
|
|
66
|
+
function validateMcpServerConfig(candidate, warnings) {
|
|
67
|
+
const parsed = import_schemas.McpServerConfigSchema.safeParse(candidate);
|
|
68
|
+
if (!parsed.success) {
|
|
69
|
+
return (0, import_result.fail)(
|
|
70
|
+
(0, import_result.zodToIssues)(parsed.error, "error")
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
return (0, import_result.ok)(parsed.data, warnings);
|
|
74
|
+
}
|
|
75
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
76
|
+
0 && (module.exports = {
|
|
77
|
+
resolveAndValidateMcpServerConfig
|
|
78
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Result } from '../utils/result.cjs';
|
|
2
|
+
import { McpServerConfig, ValidatedMcpServerConfig } from './schemas.cjs';
|
|
3
|
+
import 'zod';
|
|
4
|
+
import '../errors/types.cjs';
|
|
5
|
+
import '../agent/error-codes.cjs';
|
|
6
|
+
import '../config/error-codes.cjs';
|
|
7
|
+
import '../context/error-codes.cjs';
|
|
8
|
+
import '../llm/error-codes.cjs';
|
|
9
|
+
import './error-codes.cjs';
|
|
10
|
+
import '../session/error-codes.cjs';
|
|
11
|
+
import '../storage/error-codes.cjs';
|
|
12
|
+
import '../systemPrompt/error-codes.cjs';
|
|
13
|
+
import '../tools/error-codes.cjs';
|
|
14
|
+
import '../preferences/error-codes.cjs';
|
|
15
|
+
import '../agent/registry/error-codes.cjs';
|
|
16
|
+
|
|
17
|
+
type McpServerContext = {
|
|
18
|
+
serverName?: string;
|
|
19
|
+
};
|
|
20
|
+
declare function resolveAndValidateMcpServerConfig(serverName: string, serverConfig: McpServerConfig, existingServerNames?: string[]): Result<ValidatedMcpServerConfig, McpServerContext>;
|
|
21
|
+
|
|
22
|
+
export { type McpServerContext, resolveAndValidateMcpServerConfig };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Result } from '../utils/result.js';
|
|
2
|
+
import { McpServerConfig, ValidatedMcpServerConfig } from './schemas.js';
|
|
3
|
+
import 'zod';
|
|
4
|
+
import '../errors/types.js';
|
|
5
|
+
import '../agent/error-codes.js';
|
|
6
|
+
import '../config/error-codes.js';
|
|
7
|
+
import '../context/error-codes.js';
|
|
8
|
+
import '../llm/error-codes.js';
|
|
9
|
+
import './error-codes.js';
|
|
10
|
+
import '../session/error-codes.js';
|
|
11
|
+
import '../storage/error-codes.js';
|
|
12
|
+
import '../systemPrompt/error-codes.js';
|
|
13
|
+
import '../tools/error-codes.js';
|
|
14
|
+
import '../preferences/error-codes.js';
|
|
15
|
+
import '../agent/registry/error-codes.js';
|
|
16
|
+
|
|
17
|
+
type McpServerContext = {
|
|
18
|
+
serverName?: string;
|
|
19
|
+
};
|
|
20
|
+
declare function resolveAndValidateMcpServerConfig(serverName: string, serverConfig: McpServerConfig, existingServerNames?: string[]): Result<ValidatedMcpServerConfig, McpServerContext>;
|
|
21
|
+
|
|
22
|
+
export { type McpServerContext, resolveAndValidateMcpServerConfig };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ok, fail, hasErrors, zodToIssues } from "../utils/result.js";
|
|
2
|
+
import { ErrorScope, ErrorType } from "../errors/types.js";
|
|
3
|
+
import { MCPErrorCode } from "./error-codes.js";
|
|
4
|
+
import {
|
|
5
|
+
McpServerConfigSchema
|
|
6
|
+
} from "./schemas.js";
|
|
7
|
+
function resolveAndValidateMcpServerConfig(serverName, serverConfig, existingServerNames = []) {
|
|
8
|
+
const { candidate, warnings } = resolveMcpServerConfig(
|
|
9
|
+
serverName,
|
|
10
|
+
serverConfig,
|
|
11
|
+
existingServerNames
|
|
12
|
+
);
|
|
13
|
+
if (hasErrors(warnings)) {
|
|
14
|
+
return fail(warnings);
|
|
15
|
+
}
|
|
16
|
+
return validateMcpServerConfig(candidate, warnings);
|
|
17
|
+
}
|
|
18
|
+
function resolveMcpServerConfig(serverName, candidate, existingServerNames) {
|
|
19
|
+
const warnings = [];
|
|
20
|
+
if (typeof serverName !== "string" || serverName.trim() === "") {
|
|
21
|
+
warnings.push({
|
|
22
|
+
code: MCPErrorCode.SCHEMA_VALIDATION,
|
|
23
|
+
message: "Server name must be a non-empty string",
|
|
24
|
+
severity: "error",
|
|
25
|
+
scope: ErrorScope.MCP,
|
|
26
|
+
type: ErrorType.USER,
|
|
27
|
+
context: { serverName }
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
const dup = existingServerNames.find(
|
|
31
|
+
(n) => n.toLowerCase() === serverName.toLowerCase() && n !== serverName
|
|
32
|
+
);
|
|
33
|
+
if (dup) {
|
|
34
|
+
warnings.push({
|
|
35
|
+
code: MCPErrorCode.DUPLICATE_NAME,
|
|
36
|
+
message: `Server name '${serverName}' is similar to existing '${dup}' (case differs)`,
|
|
37
|
+
severity: "warning",
|
|
38
|
+
scope: ErrorScope.MCP,
|
|
39
|
+
type: ErrorType.USER,
|
|
40
|
+
context: { serverName }
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
return { candidate, warnings };
|
|
44
|
+
}
|
|
45
|
+
function validateMcpServerConfig(candidate, warnings) {
|
|
46
|
+
const parsed = McpServerConfigSchema.safeParse(candidate);
|
|
47
|
+
if (!parsed.success) {
|
|
48
|
+
return fail(
|
|
49
|
+
zodToIssues(parsed.error, "error")
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
return ok(parsed.data, warnings);
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
resolveAndValidateMcpServerConfig
|
|
56
|
+
};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var schemas_exports = {};
|
|
20
|
+
__export(schemas_exports, {
|
|
21
|
+
HttpServerConfigSchema: () => HttpServerConfigSchema,
|
|
22
|
+
McpServerConfigSchema: () => McpServerConfigSchema,
|
|
23
|
+
ServerConfigsSchema: () => ServerConfigsSchema,
|
|
24
|
+
SseServerConfigSchema: () => SseServerConfigSchema,
|
|
25
|
+
StdioServerConfigSchema: () => StdioServerConfigSchema
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(schemas_exports);
|
|
28
|
+
var import_error_codes = require("./error-codes.js");
|
|
29
|
+
var import_types = require("../errors/types.cjs");
|
|
30
|
+
var import_result = require("../utils/result.cjs");
|
|
31
|
+
var import_zod = require("zod");
|
|
32
|
+
const StdioServerConfigSchema = import_zod.z.object({
|
|
33
|
+
type: import_zod.z.literal("stdio"),
|
|
34
|
+
// allow env in command & args if you want; remove EnvExpandedString if not desired
|
|
35
|
+
command: (0, import_result.EnvExpandedString)().superRefine((s, ctx) => {
|
|
36
|
+
if (s.length === 0) {
|
|
37
|
+
ctx.addIssue({
|
|
38
|
+
code: import_zod.z.ZodIssueCode.custom,
|
|
39
|
+
message: "Stdio server requires a non-empty command",
|
|
40
|
+
params: {
|
|
41
|
+
code: import_error_codes.MCPErrorCode.COMMAND_MISSING,
|
|
42
|
+
scope: import_types.ErrorScope.MCP,
|
|
43
|
+
type: import_types.ErrorType.USER
|
|
44
|
+
},
|
|
45
|
+
path: ["command"]
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}),
|
|
49
|
+
args: import_zod.z.array((0, import_result.EnvExpandedString)()).default([]).describe("Array of arguments for the command (e.g., ['script.js'])"),
|
|
50
|
+
env: import_zod.z.record((0, import_result.EnvExpandedString)()).default({}).describe("Optional environment variables for the server process"),
|
|
51
|
+
timeout: import_zod.z.coerce.number().int().positive().default(3e4),
|
|
52
|
+
connectionMode: import_zod.z.enum(["strict", "lenient"]).default("lenient")
|
|
53
|
+
}).strict();
|
|
54
|
+
const SseServerConfigSchema = import_zod.z.object({
|
|
55
|
+
type: import_zod.z.literal("sse"),
|
|
56
|
+
url: (0, import_result.RequiredEnvURL)(process.env).describe("URL for the SSE server endpoint"),
|
|
57
|
+
headers: import_zod.z.record((0, import_result.EnvExpandedString)()).default({}),
|
|
58
|
+
timeout: import_zod.z.coerce.number().int().positive().default(3e4),
|
|
59
|
+
connectionMode: import_zod.z.enum(["strict", "lenient"]).default("lenient")
|
|
60
|
+
}).strict();
|
|
61
|
+
const HttpServerConfigSchema = import_zod.z.object({
|
|
62
|
+
type: import_zod.z.literal("http"),
|
|
63
|
+
url: (0, import_result.RequiredEnvURL)(process.env).describe("URL for the HTTP server"),
|
|
64
|
+
headers: import_zod.z.record((0, import_result.EnvExpandedString)()).default({}),
|
|
65
|
+
timeout: import_zod.z.coerce.number().int().positive().default(3e4),
|
|
66
|
+
connectionMode: import_zod.z.enum(["strict", "lenient"]).default("lenient")
|
|
67
|
+
}).strict();
|
|
68
|
+
const McpServerConfigSchema = import_zod.z.discriminatedUnion("type", [
|
|
69
|
+
StdioServerConfigSchema,
|
|
70
|
+
SseServerConfigSchema,
|
|
71
|
+
HttpServerConfigSchema
|
|
72
|
+
]).superRefine((_data, _ctx) => {
|
|
73
|
+
}).brand();
|
|
74
|
+
const ServerConfigsSchema = import_zod.z.record(McpServerConfigSchema).describe("A dictionary of server configurations, keyed by server name").brand();
|
|
75
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
76
|
+
0 && (module.exports = {
|
|
77
|
+
HttpServerConfigSchema,
|
|
78
|
+
McpServerConfigSchema,
|
|
79
|
+
ServerConfigsSchema,
|
|
80
|
+
SseServerConfigSchema,
|
|
81
|
+
StdioServerConfigSchema
|
|
82
|
+
});
|