@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
|
@@ -22,8 +22,7 @@ __export(chat_session_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(chat_session_exports);
|
|
24
24
|
var import_crypto = require("crypto");
|
|
25
|
-
var import_factory = require("
|
|
26
|
-
var import_factory2 = require("../llm/services/factory.js");
|
|
25
|
+
var import_factory = require("../llm/services/factory.js");
|
|
27
26
|
var import_events = require("../events/index.js");
|
|
28
27
|
var import_types = require("../logger/v2/types.js");
|
|
29
28
|
var import_errors = require("../errors/index.js");
|
|
@@ -37,7 +36,7 @@ class ChatSession {
|
|
|
37
36
|
* Creates a new ChatSession instance.
|
|
38
37
|
*
|
|
39
38
|
* Each session creates its own isolated services:
|
|
40
|
-
* -
|
|
39
|
+
* - ConversationStore (with session-specific storage, shared across LLM switches)
|
|
41
40
|
* - LLM service (creates its own properly-typed ContextManager internally)
|
|
42
41
|
* - SessionEventBus (session-local event handling)
|
|
43
42
|
*
|
|
@@ -50,11 +49,19 @@ class ChatSession {
|
|
|
50
49
|
this.id = id;
|
|
51
50
|
this.logger = logger.createChild(import_types.DextoLogComponent.SESSION);
|
|
52
51
|
this.eventBus = new import_events.SessionEventBus();
|
|
53
|
-
this.
|
|
52
|
+
this.steerQueue = new import_message_queue.MessageQueueService(
|
|
54
53
|
this.eventBus,
|
|
55
54
|
this.logger,
|
|
56
55
|
this.id,
|
|
57
|
-
this.services.
|
|
56
|
+
this.services.steerQueueStore,
|
|
57
|
+
"steer"
|
|
58
|
+
);
|
|
59
|
+
this.followUpQueue = new import_message_queue.MessageQueueService(
|
|
60
|
+
this.eventBus,
|
|
61
|
+
this.logger,
|
|
62
|
+
this.id,
|
|
63
|
+
this.services.followUpQueueStore,
|
|
64
|
+
"follow-up"
|
|
58
65
|
);
|
|
59
66
|
this.setupTokenAccumulation();
|
|
60
67
|
this.logger.debug(`ChatSession ${this.id}: Created, awaiting initialization`);
|
|
@@ -72,10 +79,10 @@ class ChatSession {
|
|
|
72
79
|
*/
|
|
73
80
|
eventBus;
|
|
74
81
|
/**
|
|
75
|
-
*
|
|
82
|
+
* Store that persists conversation messages.
|
|
76
83
|
* Shared across LLM switches to maintain conversation continuity.
|
|
77
84
|
*/
|
|
78
|
-
|
|
85
|
+
conversationStore;
|
|
79
86
|
/**
|
|
80
87
|
* Handles AI model interactions, tool execution, and response generation for this session.
|
|
81
88
|
*
|
|
@@ -84,10 +91,11 @@ class ChatSession {
|
|
|
84
91
|
*/
|
|
85
92
|
llmService;
|
|
86
93
|
/**
|
|
87
|
-
* Durable queued
|
|
88
|
-
* Reused across LLM switches so mid-task follow-
|
|
94
|
+
* Durable queued user input for this session.
|
|
95
|
+
* Reused across LLM switches so mid-task steer/follow-up input survives service recreation.
|
|
89
96
|
*/
|
|
90
|
-
|
|
97
|
+
steerQueue;
|
|
98
|
+
followUpQueue;
|
|
91
99
|
activeForwarderCleanup = null;
|
|
92
100
|
/**
|
|
93
101
|
* Token accumulator listener for cleanup.
|
|
@@ -128,9 +136,10 @@ class ChatSession {
|
|
|
128
136
|
setupTokenAccumulation() {
|
|
129
137
|
this.tokenAccumulatorListener = (payload) => {
|
|
130
138
|
if (payload.tokenUsage) {
|
|
139
|
+
const tokenUsage = (0, import_usage_metadata.normalizeTokenUsageForAccounting)(payload.tokenUsage);
|
|
131
140
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
132
141
|
const isChatGPTLogin = llmConfig.provider === "openai-compatible" && (0, import_codex_base_url.parseCodexBaseURL)(llmConfig.baseURL)?.authMode === "chatgpt";
|
|
133
|
-
const hasMeaningfulUsage = (0, import_usage_metadata.hasMeaningfulTokenUsage)(
|
|
142
|
+
const hasMeaningfulUsage = (0, import_usage_metadata.hasMeaningfulTokenUsage)(tokenUsage);
|
|
134
143
|
if (isChatGPTLogin && !hasMeaningfulUsage) {
|
|
135
144
|
this.services.sessionManager.markUntrackedChatGPTLoginUsage(this.id).catch((err) => {
|
|
136
145
|
this.logger.warn(
|
|
@@ -146,11 +155,11 @@ class ChatSession {
|
|
|
146
155
|
const pricingMetadata = (0, import_usage_metadata.getUsagePricingMetadata)({
|
|
147
156
|
provider: modelInfo.provider,
|
|
148
157
|
model: modelInfo.model,
|
|
149
|
-
tokenUsage
|
|
158
|
+
tokenUsage
|
|
150
159
|
});
|
|
151
160
|
this.services.sessionManager.accumulateTokenUsage(
|
|
152
161
|
this.id,
|
|
153
|
-
|
|
162
|
+
tokenUsage,
|
|
154
163
|
payload.estimatedCost ?? pricingMetadata.estimatedCost,
|
|
155
164
|
modelInfo
|
|
156
165
|
).catch((err) => {
|
|
@@ -168,12 +177,9 @@ class ChatSession {
|
|
|
168
177
|
async initializeServices() {
|
|
169
178
|
const runtimeConfig = this.services.stateManager.getRuntimeConfig(this.id);
|
|
170
179
|
const llmConfig = runtimeConfig.llm;
|
|
171
|
-
await this.
|
|
172
|
-
this.
|
|
173
|
-
|
|
174
|
-
this.id,
|
|
175
|
-
this.logger
|
|
176
|
-
);
|
|
180
|
+
await this.steerQueue.initialize();
|
|
181
|
+
await this.followUpQueue.initialize();
|
|
182
|
+
this.conversationStore = this.services.conversationStore;
|
|
177
183
|
this.llmService = await this.createSessionLLMService(llmConfig, runtimeConfig.usageScopeId);
|
|
178
184
|
this.logger.debug(`ChatSession ${this.id}: Services initialized with storage`);
|
|
179
185
|
}
|
|
@@ -183,13 +189,14 @@ class ChatSession {
|
|
|
183
189
|
usageScopeId,
|
|
184
190
|
compactionStrategy: this.services.compactionStrategy,
|
|
185
191
|
...workspace?.path !== void 0 && { cwd: workspace.path },
|
|
186
|
-
|
|
192
|
+
steerQueue: this.steerQueue,
|
|
193
|
+
followUpQueue: this.followUpQueue
|
|
187
194
|
};
|
|
188
|
-
return (0,
|
|
195
|
+
return (0, import_factory.createLLMService)(
|
|
189
196
|
llmConfig,
|
|
190
197
|
this.services.toolManager,
|
|
191
198
|
this.services.systemPromptManager,
|
|
192
|
-
this.
|
|
199
|
+
this.conversationStore,
|
|
193
200
|
this.eventBus,
|
|
194
201
|
this.id,
|
|
195
202
|
this.services.resourceManager,
|
|
@@ -224,8 +231,8 @@ class ChatSession {
|
|
|
224
231
|
timestamp: timestamp + 1,
|
|
225
232
|
content: [{ type: "text", text: errorContent }]
|
|
226
233
|
};
|
|
227
|
-
await this.
|
|
228
|
-
await this.
|
|
234
|
+
await this.conversationStore.saveMessage({ sessionId: this.id, message: userMessage });
|
|
235
|
+
await this.conversationStore.saveMessage({ sessionId: this.id, message: assistantMessage });
|
|
229
236
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
230
237
|
this.eventBus.emit("llm:response", {
|
|
231
238
|
content: errorContent,
|
|
@@ -234,6 +241,83 @@ class ChatSession {
|
|
|
234
241
|
...assistantMessage.id && { messageId: assistantMessage.id }
|
|
235
242
|
});
|
|
236
243
|
}
|
|
244
|
+
normalizeContent(content) {
|
|
245
|
+
return typeof content === "string" ? [{ type: "text", text: content }] : content;
|
|
246
|
+
}
|
|
247
|
+
async prepareTurnInput(content, signal, runContext) {
|
|
248
|
+
const parts = this.normalizeContent(content);
|
|
249
|
+
const textParts = parts.filter(
|
|
250
|
+
(p) => p.type === "text"
|
|
251
|
+
);
|
|
252
|
+
const imageParts = parts.filter((p) => p.type === "image");
|
|
253
|
+
const fileParts = parts.filter((p) => p.type === "file");
|
|
254
|
+
this.logger.debug(
|
|
255
|
+
`Streaming session ${this.id} | textParts=${textParts.length} | images=${imageParts.length} | files=${fileParts.length}`
|
|
256
|
+
);
|
|
257
|
+
const textContent = textParts.map((p) => p.text).join("\n");
|
|
258
|
+
const firstImage = imageParts[0];
|
|
259
|
+
const firstFile = fileParts[0];
|
|
260
|
+
const beforeLLMPayload = {
|
|
261
|
+
text: textContent,
|
|
262
|
+
...firstImage && {
|
|
263
|
+
imageData: {
|
|
264
|
+
image: typeof firstImage.image === "string" ? firstImage.image : "[binary]",
|
|
265
|
+
mimeType: firstImage.mimeType || "image/jpeg"
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
...firstFile && {
|
|
269
|
+
fileData: {
|
|
270
|
+
data: typeof firstFile.data === "string" ? firstFile.data : "[binary]",
|
|
271
|
+
mimeType: firstFile.mimeType,
|
|
272
|
+
...firstFile.filename && { filename: firstFile.filename }
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
sessionId: this.id
|
|
276
|
+
};
|
|
277
|
+
const modifiedBeforePayload = await this.services.hookManager.executeHooks(
|
|
278
|
+
"beforeLLMRequest",
|
|
279
|
+
beforeLLMPayload,
|
|
280
|
+
{
|
|
281
|
+
sessionManager: this.services.sessionManager,
|
|
282
|
+
mcpManager: this.services.mcpManager,
|
|
283
|
+
toolManager: this.services.toolManager,
|
|
284
|
+
stateManager: this.services.stateManager,
|
|
285
|
+
...runContext !== void 0 && { runContext },
|
|
286
|
+
sessionId: this.id,
|
|
287
|
+
abortSignal: signal
|
|
288
|
+
}
|
|
289
|
+
);
|
|
290
|
+
if (modifiedBeforePayload.text === textContent || textParts.length === 0) {
|
|
291
|
+
return parts;
|
|
292
|
+
}
|
|
293
|
+
return [
|
|
294
|
+
{ type: "text", text: modifiedBeforePayload.text },
|
|
295
|
+
...parts.filter((p) => p.type !== "text")
|
|
296
|
+
];
|
|
297
|
+
}
|
|
298
|
+
async applyBeforeResponseHooks(content, signal, runContext) {
|
|
299
|
+
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
300
|
+
const beforeResponsePayload = {
|
|
301
|
+
content,
|
|
302
|
+
provider: llmConfig.provider,
|
|
303
|
+
model: llmConfig.model,
|
|
304
|
+
sessionId: this.id
|
|
305
|
+
};
|
|
306
|
+
const modifiedResponsePayload = await this.services.hookManager.executeHooks(
|
|
307
|
+
"beforeResponse",
|
|
308
|
+
beforeResponsePayload,
|
|
309
|
+
{
|
|
310
|
+
sessionManager: this.services.sessionManager,
|
|
311
|
+
mcpManager: this.services.mcpManager,
|
|
312
|
+
toolManager: this.services.toolManager,
|
|
313
|
+
stateManager: this.services.stateManager,
|
|
314
|
+
...runContext !== void 0 && { runContext },
|
|
315
|
+
sessionId: this.id,
|
|
316
|
+
abortSignal: signal
|
|
317
|
+
}
|
|
318
|
+
);
|
|
319
|
+
return modifiedResponsePayload.content;
|
|
320
|
+
}
|
|
237
321
|
/**
|
|
238
322
|
* Stream a response for the given content.
|
|
239
323
|
* Primary method for running conversations with multi-image support.
|
|
@@ -256,15 +340,7 @@ class ChatSession {
|
|
|
256
340
|
* ```
|
|
257
341
|
*/
|
|
258
342
|
async stream(content, options) {
|
|
259
|
-
const parts =
|
|
260
|
-
const textParts = parts.filter(
|
|
261
|
-
(p) => p.type === "text"
|
|
262
|
-
);
|
|
263
|
-
const imageParts = parts.filter((p) => p.type === "image");
|
|
264
|
-
const fileParts = parts.filter((p) => p.type === "file");
|
|
265
|
-
this.logger.debug(
|
|
266
|
-
`Streaming session ${this.id} | textParts=${textParts.length} | images=${imageParts.length} | files=${fileParts.length}`
|
|
267
|
-
);
|
|
343
|
+
const parts = this.normalizeContent(content);
|
|
268
344
|
if (this.isBusy()) {
|
|
269
345
|
throw import_errors2.SessionError.busy(this.id);
|
|
270
346
|
}
|
|
@@ -272,70 +348,17 @@ class ChatSession {
|
|
|
272
348
|
const signal = options?.signal ? this.combineSignals(options.signal, this.currentRunController.signal) : this.currentRunController.signal;
|
|
273
349
|
const detachForwarders = this.attachRunEventForwarders(options?.runContext);
|
|
274
350
|
try {
|
|
275
|
-
const
|
|
276
|
-
const firstImage = imageParts[0];
|
|
277
|
-
const firstFile = fileParts[0];
|
|
278
|
-
const beforeLLMPayload = {
|
|
279
|
-
text: textContent,
|
|
280
|
-
...firstImage && {
|
|
281
|
-
imageData: {
|
|
282
|
-
image: typeof firstImage.image === "string" ? firstImage.image : "[binary]",
|
|
283
|
-
mimeType: firstImage.mimeType || "image/jpeg"
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
|
-
...firstFile && {
|
|
287
|
-
fileData: {
|
|
288
|
-
data: typeof firstFile.data === "string" ? firstFile.data : "[binary]",
|
|
289
|
-
mimeType: firstFile.mimeType,
|
|
290
|
-
...firstFile.filename && { filename: firstFile.filename }
|
|
291
|
-
}
|
|
292
|
-
},
|
|
293
|
-
sessionId: this.id
|
|
294
|
-
};
|
|
295
|
-
const modifiedBeforePayload = await this.services.hookManager.executeHooks(
|
|
296
|
-
"beforeLLMRequest",
|
|
297
|
-
beforeLLMPayload,
|
|
298
|
-
{
|
|
299
|
-
sessionManager: this.services.sessionManager,
|
|
300
|
-
mcpManager: this.services.mcpManager,
|
|
301
|
-
toolManager: this.services.toolManager,
|
|
302
|
-
stateManager: this.services.stateManager,
|
|
303
|
-
...options?.runContext !== void 0 && { runContext: options.runContext },
|
|
304
|
-
sessionId: this.id,
|
|
305
|
-
abortSignal: signal
|
|
306
|
-
}
|
|
307
|
-
);
|
|
308
|
-
let modifiedParts = [...parts];
|
|
309
|
-
if (modifiedBeforePayload.text !== textContent && textParts.length > 0) {
|
|
310
|
-
modifiedParts = modifiedParts.filter((p) => p.type !== "text");
|
|
311
|
-
modifiedParts.unshift({ type: "text", text: modifiedBeforePayload.text });
|
|
312
|
-
}
|
|
351
|
+
const modifiedParts = await this.prepareTurnInput(content, signal, options?.runContext);
|
|
313
352
|
const streamResult = await this.llmService.stream(modifiedParts, {
|
|
314
353
|
signal,
|
|
315
354
|
...options?.runContext !== void 0 && { runContext: options.runContext }
|
|
316
355
|
});
|
|
317
|
-
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
318
|
-
const beforeResponsePayload = {
|
|
319
|
-
content: streamResult.text,
|
|
320
|
-
provider: llmConfig.provider,
|
|
321
|
-
model: llmConfig.model,
|
|
322
|
-
sessionId: this.id
|
|
323
|
-
};
|
|
324
|
-
const modifiedResponsePayload = await this.services.hookManager.executeHooks(
|
|
325
|
-
"beforeResponse",
|
|
326
|
-
beforeResponsePayload,
|
|
327
|
-
{
|
|
328
|
-
sessionManager: this.services.sessionManager,
|
|
329
|
-
mcpManager: this.services.mcpManager,
|
|
330
|
-
toolManager: this.services.toolManager,
|
|
331
|
-
stateManager: this.services.stateManager,
|
|
332
|
-
...options?.runContext !== void 0 && { runContext: options.runContext },
|
|
333
|
-
sessionId: this.id,
|
|
334
|
-
abortSignal: signal
|
|
335
|
-
}
|
|
336
|
-
);
|
|
337
356
|
return {
|
|
338
|
-
text:
|
|
357
|
+
text: await this.applyBeforeResponseHooks(
|
|
358
|
+
streamResult.text,
|
|
359
|
+
signal,
|
|
360
|
+
options?.runContext
|
|
361
|
+
)
|
|
339
362
|
};
|
|
340
363
|
} catch (error) {
|
|
341
364
|
const aborted = error instanceof Error && error.name === "AbortError" || typeof error === "object" && error !== null && error.aborted === true;
|
|
@@ -389,6 +412,94 @@ class ChatSession {
|
|
|
389
412
|
this.currentRunController = null;
|
|
390
413
|
}
|
|
391
414
|
}
|
|
415
|
+
async createTurnDriver(input) {
|
|
416
|
+
if (this.isBusy()) {
|
|
417
|
+
throw import_errors2.SessionError.busy(this.id);
|
|
418
|
+
}
|
|
419
|
+
this.currentRunController = new AbortController();
|
|
420
|
+
const signal = input.signal ? this.combineSignals(input.signal, this.currentRunController.signal) : this.currentRunController.signal;
|
|
421
|
+
const detachForwarders = this.attachRunEventForwarders(input.runContext);
|
|
422
|
+
try {
|
|
423
|
+
if (input.kind === "start") {
|
|
424
|
+
const modifiedParts = await this.prepareTurnInput(
|
|
425
|
+
input.content,
|
|
426
|
+
signal,
|
|
427
|
+
input.runContext
|
|
428
|
+
);
|
|
429
|
+
await this.llmService.getContextManager().addUserMessage(modifiedParts);
|
|
430
|
+
}
|
|
431
|
+
const driver = await this.llmService.createTurnDriver({
|
|
432
|
+
signal,
|
|
433
|
+
streaming: input.streaming ?? true,
|
|
434
|
+
...input.runContext !== void 0 && { runContext: input.runContext },
|
|
435
|
+
...input.kind === "resume" ? { state: input.state } : {}
|
|
436
|
+
});
|
|
437
|
+
return this.wrapTurnDriver(driver, signal, input.runContext, detachForwarders);
|
|
438
|
+
} catch (error) {
|
|
439
|
+
if (input.kind === "start" && error instanceof import_errors.DextoRuntimeError && error.code === import_error_codes.HookErrorCode.HOOK_BLOCKED_EXECUTION && error.scope === import_errors.ErrorScope.HOOK && error.type === import_errors.ErrorType.FORBIDDEN) {
|
|
440
|
+
const textContent = this.normalizeContent(input.content).filter((p) => p.type === "text").map((p) => p.text).join("\n");
|
|
441
|
+
await this.saveBlockedInteraction(textContent, error.message);
|
|
442
|
+
}
|
|
443
|
+
detachForwarders();
|
|
444
|
+
this.currentRunController = null;
|
|
445
|
+
throw error;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
wrapTurnDriver(driver, signal, runContext, detachForwarders) {
|
|
449
|
+
let closed = false;
|
|
450
|
+
const close = () => {
|
|
451
|
+
if (closed) {
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
closed = true;
|
|
455
|
+
detachForwarders();
|
|
456
|
+
this.currentRunController = null;
|
|
457
|
+
};
|
|
458
|
+
return {
|
|
459
|
+
prepareNextModelStep: () => driver.prepareNextModelStep(),
|
|
460
|
+
runNextModelStep: () => driver.runNextModelStep(),
|
|
461
|
+
executeToolCalls: () => driver.executeToolCalls(),
|
|
462
|
+
decideNextStep: () => driver.decideNextStep(),
|
|
463
|
+
finish: async () => {
|
|
464
|
+
try {
|
|
465
|
+
const result = await driver.finish();
|
|
466
|
+
return {
|
|
467
|
+
...result,
|
|
468
|
+
text: await this.applyBeforeResponseHooks(result.text, signal, runContext)
|
|
469
|
+
};
|
|
470
|
+
} finally {
|
|
471
|
+
driver.dispose();
|
|
472
|
+
close();
|
|
473
|
+
}
|
|
474
|
+
},
|
|
475
|
+
fail: async (error) => {
|
|
476
|
+
try {
|
|
477
|
+
return await driver.fail(error);
|
|
478
|
+
} finally {
|
|
479
|
+
driver.dispose();
|
|
480
|
+
close();
|
|
481
|
+
}
|
|
482
|
+
},
|
|
483
|
+
getState: () => driver.getState(),
|
|
484
|
+
checkpoint: () => {
|
|
485
|
+
try {
|
|
486
|
+
return driver.checkpoint();
|
|
487
|
+
} finally {
|
|
488
|
+
close();
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
dispose: () => {
|
|
492
|
+
if (closed) {
|
|
493
|
+
return;
|
|
494
|
+
}
|
|
495
|
+
try {
|
|
496
|
+
driver.dispose();
|
|
497
|
+
} finally {
|
|
498
|
+
close();
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
};
|
|
502
|
+
}
|
|
392
503
|
/**
|
|
393
504
|
* Combine multiple abort signals into one.
|
|
394
505
|
*/
|
|
@@ -424,7 +535,7 @@ class ChatSession {
|
|
|
424
535
|
* ```
|
|
425
536
|
*/
|
|
426
537
|
async getHistory() {
|
|
427
|
-
return await this.
|
|
538
|
+
return await this.conversationStore.listMessages({ sessionId: this.id });
|
|
428
539
|
}
|
|
429
540
|
/**
|
|
430
541
|
* Reset the conversation history for this session.
|
|
@@ -552,40 +663,85 @@ class ChatSession {
|
|
|
552
663
|
return this.currentRunController !== null && !this.currentRunController.signal.aborted;
|
|
553
664
|
}
|
|
554
665
|
/**
|
|
555
|
-
* Queue a message
|
|
556
|
-
* The message
|
|
666
|
+
* Queue a message as active-turn steer input.
|
|
667
|
+
* The message is injected at the next executor boundary while the current turn is active.
|
|
668
|
+
*
|
|
669
|
+
* @param message The user message to use as steer input
|
|
670
|
+
* @returns Queue position and message ID
|
|
671
|
+
*/
|
|
672
|
+
async steer(message) {
|
|
673
|
+
return await this.llmService.getSteerQueue().enqueue(message);
|
|
674
|
+
}
|
|
675
|
+
/**
|
|
676
|
+
* Queue a follow-up message for processing after the current turn naturally completes.
|
|
557
677
|
*
|
|
558
|
-
* @param message The user message to queue
|
|
678
|
+
* @param message The user message to queue as follow-up work
|
|
559
679
|
* @returns Queue position and message ID
|
|
560
680
|
*/
|
|
561
|
-
async
|
|
562
|
-
return await this.llmService.
|
|
681
|
+
async followUp(message) {
|
|
682
|
+
return await this.llmService.getFollowUpQueue().enqueue(message);
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Get all steer messages currently queued.
|
|
686
|
+
* @returns Array of steer messages
|
|
687
|
+
*/
|
|
688
|
+
getSteerMessages() {
|
|
689
|
+
return this.llmService.getSteerQueue().getAll();
|
|
690
|
+
}
|
|
691
|
+
/**
|
|
692
|
+
* Get all follow-up messages currently queued.
|
|
693
|
+
* @returns Array of follow-up messages
|
|
694
|
+
*/
|
|
695
|
+
getFollowUpMessages() {
|
|
696
|
+
return this.llmService.getFollowUpQueue().getAll();
|
|
563
697
|
}
|
|
564
698
|
/**
|
|
565
|
-
*
|
|
566
|
-
* @
|
|
699
|
+
* Remove a steer message.
|
|
700
|
+
* @param id Message ID to remove
|
|
701
|
+
* @returns true if message was found and removed; false otherwise
|
|
567
702
|
*/
|
|
568
|
-
|
|
569
|
-
return this.llmService.
|
|
703
|
+
async removeSteerMessage(id) {
|
|
704
|
+
return await this.llmService.getSteerQueue().remove(id);
|
|
570
705
|
}
|
|
571
706
|
/**
|
|
572
|
-
* Remove a
|
|
707
|
+
* Remove a follow-up message.
|
|
573
708
|
* @param id Message ID to remove
|
|
574
709
|
* @returns true if message was found and removed; false otherwise
|
|
575
710
|
*/
|
|
576
|
-
async
|
|
577
|
-
return await this.llmService.
|
|
711
|
+
async removeFollowUpMessage(id) {
|
|
712
|
+
return await this.llmService.getFollowUpQueue().remove(id);
|
|
578
713
|
}
|
|
579
714
|
/**
|
|
580
|
-
* Clear all
|
|
715
|
+
* Clear all steer messages.
|
|
581
716
|
* @returns Number of messages that were cleared
|
|
582
717
|
*/
|
|
583
|
-
async
|
|
584
|
-
const queue = this.llmService.
|
|
718
|
+
async clearSteerQueue() {
|
|
719
|
+
const queue = this.llmService.getSteerQueue();
|
|
585
720
|
const count = queue.pendingCount();
|
|
586
721
|
await queue.clear();
|
|
587
722
|
return count;
|
|
588
723
|
}
|
|
724
|
+
/**
|
|
725
|
+
* Clear all follow-up messages.
|
|
726
|
+
* @returns Number of messages that were cleared
|
|
727
|
+
*/
|
|
728
|
+
async clearFollowUpQueue() {
|
|
729
|
+
const queue = this.llmService.getFollowUpQueue();
|
|
730
|
+
const count = queue.pendingCount();
|
|
731
|
+
await queue.clear();
|
|
732
|
+
return count;
|
|
733
|
+
}
|
|
734
|
+
/**
|
|
735
|
+
* Clear all pending steer and follow-up input for this session.
|
|
736
|
+
* @returns Number of messages that were cleared
|
|
737
|
+
*/
|
|
738
|
+
async clearPendingInput() {
|
|
739
|
+
const [steerCount, followUpCount] = await Promise.all([
|
|
740
|
+
this.clearSteerQueue(),
|
|
741
|
+
this.clearFollowUpQueue()
|
|
742
|
+
]);
|
|
743
|
+
return steerCount + followUpCount;
|
|
744
|
+
}
|
|
589
745
|
/**
|
|
590
746
|
* Cancel the currently running turn for this session, if any.
|
|
591
747
|
* Returns true if a run was in progress and was signaled to abort.
|