@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,254 @@
|
|
|
1
|
+
import { IMessageFormatter } from '../llm/formatters/types.cjs';
|
|
2
|
+
import { LLMContext } from '../llm/types.cjs';
|
|
3
|
+
import { InternalMessage, ImageData, FileData } from './types.cjs';
|
|
4
|
+
import { ITokenizer } from '../llm/tokenizer/types.cjs';
|
|
5
|
+
import { ICompressionStrategy } from './compression/types.cjs';
|
|
6
|
+
import { DynamicContributorContext } from '../systemPrompt/types.cjs';
|
|
7
|
+
import { PromptManager } from '../systemPrompt/manager.cjs';
|
|
8
|
+
import { IConversationHistoryProvider } from '../session/history/types.cjs';
|
|
9
|
+
import { ValidatedLLMConfig } from '../llm/schemas.cjs';
|
|
10
|
+
import '../mcp/manager.cjs';
|
|
11
|
+
import '../mcp/schemas.cjs';
|
|
12
|
+
import 'zod';
|
|
13
|
+
import '../mcp/types.cjs';
|
|
14
|
+
import '@modelcontextprotocol/sdk/client/index.js';
|
|
15
|
+
import '../tools/types.cjs';
|
|
16
|
+
import 'json-schema';
|
|
17
|
+
import '@modelcontextprotocol/sdk/types.js';
|
|
18
|
+
import '../systemPrompt/schemas.cjs';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Manages conversation history and provides message formatting capabilities for the LLM context.
|
|
22
|
+
* The ContextManager is responsible for:
|
|
23
|
+
* - Validating and storing conversation messages via the history provider
|
|
24
|
+
* - Managing the system prompt
|
|
25
|
+
* - Formatting messages for specific LLM providers through an injected formatter
|
|
26
|
+
* - Optionally counting tokens using a provided tokenizer
|
|
27
|
+
* - Applying compression strategies sequentially if token limits are exceeded
|
|
28
|
+
* - Providing access to conversation history
|
|
29
|
+
*
|
|
30
|
+
* Note: All conversation history is stored and retrieved via the injected ConversationHistoryProvider.
|
|
31
|
+
* The ContextManager does not maintain an internal history cache.
|
|
32
|
+
* TODO: clean up tokenizer logic if we are relying primarily on LLM API to give us token count.
|
|
33
|
+
* TODO: Move InternalMessage parsing logic to zod
|
|
34
|
+
* Right now its weaker because it doesn't account for tools and other non-text content in the prompt.
|
|
35
|
+
*
|
|
36
|
+
* @template TMessage The message type for the specific LLM provider (e.g., MessageParam, ChatCompletionMessageParam, ModelMessage)
|
|
37
|
+
*/
|
|
38
|
+
declare class ContextManager<TMessage = unknown> {
|
|
39
|
+
/**
|
|
40
|
+
* The validated LLM configuration.
|
|
41
|
+
*/
|
|
42
|
+
private llmConfig;
|
|
43
|
+
/**
|
|
44
|
+
* PromptManager used to generate/manage the system prompt
|
|
45
|
+
*/
|
|
46
|
+
private promptManager;
|
|
47
|
+
/**
|
|
48
|
+
* Formatter used to convert internal messages to LLM-specific format
|
|
49
|
+
*/
|
|
50
|
+
private formatter;
|
|
51
|
+
/**
|
|
52
|
+
* Maximum number of tokens allowed in the conversation (if specified)
|
|
53
|
+
*/
|
|
54
|
+
private maxInputTokens;
|
|
55
|
+
/**
|
|
56
|
+
* Actual token count from the last LLM response.
|
|
57
|
+
* Used for more accurate token estimation in hybrid approach.
|
|
58
|
+
*/
|
|
59
|
+
private lastActualTokenCount;
|
|
60
|
+
/**
|
|
61
|
+
* Compression threshold as a percentage of maxInputTokens.
|
|
62
|
+
* When estimated tokens exceed (maxInputTokens * threshold), compression is triggered.
|
|
63
|
+
*/
|
|
64
|
+
private compressionThreshold;
|
|
65
|
+
/**
|
|
66
|
+
* Tokenizer used for counting tokens and enabling compression (if specified)
|
|
67
|
+
*/
|
|
68
|
+
private tokenizer;
|
|
69
|
+
/**
|
|
70
|
+
* The sequence of compression strategies to apply when maxInputTokens is exceeded.
|
|
71
|
+
* The order in this array matters, as strategies are applied sequentially until
|
|
72
|
+
* the token count is within the limit.
|
|
73
|
+
*/
|
|
74
|
+
private compressionStrategies;
|
|
75
|
+
private historyProvider;
|
|
76
|
+
private readonly sessionId;
|
|
77
|
+
/**
|
|
78
|
+
* Creates a new ContextManager instance
|
|
79
|
+
* @param llmConfig The validated LLM configuration.
|
|
80
|
+
* @param formatter Formatter implementation for the target LLM provider
|
|
81
|
+
* @param promptManager PromptManager instance for the conversation
|
|
82
|
+
* @param maxInputTokens Maximum token limit for the conversation history. Triggers compression if exceeded and a tokenizer is provided.
|
|
83
|
+
* @param tokenizer Tokenizer implementation used for counting tokens and enabling compression.
|
|
84
|
+
* @param historyProvider Session-scoped ConversationHistoryProvider instance for managing conversation history
|
|
85
|
+
* @param sessionId Unique identifier for the conversation session (readonly, for debugging)
|
|
86
|
+
* @param compressionStrategies Optional array of compression strategies to apply when token limits are exceeded
|
|
87
|
+
*/
|
|
88
|
+
constructor(llmConfig: ValidatedLLMConfig, formatter: IMessageFormatter, promptManager: PromptManager, maxInputTokens: number, tokenizer: ITokenizer, historyProvider: IConversationHistoryProvider, sessionId: string, compressionStrategies?: ICompressionStrategy[]);
|
|
89
|
+
/**
|
|
90
|
+
* Returns the current token count of the conversation history.
|
|
91
|
+
* @returns Promise that resolves to the number of tokens in the current history
|
|
92
|
+
*/
|
|
93
|
+
getTokenCount(): Promise<number>;
|
|
94
|
+
/**
|
|
95
|
+
* Returns the total token count that will be sent to the LLM provider,
|
|
96
|
+
* including system prompt, formatted messages, and provider-specific overhead.
|
|
97
|
+
* This provides a more accurate estimate than getTokenCount() alone.
|
|
98
|
+
*
|
|
99
|
+
* @param context The DynamicContributorContext for system prompt contributors
|
|
100
|
+
* @returns Promise that resolves to the total number of tokens that will be sent to the provider
|
|
101
|
+
*/
|
|
102
|
+
getTotalTokenCount(context: DynamicContributorContext): Promise<number>;
|
|
103
|
+
/**
|
|
104
|
+
* Returns the configured maximum number of input tokens for the conversation.
|
|
105
|
+
*/
|
|
106
|
+
getMaxInputTokens(): number;
|
|
107
|
+
/**
|
|
108
|
+
* Updates the ContextManager configuration when LLM config changes.
|
|
109
|
+
* This is called when DextoAgent.switchLLM() updates the LLM configuration.
|
|
110
|
+
*
|
|
111
|
+
* @param newMaxInputTokens New maximum token limit
|
|
112
|
+
* @param newTokenizer Optional new tokenizer if provider changed
|
|
113
|
+
* @param newFormatter Optional new formatter if provider/router changed
|
|
114
|
+
*/
|
|
115
|
+
updateConfig(newMaxInputTokens: number, newTokenizer?: ITokenizer, newFormatter?: IMessageFormatter): void;
|
|
116
|
+
/**
|
|
117
|
+
* Updates the actual token count from the last LLM response.
|
|
118
|
+
* This enables hybrid token counting for more accurate estimates.
|
|
119
|
+
*
|
|
120
|
+
* @param actualTokens The actual token count reported by the LLM provider
|
|
121
|
+
*/
|
|
122
|
+
updateActualTokenCount(actualTokens: number): void;
|
|
123
|
+
/**
|
|
124
|
+
* Estimates if new input would trigger compression using hybrid approach.
|
|
125
|
+
* Combines actual tokens from last response with estimated tokens for new input.
|
|
126
|
+
*
|
|
127
|
+
* @param newInputTokens Estimated tokens for the new user input
|
|
128
|
+
* @returns True if compression should be triggered
|
|
129
|
+
*/
|
|
130
|
+
shouldCompress(newInputTokens: number): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Assembles and returns the current system prompt by invoking the PromptManager.
|
|
133
|
+
*/
|
|
134
|
+
getSystemPrompt(context: DynamicContributorContext): Promise<string>;
|
|
135
|
+
/**
|
|
136
|
+
* Gets the raw conversation history
|
|
137
|
+
* Returns a defensive copy to prevent modification
|
|
138
|
+
*
|
|
139
|
+
* @returns Promise that resolves to a read-only copy of the conversation history
|
|
140
|
+
*/
|
|
141
|
+
getHistory(): Promise<Readonly<InternalMessage[]>>;
|
|
142
|
+
/**
|
|
143
|
+
* Adds a message to the conversation history.
|
|
144
|
+
* Performs validation based on message role and required fields.
|
|
145
|
+
* Note: Compression based on token limits is applied lazily when calling `getFormattedMessages`, not immediately upon adding.
|
|
146
|
+
*
|
|
147
|
+
* @param message The message to add to the history
|
|
148
|
+
* @throws Error if message validation fails
|
|
149
|
+
*/
|
|
150
|
+
addMessage(message: InternalMessage): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* Adds a user message to the conversation
|
|
153
|
+
* Can include image data for multimodal input
|
|
154
|
+
*
|
|
155
|
+
* @param textContent The user message content
|
|
156
|
+
* @param imageData Optional image data for multimodal input
|
|
157
|
+
* @param fileData Optional file data for file input
|
|
158
|
+
* @throws Error if content is empty or not a string
|
|
159
|
+
*/
|
|
160
|
+
addUserMessage(textContent: string, imageData?: ImageData, fileData?: FileData): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Adds an assistant message to the conversation
|
|
163
|
+
* Can include tool calls if the assistant is requesting tool execution
|
|
164
|
+
*
|
|
165
|
+
* @param content The assistant's response text (can be null if only tool calls)
|
|
166
|
+
* @param toolCalls Optional tool calls requested by the assistant
|
|
167
|
+
* @param metadata Optional metadata including token usage, reasoning, and model info
|
|
168
|
+
* @throws Error if neither content nor toolCalls are provided
|
|
169
|
+
*/
|
|
170
|
+
addAssistantMessage(content: string | null, toolCalls?: InternalMessage['toolCalls'], metadata?: {
|
|
171
|
+
tokenUsage?: InternalMessage['tokenUsage'];
|
|
172
|
+
reasoning?: string;
|
|
173
|
+
}): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Adds a tool result message to the conversation
|
|
176
|
+
*
|
|
177
|
+
* @param toolCallId ID of the tool call this result is responding to
|
|
178
|
+
* @param name Name of the tool that executed
|
|
179
|
+
* @param result The result returned by the tool
|
|
180
|
+
* @throws Error if required parameters are missing
|
|
181
|
+
*/
|
|
182
|
+
addToolResult(toolCallId: string, name: string, result: unknown): Promise<void>;
|
|
183
|
+
/**
|
|
184
|
+
* Sets the system prompt for the conversation
|
|
185
|
+
*
|
|
186
|
+
* @param prompt The system prompt text
|
|
187
|
+
*/
|
|
188
|
+
setSystemPrompt(_prompt: string): void;
|
|
189
|
+
/**
|
|
190
|
+
* Gets the conversation history formatted for the target LLM provider.
|
|
191
|
+
* Applies compression strategies sequentially if the manager is configured with a `maxInputTokens` limit
|
|
192
|
+
* and a `tokenizer`, and the current token count exceeds the limit. Compression happens *before* formatting.
|
|
193
|
+
* Uses the injected formatter to convert internal messages (potentially compressed) to the provider's format.
|
|
194
|
+
*
|
|
195
|
+
* @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
|
|
196
|
+
* @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
|
|
197
|
+
* @param systemPrompt (Optional) Precomputed system prompt string. If provided, it will be used instead of recomputing the system prompt. Useful for avoiding duplicate computation when both the formatted messages and the raw system prompt are needed in the same request.
|
|
198
|
+
* @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from history provider.
|
|
199
|
+
* @returns Formatted messages ready to send to the LLM provider API
|
|
200
|
+
* @throws Error if formatting or compression fails critically
|
|
201
|
+
*/
|
|
202
|
+
getFormattedMessages(contributorContext: DynamicContributorContext, llmContext: LLMContext, systemPrompt?: string | undefined, history?: InternalMessage[]): Promise<TMessage[]>;
|
|
203
|
+
/**
|
|
204
|
+
* Gets the conversation ready for LLM consumption with proper flow:
|
|
205
|
+
* 1. Get system prompt
|
|
206
|
+
* 2. Get history and compress if needed
|
|
207
|
+
* 3. Format messages
|
|
208
|
+
* This method implements the correct ordering to avoid circular dependencies.
|
|
209
|
+
*
|
|
210
|
+
* @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
|
|
211
|
+
* @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
|
|
212
|
+
* @returns Object containing formatted messages and system prompt
|
|
213
|
+
*/
|
|
214
|
+
getFormattedMessagesWithCompression(contributorContext: DynamicContributorContext, llmContext: LLMContext): Promise<{
|
|
215
|
+
formattedMessages: TMessage[];
|
|
216
|
+
systemPrompt: string;
|
|
217
|
+
tokensUsed: number;
|
|
218
|
+
}>;
|
|
219
|
+
/**
|
|
220
|
+
* Gets the system prompt formatted for the target LLM provider
|
|
221
|
+
* Some providers handle system prompts differently
|
|
222
|
+
*
|
|
223
|
+
* @returns Formatted system prompt or null/undefined based on formatter implementation
|
|
224
|
+
* @throws Error if formatting fails
|
|
225
|
+
*/
|
|
226
|
+
getFormattedSystemPrompt(context: DynamicContributorContext): Promise<string | null | undefined>;
|
|
227
|
+
/**
|
|
228
|
+
* Resets the conversation history
|
|
229
|
+
* Does not reset the system prompt
|
|
230
|
+
*/
|
|
231
|
+
resetConversation(): Promise<void>;
|
|
232
|
+
/**
|
|
233
|
+
* Checks if history compression is needed based on token count and applies strategies.
|
|
234
|
+
*
|
|
235
|
+
* @param history The conversation history to potentially compress
|
|
236
|
+
* @param systemPromptTokens The actual token count of the system prompt
|
|
237
|
+
* @returns The potentially compressed history
|
|
238
|
+
*/
|
|
239
|
+
compressHistoryIfNeeded(history: InternalMessage[], systemPromptTokens: number): Promise<InternalMessage[]>;
|
|
240
|
+
/**
|
|
241
|
+
* Parses a raw LLM stream response, converts it into internal messages and adds them to the history.
|
|
242
|
+
*
|
|
243
|
+
* @param response The stream response from the LLM provider
|
|
244
|
+
*/
|
|
245
|
+
processLLMStreamResponse(response: unknown): Promise<void>;
|
|
246
|
+
/**
|
|
247
|
+
* Parses a raw LLM response, converts it into internal messages and adds them to the history.
|
|
248
|
+
*
|
|
249
|
+
* @param response The response from the LLM provider
|
|
250
|
+
*/
|
|
251
|
+
processLLMResponse(response: unknown): Promise<void>;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export { ContextManager };
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { IMessageFormatter } from '../llm/formatters/types.js';
|
|
2
|
+
import { LLMContext } from '../llm/types.js';
|
|
3
|
+
import { InternalMessage, ImageData, FileData } from './types.js';
|
|
4
|
+
import { ITokenizer } from '../llm/tokenizer/types.js';
|
|
5
|
+
import { ICompressionStrategy } from './compression/types.js';
|
|
6
|
+
import { DynamicContributorContext } from '../systemPrompt/types.js';
|
|
7
|
+
import { PromptManager } from '../systemPrompt/manager.js';
|
|
8
|
+
import { IConversationHistoryProvider } from '../session/history/types.js';
|
|
9
|
+
import { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
10
|
+
import '../mcp/manager.js';
|
|
11
|
+
import '../mcp/schemas.js';
|
|
12
|
+
import 'zod';
|
|
13
|
+
import '../mcp/types.js';
|
|
14
|
+
import '@modelcontextprotocol/sdk/client/index.js';
|
|
15
|
+
import '../tools/types.js';
|
|
16
|
+
import 'json-schema';
|
|
17
|
+
import '@modelcontextprotocol/sdk/types.js';
|
|
18
|
+
import '../systemPrompt/schemas.js';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Manages conversation history and provides message formatting capabilities for the LLM context.
|
|
22
|
+
* The ContextManager is responsible for:
|
|
23
|
+
* - Validating and storing conversation messages via the history provider
|
|
24
|
+
* - Managing the system prompt
|
|
25
|
+
* - Formatting messages for specific LLM providers through an injected formatter
|
|
26
|
+
* - Optionally counting tokens using a provided tokenizer
|
|
27
|
+
* - Applying compression strategies sequentially if token limits are exceeded
|
|
28
|
+
* - Providing access to conversation history
|
|
29
|
+
*
|
|
30
|
+
* Note: All conversation history is stored and retrieved via the injected ConversationHistoryProvider.
|
|
31
|
+
* The ContextManager does not maintain an internal history cache.
|
|
32
|
+
* TODO: clean up tokenizer logic if we are relying primarily on LLM API to give us token count.
|
|
33
|
+
* TODO: Move InternalMessage parsing logic to zod
|
|
34
|
+
* Right now its weaker because it doesn't account for tools and other non-text content in the prompt.
|
|
35
|
+
*
|
|
36
|
+
* @template TMessage The message type for the specific LLM provider (e.g., MessageParam, ChatCompletionMessageParam, ModelMessage)
|
|
37
|
+
*/
|
|
38
|
+
declare class ContextManager<TMessage = unknown> {
|
|
39
|
+
/**
|
|
40
|
+
* The validated LLM configuration.
|
|
41
|
+
*/
|
|
42
|
+
private llmConfig;
|
|
43
|
+
/**
|
|
44
|
+
* PromptManager used to generate/manage the system prompt
|
|
45
|
+
*/
|
|
46
|
+
private promptManager;
|
|
47
|
+
/**
|
|
48
|
+
* Formatter used to convert internal messages to LLM-specific format
|
|
49
|
+
*/
|
|
50
|
+
private formatter;
|
|
51
|
+
/**
|
|
52
|
+
* Maximum number of tokens allowed in the conversation (if specified)
|
|
53
|
+
*/
|
|
54
|
+
private maxInputTokens;
|
|
55
|
+
/**
|
|
56
|
+
* Actual token count from the last LLM response.
|
|
57
|
+
* Used for more accurate token estimation in hybrid approach.
|
|
58
|
+
*/
|
|
59
|
+
private lastActualTokenCount;
|
|
60
|
+
/**
|
|
61
|
+
* Compression threshold as a percentage of maxInputTokens.
|
|
62
|
+
* When estimated tokens exceed (maxInputTokens * threshold), compression is triggered.
|
|
63
|
+
*/
|
|
64
|
+
private compressionThreshold;
|
|
65
|
+
/**
|
|
66
|
+
* Tokenizer used for counting tokens and enabling compression (if specified)
|
|
67
|
+
*/
|
|
68
|
+
private tokenizer;
|
|
69
|
+
/**
|
|
70
|
+
* The sequence of compression strategies to apply when maxInputTokens is exceeded.
|
|
71
|
+
* The order in this array matters, as strategies are applied sequentially until
|
|
72
|
+
* the token count is within the limit.
|
|
73
|
+
*/
|
|
74
|
+
private compressionStrategies;
|
|
75
|
+
private historyProvider;
|
|
76
|
+
private readonly sessionId;
|
|
77
|
+
/**
|
|
78
|
+
* Creates a new ContextManager instance
|
|
79
|
+
* @param llmConfig The validated LLM configuration.
|
|
80
|
+
* @param formatter Formatter implementation for the target LLM provider
|
|
81
|
+
* @param promptManager PromptManager instance for the conversation
|
|
82
|
+
* @param maxInputTokens Maximum token limit for the conversation history. Triggers compression if exceeded and a tokenizer is provided.
|
|
83
|
+
* @param tokenizer Tokenizer implementation used for counting tokens and enabling compression.
|
|
84
|
+
* @param historyProvider Session-scoped ConversationHistoryProvider instance for managing conversation history
|
|
85
|
+
* @param sessionId Unique identifier for the conversation session (readonly, for debugging)
|
|
86
|
+
* @param compressionStrategies Optional array of compression strategies to apply when token limits are exceeded
|
|
87
|
+
*/
|
|
88
|
+
constructor(llmConfig: ValidatedLLMConfig, formatter: IMessageFormatter, promptManager: PromptManager, maxInputTokens: number, tokenizer: ITokenizer, historyProvider: IConversationHistoryProvider, sessionId: string, compressionStrategies?: ICompressionStrategy[]);
|
|
89
|
+
/**
|
|
90
|
+
* Returns the current token count of the conversation history.
|
|
91
|
+
* @returns Promise that resolves to the number of tokens in the current history
|
|
92
|
+
*/
|
|
93
|
+
getTokenCount(): Promise<number>;
|
|
94
|
+
/**
|
|
95
|
+
* Returns the total token count that will be sent to the LLM provider,
|
|
96
|
+
* including system prompt, formatted messages, and provider-specific overhead.
|
|
97
|
+
* This provides a more accurate estimate than getTokenCount() alone.
|
|
98
|
+
*
|
|
99
|
+
* @param context The DynamicContributorContext for system prompt contributors
|
|
100
|
+
* @returns Promise that resolves to the total number of tokens that will be sent to the provider
|
|
101
|
+
*/
|
|
102
|
+
getTotalTokenCount(context: DynamicContributorContext): Promise<number>;
|
|
103
|
+
/**
|
|
104
|
+
* Returns the configured maximum number of input tokens for the conversation.
|
|
105
|
+
*/
|
|
106
|
+
getMaxInputTokens(): number;
|
|
107
|
+
/**
|
|
108
|
+
* Updates the ContextManager configuration when LLM config changes.
|
|
109
|
+
* This is called when DextoAgent.switchLLM() updates the LLM configuration.
|
|
110
|
+
*
|
|
111
|
+
* @param newMaxInputTokens New maximum token limit
|
|
112
|
+
* @param newTokenizer Optional new tokenizer if provider changed
|
|
113
|
+
* @param newFormatter Optional new formatter if provider/router changed
|
|
114
|
+
*/
|
|
115
|
+
updateConfig(newMaxInputTokens: number, newTokenizer?: ITokenizer, newFormatter?: IMessageFormatter): void;
|
|
116
|
+
/**
|
|
117
|
+
* Updates the actual token count from the last LLM response.
|
|
118
|
+
* This enables hybrid token counting for more accurate estimates.
|
|
119
|
+
*
|
|
120
|
+
* @param actualTokens The actual token count reported by the LLM provider
|
|
121
|
+
*/
|
|
122
|
+
updateActualTokenCount(actualTokens: number): void;
|
|
123
|
+
/**
|
|
124
|
+
* Estimates if new input would trigger compression using hybrid approach.
|
|
125
|
+
* Combines actual tokens from last response with estimated tokens for new input.
|
|
126
|
+
*
|
|
127
|
+
* @param newInputTokens Estimated tokens for the new user input
|
|
128
|
+
* @returns True if compression should be triggered
|
|
129
|
+
*/
|
|
130
|
+
shouldCompress(newInputTokens: number): boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Assembles and returns the current system prompt by invoking the PromptManager.
|
|
133
|
+
*/
|
|
134
|
+
getSystemPrompt(context: DynamicContributorContext): Promise<string>;
|
|
135
|
+
/**
|
|
136
|
+
* Gets the raw conversation history
|
|
137
|
+
* Returns a defensive copy to prevent modification
|
|
138
|
+
*
|
|
139
|
+
* @returns Promise that resolves to a read-only copy of the conversation history
|
|
140
|
+
*/
|
|
141
|
+
getHistory(): Promise<Readonly<InternalMessage[]>>;
|
|
142
|
+
/**
|
|
143
|
+
* Adds a message to the conversation history.
|
|
144
|
+
* Performs validation based on message role and required fields.
|
|
145
|
+
* Note: Compression based on token limits is applied lazily when calling `getFormattedMessages`, not immediately upon adding.
|
|
146
|
+
*
|
|
147
|
+
* @param message The message to add to the history
|
|
148
|
+
* @throws Error if message validation fails
|
|
149
|
+
*/
|
|
150
|
+
addMessage(message: InternalMessage): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* Adds a user message to the conversation
|
|
153
|
+
* Can include image data for multimodal input
|
|
154
|
+
*
|
|
155
|
+
* @param textContent The user message content
|
|
156
|
+
* @param imageData Optional image data for multimodal input
|
|
157
|
+
* @param fileData Optional file data for file input
|
|
158
|
+
* @throws Error if content is empty or not a string
|
|
159
|
+
*/
|
|
160
|
+
addUserMessage(textContent: string, imageData?: ImageData, fileData?: FileData): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Adds an assistant message to the conversation
|
|
163
|
+
* Can include tool calls if the assistant is requesting tool execution
|
|
164
|
+
*
|
|
165
|
+
* @param content The assistant's response text (can be null if only tool calls)
|
|
166
|
+
* @param toolCalls Optional tool calls requested by the assistant
|
|
167
|
+
* @param metadata Optional metadata including token usage, reasoning, and model info
|
|
168
|
+
* @throws Error if neither content nor toolCalls are provided
|
|
169
|
+
*/
|
|
170
|
+
addAssistantMessage(content: string | null, toolCalls?: InternalMessage['toolCalls'], metadata?: {
|
|
171
|
+
tokenUsage?: InternalMessage['tokenUsage'];
|
|
172
|
+
reasoning?: string;
|
|
173
|
+
}): Promise<void>;
|
|
174
|
+
/**
|
|
175
|
+
* Adds a tool result message to the conversation
|
|
176
|
+
*
|
|
177
|
+
* @param toolCallId ID of the tool call this result is responding to
|
|
178
|
+
* @param name Name of the tool that executed
|
|
179
|
+
* @param result The result returned by the tool
|
|
180
|
+
* @throws Error if required parameters are missing
|
|
181
|
+
*/
|
|
182
|
+
addToolResult(toolCallId: string, name: string, result: unknown): Promise<void>;
|
|
183
|
+
/**
|
|
184
|
+
* Sets the system prompt for the conversation
|
|
185
|
+
*
|
|
186
|
+
* @param prompt The system prompt text
|
|
187
|
+
*/
|
|
188
|
+
setSystemPrompt(_prompt: string): void;
|
|
189
|
+
/**
|
|
190
|
+
* Gets the conversation history formatted for the target LLM provider.
|
|
191
|
+
* Applies compression strategies sequentially if the manager is configured with a `maxInputTokens` limit
|
|
192
|
+
* and a `tokenizer`, and the current token count exceeds the limit. Compression happens *before* formatting.
|
|
193
|
+
* Uses the injected formatter to convert internal messages (potentially compressed) to the provider's format.
|
|
194
|
+
*
|
|
195
|
+
* @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
|
|
196
|
+
* @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
|
|
197
|
+
* @param systemPrompt (Optional) Precomputed system prompt string. If provided, it will be used instead of recomputing the system prompt. Useful for avoiding duplicate computation when both the formatted messages and the raw system prompt are needed in the same request.
|
|
198
|
+
* @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from history provider.
|
|
199
|
+
* @returns Formatted messages ready to send to the LLM provider API
|
|
200
|
+
* @throws Error if formatting or compression fails critically
|
|
201
|
+
*/
|
|
202
|
+
getFormattedMessages(contributorContext: DynamicContributorContext, llmContext: LLMContext, systemPrompt?: string | undefined, history?: InternalMessage[]): Promise<TMessage[]>;
|
|
203
|
+
/**
|
|
204
|
+
* Gets the conversation ready for LLM consumption with proper flow:
|
|
205
|
+
* 1. Get system prompt
|
|
206
|
+
* 2. Get history and compress if needed
|
|
207
|
+
* 3. Format messages
|
|
208
|
+
* This method implements the correct ordering to avoid circular dependencies.
|
|
209
|
+
*
|
|
210
|
+
* @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
|
|
211
|
+
* @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
|
|
212
|
+
* @returns Object containing formatted messages and system prompt
|
|
213
|
+
*/
|
|
214
|
+
getFormattedMessagesWithCompression(contributorContext: DynamicContributorContext, llmContext: LLMContext): Promise<{
|
|
215
|
+
formattedMessages: TMessage[];
|
|
216
|
+
systemPrompt: string;
|
|
217
|
+
tokensUsed: number;
|
|
218
|
+
}>;
|
|
219
|
+
/**
|
|
220
|
+
* Gets the system prompt formatted for the target LLM provider
|
|
221
|
+
* Some providers handle system prompts differently
|
|
222
|
+
*
|
|
223
|
+
* @returns Formatted system prompt or null/undefined based on formatter implementation
|
|
224
|
+
* @throws Error if formatting fails
|
|
225
|
+
*/
|
|
226
|
+
getFormattedSystemPrompt(context: DynamicContributorContext): Promise<string | null | undefined>;
|
|
227
|
+
/**
|
|
228
|
+
* Resets the conversation history
|
|
229
|
+
* Does not reset the system prompt
|
|
230
|
+
*/
|
|
231
|
+
resetConversation(): Promise<void>;
|
|
232
|
+
/**
|
|
233
|
+
* Checks if history compression is needed based on token count and applies strategies.
|
|
234
|
+
*
|
|
235
|
+
* @param history The conversation history to potentially compress
|
|
236
|
+
* @param systemPromptTokens The actual token count of the system prompt
|
|
237
|
+
* @returns The potentially compressed history
|
|
238
|
+
*/
|
|
239
|
+
compressHistoryIfNeeded(history: InternalMessage[], systemPromptTokens: number): Promise<InternalMessage[]>;
|
|
240
|
+
/**
|
|
241
|
+
* Parses a raw LLM stream response, converts it into internal messages and adds them to the history.
|
|
242
|
+
*
|
|
243
|
+
* @param response The stream response from the LLM provider
|
|
244
|
+
*/
|
|
245
|
+
processLLMStreamResponse(response: unknown): Promise<void>;
|
|
246
|
+
/**
|
|
247
|
+
* Parses a raw LLM response, converts it into internal messages and adds them to the history.
|
|
248
|
+
*
|
|
249
|
+
* @param response The response from the LLM provider
|
|
250
|
+
*/
|
|
251
|
+
processLLMResponse(response: unknown): Promise<void>;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export { ContextManager };
|