@dexto/core 1.7.2 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/DextoAgent.cjs +163 -77
- package/dist/agent/DextoAgent.d.ts +73 -19
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +165 -67
- package/dist/agent/agent-options.d.ts +6 -10
- package/dist/agent/agent-options.d.ts.map +1 -1
- package/dist/agent/agentCard.js +1 -1
- package/dist/agent/error-codes.js +1 -1
- package/dist/agent/errors.js +1 -1
- package/dist/agent/index.d.ts +1 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/schemas.d.ts +2 -2
- package/dist/agent/schemas.js +1 -1
- package/dist/agent/state-manager.js +1 -1
- package/dist/agent/types.d.ts +1 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/approval/error-codes.cjs +1 -1
- package/dist/approval/error-codes.d.ts +1 -1
- package/dist/approval/error-codes.d.ts.map +1 -1
- package/dist/approval/error-codes.js +2 -2
- package/dist/approval/errors.cjs +2 -5
- package/dist/approval/errors.d.ts.map +1 -1
- package/dist/approval/errors.js +3 -6
- package/dist/approval/factory.cjs +19 -4
- package/dist/approval/factory.d.ts +4 -1
- package/dist/approval/factory.d.ts.map +1 -1
- package/dist/approval/factory.js +19 -5
- package/dist/approval/index.d.ts +1 -1
- package/dist/approval/index.d.ts.map +1 -1
- package/dist/approval/index.js +1 -1
- package/dist/approval/manager.cjs +168 -26
- package/dist/approval/manager.d.ts +46 -12
- package/dist/approval/manager.d.ts.map +1 -1
- package/dist/approval/manager.js +177 -29
- package/dist/approval/schemas.cjs +26 -26
- package/dist/approval/schemas.d.ts +29 -29
- package/dist/approval/schemas.d.ts.map +1 -1
- package/dist/approval/schemas.js +23 -23
- package/dist/approval/types.cjs +5 -5
- package/dist/approval/types.d.ts +18 -18
- package/dist/approval/types.d.ts.map +1 -1
- package/dist/approval/types.js +6 -6
- package/dist/{chunk-PTJYTZNU.js → chunk-C6A6W6XS.js} +1 -44
- package/dist/config/index.cjs +75 -0
- package/dist/config/index.d.ts +15 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +50 -0
- package/dist/context/compaction/overflow.d.ts +1 -1
- package/dist/context/compaction/overflow.d.ts.map +1 -1
- package/dist/context/compaction/overflow.js +1 -1
- package/dist/context/compaction/strategies/noop.js +1 -1
- package/dist/context/compaction/strategies/reactive-overflow-compaction.js +1 -1
- package/dist/context/content-clone.cjs +131 -0
- package/dist/context/content-clone.d.ts +7 -0
- package/dist/context/content-clone.d.ts.map +1 -0
- package/dist/context/content-clone.js +104 -0
- package/dist/context/error-codes.js +1 -1
- package/dist/context/errors.js +1 -1
- package/dist/context/index.cjs +2 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +2 -1
- package/dist/context/manager.cjs +52 -41
- package/dist/context/manager.d.ts +8 -8
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +46 -35
- package/dist/context/media-helpers.js +1 -1
- package/dist/context/schemas.cjs +77 -0
- package/dist/context/schemas.d.ts +5 -0
- package/dist/context/schemas.d.ts.map +1 -0
- package/dist/context/schemas.js +53 -0
- package/dist/context/types.d.ts +1 -1
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +1 -1
- package/dist/context/utils.cjs +73 -72
- package/dist/context/utils.d.ts +4 -4
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +72 -71
- package/dist/errors/DextoBaseError.js +1 -1
- package/dist/errors/DextoRuntimeError.js +1 -1
- package/dist/errors/DextoValidationError.js +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/result-bridge.js +1 -1
- package/dist/errors/types.js +1 -1
- package/dist/events/index.cjs +9 -1
- package/dist/events/index.d.ts +22 -10
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +10 -2
- package/dist/hooks/builtins/content-policy.js +1 -1
- package/dist/hooks/builtins/response-sanitizer.js +1 -1
- package/dist/hooks/error-codes.js +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/manager.cjs +1 -1
- package/dist/hooks/manager.d.ts +2 -2
- package/dist/hooks/manager.d.ts.map +1 -1
- package/dist/hooks/manager.js +2 -2
- package/dist/hooks/types.d.ts +2 -2
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/index.browser.cjs +9 -9
- package/dist/index.browser.d.ts +4 -4
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +2 -2
- package/dist/index.cjs +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/llm/curation-config.cjs +3 -3
- package/dist/llm/curation-config.d.ts +1 -1
- package/dist/llm/curation-config.js +4 -4
- package/dist/llm/curation.cjs +2 -2
- package/dist/llm/curation.d.ts +2 -2
- package/dist/llm/curation.d.ts.map +1 -1
- package/dist/llm/curation.js +2 -2
- package/dist/llm/error-codes.js +1 -1
- package/dist/llm/errors.cjs +3 -3
- package/dist/llm/errors.d.ts +1 -1
- package/dist/llm/errors.d.ts.map +1 -1
- package/dist/llm/errors.js +2 -2
- package/dist/llm/{reasoning/anthropic-betas.cjs → executor/index.cjs} +10 -9
- package/dist/llm/executor/index.d.ts +2 -0
- package/dist/llm/executor/index.d.ts.map +1 -0
- package/dist/llm/executor/index.js +11 -0
- package/dist/llm/executor/provider-options.cjs +22 -25
- package/dist/llm/executor/provider-options.d.ts +1 -1
- package/dist/llm/executor/provider-options.d.ts.map +1 -1
- package/dist/llm/executor/provider-options.js +18 -17
- package/dist/llm/executor/stream-processor.cjs +28 -139
- package/dist/llm/executor/stream-processor.d.ts +3 -14
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +29 -140
- package/dist/llm/{reasoning/profiles/openai.cjs → executor/tool-definitions.cjs} +22 -18
- package/dist/llm/executor/tool-definitions.d.ts +4 -0
- package/dist/llm/executor/tool-definitions.d.ts.map +1 -0
- package/dist/llm/executor/tool-definitions.js +22 -0
- package/dist/llm/executor/tool-output-truncator.js +1 -1
- package/dist/llm/executor/turn-executor.cjs +1093 -458
- package/dist/llm/executor/turn-executor.d.ts +269 -43
- package/dist/llm/executor/turn-executor.d.ts.map +1 -1
- package/dist/llm/executor/turn-executor.js +1079 -405
- package/dist/llm/executor/types.d.ts +7 -1
- package/dist/llm/executor/types.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.cjs +2 -2
- package/dist/llm/formatters/vercel.d.ts +1 -1
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +1 -1
- package/dist/llm/index.cjs +2 -4
- package/dist/llm/index.d.ts +1 -2
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +2 -3
- package/dist/llm/providers/codex-app-server.cjs +22 -2
- package/dist/llm/providers/codex-app-server.d.ts.map +1 -1
- package/dist/llm/providers/codex-app-server.js +23 -3
- package/dist/llm/providers/codex-base-url.js +1 -1
- package/dist/llm/providers/local/ai-sdk-adapter.js +1 -1
- package/dist/llm/providers/local/downloader.js +1 -1
- package/dist/llm/providers/local/error-codes.js +1 -1
- package/dist/llm/providers/local/errors.js +1 -1
- package/dist/llm/providers/local/gpu-detector.js +1 -1
- package/dist/llm/providers/local/index.js +1 -1
- package/dist/llm/providers/local/node-llama-provider.js +1 -1
- package/dist/llm/providers/local/ollama-provider.js +1 -1
- package/dist/llm/providers/local/registry.js +1 -1
- package/dist/llm/providers/local/schemas.js +1 -1
- package/dist/llm/providers/openrouter-model-registry.js +1 -1
- package/dist/llm/registry/auto-update.cjs +5 -5
- package/dist/llm/registry/auto-update.d.ts.map +1 -1
- package/dist/llm/registry/auto-update.js +3 -3
- package/dist/llm/registry/index.cjs +96 -789
- package/dist/llm/registry/index.d.ts +4 -323
- package/dist/llm/registry/index.d.ts.map +1 -1
- package/dist/llm/registry/index.js +100 -763
- package/dist/llm/registry/sync.d.ts +2 -2
- package/dist/llm/registry/sync.d.ts.map +1 -1
- package/dist/llm/registry/sync.js +1 -1
- package/dist/llm/resolver.cjs +7 -6
- package/dist/llm/resolver.d.ts +1 -1
- package/dist/llm/resolver.js +5 -5
- package/dist/llm/schemas.cjs +14 -14
- package/dist/llm/schemas.d.ts +1 -1
- package/dist/llm/schemas.d.ts.map +1 -1
- package/dist/llm/schemas.js +6 -5
- package/dist/llm/services/factory.cjs +13 -15
- package/dist/llm/services/factory.d.ts +3 -3
- package/dist/llm/services/factory.d.ts.map +1 -1
- package/dist/llm/services/factory.js +16 -16
- package/dist/llm/services/types.d.ts +11 -2
- package/dist/llm/services/types.d.ts.map +1 -1
- package/dist/llm/services/vercel.cjs +23 -8
- package/dist/llm/services/vercel.d.ts +11 -7
- package/dist/llm/services/vercel.d.ts.map +1 -1
- package/dist/llm/services/vercel.js +24 -9
- package/dist/llm/usage-metadata.cjs +23 -6
- package/dist/llm/usage-metadata.d.ts +3 -2
- package/dist/llm/usage-metadata.d.ts.map +1 -1
- package/dist/llm/usage-metadata.js +20 -7
- package/dist/llm/usage-scope.js +1 -1
- package/dist/llm/usage-summary.d.ts +1 -1
- package/dist/llm/usage-summary.js +1 -1
- package/dist/llm/validation.cjs +4 -4
- package/dist/llm/validation.d.ts +1 -1
- package/dist/llm/validation.js +2 -2
- package/dist/logger/browser.js +1 -1
- package/dist/logger/default-logger-factory.js +1 -1
- package/dist/logger/factory.js +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/logger/logger.js +1 -1
- package/dist/logger/v2/dexto-logger.js +1 -1
- package/dist/logger/v2/error-codes.js +1 -1
- package/dist/logger/v2/errors.js +1 -1
- package/dist/logger/v2/schemas.js +1 -1
- package/dist/logger/v2/test-utils.js +1 -1
- package/dist/logger/v2/transport-factory.js +1 -1
- package/dist/logger/v2/transports/console-transport.js +1 -1
- package/dist/logger/v2/transports/file-transport.js +1 -1
- package/dist/logger/v2/transports/silent-transport.js +1 -1
- package/dist/logger/v2/types.js +1 -1
- package/dist/mcp/bundled-config.js +1 -1
- package/dist/mcp/error-codes.js +1 -1
- package/dist/mcp/errors.js +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/manager.js +1 -1
- package/dist/mcp/mcp-client.js +1 -1
- package/dist/mcp/resolver.js +1 -1
- package/dist/mcp/schemas.js +1 -1
- package/dist/memory/error-codes.js +1 -1
- package/dist/memory/errors.js +1 -1
- package/dist/memory/index.js +1 -1
- package/dist/memory/manager.cjs +7 -27
- package/dist/memory/manager.d.ts +4 -12
- package/dist/memory/manager.d.ts.map +1 -1
- package/dist/memory/manager.js +8 -28
- package/dist/memory/schemas.js +1 -1
- package/dist/prompts/error-codes.js +1 -1
- package/dist/prompts/errors.js +1 -1
- package/dist/prompts/index.js +1 -1
- package/dist/prompts/name-validation.js +1 -1
- package/dist/prompts/prompt-manager.cjs +9 -38
- package/dist/prompts/prompt-manager.d.ts +2 -10
- package/dist/prompts/prompt-manager.d.ts.map +1 -1
- package/dist/prompts/prompt-manager.js +10 -39
- package/dist/prompts/providers/config-prompt-provider.cjs +8 -87
- package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/config-prompt-provider.js +9 -88
- package/dist/prompts/providers/custom-prompt-provider.cjs +21 -22
- package/dist/prompts/providers/custom-prompt-provider.d.ts +19 -4
- package/dist/prompts/providers/custom-prompt-provider.d.ts.map +1 -1
- package/dist/prompts/providers/custom-prompt-provider.js +22 -23
- package/dist/prompts/providers/mcp-prompt-provider.js +1 -1
- package/dist/prompts/schemas.cjs +2 -24
- package/dist/prompts/schemas.d.ts +0 -52
- package/dist/prompts/schemas.d.ts.map +1 -1
- package/dist/prompts/schemas.js +3 -25
- package/dist/prompts/types.d.ts +5 -32
- package/dist/prompts/types.d.ts.map +1 -1
- package/dist/prompts/utils.js +1 -1
- package/dist/resources/agent-resources-provider.js +1 -1
- package/dist/resources/error-codes.js +1 -1
- package/dist/resources/errors.js +1 -1
- package/dist/resources/handlers/blob-handler.cjs +14 -11
- package/dist/resources/handlers/blob-handler.d.ts +4 -4
- package/dist/resources/handlers/blob-handler.d.ts.map +1 -1
- package/dist/resources/handlers/blob-handler.js +15 -12
- package/dist/resources/handlers/factory.cjs +3 -3
- package/dist/resources/handlers/factory.js +4 -4
- package/dist/resources/handlers/filesystem-handler.js +1 -1
- package/dist/resources/handlers/types.d.ts +2 -2
- package/dist/resources/handlers/types.d.ts.map +1 -1
- package/dist/resources/index.js +1 -1
- package/dist/resources/manager.cjs +10 -7
- package/dist/resources/manager.d.ts +4 -4
- package/dist/resources/manager.d.ts.map +1 -1
- package/dist/resources/manager.js +11 -8
- package/dist/resources/reference-parser.js +1 -1
- package/dist/resources/schemas.cjs +1 -1
- package/dist/resources/schemas.d.ts +2 -2
- package/dist/resources/schemas.js +2 -2
- package/dist/runtime/host-runtime.js +1 -1
- package/dist/runtime/index.cjs +3 -0
- package/dist/runtime/index.d.ts +2 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +3 -1
- package/dist/runtime/run-context.js +1 -1
- package/dist/search/index.js +1 -1
- package/dist/search/search-service.cjs +6 -13
- package/dist/search/search-service.d.ts +5 -3
- package/dist/search/search-service.d.ts.map +1 -1
- package/dist/search/search-service.js +7 -14
- package/dist/session/chat-session.cjs +264 -108
- package/dist/session/chat-session.d.ts +75 -21
- package/dist/session/chat-session.d.ts.map +1 -1
- package/dist/session/chat-session.js +268 -108
- package/dist/session/error-codes.js +1 -1
- package/dist/session/errors.js +1 -1
- package/dist/session/index.cjs +19 -2
- package/dist/session/index.d.ts +4 -3
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +19 -3
- package/dist/session/message-queue.cjs +82 -51
- package/dist/session/message-queue.d.ts +13 -8
- package/dist/session/message-queue.d.ts.map +1 -1
- package/dist/session/message-queue.js +83 -52
- package/dist/session/queue-clone.cjs +50 -0
- package/dist/session/queue-clone.d.ts +5 -0
- package/dist/session/queue-clone.d.ts.map +1 -0
- package/dist/session/queue-clone.js +25 -0
- package/dist/session/schemas.cjs +74 -2
- package/dist/session/schemas.d.ts +94 -0
- package/dist/session/schemas.d.ts.map +1 -1
- package/dist/session/schemas.js +69 -2
- package/dist/session/session-manager.cjs +107 -123
- package/dist/session/session-manager.d.ts +8 -7
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +108 -124
- package/dist/session/title-generator.cjs +14 -26
- package/dist/session/title-generator.d.ts +4 -6
- package/dist/session/title-generator.d.ts.map +1 -1
- package/dist/session/title-generator.js +16 -28
- package/dist/session/types.cjs +28 -0
- package/dist/session/types.d.ts +5 -1
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js +19 -0
- package/dist/{session/history/factory.cjs → skills/index.cjs} +9 -9
- package/dist/skills/index.d.ts +4 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +7 -0
- package/dist/skills/skill-manager.cjs +76 -0
- package/dist/skills/skill-manager.d.ts +13 -0
- package/dist/skills/skill-manager.d.ts.map +1 -0
- package/dist/skills/skill-manager.js +53 -0
- package/dist/skills/types.d.ts +24 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/workspace-skill-source.cjs +120 -0
- package/dist/skills/workspace-skill-source.d.ts +16 -0
- package/dist/skills/workspace-skill-source.d.ts.map +1 -0
- package/dist/skills/workspace-skill-source.js +97 -0
- package/dist/{llm → storage/approvals}/types.cjs +13 -30
- package/dist/storage/approvals/types.d.ts +54 -0
- package/dist/storage/approvals/types.d.ts.map +1 -0
- package/dist/storage/approvals/types.js +14 -0
- package/dist/storage/artifacts/types.d.ts +73 -0
- package/dist/storage/artifacts/types.d.ts.map +1 -0
- package/dist/storage/conversation/database.cjs +233 -0
- package/dist/storage/conversation/database.d.ts +38 -0
- package/dist/storage/conversation/database.d.ts.map +1 -0
- package/dist/storage/conversation/database.js +210 -0
- package/dist/storage/conversation/types.cjs +16 -0
- package/dist/storage/conversation/types.d.ts +21 -0
- package/dist/storage/conversation/types.d.ts.map +1 -0
- package/dist/storage/conversation/types.js +0 -0
- package/dist/storage/database/types.d.ts +4 -0
- package/dist/storage/database/types.d.ts.map +1 -1
- package/dist/storage/error-codes.js +1 -1
- package/dist/storage/errors.cjs +6 -6
- package/dist/storage/errors.d.ts +2 -2
- package/dist/storage/errors.js +7 -7
- package/dist/storage/index.cjs +42 -5
- package/dist/storage/index.d.ts +19 -8
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +39 -4
- package/dist/storage/memories/types.cjs +16 -0
- package/dist/storage/memories/types.d.ts +17 -0
- package/dist/storage/memories/types.d.ts.map +1 -0
- package/dist/storage/memories/types.js +0 -0
- package/dist/storage/message-queue/types.cjs +16 -0
- package/dist/storage/message-queue/types.d.ts +15 -0
- package/dist/storage/message-queue/types.d.ts.map +1 -0
- package/dist/storage/message-queue/types.js +0 -0
- package/dist/storage/prompts/types.cjs +16 -0
- package/dist/storage/prompts/types.d.ts +14 -0
- package/dist/storage/prompts/types.d.ts.map +1 -0
- package/dist/storage/prompts/types.js +0 -0
- package/dist/storage/runtime-events/types.cjs +16 -0
- package/dist/storage/runtime-events/types.d.ts +19 -0
- package/dist/storage/runtime-events/types.d.ts.map +1 -0
- package/dist/storage/runtime-events/types.js +0 -0
- package/dist/storage/sessions/types.cjs +16 -0
- package/dist/storage/sessions/types.d.ts +19 -0
- package/dist/storage/sessions/types.d.ts.map +1 -0
- package/dist/storage/sessions/types.js +0 -0
- package/dist/storage/stores/backend.cjs +702 -0
- package/dist/storage/stores/backend.d.ts +303 -0
- package/dist/storage/stores/backend.d.ts.map +1 -0
- package/dist/storage/stores/backend.js +677 -0
- package/dist/storage/stores/in-memory.cjs +510 -0
- package/dist/storage/stores/in-memory.d.ts +11 -0
- package/dist/storage/stores/in-memory.d.ts.map +1 -0
- package/dist/storage/stores/in-memory.js +487 -0
- package/dist/storage/stores/types.cjs +16 -0
- package/dist/storage/stores/types.d.ts +36 -0
- package/dist/storage/stores/types.d.ts.map +1 -0
- package/dist/storage/stores/types.js +0 -0
- package/dist/storage/tool-executions/types.cjs +127 -0
- package/dist/storage/tool-executions/types.d.ts +193 -0
- package/dist/storage/tool-executions/types.d.ts.map +1 -0
- package/dist/storage/tool-executions/types.js +96 -0
- package/dist/storage/tool-preferences/types.cjs +16 -0
- package/dist/storage/tool-preferences/types.d.ts +29 -0
- package/dist/storage/tool-preferences/types.d.ts.map +1 -0
- package/dist/storage/tool-preferences/types.js +0 -0
- package/dist/storage/tool-state/types.cjs +16 -0
- package/dist/storage/tool-state/types.d.ts +20 -0
- package/dist/storage/tool-state/types.d.ts.map +1 -0
- package/dist/storage/tool-state/types.js +0 -0
- package/dist/storage/workspaces/types.cjs +16 -0
- package/dist/storage/workspaces/types.d.ts +19 -0
- package/dist/storage/workspaces/types.d.ts.map +1 -0
- package/dist/storage/workspaces/types.js +0 -0
- package/dist/systemPrompt/contributors.cjs +10 -14
- package/dist/systemPrompt/contributors.d.ts +3 -3
- package/dist/systemPrompt/contributors.d.ts.map +1 -1
- package/dist/systemPrompt/contributors.js +11 -15
- package/dist/systemPrompt/error-codes.js +1 -1
- package/dist/systemPrompt/errors.js +1 -1
- package/dist/systemPrompt/in-built-prompts.js +1 -1
- package/dist/systemPrompt/index.js +1 -1
- package/dist/systemPrompt/manager.js +1 -1
- package/dist/systemPrompt/registry.js +1 -1
- package/dist/systemPrompt/schemas.js +1 -1
- package/dist/telemetry/decorators.js +1 -1
- package/dist/telemetry/error-codes.js +1 -1
- package/dist/telemetry/errors.js +1 -1
- package/dist/telemetry/exporters.js +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/schemas.js +1 -1
- package/dist/telemetry/telemetry.js +1 -1
- package/dist/telemetry/utils.js +1 -1
- package/dist/test-utils/in-memory-storage.cjs +9 -17
- package/dist/test-utils/in-memory-storage.js +9 -16
- package/dist/test-utils/session-state-stores.cjs +21 -24
- package/dist/test-utils/session-state-stores.js +22 -24
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.cjs +1 -1
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.d.ts +2 -2
- package/dist/tools/approval/allowed-tools-provider/factory.d.ts.map +1 -0
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/factory.js +2 -2
- package/dist/tools/approval/allowed-tools-provider/in-memory.d.ts.map +1 -0
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.js +1 -1
- package/dist/tools/approval/allowed-tools-provider/storage.cjs +66 -0
- package/dist/tools/{confirmation → approval}/allowed-tools-provider/storage.d.ts +4 -10
- package/dist/tools/approval/allowed-tools-provider/storage.d.ts.map +1 -0
- package/dist/tools/approval/allowed-tools-provider/storage.js +43 -0
- package/dist/tools/approval/allowed-tools-provider/types.cjs +16 -0
- package/dist/tools/approval/allowed-tools-provider/types.d.ts.map +1 -0
- package/dist/tools/approval/allowed-tools-provider/types.js +0 -0
- package/dist/tools/approval/session-tool-policy.cjs +269 -0
- package/dist/tools/approval/session-tool-policy.d.ts +43 -0
- package/dist/tools/approval/session-tool-policy.d.ts.map +1 -0
- package/dist/tools/approval/session-tool-policy.js +245 -0
- package/dist/tools/define-tool.js +1 -1
- package/dist/tools/display-types.js +1 -1
- package/dist/tools/error-codes.cjs +3 -3
- package/dist/tools/error-codes.d.ts +4 -4
- package/dist/tools/error-codes.d.ts.map +1 -1
- package/dist/tools/error-codes.js +4 -4
- package/dist/tools/errors.cjs +12 -12
- package/dist/tools/errors.d.ts +6 -6
- package/dist/tools/errors.d.ts.map +1 -1
- package/dist/tools/errors.js +13 -13
- package/dist/tools/index.cjs +3 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -1
- package/dist/tools/pattern-utils.js +1 -1
- package/dist/tools/presentation/tool-presentation.cjs +182 -0
- package/dist/tools/presentation/tool-presentation.d.ts +51 -0
- package/dist/tools/presentation/tool-presentation.d.ts.map +1 -0
- package/dist/tools/presentation/tool-presentation.js +159 -0
- package/dist/tools/presentation.js +1 -1
- package/dist/tools/schemas.cjs +5 -10
- package/dist/tools/schemas.d.ts +1 -4
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +6 -11
- package/dist/tools/session-tool-preferences-store.cjs +12 -28
- package/dist/tools/session-tool-preferences-store.d.ts +4 -7
- package/dist/tools/session-tool-preferences-store.d.ts.map +1 -1
- package/dist/tools/session-tool-preferences-store.js +12 -29
- package/dist/tools/tool-call-metadata.js +1 -1
- package/dist/tools/tool-manager.cjs +871 -834
- package/dist/tools/tool-manager.d.ts +94 -96
- package/dist/tools/tool-manager.d.ts.map +1 -1
- package/dist/tools/tool-manager.js +876 -833
- package/dist/tools/types.d.ts +10 -14
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.d.ts +1 -1
- package/dist/utils/api-key-resolver.d.ts.map +1 -1
- package/dist/utils/api-key-resolver.js +1 -1
- package/dist/utils/async-context.js +1 -1
- package/dist/utils/debug.js +1 -1
- package/dist/utils/defer.js +1 -1
- package/dist/utils/env.js +1 -1
- package/dist/utils/error-conversion.js +1 -1
- package/dist/utils/execution-context.js +1 -1
- package/dist/utils/fs-walk.js +1 -1
- package/dist/utils/path.js +1 -1
- package/dist/utils/redactor.js +1 -1
- package/dist/utils/result.js +1 -1
- package/dist/utils/safe-stringify.js +1 -1
- package/dist/utils/schema.js +1 -1
- package/dist/utils/service-initializer.cjs +37 -33
- package/dist/utils/service-initializer.d.ts +9 -5
- package/dist/utils/service-initializer.d.ts.map +1 -1
- package/dist/utils/service-initializer.js +38 -34
- package/dist/utils/zod-schema-converter.js +1 -1
- package/dist/workspace/error-codes.cjs +5 -1
- package/dist/workspace/error-codes.d.ts +4 -0
- package/dist/workspace/error-codes.d.ts.map +1 -1
- package/dist/workspace/error-codes.js +6 -2
- package/dist/workspace/errors.cjs +43 -0
- package/dist/workspace/errors.d.ts +9 -0
- package/dist/workspace/errors.d.ts.map +1 -1
- package/dist/workspace/errors.js +44 -1
- package/dist/workspace/index.d.ts +1 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +1 -1
- package/dist/workspace/manager.cjs +21 -29
- package/dist/workspace/manager.d.ts +6 -6
- package/dist/workspace/manager.d.ts.map +1 -1
- package/dist/workspace/manager.js +22 -30
- package/dist/workspace/types.d.ts +47 -0
- package/dist/workspace/types.d.ts.map +1 -1
- package/package.json +116 -3
- package/dist/approval/session-approval-store.cjs +0 -91
- package/dist/approval/session-approval-store.d.ts +0 -37
- package/dist/approval/session-approval-store.d.ts.map +0 -1
- package/dist/approval/session-approval-store.js +0 -68
- package/dist/llm/reasoning/anthropic-betas.d.ts +0 -3
- package/dist/llm/reasoning/anthropic-betas.d.ts.map +0 -1
- package/dist/llm/reasoning/anthropic-betas.js +0 -7
- package/dist/llm/reasoning/anthropic-thinking.cjs +0 -79
- package/dist/llm/reasoning/anthropic-thinking.d.ts +0 -15
- package/dist/llm/reasoning/anthropic-thinking.d.ts.map +0 -1
- package/dist/llm/reasoning/anthropic-thinking.js +0 -52
- package/dist/llm/reasoning/openai-reasoning-effort.cjs +0 -86
- package/dist/llm/reasoning/openai-reasoning-effort.d.ts +0 -5
- package/dist/llm/reasoning/openai-reasoning-effort.d.ts.map +0 -1
- package/dist/llm/reasoning/openai-reasoning-effort.js +0 -61
- package/dist/llm/reasoning/profile.cjs +0 -113
- package/dist/llm/reasoning/profile.d.ts +0 -13
- package/dist/llm/reasoning/profile.d.ts.map +0 -1
- package/dist/llm/reasoning/profile.js +0 -92
- package/dist/llm/reasoning/profiles/anthropic.cjs +0 -61
- package/dist/llm/reasoning/profiles/anthropic.d.ts +0 -8
- package/dist/llm/reasoning/profiles/anthropic.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/anthropic.js +0 -45
- package/dist/llm/reasoning/profiles/bedrock.cjs +0 -54
- package/dist/llm/reasoning/profiles/bedrock.d.ts +0 -3
- package/dist/llm/reasoning/profiles/bedrock.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/bedrock.js +0 -36
- package/dist/llm/reasoning/profiles/google.cjs +0 -45
- package/dist/llm/reasoning/profiles/google.d.ts +0 -9
- package/dist/llm/reasoning/profiles/google.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/google.js +0 -21
- package/dist/llm/reasoning/profiles/openai-compatible.cjs +0 -39
- package/dist/llm/reasoning/profiles/openai-compatible.d.ts +0 -3
- package/dist/llm/reasoning/profiles/openai-compatible.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/openai-compatible.js +0 -16
- package/dist/llm/reasoning/profiles/openai.d.ts +0 -3
- package/dist/llm/reasoning/profiles/openai.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/openai.js +0 -18
- package/dist/llm/reasoning/profiles/openrouter.cjs +0 -83
- package/dist/llm/reasoning/profiles/openrouter.d.ts +0 -10
- package/dist/llm/reasoning/profiles/openrouter.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/openrouter.js +0 -59
- package/dist/llm/reasoning/profiles/shared.cjs +0 -80
- package/dist/llm/reasoning/profiles/shared.d.ts +0 -25
- package/dist/llm/reasoning/profiles/shared.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/shared.js +0 -53
- package/dist/llm/reasoning/profiles/vertex.cjs +0 -46
- package/dist/llm/reasoning/profiles/vertex.d.ts +0 -3
- package/dist/llm/reasoning/profiles/vertex.d.ts.map +0 -1
- package/dist/llm/reasoning/profiles/vertex.js +0 -23
- package/dist/llm/registry/models.generated.cjs +0 -10741
- package/dist/llm/registry/models.generated.d.ts +0 -2945
- package/dist/llm/registry/models.generated.d.ts.map +0 -1
- package/dist/llm/registry/models.generated.js +0 -10717
- package/dist/llm/registry/models.manual.cjs +0 -44
- package/dist/llm/registry/models.manual.d.ts +0 -22
- package/dist/llm/registry/models.manual.d.ts.map +0 -1
- package/dist/llm/registry/models.manual.js +0 -21
- package/dist/llm/types.d.ts +0 -39
- package/dist/llm/types.d.ts.map +0 -1
- package/dist/llm/types.js +0 -30
- package/dist/session/history/database.cjs +0 -232
- package/dist/session/history/database.d.ts +0 -41
- package/dist/session/history/database.d.ts.map +0 -1
- package/dist/session/history/database.js +0 -209
- package/dist/session/history/factory.d.ts +0 -11
- package/dist/session/history/factory.d.ts.map +0 -1
- package/dist/session/history/factory.js +0 -8
- package/dist/session/history/memory.cjs +0 -57
- package/dist/session/history/memory.d.ts +0 -22
- package/dist/session/history/memory.d.ts.map +0 -1
- package/dist/session/history/memory.js +0 -34
- package/dist/session/history/types.d.ts +0 -26
- package/dist/session/history/types.d.ts.map +0 -1
- package/dist/session/message-queue-store.cjs +0 -75
- package/dist/session/message-queue-store.d.ts +0 -16
- package/dist/session/message-queue-store.d.ts.map +0 -1
- package/dist/session/message-queue-store.js +0 -52
- package/dist/storage/storage-manager.cjs +0 -209
- package/dist/storage/storage-manager.d.ts +0 -77
- package/dist/storage/storage-manager.d.ts.map +0 -1
- package/dist/storage/storage-manager.js +0 -186
- package/dist/tools/confirmation/allowed-tools-provider/factory.d.ts.map +0 -1
- package/dist/tools/confirmation/allowed-tools-provider/in-memory.d.ts.map +0 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.cjs +0 -69
- package/dist/tools/confirmation/allowed-tools-provider/storage.d.ts.map +0 -1
- package/dist/tools/confirmation/allowed-tools-provider/storage.js +0 -46
- package/dist/tools/confirmation/allowed-tools-provider/types.d.ts.map +0 -1
- /package/dist/{session/history → skills}/types.cjs +0 -0
- /package/dist/{session/history → skills}/types.js +0 -0
- /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.cjs +0 -0
- /package/dist/{tools/confirmation/allowed-tools-provider → storage/artifacts}/types.js +0 -0
- /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.cjs +0 -0
- /package/dist/tools/{confirmation → approval}/allowed-tools-provider/in-memory.d.ts +0 -0
- /package/dist/tools/{confirmation → approval}/allowed-tools-provider/types.d.ts +0 -0
package/dist/context/manager.cjs
CHANGED
|
@@ -32,8 +32,8 @@ __export(manager_exports, {
|
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(manager_exports);
|
|
34
34
|
var import_crypto = require("crypto");
|
|
35
|
-
var
|
|
36
|
-
var
|
|
35
|
+
var import_types = require("./types.js");
|
|
36
|
+
var import_types2 = require("../logger/v2/types.js");
|
|
37
37
|
var import_utils = require("./utils.js");
|
|
38
38
|
var import_errors = require("./errors.js");
|
|
39
39
|
var import_media_helpers = require("./media-helpers.js");
|
|
@@ -72,7 +72,7 @@ class ContextManager {
|
|
|
72
72
|
* Messages after this index are estimated with length/4 heuristic.
|
|
73
73
|
*/
|
|
74
74
|
lastCallMessageCount = null;
|
|
75
|
-
|
|
75
|
+
conversationStore;
|
|
76
76
|
sessionId;
|
|
77
77
|
/**
|
|
78
78
|
* ResourceManager for resolving blob references in message content.
|
|
@@ -195,22 +195,22 @@ class ContextManager {
|
|
|
195
195
|
* @param formatter Formatter implementation for the target LLM provider
|
|
196
196
|
* @param systemPromptManager SystemPromptManager instance for the conversation
|
|
197
197
|
* @param maxInputTokens Maximum token limit for the conversation history.
|
|
198
|
-
* @param
|
|
198
|
+
* @param conversationStore Store for managing conversation history
|
|
199
199
|
* @param sessionId Unique identifier for the conversation session (readonly, for debugging)
|
|
200
200
|
* @param resourceManager ResourceManager for resolving blob references in messages
|
|
201
201
|
* @param logger Logger instance for logging
|
|
202
202
|
*/
|
|
203
|
-
constructor(llmConfig, formatter, systemPromptManager, maxInputTokens,
|
|
203
|
+
constructor(llmConfig, formatter, systemPromptManager, maxInputTokens, conversationStore, sessionId, resourceManager, logger) {
|
|
204
204
|
this.llmConfig = llmConfig;
|
|
205
205
|
this.formatter = formatter;
|
|
206
206
|
this.systemPromptManager = systemPromptManager;
|
|
207
207
|
this.maxInputTokens = maxInputTokens;
|
|
208
|
-
this.
|
|
208
|
+
this.conversationStore = conversationStore;
|
|
209
209
|
this.sessionId = sessionId;
|
|
210
210
|
this.resourceManager = resourceManager;
|
|
211
|
-
this.logger = logger.createChild(
|
|
211
|
+
this.logger = logger.createChild(import_types2.DextoLogComponent.CONTEXT);
|
|
212
212
|
this.logger.debug(
|
|
213
|
-
`ContextManager: Initialized for session ${sessionId} - history will be managed by ${
|
|
213
|
+
`ContextManager: Initialized for session ${sessionId} - history will be managed by ${conversationStore.constructor.name}`
|
|
214
214
|
);
|
|
215
215
|
}
|
|
216
216
|
/**
|
|
@@ -224,7 +224,7 @@ class ContextManager {
|
|
|
224
224
|
* Returns either the original data or a blob reference (@blob:id).
|
|
225
225
|
*/
|
|
226
226
|
async processUserInput(data, metadata) {
|
|
227
|
-
const
|
|
227
|
+
const artifactStore = this.resourceManager.getArtifactStore();
|
|
228
228
|
let shouldStoreAsBlob = false;
|
|
229
229
|
let estimatedSize = 0;
|
|
230
230
|
if (typeof data === "string") {
|
|
@@ -251,20 +251,25 @@ class ContextManager {
|
|
|
251
251
|
if (shouldStoreAsBlob) {
|
|
252
252
|
try {
|
|
253
253
|
const blobInput = typeof data === "string" && !data.startsWith("data:") && !(0, import_utils.isLikelyBase64String)(data) && !isLikelyBinary ? Buffer.from(data, "utf-8") : data;
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
254
|
+
const artifactRef = await artifactStore.store({
|
|
255
|
+
data: blobInput,
|
|
256
|
+
metadata: {
|
|
257
|
+
mimeType: metadata.mimeType,
|
|
258
|
+
...metadata.originalName !== void 0 && {
|
|
259
|
+
originalName: metadata.originalName
|
|
260
|
+
},
|
|
261
|
+
source: metadata.source || "user"
|
|
262
|
+
}
|
|
258
263
|
});
|
|
259
264
|
this.logger.info(
|
|
260
|
-
`Stored user input as
|
|
265
|
+
`Stored user input as artifact: ${artifactRef.uri} (${estimatedSize} bytes, ${metadata.mimeType})`
|
|
261
266
|
);
|
|
262
267
|
this.resourceManager.emitCacheInvalidated({
|
|
263
|
-
resourceUri:
|
|
268
|
+
resourceUri: artifactRef.uri,
|
|
264
269
|
serverName: "internal",
|
|
265
270
|
action: "blob_stored"
|
|
266
271
|
});
|
|
267
|
-
return `@${
|
|
272
|
+
return `@${artifactRef.uri}`;
|
|
268
273
|
} catch (error) {
|
|
269
274
|
this.logger.warn(`Failed to store user input as blob: ${String(error)}`);
|
|
270
275
|
return data;
|
|
@@ -320,7 +325,7 @@ class ContextManager {
|
|
|
320
325
|
* This marks the boundary for "new messages" calculation.
|
|
321
326
|
*/
|
|
322
327
|
async recordLastCallMessageCount() {
|
|
323
|
-
const history = await this.
|
|
328
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
324
329
|
this.lastCallMessageCount = history.length;
|
|
325
330
|
this.logger.debug(`Recorded lastCallMessageCount: ${this.lastCallMessageCount}`);
|
|
326
331
|
}
|
|
@@ -355,7 +360,9 @@ class ContextManager {
|
|
|
355
360
|
* @returns Prepared history and statistics about the transformations
|
|
356
361
|
*/
|
|
357
362
|
async prepareHistory() {
|
|
358
|
-
const fullHistory = await this.
|
|
363
|
+
const fullHistory = await this.conversationStore.listMessages({
|
|
364
|
+
sessionId: this.sessionId
|
|
365
|
+
});
|
|
359
366
|
const originalCount = fullHistory.length;
|
|
360
367
|
let history = (0, import_utils.filterCompacted)(fullHistory);
|
|
361
368
|
const filteredCount = history.length;
|
|
@@ -407,7 +414,7 @@ ${prompt}`);
|
|
|
407
414
|
* @returns Promise that resolves to a read-only copy of the conversation history
|
|
408
415
|
*/
|
|
409
416
|
async getHistory() {
|
|
410
|
-
const history = await this.
|
|
417
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
411
418
|
return [...history];
|
|
412
419
|
}
|
|
413
420
|
/**
|
|
@@ -416,7 +423,7 @@ ${prompt}`);
|
|
|
416
423
|
* This ensures all message updates are persisted before returning control to the caller.
|
|
417
424
|
*/
|
|
418
425
|
async flush() {
|
|
419
|
-
await this.
|
|
426
|
+
await this.conversationStore.flush({ sessionId: this.sessionId });
|
|
420
427
|
}
|
|
421
428
|
/**
|
|
422
429
|
* Clears the context window without deleting history.
|
|
@@ -447,7 +454,7 @@ ${prompt}`);
|
|
|
447
454
|
* Used for streaming responses.
|
|
448
455
|
*/
|
|
449
456
|
async appendAssistantText(messageId, text) {
|
|
450
|
-
const history = await this.
|
|
457
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
451
458
|
const messageIndex = history.findIndex((m) => m.id === messageId);
|
|
452
459
|
if (messageIndex === -1) {
|
|
453
460
|
throw import_errors.ContextError.messageNotFound(messageId);
|
|
@@ -469,14 +476,14 @@ ${prompt}`);
|
|
|
469
476
|
message.content.push({ type: "text", text });
|
|
470
477
|
}
|
|
471
478
|
}
|
|
472
|
-
await this.
|
|
479
|
+
await this.conversationStore.updateMessage({ sessionId: this.sessionId, message });
|
|
473
480
|
}
|
|
474
481
|
/**
|
|
475
482
|
* Adds a tool call to an existing assistant message.
|
|
476
483
|
* Used for streaming responses.
|
|
477
484
|
*/
|
|
478
485
|
async addToolCall(messageId, toolCall) {
|
|
479
|
-
const history = await this.
|
|
486
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
480
487
|
const messageIndex = history.findIndex((m) => m.id === messageId);
|
|
481
488
|
if (messageIndex === -1) {
|
|
482
489
|
throw import_errors.ContextError.messageNotFound(messageId);
|
|
@@ -492,14 +499,14 @@ ${prompt}`);
|
|
|
492
499
|
message.toolCalls = [];
|
|
493
500
|
}
|
|
494
501
|
message.toolCalls.push(toolCall);
|
|
495
|
-
await this.
|
|
502
|
+
await this.conversationStore.updateMessage({ sessionId: this.sessionId, message });
|
|
496
503
|
}
|
|
497
504
|
/**
|
|
498
505
|
* Updates an existing assistant message with new properties.
|
|
499
506
|
* Used for finalizing streaming responses (e.g. adding token usage).
|
|
500
507
|
*/
|
|
501
508
|
async updateAssistantMessage(messageId, updates) {
|
|
502
|
-
const history = await this.
|
|
509
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
503
510
|
const messageIndex = history.findIndex((m) => m.id === messageId);
|
|
504
511
|
if (messageIndex === -1) {
|
|
505
512
|
throw import_errors.ContextError.messageNotFound(messageId);
|
|
@@ -512,7 +519,7 @@ ${prompt}`);
|
|
|
512
519
|
throw import_errors.ContextError.messageNotAssistant(messageId);
|
|
513
520
|
}
|
|
514
521
|
Object.assign(message, updates);
|
|
515
|
-
await this.
|
|
522
|
+
await this.conversationStore.updateMessage({ sessionId: this.sessionId, message });
|
|
516
523
|
}
|
|
517
524
|
/**
|
|
518
525
|
* Marks tool messages as compacted (pruned).
|
|
@@ -530,7 +537,7 @@ ${prompt}`);
|
|
|
530
537
|
if (messageIds.length === 0) {
|
|
531
538
|
return 0;
|
|
532
539
|
}
|
|
533
|
-
const history = await this.
|
|
540
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
534
541
|
const timestamp = Date.now();
|
|
535
542
|
let markedCount = 0;
|
|
536
543
|
for (const messageId of messageIds) {
|
|
@@ -549,7 +556,7 @@ ${prompt}`);
|
|
|
549
556
|
continue;
|
|
550
557
|
}
|
|
551
558
|
message.compactedAt = timestamp;
|
|
552
|
-
await this.
|
|
559
|
+
await this.conversationStore.updateMessage({ sessionId: this.sessionId, message });
|
|
553
560
|
markedCount++;
|
|
554
561
|
}
|
|
555
562
|
if (markedCount > 0) {
|
|
@@ -611,10 +618,10 @@ ${prompt}`);
|
|
|
611
618
|
message.timestamp = Date.now();
|
|
612
619
|
}
|
|
613
620
|
this.logger.debug(
|
|
614
|
-
`ContextManager: Adding message to
|
|
621
|
+
`ContextManager: Adding message to conversation store: ${JSON.stringify(message, null, 2)}`
|
|
615
622
|
);
|
|
616
|
-
await this.
|
|
617
|
-
const history = await this.
|
|
623
|
+
await this.conversationStore.saveMessage({ sessionId: this.sessionId, message });
|
|
624
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
618
625
|
this.logger.debug(`ContextManager: History now contains ${history.length} messages`);
|
|
619
626
|
}
|
|
620
627
|
/**
|
|
@@ -744,16 +751,16 @@ ${prompt}`);
|
|
|
744
751
|
* @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
|
|
745
752
|
* @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
|
|
746
753
|
* @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.
|
|
747
|
-
* @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from
|
|
754
|
+
* @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from the conversation store.
|
|
748
755
|
* @returns Formatted messages ready to send to the LLM provider API
|
|
749
756
|
* @throws Error if formatting or compression fails critically
|
|
750
757
|
*/
|
|
751
758
|
async getFormattedMessages(contributorContext, llmContext, systemPrompt, history) {
|
|
752
|
-
let messageHistory = history ?? await this.
|
|
759
|
+
let messageHistory = history ?? await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
753
760
|
let allowedMediaTypes = this.llmConfig.allowedMediaTypes;
|
|
754
761
|
if (!allowedMediaTypes) {
|
|
755
762
|
try {
|
|
756
|
-
const { getSupportedFileTypesForModel } = await import("
|
|
763
|
+
const { getSupportedFileTypesForModel } = await import("@dexto/llm");
|
|
757
764
|
const { fileTypesToMimePatterns } = await import("./utils.js");
|
|
758
765
|
const supportedFileTypes = getSupportedFileTypesForModel(
|
|
759
766
|
llmContext.provider,
|
|
@@ -782,18 +789,18 @@ ${prompt}`);
|
|
|
782
789
|
break;
|
|
783
790
|
}
|
|
784
791
|
const message = messageHistory[index];
|
|
785
|
-
if ((0,
|
|
792
|
+
if ((0, import_types.isUserMessage)(message) && ContextManager.hasRetainableMedia(message)) {
|
|
786
793
|
retainedMediaMessageIndexes.add(index);
|
|
787
794
|
retainedMediaMessages += 1;
|
|
788
795
|
}
|
|
789
796
|
}
|
|
790
797
|
messageHistory = await Promise.all(
|
|
791
798
|
messageHistory.map(async (message, index) => {
|
|
792
|
-
if ((0,
|
|
799
|
+
if ((0, import_types.isSystemMessage)(message) || (0, import_types.isAssistantMessage)(message)) {
|
|
793
800
|
return message;
|
|
794
801
|
}
|
|
795
802
|
const expandMatchingMedia = retainedMediaMessageIndexes.has(index);
|
|
796
|
-
if ((0,
|
|
803
|
+
if ((0, import_types.isUserMessage)(message)) {
|
|
797
804
|
const expandedContent = await (0, import_utils.expandBlobReferences)(
|
|
798
805
|
message.content,
|
|
799
806
|
this.resourceManager,
|
|
@@ -803,7 +810,7 @@ ${prompt}`);
|
|
|
803
810
|
);
|
|
804
811
|
return { ...message, content: expandedContent };
|
|
805
812
|
}
|
|
806
|
-
if ((0,
|
|
813
|
+
if ((0, import_types.isToolMessage)(message)) {
|
|
807
814
|
const expandedContent = await (0, import_utils.expandBlobReferences)(
|
|
808
815
|
message.content,
|
|
809
816
|
this.resourceManager,
|
|
@@ -868,7 +875,9 @@ ${prompt}`);
|
|
|
868
875
|
const lastInput = this.lastActualInputTokens;
|
|
869
876
|
const lastOutput = this.lastActualOutputTokens;
|
|
870
877
|
const lastMsgCount = this.lastCallMessageCount;
|
|
871
|
-
const currentHistory = await this.
|
|
878
|
+
const currentHistory = await this.conversationStore.listMessages({
|
|
879
|
+
sessionId: this.sessionId
|
|
880
|
+
});
|
|
872
881
|
const pureEstimate = (0, import_utils.estimateContextTokens)(systemPrompt, preparedHistory, tools);
|
|
873
882
|
let total;
|
|
874
883
|
let calculationBasis;
|
|
@@ -968,7 +977,9 @@ ${prompt}`);
|
|
|
968
977
|
const lastInput = this.lastActualInputTokens;
|
|
969
978
|
const lastOutput = this.lastActualOutputTokens;
|
|
970
979
|
const lastMsgCount = this.lastCallMessageCount;
|
|
971
|
-
const currentHistory = await this.
|
|
980
|
+
const currentHistory = await this.conversationStore.listMessages({
|
|
981
|
+
sessionId: this.sessionId
|
|
982
|
+
});
|
|
972
983
|
if (lastInput !== null && lastOutput !== null && lastMsgCount !== null) {
|
|
973
984
|
const newMessages = currentHistory.slice(lastMsgCount);
|
|
974
985
|
const newMessagesEstimate = (0, import_utils.estimateMessagesTokens)(newMessages);
|
|
@@ -997,7 +1008,7 @@ ${prompt}`);
|
|
|
997
1008
|
* Does not reset the system prompt
|
|
998
1009
|
*/
|
|
999
1010
|
async resetConversation() {
|
|
1000
|
-
await this.
|
|
1011
|
+
await this.conversationStore.clearMessages({ sessionId: this.sessionId });
|
|
1001
1012
|
this.resetActualTokenTracking();
|
|
1002
1013
|
this.logger.debug(
|
|
1003
1014
|
`ContextManager: Conversation history cleared for session ${this.sessionId}`
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { VercelMessageFormatter } from '../llm/formatters/vercel.js';
|
|
2
|
-
import { LLMContext } from '
|
|
2
|
+
import type { LLMContext } from '@dexto/llm';
|
|
3
3
|
import type { InternalMessage, AssistantMessage, ToolCall } from './types.js';
|
|
4
4
|
import type { Logger } from '../logger/v2/types.js';
|
|
5
5
|
import type { SanitizedToolResult } from './types.js';
|
|
6
6
|
import { DynamicContributorContext } from '../systemPrompt/types.js';
|
|
7
7
|
import { SystemPromptManager } from '../systemPrompt/manager.js';
|
|
8
|
-
import type {
|
|
8
|
+
import type { ConversationStore } from '../storage/conversation/types.js';
|
|
9
9
|
import { ValidatedLLMConfig } from '../llm/schemas.js';
|
|
10
10
|
import type { ToolPresentationSnapshotV1 } from '../tools/types.js';
|
|
11
11
|
import type { ToolCallMetadata } from '../tools/tool-call-metadata.js';
|
|
12
12
|
/**
|
|
13
13
|
* Manages conversation history and provides message formatting capabilities for the LLM context.
|
|
14
14
|
* The ContextManager is responsible for:
|
|
15
|
-
* - Validating and storing conversation messages via the
|
|
15
|
+
* - Validating and storing conversation messages via the conversation store
|
|
16
16
|
* - Managing the system prompt
|
|
17
17
|
* - Formatting messages for specific LLM providers through an injected formatter
|
|
18
18
|
* - Providing access to conversation history
|
|
19
19
|
*
|
|
20
|
-
* Note: All conversation history is stored and retrieved via the injected
|
|
20
|
+
* Note: All conversation history is stored and retrieved via the injected ConversationStore.
|
|
21
21
|
* The ContextManager does not maintain an internal history cache.
|
|
22
22
|
* Token counting is handled by the LLM API response, not local estimation.
|
|
23
23
|
*
|
|
@@ -58,7 +58,7 @@ export declare class ContextManager<TMessage = unknown> {
|
|
|
58
58
|
* Messages after this index are estimated with length/4 heuristic.
|
|
59
59
|
*/
|
|
60
60
|
private lastCallMessageCount;
|
|
61
|
-
private
|
|
61
|
+
private conversationStore;
|
|
62
62
|
private readonly sessionId;
|
|
63
63
|
/**
|
|
64
64
|
* ResourceManager for resolving blob references in message content.
|
|
@@ -76,12 +76,12 @@ export declare class ContextManager<TMessage = unknown> {
|
|
|
76
76
|
* @param formatter Formatter implementation for the target LLM provider
|
|
77
77
|
* @param systemPromptManager SystemPromptManager instance for the conversation
|
|
78
78
|
* @param maxInputTokens Maximum token limit for the conversation history.
|
|
79
|
-
* @param
|
|
79
|
+
* @param conversationStore Store for managing conversation history
|
|
80
80
|
* @param sessionId Unique identifier for the conversation session (readonly, for debugging)
|
|
81
81
|
* @param resourceManager ResourceManager for resolving blob references in messages
|
|
82
82
|
* @param logger Logger instance for logging
|
|
83
83
|
*/
|
|
84
|
-
constructor(llmConfig: ValidatedLLMConfig, formatter: VercelMessageFormatter, systemPromptManager: SystemPromptManager, maxInputTokens: number,
|
|
84
|
+
constructor(llmConfig: ValidatedLLMConfig, formatter: VercelMessageFormatter, systemPromptManager: SystemPromptManager, maxInputTokens: number, conversationStore: ConversationStore, sessionId: string, resourceManager: import('../resources/index.js').ResourceManager, logger: Logger);
|
|
85
85
|
/**
|
|
86
86
|
* Get the ResourceManager instance
|
|
87
87
|
*/
|
|
@@ -275,7 +275,7 @@ export declare class ContextManager<TMessage = unknown> {
|
|
|
275
275
|
* @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
|
|
276
276
|
* @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
|
|
277
277
|
* @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.
|
|
278
|
-
* @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from
|
|
278
|
+
* @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from the conversation store.
|
|
279
279
|
* @returns Formatted messages ready to send to the LLM provider API
|
|
280
280
|
* @throws Error if formatting or compression fails critically
|
|
281
281
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/context/manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/context/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/context/manager.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
2
2
|
import { randomUUID } from "crypto";
|
|
3
3
|
import { isSystemMessage, isUserMessage, isAssistantMessage, isToolMessage } from "./types.js";
|
|
4
4
|
import { DextoLogComponent } from "../logger/v2/types.js";
|
|
@@ -47,7 +47,7 @@ class ContextManager {
|
|
|
47
47
|
* Messages after this index are estimated with length/4 heuristic.
|
|
48
48
|
*/
|
|
49
49
|
lastCallMessageCount = null;
|
|
50
|
-
|
|
50
|
+
conversationStore;
|
|
51
51
|
sessionId;
|
|
52
52
|
/**
|
|
53
53
|
* ResourceManager for resolving blob references in message content.
|
|
@@ -170,22 +170,22 @@ class ContextManager {
|
|
|
170
170
|
* @param formatter Formatter implementation for the target LLM provider
|
|
171
171
|
* @param systemPromptManager SystemPromptManager instance for the conversation
|
|
172
172
|
* @param maxInputTokens Maximum token limit for the conversation history.
|
|
173
|
-
* @param
|
|
173
|
+
* @param conversationStore Store for managing conversation history
|
|
174
174
|
* @param sessionId Unique identifier for the conversation session (readonly, for debugging)
|
|
175
175
|
* @param resourceManager ResourceManager for resolving blob references in messages
|
|
176
176
|
* @param logger Logger instance for logging
|
|
177
177
|
*/
|
|
178
|
-
constructor(llmConfig, formatter, systemPromptManager, maxInputTokens,
|
|
178
|
+
constructor(llmConfig, formatter, systemPromptManager, maxInputTokens, conversationStore, sessionId, resourceManager, logger) {
|
|
179
179
|
this.llmConfig = llmConfig;
|
|
180
180
|
this.formatter = formatter;
|
|
181
181
|
this.systemPromptManager = systemPromptManager;
|
|
182
182
|
this.maxInputTokens = maxInputTokens;
|
|
183
|
-
this.
|
|
183
|
+
this.conversationStore = conversationStore;
|
|
184
184
|
this.sessionId = sessionId;
|
|
185
185
|
this.resourceManager = resourceManager;
|
|
186
186
|
this.logger = logger.createChild(DextoLogComponent.CONTEXT);
|
|
187
187
|
this.logger.debug(
|
|
188
|
-
`ContextManager: Initialized for session ${sessionId} - history will be managed by ${
|
|
188
|
+
`ContextManager: Initialized for session ${sessionId} - history will be managed by ${conversationStore.constructor.name}`
|
|
189
189
|
);
|
|
190
190
|
}
|
|
191
191
|
/**
|
|
@@ -199,7 +199,7 @@ class ContextManager {
|
|
|
199
199
|
* Returns either the original data or a blob reference (@blob:id).
|
|
200
200
|
*/
|
|
201
201
|
async processUserInput(data, metadata) {
|
|
202
|
-
const
|
|
202
|
+
const artifactStore = this.resourceManager.getArtifactStore();
|
|
203
203
|
let shouldStoreAsBlob = false;
|
|
204
204
|
let estimatedSize = 0;
|
|
205
205
|
if (typeof data === "string") {
|
|
@@ -226,20 +226,25 @@ class ContextManager {
|
|
|
226
226
|
if (shouldStoreAsBlob) {
|
|
227
227
|
try {
|
|
228
228
|
const blobInput = typeof data === "string" && !data.startsWith("data:") && !isLikelyBase64String(data) && !isLikelyBinary ? Buffer.from(data, "utf-8") : data;
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
229
|
+
const artifactRef = await artifactStore.store({
|
|
230
|
+
data: blobInput,
|
|
231
|
+
metadata: {
|
|
232
|
+
mimeType: metadata.mimeType,
|
|
233
|
+
...metadata.originalName !== void 0 && {
|
|
234
|
+
originalName: metadata.originalName
|
|
235
|
+
},
|
|
236
|
+
source: metadata.source || "user"
|
|
237
|
+
}
|
|
233
238
|
});
|
|
234
239
|
this.logger.info(
|
|
235
|
-
`Stored user input as
|
|
240
|
+
`Stored user input as artifact: ${artifactRef.uri} (${estimatedSize} bytes, ${metadata.mimeType})`
|
|
236
241
|
);
|
|
237
242
|
this.resourceManager.emitCacheInvalidated({
|
|
238
|
-
resourceUri:
|
|
243
|
+
resourceUri: artifactRef.uri,
|
|
239
244
|
serverName: "internal",
|
|
240
245
|
action: "blob_stored"
|
|
241
246
|
});
|
|
242
|
-
return `@${
|
|
247
|
+
return `@${artifactRef.uri}`;
|
|
243
248
|
} catch (error) {
|
|
244
249
|
this.logger.warn(`Failed to store user input as blob: ${String(error)}`);
|
|
245
250
|
return data;
|
|
@@ -295,7 +300,7 @@ class ContextManager {
|
|
|
295
300
|
* This marks the boundary for "new messages" calculation.
|
|
296
301
|
*/
|
|
297
302
|
async recordLastCallMessageCount() {
|
|
298
|
-
const history = await this.
|
|
303
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
299
304
|
this.lastCallMessageCount = history.length;
|
|
300
305
|
this.logger.debug(`Recorded lastCallMessageCount: ${this.lastCallMessageCount}`);
|
|
301
306
|
}
|
|
@@ -330,7 +335,9 @@ class ContextManager {
|
|
|
330
335
|
* @returns Prepared history and statistics about the transformations
|
|
331
336
|
*/
|
|
332
337
|
async prepareHistory() {
|
|
333
|
-
const fullHistory = await this.
|
|
338
|
+
const fullHistory = await this.conversationStore.listMessages({
|
|
339
|
+
sessionId: this.sessionId
|
|
340
|
+
});
|
|
334
341
|
const originalCount = fullHistory.length;
|
|
335
342
|
let history = filterCompacted(fullHistory);
|
|
336
343
|
const filteredCount = history.length;
|
|
@@ -382,7 +389,7 @@ ${prompt}`);
|
|
|
382
389
|
* @returns Promise that resolves to a read-only copy of the conversation history
|
|
383
390
|
*/
|
|
384
391
|
async getHistory() {
|
|
385
|
-
const history = await this.
|
|
392
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
386
393
|
return [...history];
|
|
387
394
|
}
|
|
388
395
|
/**
|
|
@@ -391,7 +398,7 @@ ${prompt}`);
|
|
|
391
398
|
* This ensures all message updates are persisted before returning control to the caller.
|
|
392
399
|
*/
|
|
393
400
|
async flush() {
|
|
394
|
-
await this.
|
|
401
|
+
await this.conversationStore.flush({ sessionId: this.sessionId });
|
|
395
402
|
}
|
|
396
403
|
/**
|
|
397
404
|
* Clears the context window without deleting history.
|
|
@@ -422,7 +429,7 @@ ${prompt}`);
|
|
|
422
429
|
* Used for streaming responses.
|
|
423
430
|
*/
|
|
424
431
|
async appendAssistantText(messageId, text) {
|
|
425
|
-
const history = await this.
|
|
432
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
426
433
|
const messageIndex = history.findIndex((m) => m.id === messageId);
|
|
427
434
|
if (messageIndex === -1) {
|
|
428
435
|
throw ContextError.messageNotFound(messageId);
|
|
@@ -444,14 +451,14 @@ ${prompt}`);
|
|
|
444
451
|
message.content.push({ type: "text", text });
|
|
445
452
|
}
|
|
446
453
|
}
|
|
447
|
-
await this.
|
|
454
|
+
await this.conversationStore.updateMessage({ sessionId: this.sessionId, message });
|
|
448
455
|
}
|
|
449
456
|
/**
|
|
450
457
|
* Adds a tool call to an existing assistant message.
|
|
451
458
|
* Used for streaming responses.
|
|
452
459
|
*/
|
|
453
460
|
async addToolCall(messageId, toolCall) {
|
|
454
|
-
const history = await this.
|
|
461
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
455
462
|
const messageIndex = history.findIndex((m) => m.id === messageId);
|
|
456
463
|
if (messageIndex === -1) {
|
|
457
464
|
throw ContextError.messageNotFound(messageId);
|
|
@@ -467,14 +474,14 @@ ${prompt}`);
|
|
|
467
474
|
message.toolCalls = [];
|
|
468
475
|
}
|
|
469
476
|
message.toolCalls.push(toolCall);
|
|
470
|
-
await this.
|
|
477
|
+
await this.conversationStore.updateMessage({ sessionId: this.sessionId, message });
|
|
471
478
|
}
|
|
472
479
|
/**
|
|
473
480
|
* Updates an existing assistant message with new properties.
|
|
474
481
|
* Used for finalizing streaming responses (e.g. adding token usage).
|
|
475
482
|
*/
|
|
476
483
|
async updateAssistantMessage(messageId, updates) {
|
|
477
|
-
const history = await this.
|
|
484
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
478
485
|
const messageIndex = history.findIndex((m) => m.id === messageId);
|
|
479
486
|
if (messageIndex === -1) {
|
|
480
487
|
throw ContextError.messageNotFound(messageId);
|
|
@@ -487,7 +494,7 @@ ${prompt}`);
|
|
|
487
494
|
throw ContextError.messageNotAssistant(messageId);
|
|
488
495
|
}
|
|
489
496
|
Object.assign(message, updates);
|
|
490
|
-
await this.
|
|
497
|
+
await this.conversationStore.updateMessage({ sessionId: this.sessionId, message });
|
|
491
498
|
}
|
|
492
499
|
/**
|
|
493
500
|
* Marks tool messages as compacted (pruned).
|
|
@@ -505,7 +512,7 @@ ${prompt}`);
|
|
|
505
512
|
if (messageIds.length === 0) {
|
|
506
513
|
return 0;
|
|
507
514
|
}
|
|
508
|
-
const history = await this.
|
|
515
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
509
516
|
const timestamp = Date.now();
|
|
510
517
|
let markedCount = 0;
|
|
511
518
|
for (const messageId of messageIds) {
|
|
@@ -524,7 +531,7 @@ ${prompt}`);
|
|
|
524
531
|
continue;
|
|
525
532
|
}
|
|
526
533
|
message.compactedAt = timestamp;
|
|
527
|
-
await this.
|
|
534
|
+
await this.conversationStore.updateMessage({ sessionId: this.sessionId, message });
|
|
528
535
|
markedCount++;
|
|
529
536
|
}
|
|
530
537
|
if (markedCount > 0) {
|
|
@@ -586,10 +593,10 @@ ${prompt}`);
|
|
|
586
593
|
message.timestamp = Date.now();
|
|
587
594
|
}
|
|
588
595
|
this.logger.debug(
|
|
589
|
-
`ContextManager: Adding message to
|
|
596
|
+
`ContextManager: Adding message to conversation store: ${JSON.stringify(message, null, 2)}`
|
|
590
597
|
);
|
|
591
|
-
await this.
|
|
592
|
-
const history = await this.
|
|
598
|
+
await this.conversationStore.saveMessage({ sessionId: this.sessionId, message });
|
|
599
|
+
const history = await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
593
600
|
this.logger.debug(`ContextManager: History now contains ${history.length} messages`);
|
|
594
601
|
}
|
|
595
602
|
/**
|
|
@@ -719,16 +726,16 @@ ${prompt}`);
|
|
|
719
726
|
* @param contributorContext The DynamicContributorContext for system prompt contributors and formatting
|
|
720
727
|
* @param llmContext The llmContext for the formatter to decide which messages to include based on the model's capabilities
|
|
721
728
|
* @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.
|
|
722
|
-
* @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from
|
|
729
|
+
* @param history (Optional) Pre-fetched and potentially compressed history. If not provided, will fetch from the conversation store.
|
|
723
730
|
* @returns Formatted messages ready to send to the LLM provider API
|
|
724
731
|
* @throws Error if formatting or compression fails critically
|
|
725
732
|
*/
|
|
726
733
|
async getFormattedMessages(contributorContext, llmContext, systemPrompt, history) {
|
|
727
|
-
let messageHistory = history ?? await this.
|
|
734
|
+
let messageHistory = history ?? await this.conversationStore.listMessages({ sessionId: this.sessionId });
|
|
728
735
|
let allowedMediaTypes = this.llmConfig.allowedMediaTypes;
|
|
729
736
|
if (!allowedMediaTypes) {
|
|
730
737
|
try {
|
|
731
|
-
const { getSupportedFileTypesForModel } = await import("
|
|
738
|
+
const { getSupportedFileTypesForModel } = await import("@dexto/llm");
|
|
732
739
|
const { fileTypesToMimePatterns } = await import("./utils.js");
|
|
733
740
|
const supportedFileTypes = getSupportedFileTypesForModel(
|
|
734
741
|
llmContext.provider,
|
|
@@ -843,7 +850,9 @@ ${prompt}`);
|
|
|
843
850
|
const lastInput = this.lastActualInputTokens;
|
|
844
851
|
const lastOutput = this.lastActualOutputTokens;
|
|
845
852
|
const lastMsgCount = this.lastCallMessageCount;
|
|
846
|
-
const currentHistory = await this.
|
|
853
|
+
const currentHistory = await this.conversationStore.listMessages({
|
|
854
|
+
sessionId: this.sessionId
|
|
855
|
+
});
|
|
847
856
|
const pureEstimate = estimateContextTokens(systemPrompt, preparedHistory, tools);
|
|
848
857
|
let total;
|
|
849
858
|
let calculationBasis;
|
|
@@ -943,7 +952,9 @@ ${prompt}`);
|
|
|
943
952
|
const lastInput = this.lastActualInputTokens;
|
|
944
953
|
const lastOutput = this.lastActualOutputTokens;
|
|
945
954
|
const lastMsgCount = this.lastCallMessageCount;
|
|
946
|
-
const currentHistory = await this.
|
|
955
|
+
const currentHistory = await this.conversationStore.listMessages({
|
|
956
|
+
sessionId: this.sessionId
|
|
957
|
+
});
|
|
947
958
|
if (lastInput !== null && lastOutput !== null && lastMsgCount !== null) {
|
|
948
959
|
const newMessages = currentHistory.slice(lastMsgCount);
|
|
949
960
|
const newMessagesEstimate = estimateMessagesTokens(newMessages);
|
|
@@ -972,7 +983,7 @@ ${prompt}`);
|
|
|
972
983
|
* Does not reset the system prompt
|
|
973
984
|
*/
|
|
974
985
|
async resetConversation() {
|
|
975
|
-
await this.
|
|
986
|
+
await this.conversationStore.clearMessages({ sessionId: this.sessionId });
|
|
976
987
|
this.resetActualTokenTracking();
|
|
977
988
|
this.logger.debug(
|
|
978
989
|
`ContextManager: Conversation history cleared for session ${this.sessionId}`
|