@dexto/core 1.7.2 → 1.8.0
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 +157 -62
- package/dist/agent/DextoAgent.d.ts +71 -17
- package/dist/agent/DextoAgent.d.ts.map +1 -1
- package/dist/agent/DextoAgent.js +161 -63
- 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/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.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 +44 -33
- package/dist/context/manager.d.ts +7 -7
- package/dist/context/manager.d.ts.map +1 -1
- package/dist/context/manager.js +45 -34
- 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.js +1 -1
- package/dist/context/utils.cjs +70 -69
- package/dist/context/utils.d.ts +3 -3
- package/dist/context/utils.d.ts.map +1 -1
- package/dist/context/utils.js +71 -70
- 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 +20 -8
- 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.js +1 -1
- 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.js +1 -1
- package/dist/llm/curation.js +1 -1
- package/dist/llm/error-codes.js +1 -1
- package/dist/llm/errors.js +1 -1
- package/dist/llm/executor/index.cjs +32 -0
- 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.js +1 -1
- package/dist/llm/executor/stream-processor.cjs +28 -139
- package/dist/llm/executor/stream-processor.d.ts +2 -13
- package/dist/llm/executor/stream-processor.d.ts.map +1 -1
- package/dist/llm/executor/stream-processor.js +29 -140
- package/dist/{session/history/memory.cjs → llm/executor/tool-definitions.cjs} +21 -33
- 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 +6 -0
- package/dist/llm/executor/types.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +1 -1
- package/dist/llm/index.cjs +2 -0
- package/dist/llm/index.d.ts +1 -0
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +2 -1
- 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/reasoning/anthropic-betas.js +1 -1
- package/dist/llm/reasoning/anthropic-thinking.js +1 -1
- package/dist/llm/reasoning/openai-reasoning-effort.js +1 -1
- package/dist/llm/reasoning/profile.js +1 -1
- package/dist/llm/reasoning/profiles/anthropic.js +1 -1
- package/dist/llm/reasoning/profiles/bedrock.js +1 -1
- package/dist/llm/reasoning/profiles/google.js +1 -1
- package/dist/llm/reasoning/profiles/openai-compatible.js +1 -1
- package/dist/llm/reasoning/profiles/openai.js +1 -1
- package/dist/llm/reasoning/profiles/openrouter.js +1 -1
- package/dist/llm/reasoning/profiles/shared.js +1 -1
- package/dist/llm/reasoning/profiles/vertex.js +1 -1
- package/dist/llm/registry/auto-update.js +1 -1
- package/dist/llm/registry/index.js +1 -1
- package/dist/llm/registry/models.generated.js +1 -1
- package/dist/llm/registry/models.manual.js +1 -1
- package/dist/llm/registry/sync.js +1 -1
- package/dist/llm/resolver.js +1 -1
- package/dist/llm/schemas.js +1 -1
- package/dist/llm/services/factory.cjs +5 -4
- 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 +6 -5
- package/dist/llm/services/types.d.ts +10 -1
- 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/types.js +1 -1
- package/dist/llm/usage-metadata.cjs +20 -3
- package/dist/llm/usage-metadata.d.ts +1 -0
- package/dist/llm/usage-metadata.d.ts.map +1 -1
- package/dist/llm/usage-metadata.js +19 -3
- package/dist/llm/usage-scope.js +1 -1
- package/dist/llm/usage-summary.js +1 -1
- package/dist/llm/validation.js +1 -1
- 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 +7 -6
- 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/storage/approvals/types.cjs +38 -0
- 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.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 +114 -2
- 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/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.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
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
2
2
|
import { randomUUID } from "crypto";
|
|
3
|
-
import { createDatabaseHistoryProvider } from "./history/factory.js";
|
|
4
3
|
import { createLLMService } from "../llm/services/factory.js";
|
|
5
4
|
import {
|
|
6
5
|
SessionEventBus,
|
|
@@ -10,7 +9,11 @@ import { DextoLogComponent } from "../logger/v2/types.js";
|
|
|
10
9
|
import { DextoRuntimeError, ErrorScope, ErrorType } from "../errors/index.js";
|
|
11
10
|
import { HookErrorCode } from "../hooks/error-codes.js";
|
|
12
11
|
import { MessageQueueService } from "./message-queue.js";
|
|
13
|
-
import {
|
|
12
|
+
import {
|
|
13
|
+
getUsagePricingMetadata,
|
|
14
|
+
hasMeaningfulTokenUsage,
|
|
15
|
+
normalizeTokenUsageForAccounting
|
|
16
|
+
} from "../llm/usage-metadata.js";
|
|
14
17
|
import { parseCodexBaseURL } from "../llm/providers/codex-base-url.js";
|
|
15
18
|
import { SessionError } from "./errors.js";
|
|
16
19
|
class ChatSession {
|
|
@@ -18,7 +21,7 @@ class ChatSession {
|
|
|
18
21
|
* Creates a new ChatSession instance.
|
|
19
22
|
*
|
|
20
23
|
* Each session creates its own isolated services:
|
|
21
|
-
* -
|
|
24
|
+
* - ConversationStore (with session-specific storage, shared across LLM switches)
|
|
22
25
|
* - LLM service (creates its own properly-typed ContextManager internally)
|
|
23
26
|
* - SessionEventBus (session-local event handling)
|
|
24
27
|
*
|
|
@@ -31,11 +34,19 @@ class ChatSession {
|
|
|
31
34
|
this.id = id;
|
|
32
35
|
this.logger = logger.createChild(DextoLogComponent.SESSION);
|
|
33
36
|
this.eventBus = new SessionEventBus();
|
|
34
|
-
this.
|
|
37
|
+
this.steerQueue = new MessageQueueService(
|
|
35
38
|
this.eventBus,
|
|
36
39
|
this.logger,
|
|
37
40
|
this.id,
|
|
38
|
-
this.services.
|
|
41
|
+
this.services.steerQueueStore,
|
|
42
|
+
"steer"
|
|
43
|
+
);
|
|
44
|
+
this.followUpQueue = new MessageQueueService(
|
|
45
|
+
this.eventBus,
|
|
46
|
+
this.logger,
|
|
47
|
+
this.id,
|
|
48
|
+
this.services.followUpQueueStore,
|
|
49
|
+
"follow-up"
|
|
39
50
|
);
|
|
40
51
|
this.setupTokenAccumulation();
|
|
41
52
|
this.logger.debug(`ChatSession ${this.id}: Created, awaiting initialization`);
|
|
@@ -53,10 +64,10 @@ class ChatSession {
|
|
|
53
64
|
*/
|
|
54
65
|
eventBus;
|
|
55
66
|
/**
|
|
56
|
-
*
|
|
67
|
+
* Store that persists conversation messages.
|
|
57
68
|
* Shared across LLM switches to maintain conversation continuity.
|
|
58
69
|
*/
|
|
59
|
-
|
|
70
|
+
conversationStore;
|
|
60
71
|
/**
|
|
61
72
|
* Handles AI model interactions, tool execution, and response generation for this session.
|
|
62
73
|
*
|
|
@@ -65,10 +76,11 @@ class ChatSession {
|
|
|
65
76
|
*/
|
|
66
77
|
llmService;
|
|
67
78
|
/**
|
|
68
|
-
* Durable queued
|
|
69
|
-
* Reused across LLM switches so mid-task follow-
|
|
79
|
+
* Durable queued user input for this session.
|
|
80
|
+
* Reused across LLM switches so mid-task steer/follow-up input survives service recreation.
|
|
70
81
|
*/
|
|
71
|
-
|
|
82
|
+
steerQueue;
|
|
83
|
+
followUpQueue;
|
|
72
84
|
activeForwarderCleanup = null;
|
|
73
85
|
/**
|
|
74
86
|
* Token accumulator listener for cleanup.
|
|
@@ -109,9 +121,10 @@ class ChatSession {
|
|
|
109
121
|
setupTokenAccumulation() {
|
|
110
122
|
this.tokenAccumulatorListener = (payload) => {
|
|
111
123
|
if (payload.tokenUsage) {
|
|
124
|
+
const tokenUsage = normalizeTokenUsageForAccounting(payload.tokenUsage);
|
|
112
125
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
113
126
|
const isChatGPTLogin = llmConfig.provider === "openai-compatible" && parseCodexBaseURL(llmConfig.baseURL)?.authMode === "chatgpt";
|
|
114
|
-
const hasMeaningfulUsage = hasMeaningfulTokenUsage(
|
|
127
|
+
const hasMeaningfulUsage = hasMeaningfulTokenUsage(tokenUsage);
|
|
115
128
|
if (isChatGPTLogin && !hasMeaningfulUsage) {
|
|
116
129
|
this.services.sessionManager.markUntrackedChatGPTLoginUsage(this.id).catch((err) => {
|
|
117
130
|
this.logger.warn(
|
|
@@ -127,11 +140,11 @@ class ChatSession {
|
|
|
127
140
|
const pricingMetadata = getUsagePricingMetadata({
|
|
128
141
|
provider: modelInfo.provider,
|
|
129
142
|
model: modelInfo.model,
|
|
130
|
-
tokenUsage
|
|
143
|
+
tokenUsage
|
|
131
144
|
});
|
|
132
145
|
this.services.sessionManager.accumulateTokenUsage(
|
|
133
146
|
this.id,
|
|
134
|
-
|
|
147
|
+
tokenUsage,
|
|
135
148
|
payload.estimatedCost ?? pricingMetadata.estimatedCost,
|
|
136
149
|
modelInfo
|
|
137
150
|
).catch((err) => {
|
|
@@ -149,12 +162,9 @@ class ChatSession {
|
|
|
149
162
|
async initializeServices() {
|
|
150
163
|
const runtimeConfig = this.services.stateManager.getRuntimeConfig(this.id);
|
|
151
164
|
const llmConfig = runtimeConfig.llm;
|
|
152
|
-
await this.
|
|
153
|
-
this.
|
|
154
|
-
|
|
155
|
-
this.id,
|
|
156
|
-
this.logger
|
|
157
|
-
);
|
|
165
|
+
await this.steerQueue.initialize();
|
|
166
|
+
await this.followUpQueue.initialize();
|
|
167
|
+
this.conversationStore = this.services.conversationStore;
|
|
158
168
|
this.llmService = await this.createSessionLLMService(llmConfig, runtimeConfig.usageScopeId);
|
|
159
169
|
this.logger.debug(`ChatSession ${this.id}: Services initialized with storage`);
|
|
160
170
|
}
|
|
@@ -164,13 +174,14 @@ class ChatSession {
|
|
|
164
174
|
usageScopeId,
|
|
165
175
|
compactionStrategy: this.services.compactionStrategy,
|
|
166
176
|
...workspace?.path !== void 0 && { cwd: workspace.path },
|
|
167
|
-
|
|
177
|
+
steerQueue: this.steerQueue,
|
|
178
|
+
followUpQueue: this.followUpQueue
|
|
168
179
|
};
|
|
169
180
|
return createLLMService(
|
|
170
181
|
llmConfig,
|
|
171
182
|
this.services.toolManager,
|
|
172
183
|
this.services.systemPromptManager,
|
|
173
|
-
this.
|
|
184
|
+
this.conversationStore,
|
|
174
185
|
this.eventBus,
|
|
175
186
|
this.id,
|
|
176
187
|
this.services.resourceManager,
|
|
@@ -205,8 +216,8 @@ class ChatSession {
|
|
|
205
216
|
timestamp: timestamp + 1,
|
|
206
217
|
content: [{ type: "text", text: errorContent }]
|
|
207
218
|
};
|
|
208
|
-
await this.
|
|
209
|
-
await this.
|
|
219
|
+
await this.conversationStore.saveMessage({ sessionId: this.id, message: userMessage });
|
|
220
|
+
await this.conversationStore.saveMessage({ sessionId: this.id, message: assistantMessage });
|
|
210
221
|
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
211
222
|
this.eventBus.emit("llm:response", {
|
|
212
223
|
content: errorContent,
|
|
@@ -215,6 +226,83 @@ class ChatSession {
|
|
|
215
226
|
...assistantMessage.id && { messageId: assistantMessage.id }
|
|
216
227
|
});
|
|
217
228
|
}
|
|
229
|
+
normalizeContent(content) {
|
|
230
|
+
return typeof content === "string" ? [{ type: "text", text: content }] : content;
|
|
231
|
+
}
|
|
232
|
+
async prepareTurnInput(content, signal, runContext) {
|
|
233
|
+
const parts = this.normalizeContent(content);
|
|
234
|
+
const textParts = parts.filter(
|
|
235
|
+
(p) => p.type === "text"
|
|
236
|
+
);
|
|
237
|
+
const imageParts = parts.filter((p) => p.type === "image");
|
|
238
|
+
const fileParts = parts.filter((p) => p.type === "file");
|
|
239
|
+
this.logger.debug(
|
|
240
|
+
`Streaming session ${this.id} | textParts=${textParts.length} | images=${imageParts.length} | files=${fileParts.length}`
|
|
241
|
+
);
|
|
242
|
+
const textContent = textParts.map((p) => p.text).join("\n");
|
|
243
|
+
const firstImage = imageParts[0];
|
|
244
|
+
const firstFile = fileParts[0];
|
|
245
|
+
const beforeLLMPayload = {
|
|
246
|
+
text: textContent,
|
|
247
|
+
...firstImage && {
|
|
248
|
+
imageData: {
|
|
249
|
+
image: typeof firstImage.image === "string" ? firstImage.image : "[binary]",
|
|
250
|
+
mimeType: firstImage.mimeType || "image/jpeg"
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
...firstFile && {
|
|
254
|
+
fileData: {
|
|
255
|
+
data: typeof firstFile.data === "string" ? firstFile.data : "[binary]",
|
|
256
|
+
mimeType: firstFile.mimeType,
|
|
257
|
+
...firstFile.filename && { filename: firstFile.filename }
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
sessionId: this.id
|
|
261
|
+
};
|
|
262
|
+
const modifiedBeforePayload = await this.services.hookManager.executeHooks(
|
|
263
|
+
"beforeLLMRequest",
|
|
264
|
+
beforeLLMPayload,
|
|
265
|
+
{
|
|
266
|
+
sessionManager: this.services.sessionManager,
|
|
267
|
+
mcpManager: this.services.mcpManager,
|
|
268
|
+
toolManager: this.services.toolManager,
|
|
269
|
+
stateManager: this.services.stateManager,
|
|
270
|
+
...runContext !== void 0 && { runContext },
|
|
271
|
+
sessionId: this.id,
|
|
272
|
+
abortSignal: signal
|
|
273
|
+
}
|
|
274
|
+
);
|
|
275
|
+
if (modifiedBeforePayload.text === textContent || textParts.length === 0) {
|
|
276
|
+
return parts;
|
|
277
|
+
}
|
|
278
|
+
return [
|
|
279
|
+
{ type: "text", text: modifiedBeforePayload.text },
|
|
280
|
+
...parts.filter((p) => p.type !== "text")
|
|
281
|
+
];
|
|
282
|
+
}
|
|
283
|
+
async applyBeforeResponseHooks(content, signal, runContext) {
|
|
284
|
+
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
285
|
+
const beforeResponsePayload = {
|
|
286
|
+
content,
|
|
287
|
+
provider: llmConfig.provider,
|
|
288
|
+
model: llmConfig.model,
|
|
289
|
+
sessionId: this.id
|
|
290
|
+
};
|
|
291
|
+
const modifiedResponsePayload = await this.services.hookManager.executeHooks(
|
|
292
|
+
"beforeResponse",
|
|
293
|
+
beforeResponsePayload,
|
|
294
|
+
{
|
|
295
|
+
sessionManager: this.services.sessionManager,
|
|
296
|
+
mcpManager: this.services.mcpManager,
|
|
297
|
+
toolManager: this.services.toolManager,
|
|
298
|
+
stateManager: this.services.stateManager,
|
|
299
|
+
...runContext !== void 0 && { runContext },
|
|
300
|
+
sessionId: this.id,
|
|
301
|
+
abortSignal: signal
|
|
302
|
+
}
|
|
303
|
+
);
|
|
304
|
+
return modifiedResponsePayload.content;
|
|
305
|
+
}
|
|
218
306
|
/**
|
|
219
307
|
* Stream a response for the given content.
|
|
220
308
|
* Primary method for running conversations with multi-image support.
|
|
@@ -237,15 +325,7 @@ class ChatSession {
|
|
|
237
325
|
* ```
|
|
238
326
|
*/
|
|
239
327
|
async stream(content, options) {
|
|
240
|
-
const parts =
|
|
241
|
-
const textParts = parts.filter(
|
|
242
|
-
(p) => p.type === "text"
|
|
243
|
-
);
|
|
244
|
-
const imageParts = parts.filter((p) => p.type === "image");
|
|
245
|
-
const fileParts = parts.filter((p) => p.type === "file");
|
|
246
|
-
this.logger.debug(
|
|
247
|
-
`Streaming session ${this.id} | textParts=${textParts.length} | images=${imageParts.length} | files=${fileParts.length}`
|
|
248
|
-
);
|
|
328
|
+
const parts = this.normalizeContent(content);
|
|
249
329
|
if (this.isBusy()) {
|
|
250
330
|
throw SessionError.busy(this.id);
|
|
251
331
|
}
|
|
@@ -253,70 +333,17 @@ class ChatSession {
|
|
|
253
333
|
const signal = options?.signal ? this.combineSignals(options.signal, this.currentRunController.signal) : this.currentRunController.signal;
|
|
254
334
|
const detachForwarders = this.attachRunEventForwarders(options?.runContext);
|
|
255
335
|
try {
|
|
256
|
-
const
|
|
257
|
-
const firstImage = imageParts[0];
|
|
258
|
-
const firstFile = fileParts[0];
|
|
259
|
-
const beforeLLMPayload = {
|
|
260
|
-
text: textContent,
|
|
261
|
-
...firstImage && {
|
|
262
|
-
imageData: {
|
|
263
|
-
image: typeof firstImage.image === "string" ? firstImage.image : "[binary]",
|
|
264
|
-
mimeType: firstImage.mimeType || "image/jpeg"
|
|
265
|
-
}
|
|
266
|
-
},
|
|
267
|
-
...firstFile && {
|
|
268
|
-
fileData: {
|
|
269
|
-
data: typeof firstFile.data === "string" ? firstFile.data : "[binary]",
|
|
270
|
-
mimeType: firstFile.mimeType,
|
|
271
|
-
...firstFile.filename && { filename: firstFile.filename }
|
|
272
|
-
}
|
|
273
|
-
},
|
|
274
|
-
sessionId: this.id
|
|
275
|
-
};
|
|
276
|
-
const modifiedBeforePayload = await this.services.hookManager.executeHooks(
|
|
277
|
-
"beforeLLMRequest",
|
|
278
|
-
beforeLLMPayload,
|
|
279
|
-
{
|
|
280
|
-
sessionManager: this.services.sessionManager,
|
|
281
|
-
mcpManager: this.services.mcpManager,
|
|
282
|
-
toolManager: this.services.toolManager,
|
|
283
|
-
stateManager: this.services.stateManager,
|
|
284
|
-
...options?.runContext !== void 0 && { runContext: options.runContext },
|
|
285
|
-
sessionId: this.id,
|
|
286
|
-
abortSignal: signal
|
|
287
|
-
}
|
|
288
|
-
);
|
|
289
|
-
let modifiedParts = [...parts];
|
|
290
|
-
if (modifiedBeforePayload.text !== textContent && textParts.length > 0) {
|
|
291
|
-
modifiedParts = modifiedParts.filter((p) => p.type !== "text");
|
|
292
|
-
modifiedParts.unshift({ type: "text", text: modifiedBeforePayload.text });
|
|
293
|
-
}
|
|
336
|
+
const modifiedParts = await this.prepareTurnInput(content, signal, options?.runContext);
|
|
294
337
|
const streamResult = await this.llmService.stream(modifiedParts, {
|
|
295
338
|
signal,
|
|
296
339
|
...options?.runContext !== void 0 && { runContext: options.runContext }
|
|
297
340
|
});
|
|
298
|
-
const llmConfig = this.services.stateManager.getLLMConfig(this.id);
|
|
299
|
-
const beforeResponsePayload = {
|
|
300
|
-
content: streamResult.text,
|
|
301
|
-
provider: llmConfig.provider,
|
|
302
|
-
model: llmConfig.model,
|
|
303
|
-
sessionId: this.id
|
|
304
|
-
};
|
|
305
|
-
const modifiedResponsePayload = await this.services.hookManager.executeHooks(
|
|
306
|
-
"beforeResponse",
|
|
307
|
-
beforeResponsePayload,
|
|
308
|
-
{
|
|
309
|
-
sessionManager: this.services.sessionManager,
|
|
310
|
-
mcpManager: this.services.mcpManager,
|
|
311
|
-
toolManager: this.services.toolManager,
|
|
312
|
-
stateManager: this.services.stateManager,
|
|
313
|
-
...options?.runContext !== void 0 && { runContext: options.runContext },
|
|
314
|
-
sessionId: this.id,
|
|
315
|
-
abortSignal: signal
|
|
316
|
-
}
|
|
317
|
-
);
|
|
318
341
|
return {
|
|
319
|
-
text:
|
|
342
|
+
text: await this.applyBeforeResponseHooks(
|
|
343
|
+
streamResult.text,
|
|
344
|
+
signal,
|
|
345
|
+
options?.runContext
|
|
346
|
+
)
|
|
320
347
|
};
|
|
321
348
|
} catch (error) {
|
|
322
349
|
const aborted = error instanceof Error && error.name === "AbortError" || typeof error === "object" && error !== null && error.aborted === true;
|
|
@@ -370,6 +397,94 @@ class ChatSession {
|
|
|
370
397
|
this.currentRunController = null;
|
|
371
398
|
}
|
|
372
399
|
}
|
|
400
|
+
async createTurnDriver(input) {
|
|
401
|
+
if (this.isBusy()) {
|
|
402
|
+
throw SessionError.busy(this.id);
|
|
403
|
+
}
|
|
404
|
+
this.currentRunController = new AbortController();
|
|
405
|
+
const signal = input.signal ? this.combineSignals(input.signal, this.currentRunController.signal) : this.currentRunController.signal;
|
|
406
|
+
const detachForwarders = this.attachRunEventForwarders(input.runContext);
|
|
407
|
+
try {
|
|
408
|
+
if (input.kind === "start") {
|
|
409
|
+
const modifiedParts = await this.prepareTurnInput(
|
|
410
|
+
input.content,
|
|
411
|
+
signal,
|
|
412
|
+
input.runContext
|
|
413
|
+
);
|
|
414
|
+
await this.llmService.getContextManager().addUserMessage(modifiedParts);
|
|
415
|
+
}
|
|
416
|
+
const driver = await this.llmService.createTurnDriver({
|
|
417
|
+
signal,
|
|
418
|
+
streaming: input.streaming ?? true,
|
|
419
|
+
...input.runContext !== void 0 && { runContext: input.runContext },
|
|
420
|
+
...input.kind === "resume" ? { state: input.state } : {}
|
|
421
|
+
});
|
|
422
|
+
return this.wrapTurnDriver(driver, signal, input.runContext, detachForwarders);
|
|
423
|
+
} catch (error) {
|
|
424
|
+
if (input.kind === "start" && error instanceof DextoRuntimeError && error.code === HookErrorCode.HOOK_BLOCKED_EXECUTION && error.scope === ErrorScope.HOOK && error.type === ErrorType.FORBIDDEN) {
|
|
425
|
+
const textContent = this.normalizeContent(input.content).filter((p) => p.type === "text").map((p) => p.text).join("\n");
|
|
426
|
+
await this.saveBlockedInteraction(textContent, error.message);
|
|
427
|
+
}
|
|
428
|
+
detachForwarders();
|
|
429
|
+
this.currentRunController = null;
|
|
430
|
+
throw error;
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
wrapTurnDriver(driver, signal, runContext, detachForwarders) {
|
|
434
|
+
let closed = false;
|
|
435
|
+
const close = () => {
|
|
436
|
+
if (closed) {
|
|
437
|
+
return;
|
|
438
|
+
}
|
|
439
|
+
closed = true;
|
|
440
|
+
detachForwarders();
|
|
441
|
+
this.currentRunController = null;
|
|
442
|
+
};
|
|
443
|
+
return {
|
|
444
|
+
prepareNextModelStep: () => driver.prepareNextModelStep(),
|
|
445
|
+
runNextModelStep: () => driver.runNextModelStep(),
|
|
446
|
+
executeToolCalls: () => driver.executeToolCalls(),
|
|
447
|
+
decideNextStep: () => driver.decideNextStep(),
|
|
448
|
+
finish: async () => {
|
|
449
|
+
try {
|
|
450
|
+
const result = await driver.finish();
|
|
451
|
+
return {
|
|
452
|
+
...result,
|
|
453
|
+
text: await this.applyBeforeResponseHooks(result.text, signal, runContext)
|
|
454
|
+
};
|
|
455
|
+
} finally {
|
|
456
|
+
driver.dispose();
|
|
457
|
+
close();
|
|
458
|
+
}
|
|
459
|
+
},
|
|
460
|
+
fail: async (error) => {
|
|
461
|
+
try {
|
|
462
|
+
return await driver.fail(error);
|
|
463
|
+
} finally {
|
|
464
|
+
driver.dispose();
|
|
465
|
+
close();
|
|
466
|
+
}
|
|
467
|
+
},
|
|
468
|
+
getState: () => driver.getState(),
|
|
469
|
+
checkpoint: () => {
|
|
470
|
+
try {
|
|
471
|
+
return driver.checkpoint();
|
|
472
|
+
} finally {
|
|
473
|
+
close();
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
dispose: () => {
|
|
477
|
+
if (closed) {
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
try {
|
|
481
|
+
driver.dispose();
|
|
482
|
+
} finally {
|
|
483
|
+
close();
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
};
|
|
487
|
+
}
|
|
373
488
|
/**
|
|
374
489
|
* Combine multiple abort signals into one.
|
|
375
490
|
*/
|
|
@@ -405,7 +520,7 @@ class ChatSession {
|
|
|
405
520
|
* ```
|
|
406
521
|
*/
|
|
407
522
|
async getHistory() {
|
|
408
|
-
return await this.
|
|
523
|
+
return await this.conversationStore.listMessages({ sessionId: this.id });
|
|
409
524
|
}
|
|
410
525
|
/**
|
|
411
526
|
* Reset the conversation history for this session.
|
|
@@ -533,40 +648,85 @@ class ChatSession {
|
|
|
533
648
|
return this.currentRunController !== null && !this.currentRunController.signal.aborted;
|
|
534
649
|
}
|
|
535
650
|
/**
|
|
536
|
-
* Queue a message
|
|
537
|
-
* The message
|
|
651
|
+
* Queue a message as active-turn steer input.
|
|
652
|
+
* The message is injected at the next executor boundary while the current turn is active.
|
|
653
|
+
*
|
|
654
|
+
* @param message The user message to use as steer input
|
|
655
|
+
* @returns Queue position and message ID
|
|
656
|
+
*/
|
|
657
|
+
async steer(message) {
|
|
658
|
+
return await this.llmService.getSteerQueue().enqueue(message);
|
|
659
|
+
}
|
|
660
|
+
/**
|
|
661
|
+
* Queue a follow-up message for processing after the current turn naturally completes.
|
|
538
662
|
*
|
|
539
|
-
* @param message The user message to queue
|
|
663
|
+
* @param message The user message to queue as follow-up work
|
|
540
664
|
* @returns Queue position and message ID
|
|
541
665
|
*/
|
|
542
|
-
async
|
|
543
|
-
return await this.llmService.
|
|
666
|
+
async followUp(message) {
|
|
667
|
+
return await this.llmService.getFollowUpQueue().enqueue(message);
|
|
668
|
+
}
|
|
669
|
+
/**
|
|
670
|
+
* Get all steer messages currently queued.
|
|
671
|
+
* @returns Array of steer messages
|
|
672
|
+
*/
|
|
673
|
+
getSteerMessages() {
|
|
674
|
+
return this.llmService.getSteerQueue().getAll();
|
|
675
|
+
}
|
|
676
|
+
/**
|
|
677
|
+
* Get all follow-up messages currently queued.
|
|
678
|
+
* @returns Array of follow-up messages
|
|
679
|
+
*/
|
|
680
|
+
getFollowUpMessages() {
|
|
681
|
+
return this.llmService.getFollowUpQueue().getAll();
|
|
544
682
|
}
|
|
545
683
|
/**
|
|
546
|
-
*
|
|
547
|
-
* @
|
|
684
|
+
* Remove a steer message.
|
|
685
|
+
* @param id Message ID to remove
|
|
686
|
+
* @returns true if message was found and removed; false otherwise
|
|
548
687
|
*/
|
|
549
|
-
|
|
550
|
-
return this.llmService.
|
|
688
|
+
async removeSteerMessage(id) {
|
|
689
|
+
return await this.llmService.getSteerQueue().remove(id);
|
|
551
690
|
}
|
|
552
691
|
/**
|
|
553
|
-
* Remove a
|
|
692
|
+
* Remove a follow-up message.
|
|
554
693
|
* @param id Message ID to remove
|
|
555
694
|
* @returns true if message was found and removed; false otherwise
|
|
556
695
|
*/
|
|
557
|
-
async
|
|
558
|
-
return await this.llmService.
|
|
696
|
+
async removeFollowUpMessage(id) {
|
|
697
|
+
return await this.llmService.getFollowUpQueue().remove(id);
|
|
559
698
|
}
|
|
560
699
|
/**
|
|
561
|
-
* Clear all
|
|
700
|
+
* Clear all steer messages.
|
|
562
701
|
* @returns Number of messages that were cleared
|
|
563
702
|
*/
|
|
564
|
-
async
|
|
565
|
-
const queue = this.llmService.
|
|
703
|
+
async clearSteerQueue() {
|
|
704
|
+
const queue = this.llmService.getSteerQueue();
|
|
566
705
|
const count = queue.pendingCount();
|
|
567
706
|
await queue.clear();
|
|
568
707
|
return count;
|
|
569
708
|
}
|
|
709
|
+
/**
|
|
710
|
+
* Clear all follow-up messages.
|
|
711
|
+
* @returns Number of messages that were cleared
|
|
712
|
+
*/
|
|
713
|
+
async clearFollowUpQueue() {
|
|
714
|
+
const queue = this.llmService.getFollowUpQueue();
|
|
715
|
+
const count = queue.pendingCount();
|
|
716
|
+
await queue.clear();
|
|
717
|
+
return count;
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* Clear all pending steer and follow-up input for this session.
|
|
721
|
+
* @returns Number of messages that were cleared
|
|
722
|
+
*/
|
|
723
|
+
async clearPendingInput() {
|
|
724
|
+
const [steerCount, followUpCount] = await Promise.all([
|
|
725
|
+
this.clearSteerQueue(),
|
|
726
|
+
this.clearFollowUpQueue()
|
|
727
|
+
]);
|
|
728
|
+
return steerCount + followUpCount;
|
|
729
|
+
}
|
|
570
730
|
/**
|
|
571
731
|
* Cancel the currently running turn for this session, if any.
|
|
572
732
|
* Returns true if a run was in progress and was signaled to abort.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
2
2
|
var SessionErrorCode = /* @__PURE__ */ ((SessionErrorCode2) => {
|
|
3
3
|
SessionErrorCode2["SESSION_NOT_FOUND"] = "session_not_found";
|
|
4
4
|
SessionErrorCode2["SESSION_INITIALIZATION_FAILED"] = "session_initialization_failed";
|
package/dist/session/errors.js
CHANGED
package/dist/session/index.cjs
CHANGED
|
@@ -19,11 +19,19 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var session_exports = {};
|
|
20
20
|
__export(session_exports, {
|
|
21
21
|
ChatSession: () => import_chat_session.ChatSession,
|
|
22
|
+
CoalescedMessageSchema: () => import_types.CoalescedMessageSchema,
|
|
22
23
|
MessageQueueService: () => import_message_queue.MessageQueueService,
|
|
24
|
+
ModelStatisticsSchema: () => import_schemas.ModelStatisticsSchema,
|
|
25
|
+
QueuedMessageSchema: () => import_types.QueuedMessageSchema,
|
|
26
|
+
QueuedMessagesSchema: () => import_types.QueuedMessagesSchema,
|
|
23
27
|
SessionConfigSchema: () => import_schemas.SessionConfigSchema,
|
|
28
|
+
SessionDataSchema: () => import_schemas.SessionDataSchema,
|
|
24
29
|
SessionError: () => import_errors.SessionError,
|
|
25
30
|
SessionErrorCode: () => import_error_codes.SessionErrorCode,
|
|
26
|
-
SessionManager: () => import_session_manager.SessionManager
|
|
31
|
+
SessionManager: () => import_session_manager.SessionManager,
|
|
32
|
+
SessionTokenUsageSchema: () => import_schemas.SessionTokenUsageSchema,
|
|
33
|
+
SessionUsageTrackingSchema: () => import_schemas.SessionUsageTrackingSchema,
|
|
34
|
+
parseSessionData: () => import_schemas.parseSessionData
|
|
27
35
|
});
|
|
28
36
|
module.exports = __toCommonJS(session_exports);
|
|
29
37
|
var import_chat_session = require("./chat-session.js");
|
|
@@ -31,13 +39,22 @@ var import_session_manager = require("./session-manager.js");
|
|
|
31
39
|
var import_error_codes = require("./error-codes.js");
|
|
32
40
|
var import_errors = require("./errors.js");
|
|
33
41
|
var import_message_queue = require("./message-queue.js");
|
|
42
|
+
var import_types = require("./types.js");
|
|
34
43
|
var import_schemas = require("./schemas.js");
|
|
35
44
|
// Annotate the CommonJS export names for ESM import in node:
|
|
36
45
|
0 && (module.exports = {
|
|
37
46
|
ChatSession,
|
|
47
|
+
CoalescedMessageSchema,
|
|
38
48
|
MessageQueueService,
|
|
49
|
+
ModelStatisticsSchema,
|
|
50
|
+
QueuedMessageSchema,
|
|
51
|
+
QueuedMessagesSchema,
|
|
39
52
|
SessionConfigSchema,
|
|
53
|
+
SessionDataSchema,
|
|
40
54
|
SessionError,
|
|
41
55
|
SessionErrorCode,
|
|
42
|
-
SessionManager
|
|
56
|
+
SessionManager,
|
|
57
|
+
SessionTokenUsageSchema,
|
|
58
|
+
SessionUsageTrackingSchema,
|
|
59
|
+
parseSessionData
|
|
43
60
|
});
|
package/dist/session/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
export { ChatSession } from './chat-session.js';
|
|
1
|
+
export { ChatSession, type ChatSessionTurnDriverInput } from './chat-session.js';
|
|
2
2
|
export { SessionManager } from './session-manager.js';
|
|
3
|
-
export type {
|
|
3
|
+
export type { ModelStatistics, SessionData, SessionLoggerFactory, SessionMetadata, SessionTokenUsage, SessionUsageTracking, } from './session-manager.js';
|
|
4
4
|
export { SessionErrorCode } from './error-codes.js';
|
|
5
5
|
export { SessionError } from './errors.js';
|
|
6
6
|
export { MessageQueueService } from './message-queue.js';
|
|
7
7
|
export type { UserMessageInput } from './message-queue.js';
|
|
8
|
+
export { CoalescedMessageSchema, QueuedMessageSchema, QueuedMessagesSchema } from './types.js';
|
|
8
9
|
export type { QueuedMessage, CoalescedMessage } from './types.js';
|
|
9
|
-
export { SessionConfigSchema } from './schemas.js';
|
|
10
|
+
export { ModelStatisticsSchema, SessionConfigSchema, SessionDataSchema, SessionTokenUsageSchema, SessionUsageTrackingSchema, parseSessionData, } from './schemas.js';
|
|
10
11
|
export type { SessionConfig, ValidatedSessionConfig } from './schemas.js';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACR,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,oBAAoB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC/F,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EACH,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,GACnB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/session/index.js
CHANGED
|
@@ -1,15 +1,31 @@
|
|
|
1
|
-
import "../chunk-
|
|
1
|
+
import "../chunk-C6A6W6XS.js";
|
|
2
2
|
import { ChatSession } from "./chat-session.js";
|
|
3
3
|
import { SessionManager } from "./session-manager.js";
|
|
4
4
|
import { SessionErrorCode } from "./error-codes.js";
|
|
5
5
|
import { SessionError } from "./errors.js";
|
|
6
6
|
import { MessageQueueService } from "./message-queue.js";
|
|
7
|
-
import {
|
|
7
|
+
import { CoalescedMessageSchema, QueuedMessageSchema, QueuedMessagesSchema } from "./types.js";
|
|
8
|
+
import {
|
|
9
|
+
ModelStatisticsSchema,
|
|
10
|
+
SessionConfigSchema,
|
|
11
|
+
SessionDataSchema,
|
|
12
|
+
SessionTokenUsageSchema,
|
|
13
|
+
SessionUsageTrackingSchema,
|
|
14
|
+
parseSessionData
|
|
15
|
+
} from "./schemas.js";
|
|
8
16
|
export {
|
|
9
17
|
ChatSession,
|
|
18
|
+
CoalescedMessageSchema,
|
|
10
19
|
MessageQueueService,
|
|
20
|
+
ModelStatisticsSchema,
|
|
21
|
+
QueuedMessageSchema,
|
|
22
|
+
QueuedMessagesSchema,
|
|
11
23
|
SessionConfigSchema,
|
|
24
|
+
SessionDataSchema,
|
|
12
25
|
SessionError,
|
|
13
26
|
SessionErrorCode,
|
|
14
|
-
SessionManager
|
|
27
|
+
SessionManager,
|
|
28
|
+
SessionTokenUsageSchema,
|
|
29
|
+
SessionUsageTrackingSchema,
|
|
30
|
+
parseSessionData
|
|
15
31
|
};
|