@qduc/term2 0.14.0 → 0.16.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/README.md +324 -316
- package/dist/agent.d.ts +5 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +23 -61
- package/dist/agent.js.map +1 -1
- package/dist/app-helpers.d.ts +4 -0
- package/dist/app-helpers.d.ts.map +1 -1
- package/dist/app-helpers.js +6 -0
- package/dist/app-helpers.js.map +1 -1
- package/dist/app.d.ts +2 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +265 -27
- package/dist/app.js.map +1 -1
- package/dist/cli.js +123 -30
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto-approve-command.js +3 -3
- package/dist/commands/auto-approve-command.js.map +1 -1
- package/dist/commands/compact-command.d.ts.map +1 -1
- package/dist/commands/compact-command.js +4 -0
- package/dist/commands/compact-command.js.map +1 -1
- package/dist/commands/effort-command.js +1 -1
- package/dist/commands/effort-command.js.map +1 -1
- package/dist/commands/guarded-settings-command.d.ts +3 -1
- package/dist/commands/guarded-settings-command.d.ts.map +1 -1
- package/dist/commands/guarded-settings-command.js +17 -5
- package/dist/commands/guarded-settings-command.js.map +1 -1
- package/dist/commands/mode-commands.d.ts +9 -2
- package/dist/commands/mode-commands.d.ts.map +1 -1
- package/dist/commands/mode-commands.js +12 -3
- package/dist/commands/mode-commands.js.map +1 -1
- package/dist/commands/model-command.js +1 -1
- package/dist/commands/model-command.js.map +1 -1
- package/dist/commands/resume-command.d.ts +10 -0
- package/dist/commands/resume-command.d.ts.map +1 -0
- package/dist/commands/resume-command.js +40 -0
- package/dist/commands/resume-command.js.map +1 -0
- package/dist/commands/usage-command.d.ts +10 -1
- package/dist/commands/usage-command.d.ts.map +1 -1
- package/dist/commands/usage-command.js +11 -1
- package/dist/commands/usage-command.js.map +1 -1
- package/dist/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/components/ErrorBoundary.js +5 -4
- package/dist/components/ErrorBoundary.js.map +1 -1
- package/dist/components/InputBox.d.ts +2 -0
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +59 -8
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/components/MarkdownRenderer.js +16 -15
- package/dist/components/MarkdownRenderer.js.map +1 -1
- package/dist/components/common/MenuContainer.d.ts +25 -2
- package/dist/components/common/MenuContainer.d.ts.map +1 -1
- package/dist/components/common/MenuContainer.js +35 -11
- package/dist/components/common/MenuContainer.js.map +1 -1
- package/dist/components/common/ScrollableTabBar.d.ts.map +1 -1
- package/dist/components/common/ScrollableTabBar.js +5 -4
- package/dist/components/common/ScrollableTabBar.js.map +1 -1
- package/dist/components/input/ApplicationInputSurface.d.ts +4 -5
- package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
- package/dist/components/input/ApplicationInputSurface.js.map +1 -1
- package/dist/components/input/FirstRunSetupPrompt.d.ts.map +1 -1
- package/dist/components/input/FirstRunSetupPrompt.js +5 -4
- package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
- package/dist/components/input/MenuSurface.d.ts.map +1 -1
- package/dist/components/input/MenuSurface.js +10 -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 +2 -1
- package/dist/components/input/ModelMenuSession.js.map +1 -1
- package/dist/components/input/PendingQueueList.d.ts +2 -0
- package/dist/components/input/PendingQueueList.d.ts.map +1 -1
- package/dist/components/input/PendingQueueList.js +26 -6
- package/dist/components/input/PendingQueueList.js.map +1 -1
- package/dist/components/input/ProviderMenuSession.d.ts.map +1 -1
- package/dist/components/input/ProviderMenuSession.js +1 -0
- package/dist/components/input/ProviderMenuSession.js.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.js +8 -1
- package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.d.ts +2 -0
- package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.js +166 -73
- package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.d.ts +12 -3
- package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.js +197 -62
- package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
- package/dist/components/layout/Banner.d.ts +0 -1
- package/dist/components/layout/Banner.d.ts.map +1 -1
- package/dist/components/layout/Banner.js +43 -73
- package/dist/components/layout/Banner.js.map +1 -1
- package/dist/components/layout/BottomArea.d.ts +17 -6
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +44 -19
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/DiffView.js +5 -5
- package/dist/components/layout/DiffView.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts +9 -1
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +332 -80
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/layout/background-task-clock.d.ts +43 -0
- package/dist/components/layout/background-task-clock.d.ts.map +1 -0
- package/dist/components/layout/background-task-clock.js +46 -0
- package/dist/components/layout/background-task-clock.js.map +1 -0
- package/dist/components/layout/live-task-rows.d.ts +16 -0
- package/dist/components/layout/live-task-rows.d.ts.map +1 -0
- package/dist/components/layout/live-task-rows.js +28 -0
- package/dist/components/layout/live-task-rows.js.map +1 -0
- package/dist/components/layout/terminal-text-budget.d.ts +4 -0
- package/dist/components/layout/terminal-text-budget.d.ts.map +1 -0
- package/dist/components/layout/terminal-text-budget.js +18 -0
- package/dist/components/layout/terminal-text-budget.js.map +1 -0
- package/dist/components/menu/CopyMenu.d.ts.map +1 -1
- package/dist/components/menu/CopyMenu.js +4 -3
- package/dist/components/menu/CopyMenu.js.map +1 -1
- package/dist/components/menu/MentorPoolSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/MentorPoolSelectionMenu.js +28 -21
- package/dist/components/menu/MentorPoolSelectionMenu.js.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.js +43 -17
- package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
- package/dist/components/menu/PathSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/PathSelectionMenu.js +4 -3
- package/dist/components/menu/PathSelectionMenu.js.map +1 -1
- package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ProviderSelectionMenu.js +71 -26
- package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
- package/dist/components/menu/RewindMenu.d.ts.map +1 -1
- package/dist/components/menu/RewindMenu.js +4 -3
- package/dist/components/menu/RewindMenu.js.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.js +30 -25
- package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
- package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SettingsValueSelectionMenu.js +22 -20
- package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
- package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SkillSelectionMenu.js +33 -23
- package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
- package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
- package/dist/components/menu/SlashCommandMenu.js +11 -6
- package/dist/components/menu/SlashCommandMenu.js.map +1 -1
- package/dist/components/message/ChatMessage.js +2 -2
- package/dist/components/message/ChatMessage.js.map +1 -1
- package/dist/components/message/CodeContextSearchRenderer.d.ts.map +1 -1
- package/dist/components/message/CodeContextSearchRenderer.js +8 -11
- package/dist/components/message/CodeContextSearchRenderer.js.map +1 -1
- package/dist/components/message/CommandGroupSummary.d.ts +9 -0
- package/dist/components/message/CommandGroupSummary.d.ts.map +1 -0
- package/dist/components/message/CommandGroupSummary.js +39 -0
- package/dist/components/message/CommandGroupSummary.js.map +1 -0
- package/dist/components/message/CommandMessage.d.ts +8 -0
- package/dist/components/message/CommandMessage.d.ts.map +1 -1
- package/dist/components/message/CommandMessage.js +159 -110
- package/dist/components/message/CommandMessage.js.map +1 -1
- package/dist/components/message/GrepRenderer.d.ts.map +1 -1
- package/dist/components/message/GrepRenderer.js +5 -8
- package/dist/components/message/GrepRenderer.js.map +1 -1
- package/dist/components/message/MemoryRenderer.d.ts +1 -0
- package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
- package/dist/components/message/MemoryRenderer.js +19 -17
- package/dist/components/message/MemoryRenderer.js.map +1 -1
- package/dist/components/message/MessageList.d.ts +6 -3
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +68 -13
- package/dist/components/message/MessageList.js.map +1 -1
- package/dist/components/message/ReadFileRenderer.d.ts.map +1 -1
- package/dist/components/message/ReadFileRenderer.js +5 -6
- package/dist/components/message/ReadFileRenderer.js.map +1 -1
- package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
- package/dist/components/message/SubagentActivityMessage.js +21 -15
- package/dist/components/message/SubagentActivityMessage.js.map +1 -1
- package/dist/components/message/WebFetchRenderer.d.ts.map +1 -1
- package/dist/components/message/WebFetchRenderer.js +7 -11
- package/dist/components/message/WebFetchRenderer.js.map +1 -1
- package/dist/components/message/WebSearchRenderer.d.ts.map +1 -1
- package/dist/components/message/WebSearchRenderer.js +5 -10
- package/dist/components/message/WebSearchRenderer.js.map +1 -1
- package/dist/components/message/command-grouping.d.ts +66 -0
- package/dist/components/message/command-grouping.d.ts.map +1 -0
- package/dist/components/message/command-grouping.js +184 -0
- package/dist/components/message/command-grouping.js.map +1 -0
- package/dist/components/message/command-message-helpers.d.ts +11 -37
- package/dist/components/message/command-message-helpers.d.ts.map +1 -1
- package/dist/components/message/command-message-helpers.js +62 -8
- package/dist/components/message/command-message-helpers.js.map +1 -1
- package/dist/components/message/useCommandVisibility.d.ts.map +1 -1
- package/dist/components/message/useCommandVisibility.js +5 -4
- package/dist/components/message/useCommandVisibility.js.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.js +286 -156
- package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
- package/dist/components/prompt/HandoffConfirmationPrompt.d.ts.map +1 -1
- package/dist/components/prompt/HandoffConfirmationPrompt.js +3 -2
- package/dist/components/prompt/HandoffConfirmationPrompt.js.map +1 -1
- package/dist/components/prompt/InputSurgeConfirmationPrompt.d.ts.map +1 -1
- package/dist/components/prompt/InputSurgeConfirmationPrompt.js +5 -4
- package/dist/components/prompt/InputSurgeConfirmationPrompt.js.map +1 -1
- package/dist/components/prompt/LargeUncachedConfirmationPrompt.d.ts.map +1 -1
- package/dist/components/prompt/LargeUncachedConfirmationPrompt.js +4 -3
- package/dist/components/prompt/LargeUncachedConfirmationPrompt.js.map +1 -1
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.d.ts +11 -0
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.d.ts.map +1 -0
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.js +51 -0
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.js.map +1 -0
- package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
- package/dist/components/prompt/QueuePausedPrompt.js +15 -8
- package/dist/components/prompt/QueuePausedPrompt.js.map +1 -1
- package/dist/components/prompt/StandardModeConfirmationPrompt.d.ts.map +1 -1
- package/dist/components/prompt/StandardModeConfirmationPrompt.js +3 -2
- package/dist/components/prompt/StandardModeConfirmationPrompt.js.map +1 -1
- package/dist/components/theme.d.ts +58 -3
- package/dist/components/theme.d.ts.map +1 -1
- package/dist/components/theme.js +84 -17
- package/dist/components/theme.js.map +1 -1
- package/dist/contracts/application-stream.d.ts +21 -0
- package/dist/contracts/application-stream.d.ts.map +1 -1
- package/dist/contracts/conversation.d.ts +24 -1
- package/dist/contracts/conversation.d.ts.map +1 -1
- package/dist/contracts/conversation.js +8 -0
- package/dist/contracts/conversation.js.map +1 -1
- package/dist/contracts/streamed-model-turn.d.ts +22 -1
- package/dist/contracts/streamed-model-turn.d.ts.map +1 -1
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +8 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/session-runtime.d.ts +10 -0
- package/dist/core/session-runtime.d.ts.map +1 -0
- package/dist/core/session-runtime.js +9 -0
- package/dist/core/session-runtime.js.map +1 -0
- package/dist/gateway/assertion.d.ts +41 -0
- package/dist/gateway/assertion.d.ts.map +1 -0
- package/dist/gateway/assertion.js +168 -0
- package/dist/gateway/assertion.js.map +1 -0
- package/dist/gateway/contracts.d.ts +141 -0
- package/dist/gateway/contracts.d.ts.map +1 -0
- package/dist/gateway/contracts.js +24 -0
- package/dist/gateway/contracts.js.map +1 -0
- package/dist/gateway/dynamic-workspace-registry.d.ts +76 -0
- package/dist/gateway/dynamic-workspace-registry.d.ts.map +1 -0
- package/dist/gateway/dynamic-workspace-registry.js +403 -0
- package/dist/gateway/dynamic-workspace-registry.js.map +1 -0
- package/dist/gateway/gateway.d.ts +95 -0
- package/dist/gateway/gateway.d.ts.map +1 -0
- package/dist/gateway/gateway.js +1960 -0
- package/dist/gateway/gateway.js.map +1 -0
- package/dist/gateway/index.d.ts +22 -0
- package/dist/gateway/index.d.ts.map +1 -0
- package/dist/gateway/index.js +22 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/interaction-protocol.d.ts +76 -0
- package/dist/gateway/interaction-protocol.d.ts.map +1 -0
- package/dist/gateway/interaction-protocol.js +548 -0
- package/dist/gateway/interaction-protocol.js.map +1 -0
- package/dist/gateway/launcher-seam.d.ts +18 -0
- package/dist/gateway/launcher-seam.d.ts.map +1 -0
- package/dist/gateway/launcher-seam.js +43 -0
- package/dist/gateway/launcher-seam.js.map +1 -0
- package/dist/gateway/launcher.d.ts +8 -0
- package/dist/gateway/launcher.d.ts.map +1 -0
- package/dist/gateway/launcher.js +20 -0
- package/dist/gateway/launcher.js.map +1 -0
- package/dist/gateway/lifecycle.d.ts +12 -0
- package/dist/gateway/lifecycle.d.ts.map +1 -0
- package/dist/gateway/lifecycle.js +38 -0
- package/dist/gateway/lifecycle.js.map +1 -0
- package/dist/gateway/pairing.d.ts +25 -0
- package/dist/gateway/pairing.d.ts.map +1 -0
- package/dist/gateway/pairing.js +107 -0
- package/dist/gateway/pairing.js.map +1 -0
- package/dist/gateway/persistence/admission-persistence.d.ts +82 -0
- package/dist/gateway/persistence/admission-persistence.d.ts.map +1 -0
- package/dist/gateway/persistence/admission-persistence.js +215 -0
- package/dist/gateway/persistence/admission-persistence.js.map +1 -0
- package/dist/gateway/persistence/contracts.d.ts +94 -0
- package/dist/gateway/persistence/contracts.d.ts.map +1 -0
- package/dist/gateway/persistence/contracts.js +32 -0
- package/dist/gateway/persistence/contracts.js.map +1 -0
- package/dist/gateway/persistence/coordinator.d.ts +27 -0
- package/dist/gateway/persistence/coordinator.d.ts.map +1 -0
- package/dist/gateway/persistence/coordinator.js +194 -0
- package/dist/gateway/persistence/coordinator.js.map +1 -0
- package/dist/gateway/persistence/event-journal.d.ts +31 -0
- package/dist/gateway/persistence/event-journal.d.ts.map +1 -0
- package/dist/gateway/persistence/event-journal.js +378 -0
- package/dist/gateway/persistence/event-journal.js.map +1 -0
- package/dist/gateway/persistence/interaction-checkpoint.d.ts +17 -0
- package/dist/gateway/persistence/interaction-checkpoint.d.ts.map +1 -0
- package/dist/gateway/persistence/interaction-checkpoint.js +75 -0
- package/dist/gateway/persistence/interaction-checkpoint.js.map +1 -0
- package/dist/gateway/persistence/projection.d.ts +53 -0
- package/dist/gateway/persistence/projection.d.ts.map +1 -0
- package/dist/gateway/persistence/projection.js +226 -0
- package/dist/gateway/persistence/projection.js.map +1 -0
- package/dist/gateway/persistence/retention.d.ts +16 -0
- package/dist/gateway/persistence/retention.d.ts.map +1 -0
- package/dist/gateway/persistence/retention.js +93 -0
- package/dist/gateway/persistence/retention.js.map +1 -0
- package/dist/gateway/persistence/session-index.d.ts +34 -0
- package/dist/gateway/persistence/session-index.d.ts.map +1 -0
- package/dist/gateway/persistence/session-index.js +348 -0
- package/dist/gateway/persistence/session-index.js.map +1 -0
- package/dist/gateway/persistence/session-persistence.d.ts +68 -0
- package/dist/gateway/persistence/session-persistence.d.ts.map +1 -0
- package/dist/gateway/persistence/session-persistence.js +165 -0
- package/dist/gateway/persistence/session-persistence.js.map +1 -0
- package/dist/gateway/persistence/storage.d.ts +13 -0
- package/dist/gateway/persistence/storage.d.ts.map +1 -0
- package/dist/gateway/persistence/storage.js +87 -0
- package/dist/gateway/persistence/storage.js.map +1 -0
- package/dist/gateway/replay-ledger.d.ts +30 -0
- package/dist/gateway/replay-ledger.d.ts.map +1 -0
- package/dist/gateway/replay-ledger.js +83 -0
- package/dist/gateway/replay-ledger.js.map +1 -0
- package/dist/gateway/runtime-factory.d.ts +93 -0
- package/dist/gateway/runtime-factory.d.ts.map +1 -0
- package/dist/gateway/runtime-factory.js +242 -0
- package/dist/gateway/runtime-factory.js.map +1 -0
- package/dist/gateway/safe-log.d.ts +15 -0
- package/dist/gateway/safe-log.d.ts.map +1 -0
- package/dist/gateway/safe-log.js +108 -0
- package/dist/gateway/safe-log.js.map +1 -0
- package/dist/gateway/server-session.d.ts +65 -0
- package/dist/gateway/server-session.d.ts.map +1 -0
- package/dist/gateway/server-session.js +284 -0
- package/dist/gateway/server-session.js.map +1 -0
- package/dist/gateway/server.d.ts +65 -0
- package/dist/gateway/server.d.ts.map +1 -0
- package/dist/gateway/server.js +214 -0
- package/dist/gateway/server.js.map +1 -0
- package/dist/gateway/settings-rpc.d.ts +95 -0
- package/dist/gateway/settings-rpc.d.ts.map +1 -0
- package/dist/gateway/settings-rpc.js +227 -0
- package/dist/gateway/settings-rpc.js.map +1 -0
- package/dist/gateway/trusted-clients.d.ts +27 -0
- package/dist/gateway/trusted-clients.d.ts.map +1 -0
- package/dist/gateway/trusted-clients.js +157 -0
- package/dist/gateway/trusted-clients.js.map +1 -0
- package/dist/gateway/worker-boundary.d.ts +41 -0
- package/dist/gateway/worker-boundary.d.ts.map +1 -0
- package/dist/gateway/worker-boundary.js +159 -0
- package/dist/gateway/worker-boundary.js.map +1 -0
- package/dist/gateway/workspace-admission.d.ts +48 -0
- package/dist/gateway/workspace-admission.d.ts.map +1 -0
- package/dist/gateway/workspace-admission.js +358 -0
- package/dist/gateway/workspace-admission.js.map +1 -0
- package/dist/gateway/workspace-boundary-probe.d.ts +18 -0
- package/dist/gateway/workspace-boundary-probe.d.ts.map +1 -0
- package/dist/gateway/workspace-boundary-probe.js +37 -0
- package/dist/gateway/workspace-boundary-probe.js.map +1 -0
- package/dist/hooks/conversation-ui-reducer.d.ts +12 -0
- package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.js +12 -1
- package/dist/hooks/conversation-ui-reducer.js.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +39 -3
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +9 -1
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +34 -14
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts +6 -3
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.js +22 -9
- package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +9 -0
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +34 -14
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-grok-credit-usage.d.ts +20 -0
- package/dist/hooks/use-grok-credit-usage.d.ts.map +1 -0
- package/dist/hooks/use-grok-credit-usage.js +48 -0
- package/dist/hooks/use-grok-credit-usage.js.map +1 -0
- package/dist/hooks/use-opencode-go-usage.d.ts +8 -0
- package/dist/hooks/use-opencode-go-usage.d.ts.map +1 -0
- package/dist/hooks/use-opencode-go-usage.js +45 -0
- package/dist/hooks/use-opencode-go-usage.js.map +1 -0
- package/dist/hooks/use-provider-selection.d.ts +10 -0
- package/dist/hooks/use-provider-selection.d.ts.map +1 -1
- package/dist/hooks/use-provider-selection.js +105 -6
- package/dist/hooks/use-provider-selection.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +10 -2
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/hooks/use-shell-mode.d.ts +3 -4
- package/dist/hooks/use-shell-mode.d.ts.map +1 -1
- package/dist/hooks/use-shell-mode.js +14 -12
- package/dist/hooks/use-shell-mode.js.map +1 -1
- package/dist/hooks/use-terminal-columns.d.ts +15 -0
- package/dist/hooks/use-terminal-columns.d.ts.map +1 -0
- package/dist/hooks/use-terminal-columns.js +45 -0
- package/dist/hooks/use-terminal-columns.js.map +1 -0
- package/dist/lib/agent-client.d.ts +12 -3
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +116 -23
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +5 -0
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +10 -2
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +5 -0
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +36 -11
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/lib/editor-impl.d.ts.map +1 -1
- package/dist/lib/editor-impl.js +14 -17
- package/dist/lib/editor-impl.js.map +1 -1
- package/dist/lib/harness-input-idle.d.ts +16 -0
- package/dist/lib/harness-input-idle.d.ts.map +1 -0
- package/dist/lib/harness-input-idle.js +51 -0
- package/dist/lib/harness-input-idle.js.map +1 -0
- package/dist/lib/input-owner.d.ts +3 -0
- package/dist/lib/input-owner.d.ts.map +1 -1
- package/dist/lib/input-owner.js +2 -0
- package/dist/lib/input-owner.js.map +1 -1
- package/dist/lib/subagent-bridge.d.ts +3 -3
- package/dist/lib/subagent-bridge.d.ts.map +1 -1
- package/dist/lib/subagent-bridge.js +16 -9
- package/dist/lib/subagent-bridge.js.map +1 -1
- package/dist/lib/tool-invoke.d.ts +2 -0
- package/dist/lib/tool-invoke.d.ts.map +1 -1
- package/dist/lib/tool-invoke.js +3 -0
- package/dist/lib/tool-invoke.js.map +1 -1
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +12 -0
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/approval-model.md +22 -0
- package/dist/prompts/explorer-delegation-contract.test.ts +22 -0
- package/dist/prompts/gpt-5.6.md +4 -3
- package/dist/prompts/kimi.md +1 -1
- package/dist/prompts/mentor-mode-stub.md +3 -0
- package/dist/prompts/orchestrator-mode-stub.md +3 -0
- package/dist/prompts/orchestrator.md +10 -1
- package/dist/prompts/plan-mode-info.md +3 -3
- package/dist/prompts/plan-mode-stub.md +7 -0
- package/dist/prompts/prefix-quality.test.ts +112 -0
- package/dist/prompts/prompt-constructor.d.ts +2 -0
- package/dist/prompts/prompt-constructor.d.ts.map +1 -1
- package/dist/prompts/prompt-constructor.js +24 -11
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +48 -6
- package/dist/prompts/prompt-constructor.ts +28 -13
- package/dist/prompts/prompt-profiles.d.ts +1 -3
- package/dist/prompts/prompt-profiles.d.ts.map +1 -1
- package/dist/prompts/prompt-profiles.js +2 -7
- package/dist/prompts/prompt-profiles.js.map +1 -1
- package/dist/prompts/prompt-profiles.ts +3 -16
- package/dist/prompts/session-browser.md +3 -0
- package/dist/prompts/subagent-delegation.d.ts +3 -2
- package/dist/prompts/subagent-delegation.d.ts.map +1 -1
- package/dist/prompts/subagent-delegation.js +9 -13
- package/dist/prompts/subagent-delegation.js.map +1 -1
- package/dist/prompts/subagent-delegation.ts +9 -13
- package/dist/prompts/subagents/explorer.md +7 -1
- package/dist/prompts/subagents/librarian.md +2 -0
- package/dist/prompts/subagents/mentor.md +2 -0
- package/dist/prompts/subagents/worker.md +2 -0
- package/dist/providers/ai-sdk-streamed-model.d.ts +5 -0
- package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -1
- package/dist/providers/ai-sdk-streamed-model.js +64 -1
- package/dist/providers/ai-sdk-streamed-model.js.map +1 -1
- package/dist/providers/chained-wire-state.d.ts +13 -2
- package/dist/providers/chained-wire-state.d.ts.map +1 -1
- package/dist/providers/chained-wire-state.js +17 -10
- package/dist/providers/chained-wire-state.js.map +1 -1
- package/dist/providers/codex-auth.d.ts +70 -2
- package/dist/providers/codex-auth.d.ts.map +1 -1
- package/dist/providers/codex-auth.js +168 -2
- package/dist/providers/codex-auth.js.map +1 -1
- package/dist/providers/codex-responses-model.d.ts +3 -0
- package/dist/providers/codex-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +314 -162
- package/dist/providers/codex-responses-model.js.map +1 -1
- package/dist/providers/codex-turn-converter.d.ts.map +1 -1
- package/dist/providers/codex-turn-converter.js +7 -1
- package/dist/providers/codex-turn-converter.js.map +1 -1
- package/dist/providers/codex.provider.d.ts +25 -2
- package/dist/providers/codex.provider.d.ts.map +1 -1
- package/dist/providers/codex.provider.js +83 -71
- package/dist/providers/codex.provider.js.map +1 -1
- package/dist/providers/common/provider-errors.d.ts +20 -0
- package/dist/providers/common/provider-errors.d.ts.map +1 -1
- package/dist/providers/common/provider-errors.js +35 -0
- package/dist/providers/common/provider-errors.js.map +1 -1
- package/dist/providers/grok-auth.d.ts +102 -0
- package/dist/providers/grok-auth.d.ts.map +1 -0
- package/dist/providers/grok-auth.js +318 -0
- package/dist/providers/grok-auth.js.map +1 -0
- package/dist/providers/grok-credit-usage.d.ts +53 -0
- package/dist/providers/grok-credit-usage.d.ts.map +1 -0
- package/dist/providers/grok-credit-usage.js +108 -0
- package/dist/providers/grok-credit-usage.js.map +1 -0
- package/dist/providers/grok.provider.d.ts +24 -0
- package/dist/providers/grok.provider.d.ts.map +1 -0
- package/dist/providers/grok.provider.js +153 -0
- package/dist/providers/grok.provider.js.map +1 -0
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/jwt-claims.d.ts +12 -0
- package/dist/providers/jwt-claims.d.ts.map +1 -0
- package/dist/providers/jwt-claims.js +25 -0
- package/dist/providers/jwt-claims.js.map +1 -0
- package/dist/providers/luna-responses-lite-wire-protocol.d.ts +1 -0
- package/dist/providers/luna-responses-lite-wire-protocol.d.ts.map +1 -1
- package/dist/providers/luna-responses-lite-wire-protocol.js +19 -0
- package/dist/providers/luna-responses-lite-wire-protocol.js.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.d.ts +360 -232
- package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.js +360 -232
- package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
- package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -1
- package/dist/providers/model-catalog/generate-catalog.js +21 -1
- package/dist/providers/model-catalog/generate-catalog.js.map +1 -1
- package/dist/providers/oauth-account-store.d.ts +89 -0
- package/dist/providers/oauth-account-store.d.ts.map +1 -0
- package/dist/providers/oauth-account-store.js +193 -0
- package/dist/providers/oauth-account-store.js.map +1 -0
- package/dist/providers/oauth-accounts.d.ts +24 -0
- package/dist/providers/oauth-accounts.d.ts.map +1 -0
- package/dist/providers/oauth-accounts.js +37 -0
- package/dist/providers/oauth-accounts.js.map +1 -0
- package/dist/providers/oauth-pkce.d.ts +61 -0
- package/dist/providers/oauth-pkce.d.ts.map +1 -0
- package/dist/providers/oauth-pkce.js +272 -0
- package/dist/providers/oauth-pkce.js.map +1 -0
- package/dist/providers/oauth-session-account.d.ts +5 -0
- package/dist/providers/oauth-session-account.d.ts.map +1 -0
- package/dist/providers/oauth-session-account.js +24 -0
- package/dist/providers/oauth-session-account.js.map +1 -0
- package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
- package/dist/providers/openai-chat-completions-model.js +37 -16
- package/dist/providers/openai-chat-completions-model.js.map +1 -1
- package/dist/providers/openai-compatible-lazy.js.map +1 -1
- package/dist/providers/openai-compatible.provider.d.ts +5 -0
- package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible.provider.js +40 -3
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/providers/openai-responses-model.d.ts +13 -3
- package/dist/providers/openai-responses-model.d.ts.map +1 -1
- package/dist/providers/openai-responses-model.js +92 -39
- package/dist/providers/openai-responses-model.js.map +1 -1
- package/dist/providers/openai.provider.d.ts.map +1 -1
- package/dist/providers/openai.provider.js +23 -2
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/opencode-go-usage.d.ts +24 -0
- package/dist/providers/opencode-go-usage.d.ts.map +1 -0
- package/dist/providers/opencode-go-usage.js +37 -0
- package/dist/providers/opencode-go-usage.js.map +1 -0
- package/dist/providers/opencode-routing.d.ts +2 -0
- package/dist/providers/opencode-routing.d.ts.map +1 -1
- package/dist/providers/opencode-routing.js +12 -6
- package/dist/providers/opencode-routing.js.map +1 -1
- package/dist/providers/opencode-transport-discovery.d.ts +18 -0
- package/dist/providers/opencode-transport-discovery.d.ts.map +1 -0
- package/dist/providers/opencode-transport-discovery.js +115 -0
- package/dist/providers/opencode-transport-discovery.js.map +1 -0
- package/dist/providers/openrouter.provider.d.ts.map +1 -1
- package/dist/providers/openrouter.provider.js +8 -1
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/provider-opaque-compatibility.d.ts +58 -0
- package/dist/providers/provider-opaque-compatibility.d.ts.map +1 -0
- package/dist/providers/provider-opaque-compatibility.js +80 -0
- package/dist/providers/provider-opaque-compatibility.js.map +1 -0
- package/dist/providers/provider-service.d.ts +1 -1
- package/dist/providers/provider-service.d.ts.map +1 -1
- package/dist/providers/provider-service.js.map +1 -1
- package/dist/providers/registry.d.ts +10 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/responses-websocket-sessions.d.ts +26 -0
- package/dist/providers/responses-websocket-sessions.d.ts.map +1 -0
- package/dist/providers/responses-websocket-sessions.js +116 -0
- package/dist/providers/responses-websocket-sessions.js.map +1 -0
- package/dist/providers/retrying-model.d.ts.map +1 -1
- package/dist/providers/retrying-model.js +31 -3
- package/dist/providers/retrying-model.js.map +1 -1
- package/dist/providers/websocket-close-evidence.d.ts +45 -0
- package/dist/providers/websocket-close-evidence.d.ts.map +1 -0
- package/dist/providers/websocket-close-evidence.js +78 -0
- package/dist/providers/websocket-close-evidence.js.map +1 -0
- package/dist/providers/websocket-receive-watchdog.d.ts +9 -1
- package/dist/providers/websocket-receive-watchdog.d.ts.map +1 -1
- package/dist/providers/websocket-receive-watchdog.js +27 -1
- package/dist/providers/websocket-receive-watchdog.js.map +1 -1
- package/dist/providers/websocket-request-dispatch.d.ts +35 -0
- package/dist/providers/websocket-request-dispatch.d.ts.map +1 -0
- package/dist/providers/websocket-request-dispatch.js +23 -0
- package/dist/providers/websocket-request-dispatch.js.map +1 -0
- package/dist/scripts/eval-context-compaction/runner.js +1 -1
- package/dist/scripts/eval-context-compaction/runner.js.map +1 -1
- package/dist/services/agent-runtime/agent-handle.d.ts.map +1 -1
- package/dist/services/agent-runtime/agent-handle.js +8 -5
- package/dist/services/agent-runtime/agent-handle.js.map +1 -1
- package/dist/services/agent-runtime/agent-runtime.d.ts +1 -1
- package/dist/services/agent-runtime/agent-runtime.js +1 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts +37 -9
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.js +512 -219
- package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts +6 -1
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.d.ts.map +1 -1
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.js +72 -4
- package/dist/services/agent-runtime/context-compaction/local-context-compactor.js.map +1 -1
- package/dist/services/agent-runtime/executor.d.ts +1 -1
- package/dist/services/agent-runtime/executor.d.ts.map +1 -1
- package/dist/services/agent-runtime/executor.js +5 -5
- package/dist/services/agent-runtime/executor.js.map +1 -1
- package/dist/services/agent-runtime/generation-guard.d.ts +39 -24
- package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -1
- package/dist/services/agent-runtime/generation-guard.js +100 -97
- package/dist/services/agent-runtime/generation-guard.js.map +1 -1
- package/dist/services/agent-runtime/run-budget.d.ts +131 -0
- package/dist/services/agent-runtime/run-budget.d.ts.map +1 -0
- package/dist/services/agent-runtime/run-budget.js +272 -0
- package/dist/services/agent-runtime/run-budget.js.map +1 -0
- package/dist/services/agent-runtime/tool-invocation-context.d.ts +12 -0
- package/dist/services/agent-runtime/tool-invocation-context.d.ts.map +1 -1
- package/dist/services/agent-runtime/tool-invocation-context.js.map +1 -1
- package/dist/services/agent-runtime/types.d.ts +5 -4
- package/dist/services/agent-runtime/types.d.ts.map +1 -1
- package/dist/services/agent-stream.d.ts.map +1 -1
- package/dist/services/agent-stream.js +3 -1
- package/dist/services/agent-stream.js.map +1 -1
- package/dist/services/approval/approval-decision-executor.d.ts +6 -1
- package/dist/services/approval/approval-decision-executor.d.ts.map +1 -1
- package/dist/services/approval/approval-decision-executor.js +15 -3
- package/dist/services/approval/approval-decision-executor.js.map +1 -1
- package/dist/services/approval/approval-decision-policy.d.ts.map +1 -1
- package/dist/services/approval/approval-decision-policy.js +3 -0
- package/dist/services/approval/approval-decision-policy.js.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.d.ts +2 -0
- package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.js +14 -2
- package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.d.ts +3 -1
- package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.js +7 -4
- package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.d.ts +5 -0
- package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.js +8 -0
- package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.js +20 -11
- package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
- package/dist/services/approval/tool-ownership-registry.d.ts +5 -1
- package/dist/services/approval/tool-ownership-registry.d.ts.map +1 -1
- package/dist/services/approval/tool-ownership-registry.js +5 -22
- package/dist/services/approval/tool-ownership-registry.js.map +1 -1
- package/dist/services/background-task-activity.d.ts +79 -0
- package/dist/services/background-task-activity.d.ts.map +1 -0
- package/dist/services/background-task-activity.js +34 -0
- package/dist/services/background-task-activity.js.map +1 -0
- package/dist/services/command-message-streaming.d.ts +4 -2
- package/dist/services/command-message-streaming.d.ts.map +1 -1
- package/dist/services/command-message-streaming.js +2 -2
- package/dist/services/command-message-streaming.js.map +1 -1
- package/dist/services/conversation/conversation-adapter-factory.d.ts +6 -2
- package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter-factory.js +5 -1
- package/dist/services/conversation/conversation-adapter-factory.js.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts +53 -10
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +252 -43
- package/dist/services/conversation/conversation-adapter.js.map +1 -1
- package/dist/services/conversation/conversation-admission-workflow.d.ts +3 -2
- package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -1
- package/dist/services/conversation/conversation-admission-workflow.js +6 -1
- package/dist/services/conversation/conversation-admission-workflow.js.map +1 -1
- package/dist/services/conversation/conversation-decoder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-decoder.js +4 -0
- package/dist/services/conversation/conversation-decoder.js.map +1 -1
- package/dist/services/conversation/conversation-events.d.ts +97 -3
- package/dist/services/conversation/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts +14 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +245 -22
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.types.d.ts +6 -1
- package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.d.ts +60 -3
- package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.js +221 -16
- package/dist/services/conversation/conversation-persistence.js.map +1 -1
- package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
- package/dist/services/conversation/conversation-replay.js +27 -0
- package/dist/services/conversation/conversation-replay.js.map +1 -1
- package/dist/services/conversation/conversation-result-builder.d.ts +6 -2
- package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-result-builder.js +60 -1
- package/dist/services/conversation/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation/conversation-runtime-factory.d.ts +9 -1
- package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-runtime-factory.js +5 -1
- package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +32 -3
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +122 -32
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/conversation-state-projector.d.ts +2 -1
- package/dist/services/conversation/conversation-state-projector.d.ts.map +1 -1
- package/dist/services/conversation/conversation-state-projector.js +31 -3
- package/dist/services/conversation/conversation-state-projector.js.map +1 -1
- package/dist/services/conversation/run-item-normalizer.d.ts.map +1 -1
- package/dist/services/conversation/run-item-normalizer.js +24 -1
- package/dist/services/conversation/run-item-normalizer.js.map +1 -1
- package/dist/services/conversation/session-audit.d.ts +70 -0
- package/dist/services/conversation/session-audit.d.ts.map +1 -0
- package/dist/services/conversation/session-audit.js +164 -0
- package/dist/services/conversation/session-audit.js.map +1 -0
- package/dist/services/conversation/session-browser.d.ts +46 -0
- package/dist/services/conversation/session-browser.d.ts.map +1 -0
- package/dist/services/conversation/session-browser.js +380 -0
- package/dist/services/conversation/session-browser.js.map +1 -0
- package/dist/services/conversation-agent-client.d.ts +21 -2
- package/dist/services/conversation-agent-client.d.ts.map +1 -1
- package/dist/services/cost/model-cost.d.ts +13 -1
- package/dist/services/cost/model-cost.d.ts.map +1 -1
- package/dist/services/cost/model-cost.js +59 -0
- package/dist/services/cost/model-cost.js.map +1 -1
- package/dist/services/cost/subscription-providers.d.ts +2 -0
- package/dist/services/cost/subscription-providers.d.ts.map +1 -0
- package/dist/services/cost/subscription-providers.js +14 -0
- package/dist/services/cost/subscription-providers.js.map +1 -0
- package/dist/services/grok/grok-credit-usage-service.d.ts +62 -0
- package/dist/services/grok/grok-credit-usage-service.d.ts.map +1 -0
- package/dist/services/grok/grok-credit-usage-service.js +137 -0
- package/dist/services/grok/grok-credit-usage-service.js.map +1 -0
- package/dist/services/history-service.d.ts +9 -0
- package/dist/services/history-service.d.ts.map +1 -1
- package/dist/services/history-service.js +49 -2
- package/dist/services/history-service.js.map +1 -1
- package/dist/services/hooks/hook-composition.d.ts +17 -0
- package/dist/services/hooks/hook-composition.d.ts.map +1 -0
- package/dist/services/hooks/hook-composition.js +19 -0
- package/dist/services/hooks/hook-composition.js.map +1 -0
- package/dist/services/input-surge-approval.d.ts +21 -0
- package/dist/services/input-surge-approval.d.ts.map +1 -0
- package/dist/services/input-surge-approval.js +42 -0
- package/dist/services/input-surge-approval.js.map +1 -0
- package/dist/services/large-uncached-input-guard.js +4 -4
- package/dist/services/large-uncached-input-guard.js.map +1 -1
- package/dist/services/logging/assistant-turn-journal.d.ts +15 -0
- package/dist/services/logging/assistant-turn-journal.d.ts.map +1 -1
- package/dist/services/logging/assistant-turn-journal.js +27 -0
- package/dist/services/logging/assistant-turn-journal.js.map +1 -1
- package/dist/services/logging/conversation-log-events.d.ts +35 -1
- package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-events.js +17 -0
- package/dist/services/logging/conversation-log-events.js.map +1 -1
- package/dist/services/logging/conversation-log-writer.d.ts +8 -1
- package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-writer.js +145 -10
- package/dist/services/logging/conversation-log-writer.js.map +1 -1
- package/dist/services/logging/conversation-logger.d.ts.map +1 -1
- package/dist/services/logging/conversation-logger.js +18 -0
- package/dist/services/logging/conversation-logger.js.map +1 -1
- package/dist/services/logging/logging-service.d.ts +6 -6
- package/dist/services/logging/logging-service.d.ts.map +1 -1
- package/dist/services/logging/logging-service.js.map +1 -1
- package/dist/services/logging/provider-traffic.d.ts +17 -1
- package/dist/services/logging/provider-traffic.d.ts.map +1 -1
- package/dist/services/logging/provider-traffic.js +283 -139
- package/dist/services/logging/provider-traffic.js.map +1 -1
- package/dist/services/memory/memory-capabilities.d.ts.map +1 -1
- package/dist/services/memory/memory-capabilities.js +22 -3
- package/dist/services/memory/memory-capabilities.js.map +1 -1
- package/dist/services/memory/memory-search.d.ts +16 -0
- package/dist/services/memory/memory-search.d.ts.map +1 -0
- package/dist/services/memory/memory-search.js +55 -0
- package/dist/services/memory/memory-search.js.map +1 -0
- package/dist/services/memory/memory-store.d.ts +12 -0
- package/dist/services/memory/memory-store.d.ts.map +1 -1
- package/dist/services/memory/memory-store.js +14 -35
- package/dist/services/memory/memory-store.js.map +1 -1
- package/dist/services/mode-notices.d.ts +12 -6
- package/dist/services/mode-notices.d.ts.map +1 -1
- package/dist/services/mode-notices.js +51 -4
- package/dist/services/mode-notices.js.map +1 -1
- package/dist/services/model-service.d.ts +2 -2
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/queue/queue-controller.d.ts +14 -1
- package/dist/services/queue/queue-controller.d.ts.map +1 -1
- package/dist/services/queue/queue-controller.js +51 -6
- package/dist/services/queue/queue-controller.js.map +1 -1
- package/dist/services/retry/chain-recovery-fingerprint.d.ts +10 -0
- package/dist/services/retry/chain-recovery-fingerprint.d.ts.map +1 -0
- package/dist/services/retry/chain-recovery-fingerprint.js +23 -0
- package/dist/services/retry/chain-recovery-fingerprint.js.map +1 -0
- package/dist/services/retry/in-loop-model-retry.d.ts +12 -0
- package/dist/services/retry/in-loop-model-retry.d.ts.map +1 -0
- package/dist/services/retry/in-loop-model-retry.js +115 -0
- package/dist/services/retry/in-loop-model-retry.js.map +1 -0
- package/dist/services/retry/recovery-executor.d.ts.map +1 -1
- package/dist/services/retry/recovery-executor.js +2 -0
- package/dist/services/retry/recovery-executor.js.map +1 -1
- package/dist/services/retry/recovery-policy.d.ts.map +1 -1
- package/dist/services/retry/recovery-policy.js +4 -0
- package/dist/services/retry/recovery-policy.js.map +1 -1
- package/dist/services/retry/retry-classifier.d.ts.map +1 -1
- package/dist/services/retry/retry-classifier.js +42 -4
- package/dist/services/retry/retry-classifier.js.map +1 -1
- package/dist/services/retry/retry-contracts.d.ts +14 -0
- package/dist/services/retry/retry-contracts.d.ts.map +1 -1
- package/dist/services/retry/retry-error-classification.d.ts +17 -3
- package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
- package/dist/services/retry/retry-error-classification.js +58 -13
- package/dist/services/retry/retry-error-classification.js.map +1 -1
- package/dist/services/retry/retry-errors.d.ts +4 -0
- package/dist/services/retry/retry-errors.d.ts.map +1 -1
- package/dist/services/retry/retry-errors.js +7 -0
- package/dist/services/retry/retry-errors.js.map +1 -1
- package/dist/services/retry/retry-event-presenter.d.ts.map +1 -1
- package/dist/services/retry/retry-event-presenter.js +20 -0
- package/dist/services/retry/retry-event-presenter.js.map +1 -1
- package/dist/services/retry/upstream-retry-policy.d.ts.map +1 -1
- package/dist/services/retry/upstream-retry-policy.js +40 -7
- package/dist/services/retry/upstream-retry-policy.js.map +1 -1
- package/dist/services/runtime-setting-router.d.ts.map +1 -1
- package/dist/services/runtime-setting-router.js +13 -2
- package/dist/services/runtime-setting-router.js.map +1 -1
- package/dist/services/service-interfaces.d.ts +96 -13
- package/dist/services/service-interfaces.d.ts.map +1 -1
- package/dist/services/session/background-check-in-scheduler.d.ts +44 -0
- package/dist/services/session/background-check-in-scheduler.d.ts.map +1 -0
- package/dist/services/session/background-check-in-scheduler.js +88 -0
- package/dist/services/session/background-check-in-scheduler.js.map +1 -0
- package/dist/services/session/background-task-control.d.ts +6 -0
- package/dist/services/session/background-task-control.d.ts.map +1 -1
- package/dist/services/session/background-task-control.js +35 -7
- package/dist/services/session/background-task-control.js.map +1 -1
- package/dist/services/session/background-task-liveness.d.ts +2 -18
- package/dist/services/session/background-task-liveness.d.ts.map +1 -1
- package/dist/services/session/background-task-liveness.js +7 -22
- package/dist/services/session/background-task-liveness.js.map +1 -1
- package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
- package/dist/services/session/continuation-plan-applier.js +23 -0
- package/dist/services/session/continuation-plan-applier.js.map +1 -1
- package/dist/services/session/continuation-recovery-handler.d.ts +2 -0
- package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/continuation-recovery-handler.js +7 -1
- package/dist/services/session/continuation-recovery-handler.js.map +1 -1
- package/dist/services/session/initial-input-preparer.d.ts +2 -1
- package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
- package/dist/services/session/initial-input-preparer.js +3 -1
- package/dist/services/session/initial-input-preparer.js.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.d.ts +1 -0
- package/dist/services/session/initial-turn-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/initial-turn-recovery-handler.js +12 -2
- package/dist/services/session/initial-turn-recovery-handler.js.map +1 -1
- package/dist/services/session/repetition-detector.d.ts +0 -4
- package/dist/services/session/repetition-detector.d.ts.map +1 -1
- package/dist/services/session/repetition-detector.js +0 -7
- package/dist/services/session/repetition-detector.js.map +1 -1
- package/dist/services/session/session-client-factory.d.ts +3 -1
- package/dist/services/session/session-client-factory.d.ts.map +1 -1
- package/dist/services/session/session-client-factory.js +2 -2
- package/dist/services/session/session-client-factory.js.map +1 -1
- package/dist/services/session/session-composition.d.ts +9 -2
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +151 -37
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-lifecycle.d.ts +8 -0
- package/dist/services/session/session-lifecycle.d.ts.map +1 -1
- package/dist/services/session/session-lifecycle.js +4 -0
- package/dist/services/session/session-lifecycle.js.map +1 -1
- package/dist/services/session/session-stream-processor.d.ts +2 -0
- package/dist/services/session/session-stream-processor.d.ts.map +1 -1
- package/dist/services/session/session-stream-processor.js +9 -15
- package/dist/services/session/session-stream-processor.js.map +1 -1
- package/dist/services/session/terminal-result-collector.d.ts +2 -2
- package/dist/services/session/terminal-result-collector.d.ts.map +1 -1
- package/dist/services/session/terminal-result-collector.js +2 -1
- package/dist/services/session/terminal-result-collector.js.map +1 -1
- package/dist/services/session/turn-attempt-factory.d.ts +3 -1
- package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
- package/dist/services/session/turn-attempt-factory.js +1 -0
- package/dist/services/session/turn-attempt-factory.js.map +1 -1
- package/dist/services/session/turn-attempt.d.ts +3 -0
- package/dist/services/session/turn-attempt.d.ts.map +1 -1
- package/dist/services/session/turn-attempt.js +5 -0
- package/dist/services/session/turn-attempt.js.map +1 -1
- package/dist/services/session/turn-coordinator.d.ts +2 -2
- package/dist/services/session/turn-coordinator.d.ts.map +1 -1
- package/dist/services/session/turn-coordinator.js +31 -6
- package/dist/services/session/turn-coordinator.js.map +1 -1
- package/dist/services/session/turn-workflow.d.ts +4 -1
- package/dist/services/session/turn-workflow.d.ts.map +1 -1
- package/dist/services/session/turn-workflow.js +52 -8
- package/dist/services/session/turn-workflow.js.map +1 -1
- package/dist/services/settings/settings-persistence.d.ts +33 -0
- package/dist/services/settings/settings-persistence.d.ts.map +1 -1
- package/dist/services/settings/settings-persistence.js +102 -4
- package/dist/services/settings/settings-persistence.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +92 -0
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +119 -9
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-service.d.ts +66 -3
- package/dist/services/settings/settings-service.d.ts.map +1 -1
- package/dist/services/settings/settings-service.js +211 -28
- package/dist/services/settings/settings-service.js.map +1 -1
- package/dist/services/settings/settings-service.mock.d.ts +1 -1
- package/dist/services/settings/settings-service.mock.d.ts.map +1 -1
- package/dist/services/settings/settings-service.mock.js +3 -6
- package/dist/services/settings/settings-service.mock.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +21 -0
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +28 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +171 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -0
- package/dist/services/shell/background-shell-registry.d.ts +10 -0
- package/dist/services/shell/background-shell-registry.d.ts.map +1 -1
- package/dist/services/shell/background-shell-registry.js +9 -1
- package/dist/services/shell/background-shell-registry.js.map +1 -1
- package/dist/services/shell/background-shell-watches.d.ts +28 -3
- package/dist/services/shell/background-shell-watches.d.ts.map +1 -1
- package/dist/services/shell/background-shell-watches.js +41 -9
- package/dist/services/shell/background-shell-watches.js.map +1 -1
- package/dist/services/shell/shell-interaction-session.d.ts +4 -5
- package/dist/services/shell/shell-interaction-session.d.ts.map +1 -1
- package/dist/services/shell/shell-interaction-session.js +8 -20
- package/dist/services/shell/shell-interaction-session.js.map +1 -1
- package/dist/services/ssh-service.d.ts +81 -9
- package/dist/services/ssh-service.d.ts.map +1 -1
- package/dist/services/ssh-service.js +211 -37
- package/dist/services/ssh-service.js.map +1 -1
- package/dist/services/stream-event-processor.d.ts +2 -0
- package/dist/services/stream-event-processor.d.ts.map +1 -1
- package/dist/services/stream-event-processor.js +32 -7
- package/dist/services/stream-event-processor.js.map +1 -1
- package/dist/services/subagents/execution-runner.d.ts +1 -1
- package/dist/services/subagents/execution-runner.d.ts.map +1 -1
- package/dist/services/subagents/execution-runner.js +34 -22
- package/dist/services/subagents/execution-runner.js.map +1 -1
- package/dist/services/subagents/foreground-subagent-lease.d.ts +11 -1
- package/dist/services/subagents/foreground-subagent-lease.d.ts.map +1 -1
- package/dist/services/subagents/foreground-subagent-lease.js +10 -1
- package/dist/services/subagents/foreground-subagent-lease.js.map +1 -1
- package/dist/services/subagents/mentor-runner.d.ts +1 -1
- package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
- package/dist/services/subagents/mentor-runner.js +12 -3
- package/dist/services/subagents/mentor-runner.js.map +1 -1
- package/dist/services/subagents/nested-runner.d.ts +11 -1
- package/dist/services/subagents/nested-runner.d.ts.map +1 -1
- package/dist/services/subagents/nested-runner.js +79 -11
- package/dist/services/subagents/nested-runner.js.map +1 -1
- package/dist/services/subagents/runtime.d.ts.map +1 -1
- package/dist/services/subagents/runtime.js +7 -0
- package/dist/services/subagents/runtime.js.map +1 -1
- package/dist/services/subagents/subagent-async-registry.d.ts +4 -0
- package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
- package/dist/services/subagents/subagent-async-registry.js +81 -17
- package/dist/services/subagents/subagent-async-registry.js.map +1 -1
- package/dist/services/subagents/subagent-manager.d.ts +1 -1
- package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.js +4 -4
- package/dist/services/subagents/subagent-manager.js.map +1 -1
- package/dist/services/subagents/subagent-notification-store.d.ts +47 -2
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
- package/dist/services/subagents/subagent-notification-store.js +33 -0
- package/dist/services/subagents/subagent-notification-store.js.map +1 -1
- package/dist/services/subagents/subagent-run-control.d.ts +9 -1
- package/dist/services/subagents/subagent-run-control.d.ts.map +1 -1
- package/dist/services/subagents/subagent-run-control.js +12 -13
- package/dist/services/subagents/subagent-run-control.js.map +1 -1
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +20 -7
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/services/subagents/types.d.ts +25 -2
- package/dist/services/subagents/types.d.ts.map +1 -1
- package/dist/services/subagents/types.js.map +1 -1
- package/dist/services/subagents/utils.d.ts +5 -1
- package/dist/services/subagents/utils.d.ts.map +1 -1
- package/dist/services/subagents/utils.js +33 -2
- package/dist/services/subagents/utils.js.map +1 -1
- package/dist/services/tool-execution-ledger.d.ts.map +1 -1
- package/dist/services/tool-execution-ledger.js +5 -1
- package/dist/services/tool-execution-ledger.js.map +1 -1
- package/dist/services/workspace/active-workspace-root.d.ts +6 -0
- package/dist/services/workspace/active-workspace-root.d.ts.map +1 -1
- package/dist/services/workspace/active-workspace-root.js +22 -0
- package/dist/services/workspace/active-workspace-root.js.map +1 -1
- package/dist/test-helpers/ink-testing.d.ts.map +1 -1
- package/dist/test-helpers/ink-testing.js +4 -1
- package/dist/test-helpers/ink-testing.js.map +1 -1
- package/dist/test-helpers/terminal-e2e.d.ts.map +1 -1
- package/dist/test-helpers/terminal-e2e.js +12 -2
- package/dist/test-helpers/terminal-e2e.js.map +1 -1
- package/dist/tools/agent/activate-skill.d.ts.map +1 -1
- package/dist/tools/agent/activate-skill.js +2 -2
- package/dist/tools/agent/activate-skill.js.map +1 -1
- package/dist/tools/agent/ask-mentor.d.ts.map +1 -1
- package/dist/tools/agent/ask-mentor.js +2 -2
- package/dist/tools/agent/ask-mentor.js.map +1 -1
- package/dist/tools/agent/ask-user-constants.d.ts +2 -2
- package/dist/tools/agent/ask-user-constants.d.ts.map +1 -1
- package/dist/tools/agent/ask-user-constants.js +1 -1
- package/dist/tools/agent/ask-user-constants.js.map +1 -1
- package/dist/tools/agent/ask-user.d.ts.map +1 -1
- package/dist/tools/agent/ask-user.js +2 -0
- package/dist/tools/agent/ask-user.js.map +1 -1
- package/dist/tools/agent/run-subagent-async.d.ts +2 -11
- package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent-async.js +8 -2
- package/dist/tools/agent/run-subagent-async.js.map +1 -1
- package/dist/tools/agent/run-subagent.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent.js +44 -29
- package/dist/tools/agent/run-subagent.js.map +1 -1
- package/dist/tools/file/apply-patch.d.ts +2 -0
- package/dist/tools/file/apply-patch.d.ts.map +1 -1
- package/dist/tools/file/apply-patch.js +58 -14
- package/dist/tools/file/apply-patch.js.map +1 -1
- package/dist/tools/file/code-context.d.ts +5 -0
- package/dist/tools/file/code-context.d.ts.map +1 -1
- package/dist/tools/file/code-context.js +18 -6
- package/dist/tools/file/code-context.js.map +1 -1
- package/dist/tools/file/create-file.d.ts.map +1 -1
- package/dist/tools/file/create-file.js +11 -5
- package/dist/tools/file/create-file.js.map +1 -1
- package/dist/tools/file/edit-healing.d.ts +7 -0
- package/dist/tools/file/edit-healing.d.ts.map +1 -1
- package/dist/tools/file/edit-healing.js +7 -7
- package/dist/tools/file/edit-healing.js.map +1 -1
- package/dist/tools/file/glob.d.ts +3 -0
- package/dist/tools/file/glob.d.ts.map +1 -1
- package/dist/tools/file/glob.js +9 -3
- package/dist/tools/file/glob.js.map +1 -1
- package/dist/tools/file/grep.d.ts +5 -0
- package/dist/tools/file/grep.d.ts.map +1 -1
- package/dist/tools/file/grep.js +10 -6
- package/dist/tools/file/grep.js.map +1 -1
- package/dist/tools/file/patch-healing.d.ts +31 -0
- package/dist/tools/file/patch-healing.d.ts.map +1 -0
- package/dist/tools/file/patch-healing.js +231 -0
- package/dist/tools/file/patch-healing.js.map +1 -0
- package/dist/tools/file/read-file.d.ts +3 -0
- package/dist/tools/file/read-file.d.ts.map +1 -1
- package/dist/tools/file/read-file.js +9 -3
- package/dist/tools/file/read-file.js.map +1 -1
- package/dist/tools/file/search-replace.d.ts.map +1 -1
- package/dist/tools/file/search-replace.js +24 -6
- package/dist/tools/file/search-replace.js.map +1 -1
- package/dist/tools/format-helpers.d.ts +6 -0
- package/dist/tools/format-helpers.d.ts.map +1 -1
- package/dist/tools/format-helpers.js +23 -0
- package/dist/tools/format-helpers.js.map +1 -1
- package/dist/tools/memory/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory/memory-tools.js +324 -61
- package/dist/tools/memory/memory-tools.js.map +1 -1
- package/dist/tools/session-browser/session-browser-tools.d.ts +4 -0
- package/dist/tools/session-browser/session-browser-tools.d.ts.map +1 -0
- package/dist/tools/session-browser/session-browser-tools.js +47 -0
- package/dist/tools/session-browser/session-browser-tools.js.map +1 -0
- package/dist/tools/system/shell.d.ts +16 -1
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +97 -25
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/types.d.ts +8 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/web/web-fetch.d.ts.map +1 -1
- package/dist/tools/web/web-fetch.js +2 -2
- package/dist/tools/web/web-fetch.js.map +1 -1
- package/dist/tools/web/web-search.d.ts.map +1 -1
- package/dist/tools/web/web-search.js +2 -2
- package/dist/tools/web/web-search.js.map +1 -1
- package/dist/types/message.d.ts +1 -1
- package/dist/types/message.d.ts.map +1 -1
- package/dist/utils/ai/provider-credentials.d.ts +1 -1
- package/dist/utils/ai/provider-credentials.d.ts.map +1 -1
- package/dist/utils/ai/provider-credentials.js +18 -2
- package/dist/utils/ai/provider-credentials.js.map +1 -1
- package/dist/utils/ai/token-usage.d.ts +3 -1
- package/dist/utils/ai/token-usage.d.ts.map +1 -1
- package/dist/utils/ai/token-usage.js +7 -2
- package/dist/utils/ai/token-usage.js.map +1 -1
- package/dist/utils/apply-diff.d.ts.map +1 -1
- package/dist/utils/apply-diff.js +8 -0
- package/dist/utils/apply-diff.js.map +1 -1
- package/dist/utils/busy-turn-guard.d.ts +17 -0
- package/dist/utils/busy-turn-guard.d.ts.map +1 -0
- package/dist/utils/busy-turn-guard.js +24 -0
- package/dist/utils/busy-turn-guard.js.map +1 -0
- package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.js +88 -9
- package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
- package/dist/utils/error-helpers.d.ts.map +1 -1
- package/dist/utils/error-helpers.js +8 -0
- package/dist/utils/error-helpers.js.map +1 -1
- package/dist/utils/inject-warning-into-tool-output.d.ts +30 -0
- package/dist/utils/inject-warning-into-tool-output.d.ts.map +1 -1
- package/dist/utils/inject-warning-into-tool-output.js +39 -0
- package/dist/utils/inject-warning-into-tool-output.js.map +1 -1
- package/dist/utils/output/bounded-json.d.ts +33 -0
- package/dist/utils/output/bounded-json.d.ts.map +1 -0
- package/dist/utils/output/bounded-json.js +59 -0
- package/dist/utils/output/bounded-json.js.map +1 -0
- package/dist/utils/output/output-trim.d.ts.map +1 -1
- package/dist/utils/output/output-trim.js +7 -7
- package/dist/utils/output/output-trim.js.map +1 -1
- package/dist/utils/output/text-snippet.d.ts +6 -0
- package/dist/utils/output/text-snippet.d.ts.map +1 -0
- package/dist/utils/output/text-snippet.js +106 -0
- package/dist/utils/output/text-snippet.js.map +1 -0
- package/dist/utils/output/tty-osc.d.ts +1 -1
- package/dist/utils/output/tty-osc.js +1 -1
- package/dist/utils/resume-list.d.ts +3 -1
- package/dist/utils/resume-list.d.ts.map +1 -1
- package/dist/utils/resume-list.js +3 -2
- package/dist/utils/resume-list.js.map +1 -1
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +120 -6
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/shell/execute-shell.d.ts +8 -0
- package/dist/utils/shell/execute-shell.d.ts.map +1 -1
- package/dist/utils/shell/execute-shell.js +36 -30
- package/dist/utils/shell/execute-shell.js.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-env.d.ts +1 -0
- package/dist/utils/shell/sandbox/sandbox-env.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-env.js +2 -0
- package/dist/utils/shell/sandbox/sandbox-env.js.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts +4 -0
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-policy.js +1 -1
- package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -1
- package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts +1 -0
- package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/shell-sandbox-runner.js +21 -3
- package/dist/utils/shell/sandbox/shell-sandbox-runner.js.map +1 -1
- package/dist/utils/shell/shell-child-registry.d.ts +11 -0
- package/dist/utils/shell/shell-child-registry.d.ts.map +1 -0
- package/dist/utils/shell/shell-child-registry.js +40 -0
- package/dist/utils/shell/shell-child-registry.js.map +1 -0
- package/dist/utils/shell/shell-output.d.ts.map +1 -1
- package/dist/utils/shell/shell-output.js +10 -6
- package/dist/utils/shell/shell-output.js.map +1 -1
- package/dist/utils/shell/temp-sweep.d.ts +28 -0
- package/dist/utils/shell/temp-sweep.d.ts.map +1 -0
- package/dist/utils/shell/temp-sweep.js +140 -0
- package/dist/utils/shell/temp-sweep.js.map +1 -0
- package/dist/utils/streaming/extract-command-messages.d.ts +12 -5
- package/dist/utils/streaming/extract-command-messages.d.ts.map +1 -1
- package/dist/utils/streaming/extract-command-messages.js +29 -33
- package/dist/utils/streaming/extract-command-messages.js.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.d.ts +8 -0
- package/dist/utils/streaming/streaming-session-factory.d.ts.map +1 -1
- package/dist/utils/streaming/streaming-session-factory.js +3 -0
- package/dist/utils/streaming/streaming-session-factory.js.map +1 -1
- package/dist/utils/value-suggestions.d.ts +8 -0
- package/dist/utils/value-suggestions.d.ts.map +1 -1
- package/dist/utils/value-suggestions.js +72 -0
- package/dist/utils/value-suggestions.js.map +1 -1
- package/package.json +17 -11
- package/dist/utils/output/synchronized-output.d.ts +0 -35
- package/dist/utils/output/synchronized-output.d.ts.map +0 -1
- package/dist/utils/output/synchronized-output.js +0 -66
- package/dist/utils/output/synchronized-output.js.map +0 -1
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
2
|
import { ResponsesWS } from 'openai/resources/responses/ws';
|
|
3
|
-
import OpenAI from 'openai';
|
|
3
|
+
import OpenAI, { InternalServerError } from 'openai';
|
|
4
4
|
import { toCodexResponsesInput } from './codex-turn-converter.js';
|
|
5
5
|
import { sanitizeHeaders } from '../utils/header-sanitizer.js';
|
|
6
6
|
import { AbortedStreamRecorder } from './aborted-stream-recorder.js';
|
|
7
|
-
import { OrphanedChainedToolOutputError } from '../lib/chained-input-filter.js';
|
|
8
|
-
import { AmbiguousModelOutcomeError } from '../services/retry/retry-errors.js';
|
|
7
|
+
import { isOrphanedChainedToolOutputError, OrphanedChainedToolOutputError } from '../lib/chained-input-filter.js';
|
|
8
|
+
import { AmbiguousModelOutcomeError, ConversationStateNoProgressError } from '../services/retry/retry-errors.js';
|
|
9
|
+
import { fingerprintChainRequest } from '../services/retry/chain-recovery-fingerprint.js';
|
|
9
10
|
import { ChainedWireState } from './chained-wire-state.js';
|
|
10
11
|
import { LunaResponsesLiteWireProtocol } from './luna-responses-lite-wire-protocol.js';
|
|
11
12
|
import { captureProviderRequest } from './provider-request-capture.js';
|
|
12
13
|
import { createWebSocketReceiveWatchdog, DEFAULT_WEBSOCKET_RECEIVE_TIMEOUTS, } from './websocket-receive-watchdog.js';
|
|
14
|
+
import { readWebSocketDispatch, recordWebSocketDispatch, UnsentWebSocketRequestError, } from './websocket-request-dispatch.js';
|
|
15
|
+
import { WebSocketClosedEarlyError, webSocketCloseError, findWebSocketClosedEarly, readWebSocketCloseFrame, } from './websocket-close-evidence.js';
|
|
13
16
|
import { markContextCompactionFailure, resolveContextManagement } from './openai-responses-model.js';
|
|
17
|
+
import { ResponsesWebSocketSessions } from './responses-websocket-sessions.js';
|
|
14
18
|
const DUMMY_PROVIDER_TRAFFIC = {
|
|
15
19
|
recordRequestStart() { },
|
|
16
20
|
async recordResponseReceived() { },
|
|
@@ -25,18 +29,31 @@ function toCodexToolChoice(choice) {
|
|
|
25
29
|
}
|
|
26
30
|
throw new Error('Unsupported Codex tool choice.');
|
|
27
31
|
}
|
|
32
|
+
const TERMINAL_RESPONSE_EVENT_TYPES = new Set([
|
|
33
|
+
'response.completed',
|
|
34
|
+
'response.failed',
|
|
35
|
+
'response.incomplete',
|
|
36
|
+
'response.error',
|
|
37
|
+
]);
|
|
38
|
+
// RFC 6455 readyState values, named so the send path's evidence is readable.
|
|
39
|
+
const WEBSOCKET_CONNECTING = 0;
|
|
40
|
+
const WEBSOCKET_OPEN = 1;
|
|
28
41
|
/** Provider-owned transport seam used by Codex's HTTP and WebSocket models. */
|
|
29
42
|
export class CodexResponsesTransport {
|
|
30
43
|
client;
|
|
31
44
|
model;
|
|
32
45
|
websocket;
|
|
33
46
|
options;
|
|
47
|
+
#sessions = new ResponsesWebSocketSessions((headers) => new ResponsesWS(this.client, headers ? { headers } : undefined));
|
|
34
48
|
constructor(client = {}, model = '', websocket = false, options = {}) {
|
|
35
49
|
this.client = client;
|
|
36
50
|
this.model = model;
|
|
37
51
|
this.websocket = websocket;
|
|
38
52
|
this.options = options;
|
|
39
53
|
}
|
|
54
|
+
close() {
|
|
55
|
+
this.#sessions.close();
|
|
56
|
+
}
|
|
40
57
|
buildResponsesCreateRequest(request, stream) {
|
|
41
58
|
const providerOptions = request.providerOptions ?? {};
|
|
42
59
|
// contextCompaction is an app-level option; context_management is capability-gated
|
|
@@ -74,40 +91,69 @@ export class CodexResponsesTransport {
|
|
|
74
91
|
return this.client.responses.create(requestData);
|
|
75
92
|
}
|
|
76
93
|
const headers = request.providerOptions?.extraHeaders;
|
|
77
|
-
const socket =
|
|
94
|
+
const socket = this.#sessions.acquire(headers);
|
|
78
95
|
const messages = socket.stream();
|
|
79
96
|
const requestEvent = { type: 'response.create', ...requestData };
|
|
80
|
-
|
|
81
|
-
|
|
97
|
+
// Until the frame is written to an OPEN socket it is still ours, so a
|
|
98
|
+
// receive timeout before that point is provably unsent. `send` on a
|
|
99
|
+
// connecting or closing socket only queues, which proves nothing —
|
|
100
|
+
// record what the socket actually was, and `unknown` when it cannot be
|
|
101
|
+
// observed at all.
|
|
102
|
+
recordWebSocketDispatch(request, 'unsent');
|
|
103
|
+
const dispatchRequestEvent = () => {
|
|
104
|
+
const readyState = socket.socket?.readyState;
|
|
105
|
+
socket.send(requestEvent);
|
|
106
|
+
recordWebSocketDispatch(request, readyState === WEBSOCKET_OPEN ? 'flushed' : 'unknown');
|
|
107
|
+
};
|
|
108
|
+
if (socket.socket?.readyState === WEBSOCKET_CONNECTING) {
|
|
109
|
+
socket.socket.once('open', dispatchRequestEvent);
|
|
82
110
|
}
|
|
83
111
|
else {
|
|
84
|
-
|
|
112
|
+
dispatchRequestEvent();
|
|
85
113
|
}
|
|
86
114
|
const sessionState = this.options.contextCompactionSessionState;
|
|
115
|
+
const sessions = this.#sessions;
|
|
87
116
|
return (async function* () {
|
|
117
|
+
let terminalReceived = false;
|
|
118
|
+
let released = false;
|
|
119
|
+
const release = (keepAlive) => {
|
|
120
|
+
if (released)
|
|
121
|
+
return;
|
|
122
|
+
released = true;
|
|
123
|
+
sessions.release(socket, { keepAlive });
|
|
124
|
+
};
|
|
88
125
|
try {
|
|
89
126
|
for await (const message of messages) {
|
|
90
|
-
if (message.type === 'message')
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
127
|
+
if (message.type === 'message') {
|
|
128
|
+
const event = message.message;
|
|
129
|
+
if (TERMINAL_RESPONSE_EVENT_TYPES.has(event?.type) || event?.type === 'response.completed') {
|
|
130
|
+
terminalReceived = true;
|
|
131
|
+
}
|
|
132
|
+
yield event;
|
|
133
|
+
}
|
|
134
|
+
else if (message.event) {
|
|
135
|
+
const event = message.event;
|
|
136
|
+
if (TERMINAL_RESPONSE_EVENT_TYPES.has(event?.type) || event?.type === 'response.completed') {
|
|
137
|
+
terminalReceived = true;
|
|
138
|
+
}
|
|
139
|
+
yield event;
|
|
140
|
+
}
|
|
141
|
+
else if (message.type === 'error') {
|
|
95
142
|
throw message.error;
|
|
96
|
-
|
|
97
|
-
|
|
143
|
+
}
|
|
144
|
+
else if (message.type === 'close') {
|
|
145
|
+
throw webSocketCloseError(message, readWebSocketDispatch(request));
|
|
146
|
+
}
|
|
98
147
|
}
|
|
99
148
|
}
|
|
100
149
|
catch (error) {
|
|
101
|
-
|
|
102
|
-
|
|
150
|
+
release(false);
|
|
151
|
+
const normalizedError = normalizeExplicitCodexServerError(error);
|
|
152
|
+
markContextCompactionFailure(normalizedError, request, sessionState);
|
|
153
|
+
throw normalizedError;
|
|
103
154
|
}
|
|
104
155
|
finally {
|
|
105
|
-
|
|
106
|
-
socket.close();
|
|
107
|
-
}
|
|
108
|
-
catch {
|
|
109
|
-
/* best effort */
|
|
110
|
-
}
|
|
156
|
+
release(terminalReceived);
|
|
111
157
|
}
|
|
112
158
|
})();
|
|
113
159
|
}
|
|
@@ -131,6 +177,9 @@ export class OpenAIResponsesModel {
|
|
|
131
177
|
this.model = model;
|
|
132
178
|
this.transport = transport ?? new CodexResponsesTransport(client, model, websocket);
|
|
133
179
|
}
|
|
180
|
+
async close() {
|
|
181
|
+
this.transport.close?.();
|
|
182
|
+
}
|
|
134
183
|
buildResponsesCreateRequest(request, stream) {
|
|
135
184
|
const built = this.transport.buildResponsesCreateRequest(request, stream);
|
|
136
185
|
if (this.transport instanceof CodexResponsesTransport && built?.requestData) {
|
|
@@ -147,16 +196,47 @@ export class OpenAIResponsesModel {
|
|
|
147
196
|
}
|
|
148
197
|
async *rawStream(request) {
|
|
149
198
|
const source = await this.fetchResponse(request, true);
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
199
|
+
const iterator = source[Symbol.asyncIterator]();
|
|
200
|
+
let terminal = false;
|
|
201
|
+
let iteratorFinished = false;
|
|
202
|
+
try {
|
|
203
|
+
while (true) {
|
|
204
|
+
const next = await iterator.next();
|
|
205
|
+
if (next.done) {
|
|
206
|
+
iteratorFinished = true;
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const event = next.value;
|
|
210
|
+
if (event?.type === 'error')
|
|
211
|
+
throw new Error(event.error?.message ?? 'Codex WebSocket provider error');
|
|
212
|
+
if (event?.type === 'close')
|
|
213
|
+
throw new WebSocketClosedEarlyError(readWebSocketCloseFrame(event));
|
|
214
|
+
terminal =
|
|
215
|
+
event?.type === 'response.completed' ||
|
|
216
|
+
event?.type === 'response.incomplete' ||
|
|
217
|
+
event?.type === 'response.failed';
|
|
218
|
+
yield event;
|
|
219
|
+
if (terminal)
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
finally {
|
|
224
|
+
if (!iteratorFinished) {
|
|
225
|
+
if (terminal) {
|
|
226
|
+
// The Responses WebSocket stream is session-scoped. Detach this
|
|
227
|
+
// completed request without awaiting an SDK iterator return that
|
|
228
|
+
// waits for the retained socket to close.
|
|
229
|
+
try {
|
|
230
|
+
void iterator.return?.().catch(() => undefined);
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
// Completion is authoritative; socket disposal remains best effort.
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
await iterator.return?.();
|
|
238
|
+
}
|
|
239
|
+
}
|
|
160
240
|
}
|
|
161
241
|
}
|
|
162
242
|
async *stream(request) {
|
|
@@ -338,19 +418,29 @@ function toCodexUsage(rawUsage) {
|
|
|
338
418
|
function codexString(value) {
|
|
339
419
|
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
340
420
|
}
|
|
341
|
-
import { isIncompleteStreamTerminalError, isPreviousResponseNotFoundError, isRetryableTransportError, isWebSocketConnectionLimitReachedError, } from '../services/retry/retry-error-classification.js';
|
|
421
|
+
import { isIncompleteStreamTerminalError, isMissingServerToolOutputError, isPreviousResponseNotFoundError, isRetryableTransportError, isWebSocketConnectionLimitReachedError, } from '../services/retry/retry-error-classification.js';
|
|
342
422
|
const SUSPICIOUS_RECONSTRUCTED_OUTPUT_ITEM_COUNT = 20;
|
|
343
|
-
const TERMINAL_RESPONSE_EVENT_TYPES = new Set([
|
|
344
|
-
'response.completed',
|
|
345
|
-
'response.failed',
|
|
346
|
-
'response.incomplete',
|
|
347
|
-
'response.error',
|
|
348
|
-
]);
|
|
349
423
|
const WS_RESPONSE_MODEL_CLASS = 'OpenAIResponsesWSModel';
|
|
350
424
|
const WS_RESPONSE_WRAPPER_CLASS = 'CodexResponsesWSModel';
|
|
351
425
|
const RESPONSES_LITE_MODELS = new Set(['gpt-5.6-luna']);
|
|
352
426
|
const asRecord = (value) => value && typeof value === 'object' && !Array.isArray(value) ? value : null;
|
|
353
427
|
const stringValue = (value) => (typeof value === 'string' && value ? value : undefined);
|
|
428
|
+
/**
|
|
429
|
+
* A Codex WebSocket `error` frame is an explicit provider rejection, unlike a
|
|
430
|
+
* socket close after sending a request. Normalize only its documented
|
|
431
|
+
* `server_error` shape to the SDK's 5xx error so the pre-event retry wrapper
|
|
432
|
+
* can retry it without treating an ambiguous outcome as safe to replay.
|
|
433
|
+
*/
|
|
434
|
+
function normalizeExplicitCodexServerError(error) {
|
|
435
|
+
const outer = asRecord(asRecord(error)?.error) ?? asRecord(error);
|
|
436
|
+
const details = asRecord(outer?.error) ?? outer;
|
|
437
|
+
if (!details || (details.type !== 'server_error' && details.code !== 'server_error')) {
|
|
438
|
+
return error;
|
|
439
|
+
}
|
|
440
|
+
const normalized = new InternalServerError(500, details, stringValue(details.message), new Headers());
|
|
441
|
+
Object.defineProperty(normalized, 'cause', { value: error, configurable: true });
|
|
442
|
+
return normalized;
|
|
443
|
+
}
|
|
354
444
|
const CODEX_REPLAY_ITEM_TYPES_WITHOUT_IDS = new Set([
|
|
355
445
|
'message',
|
|
356
446
|
'reasoning',
|
|
@@ -597,6 +687,15 @@ const collectFunctionCallIds = (input) => {
|
|
|
597
687
|
}
|
|
598
688
|
return ids;
|
|
599
689
|
};
|
|
690
|
+
const isExactInputPrefix = (input, prefix) => {
|
|
691
|
+
if (prefix.length > input.length)
|
|
692
|
+
return false;
|
|
693
|
+
return prefix.every((item, index) => JSON.stringify(item) === JSON.stringify(input[index]));
|
|
694
|
+
};
|
|
695
|
+
const collectUnpairedToolResultCallIds = (original, filtered) => {
|
|
696
|
+
const remaining = new Set(collectToolResultCallIds(filtered));
|
|
697
|
+
return collectToolResultCallIds(original).filter((callId) => !remaining.has(callId));
|
|
698
|
+
};
|
|
600
699
|
const dropUnpairedCodexToolItems = (history) => {
|
|
601
700
|
const callIds = new Set();
|
|
602
701
|
const resultIds = new Set();
|
|
@@ -722,10 +821,26 @@ const isDefinitelyUnsentWebSocketError = (error, seen = new Set()) => {
|
|
|
722
821
|
}
|
|
723
822
|
return isDefinitelyUnsentWebSocketError(record.message, seen) || isDefinitelyUnsentWebSocketError(record.cause, seen);
|
|
724
823
|
};
|
|
824
|
+
/**
|
|
825
|
+
* A receive-watchdog timeout that the send path proved never reached the wire.
|
|
826
|
+
*
|
|
827
|
+
* Three conditions must all hold, and each rules out a way of being wrong: the
|
|
828
|
+
* failure is the watchdog's own (not a provider error wearing a timeout
|
|
829
|
+
* message), no frame ever arrived (a single frame means the server had the
|
|
830
|
+
* request), and the send path positively recorded `unsent` (an unrecorded
|
|
831
|
+
* request is not evidence). Anything less stays ambiguous and terminates.
|
|
832
|
+
*/
|
|
833
|
+
const asProvablyUnsentTimeout = (timeoutError, timing, request) => {
|
|
834
|
+
if (!timeoutError || timing.frameCount > 0)
|
|
835
|
+
return undefined;
|
|
836
|
+
if (readWebSocketDispatch(request) !== 'unsent')
|
|
837
|
+
return undefined;
|
|
838
|
+
return new UnsentWebSocketRequestError(timeoutError.message, { cause: timeoutError });
|
|
839
|
+
};
|
|
725
840
|
const asAmbiguousModelOutcome = (error) => {
|
|
726
841
|
// Connection never carried the request: safe to let outer retry / transport
|
|
727
842
|
// fallback policies decide. Do not pretend the model may have run.
|
|
728
|
-
if (isDefinitelyUnsentWebSocketError(error)) {
|
|
843
|
+
if (error instanceof UnsentWebSocketRequestError || isDefinitelyUnsentWebSocketError(error)) {
|
|
729
844
|
return undefined;
|
|
730
845
|
}
|
|
731
846
|
// Incomplete stream terminals keep transportFallback=false so Codex does not
|
|
@@ -740,13 +855,6 @@ const asAmbiguousModelOutcome = (error) => {
|
|
|
740
855
|
return undefined;
|
|
741
856
|
};
|
|
742
857
|
const hasGenerateFalse = (request) => request.providerOptions?.generate === false;
|
|
743
|
-
const withProviderOptions = (request, providerOptions) => ({
|
|
744
|
-
...request,
|
|
745
|
-
providerOptions: {
|
|
746
|
-
...request.providerOptions,
|
|
747
|
-
...providerOptions,
|
|
748
|
-
},
|
|
749
|
-
});
|
|
750
858
|
export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
751
859
|
modelId;
|
|
752
860
|
tokenManager;
|
|
@@ -755,6 +863,9 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
755
863
|
codexFunctionCallIdsByResponseId = new Map();
|
|
756
864
|
codexTurnIdsBySession = new Map();
|
|
757
865
|
#serverHistoryReuseDisabled = false;
|
|
866
|
+
#lastSentChainFingerprint;
|
|
867
|
+
#lastRejectedChainFingerprint;
|
|
868
|
+
#lastLogicalRequestByKey = new Map();
|
|
758
869
|
providerTraffic;
|
|
759
870
|
diagnosticLogger;
|
|
760
871
|
sessionContextService;
|
|
@@ -805,7 +916,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
805
916
|
modelWrapperClass: WS_RESPONSE_WRAPPER_CLASS,
|
|
806
917
|
});
|
|
807
918
|
}
|
|
808
|
-
#logTrafficReceived(requestId, requestData, response) {
|
|
919
|
+
#logTrafficReceived(requestId, requestData, response, receiveTiming) {
|
|
809
920
|
const providerTraffic = this.providerTraffic ?? DUMMY_PROVIDER_TRAFFIC;
|
|
810
921
|
const model = typeof requestData.model === 'string' ? requestData.model : this.#modelNameFallback();
|
|
811
922
|
providerTraffic.recordResponseReceived({
|
|
@@ -815,11 +926,12 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
815
926
|
status: 200,
|
|
816
927
|
response: response,
|
|
817
928
|
transport: 'websocket',
|
|
929
|
+
...(receiveTiming ? { receiveTiming } : {}),
|
|
818
930
|
modelClass: WS_RESPONSE_MODEL_CLASS,
|
|
819
931
|
modelWrapperClass: WS_RESPONSE_WRAPPER_CLASS,
|
|
820
932
|
});
|
|
821
933
|
}
|
|
822
|
-
#logTrafficFailed(requestId, requestData, error) {
|
|
934
|
+
#logTrafficFailed(requestId, requestData, error, receiveTiming) {
|
|
823
935
|
const providerTraffic = this.providerTraffic ?? DUMMY_PROVIDER_TRAFFIC;
|
|
824
936
|
const model = typeof requestData.model === 'string' ? requestData.model : this.#modelNameFallback();
|
|
825
937
|
providerTraffic.recordRequestFailed({
|
|
@@ -827,6 +939,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
827
939
|
provider: 'codex',
|
|
828
940
|
model,
|
|
829
941
|
error,
|
|
942
|
+
...(receiveTiming ? { receiveTiming } : {}),
|
|
830
943
|
modelClass: WS_RESPONSE_MODEL_CLASS,
|
|
831
944
|
modelWrapperClass: WS_RESPONSE_WRAPPER_CLASS,
|
|
832
945
|
});
|
|
@@ -845,7 +958,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
845
958
|
modelWrapperClass: WS_RESPONSE_WRAPPER_CLASS,
|
|
846
959
|
});
|
|
847
960
|
}
|
|
848
|
-
async #withTrafficLogging(responseStream, requestId, requestData, wireStateKey, wireStateToken, signal) {
|
|
961
|
+
async #withTrafficLogging(responseStream, requestId, requestData, wireStateKey, wireStateToken, signal, receiveTiming, asProvablyUnsent) {
|
|
849
962
|
const logReceived = this.#logTrafficReceived.bind(this);
|
|
850
963
|
const logFailed = this.#logTrafficFailed.bind(this);
|
|
851
964
|
const logClosed = this.#logTrafficClosed.bind(this);
|
|
@@ -878,7 +991,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
878
991
|
if (wireStateKey && wireStateToken && typeof response.id === 'string' && response.id.length > 0) {
|
|
879
992
|
wireState.recordResponse(wireStateKey, wireStateToken, response.id, response.output);
|
|
880
993
|
}
|
|
881
|
-
logReceived(requestId, requestData, response);
|
|
994
|
+
logReceived(requestId, requestData, response, receiveTiming?.());
|
|
882
995
|
}
|
|
883
996
|
yield event;
|
|
884
997
|
}
|
|
@@ -889,8 +1002,12 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
889
1002
|
if (wireStateKey && !isWebSocketConnectionLimitReachedError(error)) {
|
|
890
1003
|
wireState.invalidate(wireStateKey);
|
|
891
1004
|
}
|
|
892
|
-
|
|
893
|
-
|
|
1005
|
+
// The watchdog's own timeout may carry proof that the request never
|
|
1006
|
+
// reached the wire; the wire-state decision above still keys off the
|
|
1007
|
+
// error as thrown.
|
|
1008
|
+
const failure = asProvablyUnsent?.() ?? error;
|
|
1009
|
+
logFailed(requestId, requestData, failure, receiveTiming?.());
|
|
1010
|
+
throw failure;
|
|
894
1011
|
}
|
|
895
1012
|
finally {
|
|
896
1013
|
if (!sawTerminalEvent && !sourceExhausted && !streamFailed) {
|
|
@@ -908,29 +1025,6 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
908
1025
|
}
|
|
909
1026
|
return wrapped();
|
|
910
1027
|
}
|
|
911
|
-
async #warmupCodexUnary(request) {
|
|
912
|
-
if (!request) {
|
|
913
|
-
return undefined;
|
|
914
|
-
}
|
|
915
|
-
const response = await super.fetchUnaryResponse(request);
|
|
916
|
-
const responseId = getResponseIdFromResponse(response);
|
|
917
|
-
this.#rememberCodexResponseId(responseId, asRecord(response)?.output, request.input, true);
|
|
918
|
-
return responseId;
|
|
919
|
-
}
|
|
920
|
-
async #warmupCodexStream(request) {
|
|
921
|
-
if (!request) {
|
|
922
|
-
return undefined;
|
|
923
|
-
}
|
|
924
|
-
let responseId;
|
|
925
|
-
for await (const event of super.rawStream(request)) {
|
|
926
|
-
const eventResponseId = getResponseIdFromStreamEvent(event);
|
|
927
|
-
if (eventResponseId) {
|
|
928
|
-
responseId = eventResponseId;
|
|
929
|
-
this.#rememberCodexResponseId(responseId, getResponseOutputFromStreamEvent(event), request.input, true);
|
|
930
|
-
}
|
|
931
|
-
}
|
|
932
|
-
return responseId;
|
|
933
|
-
}
|
|
934
1028
|
#prepareCodexServerHistoryRequest(request) {
|
|
935
1029
|
const explicitPreviousResponseId = typeof request.previousResponseId === 'string' && request.previousResponseId.length > 0
|
|
936
1030
|
? request.previousResponseId
|
|
@@ -960,28 +1054,38 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
960
1054
|
};
|
|
961
1055
|
}
|
|
962
1056
|
#getRememberedCodexResponseIdForRequest(request) {
|
|
963
|
-
if (this.#serverHistoryReuseDisabled) {
|
|
1057
|
+
if (this.#serverHistoryReuseDisabled || hasGenerateFalse(request)) {
|
|
964
1058
|
return undefined;
|
|
965
1059
|
}
|
|
966
1060
|
const key = this.#getCodexServerHistoryKey();
|
|
967
|
-
|
|
1061
|
+
const stored = key ? this.#lastLogicalRequestByKey.get(key) : undefined;
|
|
1062
|
+
if (!stored || !Array.isArray(request.input)) {
|
|
968
1063
|
return undefined;
|
|
969
1064
|
}
|
|
970
|
-
|
|
971
|
-
let endUserIndex = items.length;
|
|
972
|
-
while (endUserIndex > 0 && isUserInputMessage(items[endUserIndex - 1])) {
|
|
973
|
-
endUserIndex--;
|
|
974
|
-
}
|
|
975
|
-
return endUserIndex > 0 && isToolResultItem(items[endUserIndex - 1]);
|
|
976
|
-
};
|
|
977
|
-
const input = request.input;
|
|
978
|
-
const isInternalToolContinuation = Array.isArray(input) &&
|
|
979
|
-
input.length > 1 &&
|
|
980
|
-
input.some(isUserInputMessage) &&
|
|
981
|
-
hasToolResultBeforeTrailingUserMessages(input);
|
|
982
|
-
return isInternalToolContinuation ? this.codexPreviousResponseIds.get(key) : undefined;
|
|
1065
|
+
return isExactInputPrefix(request.input, stored.input) ? stored.responseId : undefined;
|
|
983
1066
|
}
|
|
984
1067
|
#prepareCodexServerHistoryRequests(request) {
|
|
1068
|
+
if (request?.disableChaining === true) {
|
|
1069
|
+
this.#forgetCodexResponseId();
|
|
1070
|
+
const { previousResponseId: _previousResponseId, ...rest } = request;
|
|
1071
|
+
const input = Array.isArray(rest.input) ? dropUnpairedCodexToolItems(rest.input) : rest.input;
|
|
1072
|
+
this.diagnosticLogger?.debug?.('Codex chain recovery bypassed warmup and previous_response_id', {
|
|
1073
|
+
eventType: 'codex.chain_recovery.warmup_bypassed',
|
|
1074
|
+
category: 'provider',
|
|
1075
|
+
phase: 'request_prepare',
|
|
1076
|
+
droppedOrphanCallIds: collectUnpairedToolResultCallIds(rest.input, input),
|
|
1077
|
+
});
|
|
1078
|
+
return { request: input === rest.input ? rest : { ...rest, input } };
|
|
1079
|
+
}
|
|
1080
|
+
if (RESPONSES_LITE_MODELS.has(this.modelId)) {
|
|
1081
|
+
// Luna chaining is owned by ChainedWireState in buildResponsesCreateRequest.
|
|
1082
|
+
// That machine adopts the stored response id when the caller omits
|
|
1083
|
+
// previousResponseId (nested explorers do). Injecting a terra-style
|
|
1084
|
+
// remembered id here would duplicate that owner. disableChaining still
|
|
1085
|
+
// clears the wire state via #forgetCodexResponseId above.
|
|
1086
|
+
const input = Array.isArray(request.input) ? dropUnpairedCodexToolItems(request.input) : request.input;
|
|
1087
|
+
return { request: input === request.input ? request : { ...request, input } };
|
|
1088
|
+
}
|
|
985
1089
|
const key = this.#getCodexServerHistoryKey();
|
|
986
1090
|
if (!key || hasGenerateFalse(request)) {
|
|
987
1091
|
return { request };
|
|
@@ -990,52 +1094,31 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
990
1094
|
if (preparedRequest.previousResponseId) {
|
|
991
1095
|
return { request: preparedRequest };
|
|
992
1096
|
}
|
|
1097
|
+
// No usable server-held anchor, so this request carries its full history.
|
|
1098
|
+
//
|
|
1099
|
+
// Codex's `generate:false` warmup is deliberately not used here. It is only
|
|
1100
|
+
// a win when it can be issued ahead of an upcoming turn, and this call site
|
|
1101
|
+
// sits immediately before the request it would prepare -- so it bought a
|
|
1102
|
+
// serial round trip while the paired generate call still reported the full
|
|
1103
|
+
// uncached prompt (`cached_tokens: 0`), counting the prompt twice. The
|
|
1104
|
+
// response ID that anchors the next turn comes from the generate response
|
|
1105
|
+
// either way, so dropping warmup costs no chaining.
|
|
993
1106
|
const input = Array.isArray(request.input) ? dropUnpairedCodexToolItems(request.input) : request.input;
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
deltaInput.push(item);
|
|
1010
|
-
}
|
|
1011
|
-
else if (isToolContinuationItem(item)) {
|
|
1012
|
-
warmupItems.push(item);
|
|
1013
|
-
}
|
|
1014
|
-
else {
|
|
1015
|
-
deltaInput.push(item);
|
|
1016
|
-
}
|
|
1017
|
-
}
|
|
1018
|
-
return {
|
|
1019
|
-
warmupRequest: withProviderOptions({
|
|
1020
|
-
...replayRequest,
|
|
1021
|
-
input: warmupItems,
|
|
1022
|
-
}, { generate: false }),
|
|
1023
|
-
request: {
|
|
1024
|
-
...replayRequest,
|
|
1025
|
-
input: deltaInput,
|
|
1026
|
-
},
|
|
1027
|
-
};
|
|
1028
|
-
}
|
|
1029
|
-
#withCodexPreviousResponseId(request, previousResponseId) {
|
|
1030
|
-
if (!previousResponseId) {
|
|
1031
|
-
return request;
|
|
1032
|
-
}
|
|
1033
|
-
return this.#prepareCodexServerHistoryRequest({
|
|
1034
|
-
...request,
|
|
1035
|
-
previousResponseId,
|
|
1036
|
-
});
|
|
1037
|
-
}
|
|
1038
|
-
#rememberCodexResponseId(responseId, output, input, recordChainAnchor = false) {
|
|
1107
|
+
return { request: input === request.input ? request : { ...request, input } };
|
|
1108
|
+
}
|
|
1109
|
+
/**
|
|
1110
|
+
* Records a response ID as the anchor for the next turn's `previous_response_id`.
|
|
1111
|
+
*
|
|
1112
|
+
* The chain anchor -- the set of function call IDs a response is known to hold
|
|
1113
|
+
* -- is recorded only for a full-history request, meaning one sent without
|
|
1114
|
+
* `previous_response_id`. That condition used to be implicit: only the
|
|
1115
|
+
* `generate:false` warmup leg recorded an anchor, and warmup always carried
|
|
1116
|
+
* complete history. Recording it from a chained request instead would be a
|
|
1117
|
+
* false-positive machine, because a chained request's `input` is only the
|
|
1118
|
+
* delta -- the orphan guard below would then reject every genuinely new tool
|
|
1119
|
+
* output as unknown to the chain.
|
|
1120
|
+
*/
|
|
1121
|
+
#rememberCodexResponseId(responseId, output, input, sentAsFullHistory = false) {
|
|
1039
1122
|
if (!responseId) {
|
|
1040
1123
|
return;
|
|
1041
1124
|
}
|
|
@@ -1043,8 +1126,13 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1043
1126
|
const key = this.#getCodexServerHistoryKey();
|
|
1044
1127
|
if (key) {
|
|
1045
1128
|
this.codexPreviousResponseIds.set(key, responseId);
|
|
1129
|
+
this.#lastLogicalRequestByKey.set(key, {
|
|
1130
|
+
input: Array.isArray(input) ? [...input] : this.#lastLogicalRequestByKey.get(key)?.input ?? [],
|
|
1131
|
+
output: Array.isArray(output) ? [...output] : [],
|
|
1132
|
+
responseId,
|
|
1133
|
+
});
|
|
1046
1134
|
}
|
|
1047
|
-
if (
|
|
1135
|
+
if (sentAsFullHistory && (Array.isArray(output) || Array.isArray(input))) {
|
|
1048
1136
|
this.codexFunctionCallIdsByResponseId.set(responseId, new Set([...collectFunctionCallIds(output), ...collectFunctionCallIds(input)]));
|
|
1049
1137
|
}
|
|
1050
1138
|
}
|
|
@@ -1092,6 +1180,50 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1092
1180
|
this.codexFunctionCallIdsByResponseId.clear();
|
|
1093
1181
|
this.codexTurnIdsBySession.clear();
|
|
1094
1182
|
this.chainedWireState.clear();
|
|
1183
|
+
this.#lastLogicalRequestByKey.clear();
|
|
1184
|
+
this.#lastSentChainFingerprint = undefined;
|
|
1185
|
+
}
|
|
1186
|
+
#getEffectivePreviousResponseId(request) {
|
|
1187
|
+
if (typeof request?.previousResponseId === 'string' && request.previousResponseId.length > 0) {
|
|
1188
|
+
return request.previousResponseId;
|
|
1189
|
+
}
|
|
1190
|
+
if (request?.disableChaining === true) {
|
|
1191
|
+
return undefined;
|
|
1192
|
+
}
|
|
1193
|
+
if (RESPONSES_LITE_MODELS.has(this.modelId)) {
|
|
1194
|
+
const key = this.#getCodexServerHistoryKey();
|
|
1195
|
+
return key ? this.chainedWireState.getStoredResponseId(key) : undefined;
|
|
1196
|
+
}
|
|
1197
|
+
return undefined;
|
|
1198
|
+
}
|
|
1199
|
+
#fingerprintPreparedRequest(request, recoveryClass = 'chain_recovery') {
|
|
1200
|
+
const previousResponseId = this.#getEffectivePreviousResponseId(request);
|
|
1201
|
+
return fingerprintChainRequest({
|
|
1202
|
+
provider: 'codex',
|
|
1203
|
+
model: this.modelId,
|
|
1204
|
+
previousResponseId: previousResponseId ?? null,
|
|
1205
|
+
input: Array.isArray(request?.input) ? request.input : [],
|
|
1206
|
+
recoveryClass,
|
|
1207
|
+
});
|
|
1208
|
+
}
|
|
1209
|
+
#assertChainRequestMakesProgress(request) {
|
|
1210
|
+
const fingerprint = this.#fingerprintPreparedRequest(request);
|
|
1211
|
+
if (this.#lastRejectedChainFingerprint && this.#lastRejectedChainFingerprint === fingerprint) {
|
|
1212
|
+
this.diagnosticLogger?.warn?.('Codex chain recovery would repeat a rejected request', {
|
|
1213
|
+
eventType: 'retry.conversation_state_no_progress',
|
|
1214
|
+
category: 'retry',
|
|
1215
|
+
phase: 'request_prepare',
|
|
1216
|
+
});
|
|
1217
|
+
throw new ConversationStateNoProgressError();
|
|
1218
|
+
}
|
|
1219
|
+
this.#lastSentChainFingerprint = fingerprint;
|
|
1220
|
+
}
|
|
1221
|
+
#recordRejectedChainRequest(error) {
|
|
1222
|
+
if (isMissingServerToolOutputError(error) ||
|
|
1223
|
+
isOrphanedChainedToolOutputError(error) ||
|
|
1224
|
+
isPreviousResponseNotFoundError(error)) {
|
|
1225
|
+
this.#lastRejectedChainFingerprint = this.#lastSentChainFingerprint;
|
|
1226
|
+
}
|
|
1095
1227
|
}
|
|
1096
1228
|
#shouldForgetCodexServerHistory(error) {
|
|
1097
1229
|
// This rejects the new request before generation; it expires the socket,
|
|
@@ -1103,6 +1235,8 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1103
1235
|
const message = getErrorMessage(error);
|
|
1104
1236
|
return (isPreviousResponseNotFoundError(error) ||
|
|
1105
1237
|
message.includes('previous_response_not_found') ||
|
|
1238
|
+
isMissingServerToolOutputError(error) ||
|
|
1239
|
+
isOrphanedChainedToolOutputError(error) ||
|
|
1106
1240
|
isRetryableTransportError(error).transportFallback);
|
|
1107
1241
|
}
|
|
1108
1242
|
#getCodexServerHistoryKey() {
|
|
@@ -1115,7 +1249,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1115
1249
|
return undefined;
|
|
1116
1250
|
}
|
|
1117
1251
|
const sessionContext = this.sessionContextService?.getContext();
|
|
1118
|
-
const sessionId = sessionContext?.sessionId ?? requestId;
|
|
1252
|
+
const sessionId = sessionContext?.providerHistoryKey ?? sessionContext?.sessionId ?? requestId;
|
|
1119
1253
|
const threadId = sessionId;
|
|
1120
1254
|
const hasPreviousResponseId = typeof request?.previousResponseId === 'string' && request.previousResponseId.length > 0;
|
|
1121
1255
|
const turnId = hasPreviousResponseId ? this.codexTurnIdsBySession.get(sessionId) ?? randomUUID() : randomUUID();
|
|
@@ -1152,14 +1286,6 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1152
1286
|
},
|
|
1153
1287
|
};
|
|
1154
1288
|
}
|
|
1155
|
-
#getEffectiveCodexRequestAfterWarmup(originalRequest, preparedRequest, warmupResponseId) {
|
|
1156
|
-
if (!preparedRequest.warmupRequest) {
|
|
1157
|
-
return preparedRequest.request;
|
|
1158
|
-
}
|
|
1159
|
-
return warmupResponseId
|
|
1160
|
-
? this.#withCodexPreviousResponseId(preparedRequest.request, warmupResponseId)
|
|
1161
|
-
: originalRequest;
|
|
1162
|
-
}
|
|
1163
1289
|
#withoutCodexServerHistory(request) {
|
|
1164
1290
|
if (!request || typeof request !== 'object') {
|
|
1165
1291
|
return request;
|
|
@@ -1172,16 +1298,17 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1172
1298
|
let attemptedWithServerHistory = false;
|
|
1173
1299
|
try {
|
|
1174
1300
|
const preparedRequest = this.#prepareCodexServerHistoryRequests(request);
|
|
1175
|
-
attemptedWithServerHistory = Boolean(preparedRequest.
|
|
1176
|
-
const
|
|
1177
|
-
|
|
1301
|
+
attemptedWithServerHistory = Boolean(this.#getEffectivePreviousResponseId(preparedRequest.request));
|
|
1302
|
+
const effectiveRequest = preparedRequest.request;
|
|
1303
|
+
this.#assertChainRequestMakesProgress(effectiveRequest);
|
|
1178
1304
|
const response = await super.fetchUnaryResponse(effectiveRequest);
|
|
1179
1305
|
const responseId = getResponseIdFromResponse(response);
|
|
1180
|
-
this.#rememberCodexResponseId(responseId, asRecord(response)?.output, effectiveRequest.
|
|
1306
|
+
this.#rememberCodexResponseId(responseId, asRecord(response)?.output, request.input, !effectiveRequest.previousResponseId);
|
|
1181
1307
|
this.#rememberConsumedToolResultCallIds(responseId, effectiveRequest.previousResponseId, effectiveRequest.input);
|
|
1182
1308
|
return response;
|
|
1183
1309
|
}
|
|
1184
1310
|
catch (error) {
|
|
1311
|
+
this.#recordRejectedChainRequest(error);
|
|
1185
1312
|
if (isPreviousResponseUnavailableError(error) && attemptedWithServerHistory) {
|
|
1186
1313
|
this.#forgetCodexResponseId();
|
|
1187
1314
|
if (isPreviousResponseUnavailableError(error) && hasToolResultInput(request)) {
|
|
@@ -1190,7 +1317,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1190
1317
|
const fallbackRequest = this.#withoutCodexServerHistory(request);
|
|
1191
1318
|
const response = await super.fetchUnaryResponse(fallbackRequest);
|
|
1192
1319
|
const responseId = getResponseIdFromResponse(response);
|
|
1193
|
-
this.#rememberCodexResponseId(responseId, asRecord(response)?.output, fallbackRequest.input);
|
|
1320
|
+
this.#rememberCodexResponseId(responseId, asRecord(response)?.output, fallbackRequest.input, true);
|
|
1194
1321
|
this.#rememberConsumedToolResultCallIds(responseId, undefined, fallbackRequest.input);
|
|
1195
1322
|
return response;
|
|
1196
1323
|
}
|
|
@@ -1207,15 +1334,15 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1207
1334
|
let attemptedWithServerHistory = false;
|
|
1208
1335
|
try {
|
|
1209
1336
|
const preparedRequest = this.#prepareCodexServerHistoryRequests(request);
|
|
1210
|
-
attemptedWithServerHistory = Boolean(preparedRequest.
|
|
1211
|
-
const
|
|
1212
|
-
|
|
1337
|
+
attemptedWithServerHistory = Boolean(this.#getEffectivePreviousResponseId(preparedRequest.request));
|
|
1338
|
+
const effectiveRequest = preparedRequest.request;
|
|
1339
|
+
this.#assertChainRequestMakesProgress(effectiveRequest);
|
|
1213
1340
|
let responseId;
|
|
1214
1341
|
for await (const event of super.rawStream(effectiveRequest)) {
|
|
1215
1342
|
const eventResponseId = getResponseIdFromStreamEvent(event);
|
|
1216
1343
|
if (eventResponseId) {
|
|
1217
1344
|
responseId = eventResponseId;
|
|
1218
|
-
this.#rememberCodexResponseId(responseId, getResponseOutputFromStreamEvent(event), effectiveRequest.
|
|
1345
|
+
this.#rememberCodexResponseId(responseId, getResponseOutputFromStreamEvent(event), request.input, !effectiveRequest.previousResponseId);
|
|
1219
1346
|
}
|
|
1220
1347
|
if (TERMINAL_RESPONSE_EVENT_TYPES.has(event?.type)) {
|
|
1221
1348
|
this.#rememberConsumedToolResultCallIds(responseId, effectiveRequest.previousResponseId, effectiveRequest.input);
|
|
@@ -1226,6 +1353,8 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1226
1353
|
this.#rememberConsumedToolResultCallIds(responseId, effectiveRequest.previousResponseId, effectiveRequest.input);
|
|
1227
1354
|
}
|
|
1228
1355
|
catch (error) {
|
|
1356
|
+
this.#logWebSocketClosedEarly(error, receivedRawFrame);
|
|
1357
|
+
this.#recordRejectedChainRequest(error);
|
|
1229
1358
|
if (isPreviousResponseUnavailableError(error) && attemptedWithServerHistory && !receivedRawFrame) {
|
|
1230
1359
|
this.#forgetCodexResponseId();
|
|
1231
1360
|
if (isPreviousResponseUnavailableError(error) && hasToolResultInput(request)) {
|
|
@@ -1239,7 +1368,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1239
1368
|
const eventResponseId = getResponseIdFromStreamEvent(event);
|
|
1240
1369
|
if (eventResponseId) {
|
|
1241
1370
|
responseId = eventResponseId;
|
|
1242
|
-
this.#rememberCodexResponseId(responseId, getResponseOutputFromStreamEvent(event), fallbackRequest.input);
|
|
1371
|
+
this.#rememberCodexResponseId(responseId, getResponseOutputFromStreamEvent(event), fallbackRequest.input, true);
|
|
1243
1372
|
}
|
|
1244
1373
|
if (TERMINAL_RESPONSE_EVENT_TYPES.has(event?.type)) {
|
|
1245
1374
|
this.#rememberConsumedToolResultCallIds(responseId, undefined, fallbackRequest.input);
|
|
@@ -1259,6 +1388,27 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1259
1388
|
throw asAmbiguousModelOutcome(error) ?? error;
|
|
1260
1389
|
}
|
|
1261
1390
|
}
|
|
1391
|
+
/**
|
|
1392
|
+
* The close code is the only field that distinguishes a network drop from a
|
|
1393
|
+
* deliberate server close, and it is discarded once the error is wrapped for
|
|
1394
|
+
* recovery. Record it here, where the retry decision that follows can be read
|
|
1395
|
+
* against it.
|
|
1396
|
+
*/
|
|
1397
|
+
#logWebSocketClosedEarly(error, receivedRawFrame) {
|
|
1398
|
+
const closed = findWebSocketClosedEarly(error);
|
|
1399
|
+
if (!closed)
|
|
1400
|
+
return;
|
|
1401
|
+
this.diagnosticLogger?.warn?.('Codex WebSocket closed before a terminal response event', {
|
|
1402
|
+
eventType: 'codex.websocket.closed_early',
|
|
1403
|
+
category: 'provider',
|
|
1404
|
+
model: this.modelId,
|
|
1405
|
+
closeCode: closed.closeCode ?? null,
|
|
1406
|
+
closeReason: closed.closeReason ?? null,
|
|
1407
|
+
unsentCount: closed.unsentCount,
|
|
1408
|
+
receivedRawFrame,
|
|
1409
|
+
provablyUnsent: error instanceof UnsentWebSocketRequestError,
|
|
1410
|
+
});
|
|
1411
|
+
}
|
|
1262
1412
|
buildResponsesCreateRequest(request, stream) {
|
|
1263
1413
|
const built = super.buildResponsesCreateRequest(request, stream);
|
|
1264
1414
|
const requestData = normalizeCodexRequestData(built.requestData, request, this.modelId, {
|
|
@@ -1342,13 +1492,14 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1342
1492
|
if (wireStateKey && wireStateToken && typeof response?.id === 'string' && response.id.length > 0) {
|
|
1343
1493
|
this.chainedWireState.recordResponse(wireStateKey, wireStateToken, response.id, response.output);
|
|
1344
1494
|
}
|
|
1345
|
-
this.#logTrafficReceived(requestId, requestData, response);
|
|
1495
|
+
this.#logTrafficReceived(requestId, requestData, response, watchdog.receiveTiming());
|
|
1346
1496
|
return response;
|
|
1347
1497
|
}
|
|
1348
1498
|
catch (error) {
|
|
1349
1499
|
const timeoutError = watchdog.timeoutError();
|
|
1500
|
+
const receiveTiming = watchdog.receiveTiming();
|
|
1350
1501
|
watchdog.close();
|
|
1351
|
-
const failure = timeoutError ?? error;
|
|
1502
|
+
const failure = asProvablyUnsentTimeout(timeoutError, receiveTiming, updatedRequest) ?? timeoutError ?? error;
|
|
1352
1503
|
if (wireStateKey) {
|
|
1353
1504
|
if (isWebSocketConnectionLimitReachedError(failure)) {
|
|
1354
1505
|
if (wireStateToken)
|
|
@@ -1358,19 +1509,20 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1358
1509
|
this.chainedWireState.invalidate(wireStateKey);
|
|
1359
1510
|
}
|
|
1360
1511
|
}
|
|
1361
|
-
this.#logTrafficFailed(requestId, requestData, failure);
|
|
1512
|
+
this.#logTrafficFailed(requestId, requestData, failure, receiveTiming);
|
|
1362
1513
|
throw failure;
|
|
1363
1514
|
}
|
|
1364
1515
|
}
|
|
1365
1516
|
try {
|
|
1366
1517
|
const response = (await super.fetchResponse(updatedRequest, stream));
|
|
1367
1518
|
const patched = wrapCodexStream(watchdog.wrap(response), this.diagnosticLogger);
|
|
1368
|
-
return this.#withTrafficLogging(patched, requestId, requestData, wireStateKey, wireStateToken, updatedRequest.signal);
|
|
1519
|
+
return this.#withTrafficLogging(patched, requestId, requestData, wireStateKey, wireStateToken, updatedRequest.signal, () => watchdog.receiveTiming(), () => asProvablyUnsentTimeout(watchdog.timeoutError(), watchdog.receiveTiming(), updatedRequest));
|
|
1369
1520
|
}
|
|
1370
1521
|
catch (error) {
|
|
1371
1522
|
const timeoutError = watchdog.timeoutError();
|
|
1523
|
+
const receiveTiming = watchdog.receiveTiming();
|
|
1372
1524
|
watchdog.close();
|
|
1373
|
-
const failure = timeoutError ?? error;
|
|
1525
|
+
const failure = asProvablyUnsentTimeout(timeoutError, receiveTiming, updatedRequest) ?? timeoutError ?? error;
|
|
1374
1526
|
if (wireStateKey) {
|
|
1375
1527
|
if (isWebSocketConnectionLimitReachedError(failure)) {
|
|
1376
1528
|
if (wireStateToken)
|
|
@@ -1380,7 +1532,7 @@ export class CodexResponsesWSModel extends OpenAIResponsesWSModel {
|
|
|
1380
1532
|
this.chainedWireState.invalidate(wireStateKey);
|
|
1381
1533
|
}
|
|
1382
1534
|
}
|
|
1383
|
-
this.#logTrafficFailed(requestId, requestData, failure);
|
|
1535
|
+
this.#logTrafficFailed(requestId, requestData, failure, receiveTiming);
|
|
1384
1536
|
throw failure;
|
|
1385
1537
|
}
|
|
1386
1538
|
}
|