@qduc/term2 0.32.2 → 0.34.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.d.ts.map +1 -1
- package/dist/agent.js +30 -14
- package/dist/agent.js.map +1 -1
- package/dist/build-info.json +2 -2
- package/dist/completion-verification-admin.d.ts +2 -0
- package/dist/completion-verification-admin.d.ts.map +1 -0
- package/dist/completion-verification-admin.js +37 -0
- package/dist/completion-verification-admin.js.map +1 -0
- package/dist/components/input/MenuSurface.d.ts.map +1 -1
- package/dist/components/input/MenuSurface.js +12 -3
- package/dist/components/input/MenuSurface.js.map +1 -1
- package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
- package/dist/components/input/ModelMenuSession.js +15 -1
- package/dist/components/input/ModelMenuSession.js.map +1 -1
- package/dist/components/input/ProviderMenuSession.d.ts.map +1 -1
- package/dist/components/input/ProviderMenuSession.js +2 -2
- package/dist/components/input/ProviderMenuSession.js.map +1 -1
- package/dist/components/input/SettingsMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsMenuSession.js +119 -82
- package/dist/components/input/SettingsMenuSession.js.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.js +18 -3
- package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
- package/dist/components/input/determine-active-menu.d.ts.map +1 -1
- package/dist/components/input/determine-active-menu.js +5 -1
- package/dist/components/input/determine-active-menu.js.map +1 -1
- package/dist/components/input/settings-intent-host.d.ts.map +1 -1
- package/dist/components/input/settings-intent-host.js +60 -4
- package/dist/components/input/settings-intent-host.js.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.d.ts +4 -0
- package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.js +15 -16
- package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
- package/dist/components/menu/ProviderSelectionMenu.d.ts +1 -0
- package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ProviderSelectionMenu.js +21 -6
- package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.d.ts +3 -0
- package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.js +78 -47
- package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
- package/dist/components/menu/SettingsValueSelectionMenu.d.ts +2 -0
- package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SettingsValueSelectionMenu.js +17 -12
- package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
- package/dist/components/menu/settings-value-formatter.d.ts +8 -3
- package/dist/components/menu/settings-value-formatter.d.ts.map +1 -1
- package/dist/components/menu/settings-value-formatter.js +55 -32
- package/dist/components/menu/settings-value-formatter.js.map +1 -1
- package/dist/components/message/command-message-helpers.d.ts +5 -5
- package/dist/contracts/run-termination.d.ts +3 -1
- package/dist/contracts/run-termination.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts +28 -12
- package/dist/hooks/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +73 -76
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/settings-completion-logic.d.ts +10 -1
- package/dist/hooks/settings-completion-logic.d.ts.map +1 -1
- package/dist/hooks/settings-completion-logic.js +80 -49
- package/dist/hooks/settings-completion-logic.js.map +1 -1
- package/dist/hooks/use-provider-selection.d.ts +6 -0
- package/dist/hooks/use-provider-selection.d.ts.map +1 -1
- package/dist/hooks/use-provider-selection.js +69 -10
- package/dist/hooks/use-provider-selection.js.map +1 -1
- package/dist/hooks/use-settings-completion.d.ts +14 -0
- package/dist/hooks/use-settings-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-completion.js +54 -6
- package/dist/hooks/use-settings-completion.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +15 -4
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/lib/agent-chat-service.d.ts.map +1 -1
- package/dist/lib/agent-chat-service.js +2 -6
- package/dist/lib/agent-chat-service.js.map +1 -1
- package/dist/lib/agent-client.d.ts +2 -1
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +99 -85
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +17 -19
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +4 -0
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/tool-surface-guidance.js +1 -1
- package/dist/prompts/tool-surface-guidance.js.map +1 -1
- package/dist/prompts/tool-surface-guidance.ts +1 -1
- package/dist/providers/ai-sdk-anthropic.provider.d.ts.map +1 -1
- package/dist/providers/ai-sdk-anthropic.provider.js +16 -2
- package/dist/providers/ai-sdk-anthropic.provider.js.map +1 -1
- package/dist/providers/ai-sdk-google.provider.d.ts.map +1 -1
- package/dist/providers/ai-sdk-google.provider.js +16 -2
- package/dist/providers/ai-sdk-google.provider.js.map +1 -1
- package/dist/providers/ai-sdk-openrouter.provider.d.ts.map +1 -1
- package/dist/providers/ai-sdk-openrouter.provider.js +16 -1
- package/dist/providers/ai-sdk-openrouter.provider.js.map +1 -1
- package/dist/providers/ai-sdk-provider-settings.d.ts +2 -0
- package/dist/providers/ai-sdk-provider-settings.d.ts.map +1 -1
- package/dist/providers/ai-sdk-provider-settings.js +5 -0
- package/dist/providers/ai-sdk-provider-settings.js.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.d.ts +3 -3
- package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.js +5 -69
- package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
- package/dist/providers/anthropic-chat-caching.d.ts +5 -0
- package/dist/providers/anthropic-chat-caching.d.ts.map +1 -0
- package/dist/providers/{common/openai-compatible-messages.js → anthropic-chat-caching.js} +19 -1
- package/dist/providers/anthropic-chat-caching.js.map +1 -0
- package/dist/providers/codex.provider.js +2 -0
- package/dist/providers/codex.provider.js.map +1 -1
- package/dist/providers/custom-provider-runtime.d.ts +18 -0
- package/dist/providers/custom-provider-runtime.d.ts.map +1 -0
- package/dist/providers/custom-provider-runtime.js +26 -0
- package/dist/providers/custom-provider-runtime.js.map +1 -0
- package/dist/providers/grok.provider.d.ts +13 -3
- package/dist/providers/grok.provider.d.ts.map +1 -1
- package/dist/providers/grok.provider.js +82 -6
- package/dist/providers/grok.provider.js.map +1 -1
- package/dist/providers/llama-cpp.provider.d.ts +3 -0
- package/dist/providers/llama-cpp.provider.d.ts.map +1 -1
- package/dist/providers/llama-cpp.provider.js +17 -0
- package/dist/providers/llama-cpp.provider.js.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.d.ts +347 -351
- package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.js +362 -357
- package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
- package/dist/providers/neuralwatt.provider.d.ts +6 -0
- package/dist/providers/neuralwatt.provider.d.ts.map +1 -0
- package/dist/providers/neuralwatt.provider.js +8 -0
- package/dist/providers/neuralwatt.provider.js.map +1 -0
- package/dist/providers/openai-compatible-lazy.d.ts.map +1 -1
- package/dist/providers/openai-compatible-lazy.js +2 -0
- package/dist/providers/openai-compatible-lazy.js.map +1 -1
- package/dist/providers/openai-compatible-middleware.d.ts +4 -9
- package/dist/providers/openai-compatible-middleware.d.ts.map +1 -1
- package/dist/providers/openai-compatible-middleware.js +25 -48
- package/dist/providers/openai-compatible-middleware.js.map +1 -1
- package/dist/providers/openai-compatible-models.d.ts +9 -1
- package/dist/providers/openai-compatible-models.d.ts.map +1 -1
- package/dist/providers/openai-compatible-models.js +10 -2
- package/dist/providers/openai-compatible-models.js.map +1 -1
- package/dist/providers/openai-compatible-response-normalizer.d.ts +1 -1
- package/dist/providers/openai-compatible-response-normalizer.d.ts.map +1 -1
- package/dist/providers/openai-compatible-response-normalizer.js +6 -6
- package/dist/providers/openai-compatible-response-normalizer.js.map +1 -1
- package/dist/providers/openai-compatible.provider.d.ts +2 -32
- package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible.provider.js +27 -144
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/providers/openai.provider.d.ts.map +1 -1
- package/dist/providers/openai.provider.js +1 -0
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/opencode-middleware.d.ts +9 -0
- package/dist/providers/opencode-middleware.d.ts.map +1 -0
- package/dist/providers/opencode-middleware.js +15 -0
- package/dist/providers/opencode-middleware.js.map +1 -0
- package/dist/providers/opencode-model-provider.d.ts +19 -0
- package/dist/providers/opencode-model-provider.d.ts.map +1 -0
- package/dist/providers/opencode-model-provider.js +128 -0
- package/dist/providers/opencode-model-provider.js.map +1 -0
- package/dist/providers/opencode.provider.d.ts +2 -0
- package/dist/providers/opencode.provider.d.ts.map +1 -1
- package/dist/providers/opencode.provider.js +4 -0
- package/dist/providers/opencode.provider.js.map +1 -1
- package/dist/providers/openrouter-decision-models.d.ts +7 -0
- package/dist/providers/openrouter-decision-models.d.ts.map +1 -0
- package/dist/providers/openrouter-decision-models.js +31 -0
- package/dist/providers/openrouter-decision-models.js.map +1 -0
- package/dist/providers/openrouter.provider.js +2 -1
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/orcarouter-models.d.ts +12 -0
- package/dist/providers/orcarouter-models.d.ts.map +1 -0
- package/dist/providers/orcarouter-models.js +38 -0
- package/dist/providers/orcarouter-models.js.map +1 -0
- package/dist/providers/provider-presets.d.ts +37 -0
- package/dist/providers/provider-presets.d.ts.map +1 -0
- package/dist/providers/provider-presets.js +33 -0
- package/dist/providers/provider-presets.js.map +1 -0
- package/dist/providers/provider-presets.json +201 -0
- package/dist/providers/provider-service.d.ts +3 -2
- package/dist/providers/provider-service.d.ts.map +1 -1
- package/dist/providers/provider-service.js +4 -20
- package/dist/providers/provider-service.js.map +1 -1
- package/dist/providers/registry.d.ts +7 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts +25 -2
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.js +927 -758
- package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
- package/dist/services/agent-runtime/tool-call-execution.d.ts +1 -1
- package/dist/services/agent-runtime/tool-call-execution.d.ts.map +1 -1
- package/dist/services/agent-runtime/tool-call-execution.js +6 -3
- package/dist/services/agent-runtime/tool-call-execution.js.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.d.ts +4 -2
- package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.js +2 -1
- package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval/approval-state.d.ts +0 -13
- package/dist/services/approval/approval-state.d.ts.map +1 -1
- package/dist/services/approval/approval-state.js +0 -5
- package/dist/services/approval/approval-state.js.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.js +0 -2
- package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
- package/dist/services/approval/nested-approval-owner.d.ts.map +1 -1
- package/dist/services/approval/nested-approval-owner.js +5 -1
- package/dist/services/approval/nested-approval-owner.js.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.d.ts +2 -2
- package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.js +2 -2
- package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts +2 -2
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.js +4 -4
- package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
- package/dist/services/assembly/feature-selection.d.ts +48 -0
- package/dist/services/assembly/feature-selection.d.ts.map +1 -0
- package/dist/services/assembly/feature-selection.js +12 -0
- package/dist/services/assembly/feature-selection.js.map +1 -0
- package/dist/services/completion-verification/contracts.d.ts +151 -0
- package/dist/services/completion-verification/contracts.d.ts.map +1 -0
- package/dist/services/completion-verification/contracts.js +84 -0
- package/dist/services/completion-verification/contracts.js.map +1 -0
- package/dist/services/completion-verification/gate.d.ts +9 -0
- package/dist/services/completion-verification/gate.d.ts.map +1 -0
- package/dist/services/completion-verification/gate.js +60 -0
- package/dist/services/completion-verification/gate.js.map +1 -0
- package/dist/services/completion-verification/goal-stop-policy.d.ts +10 -0
- package/dist/services/completion-verification/goal-stop-policy.d.ts.map +1 -0
- package/dist/services/completion-verification/goal-stop-policy.js +53 -0
- package/dist/services/completion-verification/goal-stop-policy.js.map +1 -0
- package/dist/services/completion-verification/orchestrator.d.ts +26 -0
- package/dist/services/completion-verification/orchestrator.d.ts.map +1 -0
- package/dist/services/completion-verification/orchestrator.js +275 -0
- package/dist/services/completion-verification/orchestrator.js.map +1 -0
- package/dist/services/completion-verification/root-boundary.d.ts +21 -0
- package/dist/services/completion-verification/root-boundary.d.ts.map +1 -0
- package/dist/services/completion-verification/root-boundary.js +127 -0
- package/dist/services/completion-verification/root-boundary.js.map +1 -0
- package/dist/services/completion-verification/store.d.ts +13 -0
- package/dist/services/completion-verification/store.d.ts.map +1 -0
- package/dist/services/completion-verification/store.js +69 -0
- package/dist/services/completion-verification/store.js.map +1 -0
- package/dist/services/completion-verification/verifier.d.ts +11 -0
- package/dist/services/completion-verification/verifier.d.ts.map +1 -0
- package/dist/services/completion-verification/verifier.js +173 -0
- package/dist/services/completion-verification/verifier.js.map +1 -0
- package/dist/services/completion-verification/workspace.d.ts +17 -0
- package/dist/services/completion-verification/workspace.d.ts.map +1 -0
- package/dist/services/completion-verification/workspace.js +183 -0
- package/dist/services/completion-verification/workspace.js.map +1 -0
- package/dist/services/conversation/conversation-adapter.d.ts +17 -47
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +114 -88
- package/dist/services/conversation/conversation-adapter.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +48 -121
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-record-stream.d.ts +21 -0
- package/dist/services/conversation/conversation-record-stream.d.ts.map +1 -0
- package/dist/services/conversation/conversation-record-stream.js +186 -0
- package/dist/services/conversation/conversation-record-stream.js.map +1 -0
- package/dist/services/conversation/conversation-record.d.ts +160 -0
- package/dist/services/conversation/conversation-record.d.ts.map +1 -0
- package/dist/services/conversation/conversation-record.js +371 -0
- package/dist/services/conversation/conversation-record.js.map +1 -0
- package/dist/services/conversation/conversation-result-builder.d.ts +0 -4
- package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-result-builder.js +0 -10
- package/dist/services/conversation/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +2 -1
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +3 -0
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/durable-goal-stop-check.js +1 -1
- package/dist/services/conversation/durable-goal-stop-check.js.map +1 -1
- package/dist/services/conversation/durable-goal.d.ts.map +1 -1
- package/dist/services/conversation/durable-goal.js +1 -1
- package/dist/services/conversation/durable-goal.js.map +1 -1
- package/dist/services/conversation-agent-client.d.ts +17 -7
- package/dist/services/conversation-agent-client.d.ts.map +1 -1
- package/dist/services/logging/conversation-logger.d.ts +1 -7
- package/dist/services/logging/conversation-logger.d.ts.map +1 -1
- package/dist/services/logging/conversation-logger.js +0 -18
- package/dist/services/logging/conversation-logger.js.map +1 -1
- package/dist/services/model-service.d.ts +2 -6
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +8 -21
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/models/decision-model-listing.d.ts +2 -12
- package/dist/services/models/decision-model-listing.d.ts.map +1 -1
- package/dist/services/models/decision-model-listing.js +2 -29
- package/dist/services/models/decision-model-listing.js.map +1 -1
- package/dist/services/provider-continuity.d.ts +26 -0
- package/dist/services/provider-continuity.d.ts.map +1 -1
- package/dist/services/provider-continuity.js +47 -0
- package/dist/services/provider-continuity.js.map +1 -1
- package/dist/services/retry/recovery-executor.d.ts +3 -4
- package/dist/services/retry/recovery-executor.d.ts.map +1 -1
- package/dist/services/retry/recovery-executor.js +13 -75
- package/dist/services/retry/recovery-executor.js.map +1 -1
- package/dist/services/retry/retry-contracts.d.ts +2 -10
- package/dist/services/retry/retry-contracts.d.ts.map +1 -1
- package/dist/services/session/continuation-plan-applier.d.ts +5 -9
- package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
- package/dist/services/session/continuation-plan-applier.js +9 -43
- package/dist/services/session/continuation-plan-applier.js.map +1 -1
- package/dist/services/session/continuation-recovery-handler.d.ts +4 -6
- package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/continuation-recovery-handler.js +3 -15
- package/dist/services/session/continuation-recovery-handler.js.map +1 -1
- package/dist/services/session/initial-input-preparer.d.ts +2 -2
- package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
- package/dist/services/session/initial-input-preparer.js +3 -3
- package/dist/services/session/initial-input-preparer.js.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.d.ts +2 -4
- package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.js +4 -5
- package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
- package/dist/services/session/live-run.d.ts +9 -3
- package/dist/services/session/live-run.d.ts.map +1 -1
- package/dist/services/session/live-run.js +19 -4
- package/dist/services/session/live-run.js.map +1 -1
- package/dist/services/session/session-composition.d.ts +8 -12
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +41 -87
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-input-planner.d.ts +2 -2
- package/dist/services/session/session-input-planner.d.ts.map +1 -1
- package/dist/services/session/session-input-planner.js +6 -13
- package/dist/services/session/session-input-planner.js.map +1 -1
- package/dist/services/session/session-lifecycle.d.ts +73 -23
- package/dist/services/session/session-lifecycle.d.ts.map +1 -1
- package/dist/services/session/session-lifecycle.js +127 -45
- package/dist/services/session/session-lifecycle.js.map +1 -1
- package/dist/services/session/session-stream-processor.d.ts +4 -30
- package/dist/services/session/session-stream-processor.d.ts.map +1 -1
- package/dist/services/session/session-stream-processor.js +11 -300
- package/dist/services/session/session-stream-processor.js.map +1 -1
- package/dist/services/session/session-tool-tracker.d.ts +9 -144
- package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
- package/dist/services/session/session-tool-tracker.js +17 -251
- package/dist/services/session/session-tool-tracker.js.map +1 -1
- package/dist/services/session/{turn-workflow.d.ts → session-turn-adapter.d.ts} +10 -43
- package/dist/services/session/session-turn-adapter.d.ts.map +1 -0
- package/dist/services/session/session-turn-adapter.js +734 -0
- package/dist/services/session/session-turn-adapter.js.map +1 -0
- package/dist/services/session/turn-attempt-factory.d.ts +2 -11
- package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
- package/dist/services/session/turn-attempt-factory.js +4 -12
- package/dist/services/session/turn-attempt-factory.js.map +1 -1
- package/dist/services/session/turn-attempt.d.ts +0 -3
- package/dist/services/session/turn-attempt.d.ts.map +1 -1
- package/dist/services/session/turn-attempt.js +0 -5
- package/dist/services/session/turn-attempt.js.map +1 -1
- package/dist/services/session/turn-coordinator.d.ts +3 -3
- package/dist/services/session/turn-coordinator.d.ts.map +1 -1
- package/dist/services/session/turn-coordinator.js +31 -26
- package/dist/services/session/turn-coordinator.js.map +1 -1
- package/dist/services/session/turn-projection-state.d.ts +45 -0
- package/dist/services/session/turn-projection-state.d.ts.map +1 -0
- package/dist/services/session/turn-projection-state.js +61 -0
- package/dist/services/session/turn-projection-state.js.map +1 -0
- package/dist/services/settings/settings-env.d.ts +5 -0
- package/dist/services/settings/settings-env.d.ts.map +1 -1
- package/dist/services/settings/settings-env.js +22 -0
- package/dist/services/settings/settings-env.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +8 -0
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +17 -0
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-service.d.ts +6 -0
- package/dist/services/settings/settings-service.d.ts.map +1 -1
- package/dist/services/settings/settings-service.js +21 -9
- package/dist/services/settings/settings-service.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts +2 -0
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +2 -0
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/settings/settings-ui-metadata.d.ts +21 -0
- package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -1
- package/dist/services/settings/settings-ui-metadata.js +201 -23
- package/dist/services/settings/settings-ui-metadata.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +1 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +4 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
- package/dist/services/subagents/tool-policy.d.ts +5 -5
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +15 -9
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/tools/agent/goal-check.js +2 -2
- package/dist/tools/agent/goal-check.js.map +1 -1
- package/dist/tools/agent/list-models.d.ts +71 -0
- package/dist/tools/agent/list-models.d.ts.map +1 -0
- package/dist/tools/agent/list-models.js +175 -0
- package/dist/tools/agent/list-models.js.map +1 -0
- package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code-runtime.js +90 -19
- package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
- package/dist/tools/system/shell.d.ts +2 -2
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +1 -0
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/tool-names.d.ts +1 -1
- package/dist/tools/tool-names.d.ts.map +1 -1
- package/dist/utils/ai/token-usage.js +9 -8
- package/dist/utils/ai/token-usage.js.map +1 -1
- package/dist/utils/value-suggestions.d.ts.map +1 -1
- package/dist/utils/value-suggestions.js +14 -11
- package/dist/utils/value-suggestions.js.map +1 -1
- package/package.json +2 -2
- package/dist/providers/anthropic-middleware.d.ts +0 -25
- package/dist/providers/anthropic-middleware.d.ts.map +0 -1
- package/dist/providers/anthropic-middleware.js +0 -32
- package/dist/providers/anthropic-middleware.js.map +0 -1
- package/dist/providers/common/openai-compatible-messages.d.ts +0 -2
- package/dist/providers/common/openai-compatible-messages.d.ts.map +0 -1
- package/dist/providers/common/openai-compatible-messages.js.map +0 -1
- package/dist/services/session/continuation-call-id-resolver.d.ts +0 -29
- package/dist/services/session/continuation-call-id-resolver.d.ts.map +0 -1
- package/dist/services/session/continuation-call-id-resolver.js +0 -69
- package/dist/services/session/continuation-call-id-resolver.js.map +0 -1
- package/dist/services/session/continuation-state.d.ts +0 -69
- package/dist/services/session/continuation-state.d.ts.map +0 -1
- package/dist/services/session/continuation-state.js +0 -78
- package/dist/services/session/continuation-state.js.map +0 -1
- package/dist/services/session/session-manager.d.ts +0 -87
- package/dist/services/session/session-manager.d.ts.map +0 -1
- package/dist/services/session/session-manager.js +0 -146
- package/dist/services/session/session-manager.js.map +0 -1
- package/dist/services/session/turn-workflow.d.ts.map +0 -1
- package/dist/services/session/turn-workflow.js +0 -1055
- package/dist/services/session/turn-workflow.js.map +0 -1
|
@@ -6,7 +6,7 @@ import { type UserTurn } from '../../types/user-turn.js';
|
|
|
6
6
|
import type { InputSurgeApproval } from '../input-surge-approval.js';
|
|
7
7
|
import type { ProviderInputItem } from '../../contracts/provider-input.js';
|
|
8
8
|
import type { SessionRuntime, SessionLogs, SessionApprovalQuery } from '../../core/session-runtime.js';
|
|
9
|
-
import type {
|
|
9
|
+
import type { SessionLifecycle } from '../session/session-lifecycle.js';
|
|
10
10
|
import type { PendingInteractionState } from '../session/pending-interaction-state.js';
|
|
11
11
|
import type { AskUserAnswerSink, SubagentEventSinkHost } from '../conversation-agent-client.js';
|
|
12
12
|
import type { SessionIdentity } from '../session/session-identity.js';
|
|
@@ -24,7 +24,7 @@ export type SendMessageOptions = {
|
|
|
24
24
|
preferredMessageId?: string;
|
|
25
25
|
/** The turn is model input only and must not be projected as a user message in the UI. */
|
|
26
26
|
suppressUserMessageDisplay?: boolean;
|
|
27
|
-
/**
|
|
27
|
+
/** Busy input joins the next model boundary, or queues if that turn releases it. */
|
|
28
28
|
busyMode?: 'steer' | 'follow_up';
|
|
29
29
|
};
|
|
30
30
|
export type HandleApprovalDecisionOptions = {
|
|
@@ -121,7 +121,7 @@ export declare class ConversationAdapter {
|
|
|
121
121
|
logger: ILoggingService;
|
|
122
122
|
settingsService?: ISettingsService;
|
|
123
123
|
sessionContextService: ISessionContextService;
|
|
124
|
-
userTurns: Pick<
|
|
124
|
+
userTurns: Pick<SessionLifecycle, 'listUserTurns'>;
|
|
125
125
|
logs: SessionLogs;
|
|
126
126
|
approval: SessionApprovalQuery;
|
|
127
127
|
/** Session-owned interaction projection; omitted by low-level legacy tests. */
|
|
@@ -162,20 +162,7 @@ export declare class ConversationAdapter {
|
|
|
162
162
|
*/
|
|
163
163
|
queueStateKind(): QueueStateKind | 'none';
|
|
164
164
|
queuedSubmissionCount(): number;
|
|
165
|
-
/**
|
|
166
|
-
* Deliver a user message into the turn already running, as a user message the
|
|
167
|
-
* model reads after the tool results of the round in flight.
|
|
168
|
-
*
|
|
169
|
-
* Resolves true once the running turn has taken it. Resolves false when that
|
|
170
|
-
* turn offers no further request boundary — it is finishing, or parked on an
|
|
171
|
-
* approval — leaving the caller to send the message as its own turn.
|
|
172
|
-
*
|
|
173
|
-
* `options.id` is the submission's address (see `## The three stages`):
|
|
174
|
-
* while this call is outstanding, `id` is tracked in `#pendingSteerIds` so
|
|
175
|
-
* `retractSubmission`/`editSubmission` can route to it. Omitted by the one
|
|
176
|
-
* caller that has no such id — background subagent notifications, via
|
|
177
|
-
* `injectIntoActiveTurn` directly — which can never be retracted or edited.
|
|
178
|
-
*/
|
|
165
|
+
/** Compatibility view of mailbox admission; submitMessage also owns fallback. */
|
|
179
166
|
steerActiveTurn(input: string | UserTurn, options?: {
|
|
180
167
|
id?: string;
|
|
181
168
|
}): Promise<boolean>;
|
|
@@ -196,38 +183,21 @@ export declare class ConversationAdapter {
|
|
|
196
183
|
injectIntoActiveTurn(items: readonly ProviderInputItem[], options?: {
|
|
197
184
|
id?: string;
|
|
198
185
|
}): Promise<boolean>;
|
|
199
|
-
/**
|
|
200
|
-
* Retract a submission before it reaches the model, addressed by the id
|
|
201
|
-
* `sendMessage`/`steerActiveTurn` were given (`preferredMessageId`), which
|
|
202
|
-
* is the same id the UI already keys `pendingQueuedMessages` on.
|
|
203
|
-
*
|
|
204
|
-
* Routes by stage (`## The three stages`): a still-waiting steer goes to
|
|
205
|
-
* `retractSteer` on the run loop; a queued item goes to the controller's
|
|
206
|
-
* `remove_queued`.
|
|
207
|
-
*
|
|
208
|
-
* A pending steer has no matching `#messagesById` entry to settle — its
|
|
209
|
-
* caller (`steerActiveTurn`) awaits the `turnFlow.steer` promise directly,
|
|
210
|
-
* not a queued `sendMessage`. `retractSteer` resolves that promise itself
|
|
211
|
-
* (with `'retracted'`), which `injectIntoActiveTurn` reports as `false` to
|
|
212
|
-
* that caller. A queued item, by contrast, *does* have a `sendMessage`
|
|
213
|
-
* promise parked in `#messagesById`, which this settles with an
|
|
214
|
-
* `AbortError` — the same shape `removeLastQueuedItem` already used.
|
|
215
|
-
*/
|
|
186
|
+
/** Mutate only the owner's still-pending record and its queue/mailbox projection. */
|
|
216
187
|
retractSubmission(id: string): Promise<SubmissionMutation>;
|
|
217
|
-
/**
|
|
218
|
-
* Replace a submission's content in place, without changing its stage or
|
|
219
|
-
* position — a pending steer stays a steer at its slot, a queued item keeps
|
|
220
|
-
* its queue index and steer-ahead-of-follow-ups priority.
|
|
221
|
-
*
|
|
222
|
-
* **The trap**: the controller queue stores display `text` only.
|
|
223
|
-
* `#runQueuedTurn` executes `message.input` from `#messagesById`, so
|
|
224
|
-
* issuing `edit_queued` alone redraws the new text but sends the old turn.
|
|
225
|
-
* This replaces the `#messagesById` entry's `input` first, keeping the
|
|
226
|
-
* `QUEUED_NON_TEXT_PLACEHOLDER` substitution `sendMessage` applies to the
|
|
227
|
-
* controller's display copy.
|
|
228
|
-
*/
|
|
188
|
+
/** Keep the executable payload and display projection in the same mutation. */
|
|
229
189
|
editSubmission(id: string, turn: UserTurn): Promise<SubmissionMutation>;
|
|
230
|
-
|
|
190
|
+
/** Own steer admission and fallback with the same id and latest payload. */
|
|
191
|
+
submitMessage(input: string | UserTurn, options?: SendMessageOptions, delivery?: {
|
|
192
|
+
onSteerSettled(admitted: boolean, input: string | UserTurn): void;
|
|
193
|
+
prepareFollowUp?(input: string | UserTurn): string | UserTurn;
|
|
194
|
+
}): Promise<{
|
|
195
|
+
kind: 'steered';
|
|
196
|
+
} | {
|
|
197
|
+
kind: 'turn';
|
|
198
|
+
terminal: ConversationTerminal;
|
|
199
|
+
}>;
|
|
200
|
+
sendMessage(input: string | UserTurn, options?: SendMessageOptions): Promise<ConversationTerminal>;
|
|
231
201
|
prepareMessage(input: string | UserTurn, ids: PreparedMessageIds): Promise<PreparedMessageResult>;
|
|
232
202
|
commitMessage(leaseId: string): Promise<void>;
|
|
233
203
|
cancelPreparedMessage(leaseId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation-adapter.d.ts","sourceRoot":"","sources":["../../../source/services/conversation/conversation-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conversation-adapter.d.ts","sourceRoot":"","sources":["../../../source/services/conversation/conversation-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { injectSkillIntoTurn } from '../../types/user-turn.js';
|
|
1
2
|
import { collectTerminalResult, TerminalResultCollectorExhaustionError } from '../session/terminal-result-collector.js';
|
|
2
3
|
import { getCallIdFromObject } from '../interruption-info.js';
|
|
3
4
|
import { normalizeUserTurn } from '../../types/user-turn.js';
|
|
@@ -42,15 +43,8 @@ export class ConversationAdapter {
|
|
|
42
43
|
#approval;
|
|
43
44
|
#pendingInteraction;
|
|
44
45
|
#turnFlow;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
* Ids currently handed to `turnFlow.steer` and not yet settled. Populated
|
|
48
|
-
* right before the call and cleared when that steer's promise resolves
|
|
49
|
-
* (admitted, released, or retracted) — this is what lets
|
|
50
|
-
* `retractSubmission`/`editSubmission` tell a pending steer apart from a
|
|
51
|
-
* queued item sharing the same id space, per `## The three stages`.
|
|
52
|
-
*/
|
|
53
|
-
#pendingSteerIds = new Set();
|
|
46
|
+
/** Executable payload and lifecycle; queue/mailbox entries are projections. */
|
|
47
|
+
#submissions = new Map();
|
|
54
48
|
#queue;
|
|
55
49
|
#nextQueuedMessageId = 1;
|
|
56
50
|
#nextActionId = 1;
|
|
@@ -117,7 +111,7 @@ export class ConversationAdapter {
|
|
|
117
111
|
this.#queue = new QueueController({
|
|
118
112
|
driver,
|
|
119
113
|
snapshotFactory: (item) => {
|
|
120
|
-
const message = this.#
|
|
114
|
+
const message = this.#submissions.get(item.id);
|
|
121
115
|
return message ? { requestId: item.id } : { requestId: item.id, recovered: true };
|
|
122
116
|
},
|
|
123
117
|
capacity: deps.queueCapacity,
|
|
@@ -226,25 +220,26 @@ export class ConversationAdapter {
|
|
|
226
220
|
firstUserMessagePreview,
|
|
227
221
|
}, fn);
|
|
228
222
|
}
|
|
229
|
-
/**
|
|
230
|
-
* Deliver a user message into the turn already running, as a user message the
|
|
231
|
-
* model reads after the tool results of the round in flight.
|
|
232
|
-
*
|
|
233
|
-
* Resolves true once the running turn has taken it. Resolves false when that
|
|
234
|
-
* turn offers no further request boundary — it is finishing, or parked on an
|
|
235
|
-
* approval — leaving the caller to send the message as its own turn.
|
|
236
|
-
*
|
|
237
|
-
* `options.id` is the submission's address (see `## The three stages`):
|
|
238
|
-
* while this call is outstanding, `id` is tracked in `#pendingSteerIds` so
|
|
239
|
-
* `retractSubmission`/`editSubmission` can route to it. Omitted by the one
|
|
240
|
-
* caller that has no such id — background subagent notifications, via
|
|
241
|
-
* `injectIntoActiveTurn` directly — which can never be retracted or edited.
|
|
242
|
-
*/
|
|
223
|
+
/** Compatibility view of mailbox admission; submitMessage also owns fallback. */
|
|
243
224
|
async steerActiveTurn(input, options) {
|
|
244
225
|
const turn = normalizeUserTurn(input);
|
|
245
226
|
if (!turn.text.trim() && !turn.images?.length)
|
|
246
227
|
return false;
|
|
247
|
-
|
|
228
|
+
const id = options?.id;
|
|
229
|
+
// Addressed legacy callers share the registry; normal submissions already
|
|
230
|
+
// own their record before asking the mailbox to admit its projection.
|
|
231
|
+
const record = id && !this.#submissions.has(id)
|
|
232
|
+
? { stage: 'pending_steer', input: turn, options: {}, resolve: () => undefined, reject: () => undefined }
|
|
233
|
+
: undefined;
|
|
234
|
+
if (id && record)
|
|
235
|
+
this.#submissions.set(id, record);
|
|
236
|
+
try {
|
|
237
|
+
return await this.injectIntoActiveTurn([userTurnToProviderItem(turn, { steering: true })], options);
|
|
238
|
+
}
|
|
239
|
+
finally {
|
|
240
|
+
if (id && record && this.#submissions.get(id) === record)
|
|
241
|
+
this.#submissions.delete(id);
|
|
242
|
+
}
|
|
248
243
|
}
|
|
249
244
|
/**
|
|
250
245
|
* Hand pre-built items to the turn already running, admitted at its next
|
|
@@ -266,43 +261,19 @@ export class ConversationAdapter {
|
|
|
266
261
|
if (!this.isQueueActive())
|
|
267
262
|
return false;
|
|
268
263
|
const id = options?.id;
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
try {
|
|
272
|
-
const outcome = await this.#turnFlow.steer(items, id ? { id } : undefined);
|
|
273
|
-
return outcome === 'admitted';
|
|
274
|
-
}
|
|
275
|
-
finally {
|
|
276
|
-
if (id)
|
|
277
|
-
this.#pendingSteerIds.delete(id);
|
|
278
|
-
}
|
|
264
|
+
const outcome = await this.#turnFlow.steer(items, id ? { id } : undefined);
|
|
265
|
+
return outcome === 'admitted';
|
|
279
266
|
}
|
|
280
|
-
/**
|
|
281
|
-
* Retract a submission before it reaches the model, addressed by the id
|
|
282
|
-
* `sendMessage`/`steerActiveTurn` were given (`preferredMessageId`), which
|
|
283
|
-
* is the same id the UI already keys `pendingQueuedMessages` on.
|
|
284
|
-
*
|
|
285
|
-
* Routes by stage (`## The three stages`): a still-waiting steer goes to
|
|
286
|
-
* `retractSteer` on the run loop; a queued item goes to the controller's
|
|
287
|
-
* `remove_queued`.
|
|
288
|
-
*
|
|
289
|
-
* A pending steer has no matching `#messagesById` entry to settle — its
|
|
290
|
-
* caller (`steerActiveTurn`) awaits the `turnFlow.steer` promise directly,
|
|
291
|
-
* not a queued `sendMessage`. `retractSteer` resolves that promise itself
|
|
292
|
-
* (with `'retracted'`), which `injectIntoActiveTurn` reports as `false` to
|
|
293
|
-
* that caller. A queued item, by contrast, *does* have a `sendMessage`
|
|
294
|
-
* promise parked in `#messagesById`, which this settles with an
|
|
295
|
-
* `AbortError` — the same shape `removeLastQueuedItem` already used.
|
|
296
|
-
*/
|
|
267
|
+
/** Mutate only the owner's still-pending record and its queue/mailbox projection. */
|
|
297
268
|
async retractSubmission(id) {
|
|
298
|
-
if (this.#
|
|
269
|
+
if (this.#submissions.get(id)?.stage === 'pending_steer') {
|
|
299
270
|
if (!this.#turnFlow.retractSteer) {
|
|
300
271
|
throw new Error(`ConversationAdapter.retractSubmission: pending steer '${id}' has no turnFlow.retractSteer to route to`);
|
|
301
272
|
}
|
|
302
273
|
const retracted = this.#turnFlow.retractSteer(id);
|
|
303
274
|
if (!retracted)
|
|
304
275
|
return { kind: 'too_late', stage: 'started' };
|
|
305
|
-
this.#
|
|
276
|
+
this.#submissions.delete(id);
|
|
306
277
|
return { kind: 'applied', stage: 'pending_steer' };
|
|
307
278
|
}
|
|
308
279
|
if (this.#queue) {
|
|
@@ -316,45 +287,42 @@ export class ConversationAdapter {
|
|
|
316
287
|
return { kind: 'applied', stage: 'queued' };
|
|
317
288
|
}
|
|
318
289
|
}
|
|
319
|
-
if (this.#
|
|
290
|
+
if (this.#submissions.has(id))
|
|
320
291
|
return { kind: 'too_late', stage: 'started' };
|
|
321
292
|
return { kind: 'unknown_id' };
|
|
322
293
|
}
|
|
323
|
-
/**
|
|
324
|
-
* Replace a submission's content in place, without changing its stage or
|
|
325
|
-
* position — a pending steer stays a steer at its slot, a queued item keeps
|
|
326
|
-
* its queue index and steer-ahead-of-follow-ups priority.
|
|
327
|
-
*
|
|
328
|
-
* **The trap**: the controller queue stores display `text` only.
|
|
329
|
-
* `#runQueuedTurn` executes `message.input` from `#messagesById`, so
|
|
330
|
-
* issuing `edit_queued` alone redraws the new text but sends the old turn.
|
|
331
|
-
* This replaces the `#messagesById` entry's `input` first, keeping the
|
|
332
|
-
* `QUEUED_NON_TEXT_PLACEHOLDER` substitution `sendMessage` applies to the
|
|
333
|
-
* controller's display copy.
|
|
334
|
-
*/
|
|
294
|
+
/** Keep the executable payload and display projection in the same mutation. */
|
|
335
295
|
async editSubmission(id, turn) {
|
|
336
|
-
if (this.#
|
|
296
|
+
if (this.#submissions.get(id)?.stage === 'pending_steer') {
|
|
337
297
|
if (!this.#turnFlow.editSteer) {
|
|
338
298
|
throw new Error(`ConversationAdapter.editSubmission: pending steer '${id}' has no turnFlow.editSteer to route to`);
|
|
339
299
|
}
|
|
340
|
-
const
|
|
300
|
+
const submission = this.#submissions.get(id);
|
|
301
|
+
const item = userTurnToProviderItem(normalizeUserTurn(submission.prepareInput?.(turn) ?? turn), {
|
|
302
|
+
steering: true,
|
|
303
|
+
});
|
|
341
304
|
const edited = this.#turnFlow.editSteer(id, [item]);
|
|
342
|
-
|
|
305
|
+
if (!edited)
|
|
306
|
+
return { kind: 'too_late', stage: 'started' };
|
|
307
|
+
submission.input = structuredClone(turn);
|
|
308
|
+
const { inputSurgeApproval: _approval, ...options } = submission.options;
|
|
309
|
+
submission.options = options;
|
|
310
|
+
return { kind: 'applied', stage: 'pending_steer' };
|
|
343
311
|
}
|
|
344
312
|
if (this.#queue) {
|
|
345
313
|
const inQueue = this.#queue.state().queue.some((item) => item.id === id);
|
|
346
314
|
if (inQueue) {
|
|
347
|
-
const message = this.#
|
|
315
|
+
const message = this.#submissions.get(id);
|
|
348
316
|
if (!message)
|
|
349
317
|
return { kind: 'unknown_id' };
|
|
350
318
|
const { inputSurgeApproval: _invalidatedApproval, ...options } = message.options;
|
|
351
|
-
this.#
|
|
319
|
+
this.#submissions.set(id, { ...message, input: structuredClone(turn), options });
|
|
352
320
|
const displayText = normalizeUserTurn(turn).text;
|
|
353
321
|
const controllerText = displayText.trim() ? displayText : QUEUED_NON_TEXT_PLACEHOLDER;
|
|
354
322
|
const result = await this.#queue.command({ kind: 'edit_queued', itemId: id, text: controllerText });
|
|
355
323
|
if (result.kind !== 'accepted') {
|
|
356
|
-
if (this.#
|
|
357
|
-
this.#
|
|
324
|
+
if (this.#submissions.has(id)) {
|
|
325
|
+
this.#submissions.set(id, message);
|
|
358
326
|
}
|
|
359
327
|
return { kind: 'too_late', stage: 'started' };
|
|
360
328
|
}
|
|
@@ -362,14 +330,66 @@ export class ConversationAdapter {
|
|
|
362
330
|
return { kind: 'applied', stage: 'queued' };
|
|
363
331
|
}
|
|
364
332
|
}
|
|
365
|
-
if (this.#
|
|
333
|
+
if (this.#submissions.has(id))
|
|
366
334
|
return { kind: 'too_late', stage: 'started' };
|
|
367
335
|
return { kind: 'unknown_id' };
|
|
368
336
|
}
|
|
369
|
-
|
|
337
|
+
/** Own steer admission and fallback with the same id and latest payload. */
|
|
338
|
+
async submitMessage(input, options = {}, delivery) {
|
|
339
|
+
const id = options.preferredMessageId ?? String(this.#nextQueuedMessageId++);
|
|
340
|
+
if (this.#submissions.has(id))
|
|
341
|
+
throw new Error(`A submission already uses request id ${id}`);
|
|
342
|
+
const submission = {
|
|
343
|
+
stage: 'pending_steer',
|
|
344
|
+
prepareInput: (value) => (typeof value === 'string' ? value : injectSkillIntoTurn(value)),
|
|
345
|
+
input: structuredClone(input),
|
|
346
|
+
options,
|
|
347
|
+
resolve: () => undefined,
|
|
348
|
+
reject: () => undefined,
|
|
349
|
+
};
|
|
350
|
+
if (options.busyMode !== 'steer' || !this.isQueueOwningSubmissions()) {
|
|
351
|
+
return {
|
|
352
|
+
kind: 'turn',
|
|
353
|
+
terminal: await this.#sendMessage(submission.input, {
|
|
354
|
+
...options,
|
|
355
|
+
preferredMessageId: id,
|
|
356
|
+
}, submission),
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
this.#submissions.set(id, submission);
|
|
360
|
+
const epoch = this.#cancellationEpoch;
|
|
361
|
+
try {
|
|
362
|
+
const admitted = await this.steerActiveTurn(submission.prepareInput(submission.input), { id });
|
|
363
|
+
if ((!admitted && epoch !== this.#cancellationEpoch) || this.#submissions.get(id) !== submission) {
|
|
364
|
+
throw queueCancellationError('Pending submission was cancelled');
|
|
365
|
+
}
|
|
366
|
+
delivery?.onSteerSettled(admitted, submission.input);
|
|
367
|
+
if (admitted) {
|
|
368
|
+
this.#submissions.delete(id);
|
|
369
|
+
return { kind: 'steered' };
|
|
370
|
+
}
|
|
371
|
+
submission.input = delivery?.prepareFollowUp?.(submission.input) ?? submission.input;
|
|
372
|
+
return {
|
|
373
|
+
kind: 'turn',
|
|
374
|
+
terminal: await this.#sendMessage(submission.input, {
|
|
375
|
+
...submission.options,
|
|
376
|
+
preferredMessageId: id,
|
|
377
|
+
}, submission),
|
|
378
|
+
};
|
|
379
|
+
}
|
|
380
|
+
finally {
|
|
381
|
+
if (this.#submissions.get(id) === submission && submission.stage === 'pending_steer') {
|
|
382
|
+
this.#submissions.delete(id);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
sendMessage(input, options = {}) {
|
|
387
|
+
return this.#sendMessage(input, options);
|
|
388
|
+
}
|
|
389
|
+
async #sendMessage(input, { onAdmission, onTextChunk, onReasoningChunk, onCommandMessage, onEvent, hallucinationRetryCount = 0, inputSurgeApproval, replayFromHistory, preferredMessageId, busyMode, suppressUserMessageDisplay, } = {}, existing) {
|
|
370
390
|
const queue = this.#queue;
|
|
371
391
|
if (!queue) {
|
|
372
|
-
return this.#executeMessage(input, {
|
|
392
|
+
return this.#executeMessage(existing?.prepareInput?.(input) ?? input, {
|
|
373
393
|
onTextChunk,
|
|
374
394
|
onReasoningChunk,
|
|
375
395
|
onCommandMessage,
|
|
@@ -385,11 +405,13 @@ export class ConversationAdapter {
|
|
|
385
405
|
}
|
|
386
406
|
return new Promise((resolve, reject) => {
|
|
387
407
|
const requestId = preferredMessageId ?? String(this.#nextQueuedMessageId++);
|
|
388
|
-
if (this.#
|
|
408
|
+
if (this.#submissions.has(requestId) && this.#submissions.get(requestId) !== existing) {
|
|
389
409
|
reject(new Error(`A queued message already uses request id ${requestId}`));
|
|
390
410
|
return;
|
|
391
411
|
}
|
|
392
412
|
const message = {
|
|
413
|
+
stage: 'queued',
|
|
414
|
+
prepareInput: existing?.prepareInput,
|
|
393
415
|
input: typeof input === 'string' ? input : structuredClone(input),
|
|
394
416
|
options: {
|
|
395
417
|
onTextChunk,
|
|
@@ -405,7 +427,9 @@ export class ConversationAdapter {
|
|
|
405
427
|
resolve,
|
|
406
428
|
reject,
|
|
407
429
|
};
|
|
408
|
-
|
|
430
|
+
if (existing)
|
|
431
|
+
Object.assign(existing, message);
|
|
432
|
+
this.#submissions.set(requestId, existing ?? message);
|
|
409
433
|
const displayText = normalizeUserTurn(input).text;
|
|
410
434
|
const controllerText = displayText.trim() ? displayText : QUEUED_NON_TEXT_PLACEHOLDER;
|
|
411
435
|
void queue
|
|
@@ -582,7 +606,7 @@ export class ConversationAdapter {
|
|
|
582
606
|
};
|
|
583
607
|
void proof.completion.then(settle, settle);
|
|
584
608
|
}
|
|
585
|
-
if (this.#cancellationProven && activeRequestId && this.#
|
|
609
|
+
if (this.#cancellationProven && activeRequestId && this.#submissions.has(activeRequestId)) {
|
|
586
610
|
this.#settleFailure(activeRequestId, queueCancellationError('Active turn was cancelled'));
|
|
587
611
|
}
|
|
588
612
|
if (this.#cancellationProven && this.#activeRequestId === activeRequestId) {
|
|
@@ -599,9 +623,11 @@ export class ConversationAdapter {
|
|
|
599
623
|
#startQueuedTurn(execution) {
|
|
600
624
|
// Notify the orchestrator/UI before kicking off the run so that the user
|
|
601
625
|
// message can be appended to the message list with the correct timeline.
|
|
602
|
-
// Recovered items have no #
|
|
626
|
+
// Recovered items have no #submissions entry; still fire so a delivered
|
|
603
627
|
// row cannot stay in the pending list after the queue has started it.
|
|
604
|
-
const message = this.#
|
|
628
|
+
const message = this.#submissions.get(execution.snapshot.requestId);
|
|
629
|
+
if (message)
|
|
630
|
+
message.stage = 'started';
|
|
605
631
|
if (this.#queuedTurnStartObserver) {
|
|
606
632
|
try {
|
|
607
633
|
this.#queuedTurnStartObserver({
|
|
@@ -632,7 +658,7 @@ export class ConversationAdapter {
|
|
|
632
658
|
* of the active turn is the same shape with `reason: 'manual'`.
|
|
633
659
|
*/
|
|
634
660
|
async #runQueuedTurn(execution) {
|
|
635
|
-
const message = this.#
|
|
661
|
+
const message = this.#submissions.get(execution.snapshot.requestId);
|
|
636
662
|
try {
|
|
637
663
|
const recoveredInput = execution.item.text === QUEUED_NON_TEXT_PLACEHOLDER || execution.item.text === LEGACY_QUEUED_MESSAGE_PLACEHOLDER
|
|
638
664
|
? null
|
|
@@ -640,7 +666,7 @@ export class ConversationAdapter {
|
|
|
640
666
|
if (!message && !recoveredInput) {
|
|
641
667
|
throw new Error('Recovered queued message has no executable text input');
|
|
642
668
|
}
|
|
643
|
-
const result = await this.#executeMessage(message?.input ?? recoveredInput, message?.options ?? {}, execution.snapshot.requestId);
|
|
669
|
+
const result = await this.#executeMessage(message ? message.prepareInput?.(message.input) ?? message.input : recoveredInput, message?.options ?? {}, execution.snapshot.requestId);
|
|
644
670
|
if (result.type === 'approval_required') {
|
|
645
671
|
this.#approvalExecutionId = execution.executionId;
|
|
646
672
|
this.#approvalActionId = `adapter-action-${this.#nextActionId++}`;
|
|
@@ -700,17 +726,17 @@ export class ConversationAdapter {
|
|
|
700
726
|
}
|
|
701
727
|
}
|
|
702
728
|
#settleSuccess(requestId, terminal) {
|
|
703
|
-
const message = this.#
|
|
729
|
+
const message = this.#submissions.get(requestId);
|
|
704
730
|
if (!message)
|
|
705
731
|
return;
|
|
706
|
-
this.#
|
|
732
|
+
this.#submissions.delete(requestId);
|
|
707
733
|
message.resolve(terminal);
|
|
708
734
|
}
|
|
709
735
|
#settleFailure(requestId, error) {
|
|
710
|
-
const message = this.#
|
|
736
|
+
const message = this.#submissions.get(requestId);
|
|
711
737
|
if (!message)
|
|
712
738
|
return;
|
|
713
|
-
this.#
|
|
739
|
+
this.#submissions.delete(requestId);
|
|
714
740
|
message.reject(error);
|
|
715
741
|
}
|
|
716
742
|
async #collectTerminalResult(events, options, cancellationEpoch, requestId) {
|