@qduc/term2 0.15.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 +3 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +15 -63
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +129 -19
- package/dist/app.js.map +1 -1
- package/dist/cli.js +25 -16
- package/dist/cli.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.map +1 -1
- package/dist/commands/guarded-settings-command.js +4 -8
- package/dist/commands/guarded-settings-command.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/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 +56 -18
- 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 +17 -14
- package/dist/components/input/PendingQueueList.js.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.js +2 -1
- package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.js +12 -11
- package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.d.ts +2 -2
- package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.js +10 -9
- 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 +6 -5
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +17 -9
- 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 +4 -1
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +305 -95
- 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/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 +26 -13
- 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 +46 -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 +26 -26
- 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.map +1 -1
- package/dist/components/message/CommandGroupSummary.js +15 -7
- package/dist/components/message/CommandGroupSummary.js.map +1 -1
- package/dist/components/message/CommandMessage.d.ts.map +1 -1
- package/dist/components/message/CommandMessage.js +111 -91
- 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 +1 -2
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +12 -11
- 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 +17 -13
- 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 +29 -6
- package/dist/components/message/command-grouping.d.ts.map +1 -1
- package/dist/components/message/command-grouping.js +62 -20
- package/dist/components/message/command-grouping.js.map +1 -1
- package/dist/components/message/command-message-helpers.d.ts +5 -32
- package/dist/components/message/command-message-helpers.d.ts.map +1 -1
- package/dist/components/message/command-message-helpers.js +26 -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.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.js +190 -106
- 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.map +1 -1
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.js +4 -3
- package/dist/components/prompt/ModeSwitchConfirmationPrompt.js.map +1 -1
- package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
- package/dist/components/prompt/QueuePausedPrompt.js +6 -5
- 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 +14 -0
- package/dist/contracts/application-stream.d.ts.map +1 -1
- package/dist/gateway/assertion.d.ts +4 -1
- package/dist/gateway/assertion.d.ts.map +1 -1
- package/dist/gateway/assertion.js +24 -2
- package/dist/gateway/assertion.js.map +1 -1
- package/dist/gateway/contracts.d.ts +21 -4
- package/dist/gateway/contracts.d.ts.map +1 -1
- package/dist/gateway/contracts.js +11 -0
- package/dist/gateway/contracts.js.map +1 -1
- 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 +24 -1
- package/dist/gateway/gateway.d.ts.map +1 -1
- package/dist/gateway/gateway.js +704 -21
- package/dist/gateway/gateway.js.map +1 -1
- 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/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/coordinator.d.ts +2 -0
- package/dist/gateway/persistence/coordinator.d.ts.map +1 -1
- package/dist/gateway/persistence/coordinator.js +13 -0
- package/dist/gateway/persistence/coordinator.js.map +1 -1
- package/dist/gateway/runtime-factory.d.ts +15 -6
- package/dist/gateway/runtime-factory.d.ts.map +1 -1
- package/dist/gateway/runtime-factory.js +38 -9
- package/dist/gateway/runtime-factory.js.map +1 -1
- package/dist/gateway/safe-log.d.ts.map +1 -1
- package/dist/gateway/safe-log.js +19 -0
- package/dist/gateway/safe-log.js.map +1 -1
- package/dist/gateway/server-session.d.ts.map +1 -1
- package/dist/gateway/server-session.js +36 -4
- package/dist/gateway/server-session.js.map +1 -1
- package/dist/gateway/server.d.ts +26 -3
- package/dist/gateway/server.d.ts.map +1 -1
- package/dist/gateway/server.js +105 -17
- package/dist/gateway/server.js.map +1 -1
- 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 +6 -5
- package/dist/gateway/worker-boundary.d.ts.map +1 -1
- package/dist/gateway/worker-boundary.js +20 -10
- package/dist/gateway/worker-boundary.js.map +1 -1
- package/dist/gateway/workspace-admission.d.ts +11 -0
- package/dist/gateway/workspace-admission.d.ts.map +1 -1
- package/dist/gateway/workspace-admission.js +89 -16
- package/dist/gateway/workspace-admission.js.map +1 -1
- 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 +6 -0
- package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.js +9 -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 +11 -3
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +6 -1
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +22 -13
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts +1 -3
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.js +11 -9
- package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +8 -0
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +27 -18
- package/dist/hooks/use-conversation.js.map +1 -1
- 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-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 +2 -0
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +1 -0
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +3 -0
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +4 -0
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +3 -0
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +9 -2
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/lib/harness-input-idle.d.ts.map +1 -1
- package/dist/lib/harness-input-idle.js +1 -1
- package/dist/lib/harness-input-idle.js.map +1 -1
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +9 -2
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/approval-model.md +22 -0
- package/dist/prompts/gpt-5.6.md +3 -2
- package/dist/prompts/mentor-mode-stub.md +3 -0
- package/dist/prompts/orchestrator-mode-stub.md +3 -0
- package/dist/prompts/prefix-quality.test.ts +10 -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 +23 -13
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +39 -5
- package/dist/prompts/prompt-constructor.ts +27 -15
- 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/providers/chained-wire-state.d.ts +7 -2
- package/dist/providers/chained-wire-state.d.ts.map +1 -1
- package/dist/providers/chained-wire-state.js +16 -7
- package/dist/providers/chained-wire-state.js.map +1 -1
- package/dist/providers/codex-auth.d.ts +2 -5
- package/dist/providers/codex-auth.d.ts.map +1 -1
- package/dist/providers/codex-auth.js +2 -0
- package/dist/providers/codex-auth.js.map +1 -1
- package/dist/providers/codex-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +22 -3
- package/dist/providers/codex-responses-model.js.map +1 -1
- package/dist/providers/grok-auth.d.ts +2 -5
- package/dist/providers/grok-auth.d.ts.map +1 -1
- package/dist/providers/grok-auth.js +2 -0
- package/dist/providers/grok-auth.js.map +1 -1
- package/dist/providers/oauth-account-store.d.ts +5 -0
- package/dist/providers/oauth-account-store.d.ts.map +1 -1
- package/dist/providers/oauth-account-store.js +56 -5
- package/dist/providers/oauth-account-store.js.map +1 -1
- package/dist/providers/oauth-pkce.d.ts +8 -0
- package/dist/providers/oauth-pkce.d.ts.map +1 -1
- package/dist/providers/oauth-pkce.js +91 -19
- package/dist/providers/oauth-pkce.js.map +1 -1
- package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible.provider.js +8 -1
- package/dist/providers/openai-compatible.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/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/responses-websocket-sessions.d.ts +1 -0
- package/dist/providers/responses-websocket-sessions.d.ts.map +1 -1
- package/dist/providers/responses-websocket-sessions.js +16 -2
- package/dist/providers/responses-websocket-sessions.js.map +1 -1
- 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/services/agent-runtime/application-run-loop.d.ts +5 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.js +229 -149
- package/dist/services/agent-runtime/application-run-loop.js.map +1 -1
- package/dist/services/agent-runtime/generation-guard.d.ts +39 -25
- package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -1
- package/dist/services/agent-runtime/generation-guard.js +98 -100
- package/dist/services/agent-runtime/generation-guard.js.map +1 -1
- package/dist/services/agent-runtime/run-budget.d.ts +1 -1
- package/dist/services/agent-runtime/run-budget.d.ts.map +1 -1
- package/dist/services/agent-runtime/run-budget.js +4 -0
- package/dist/services/agent-runtime/run-budget.js.map +1 -1
- package/dist/services/agent-stream.d.ts.map +1 -1
- package/dist/services/agent-stream.js +1 -0
- package/dist/services/agent-stream.js.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts +13 -2
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +35 -7
- 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-events.d.ts +43 -2
- 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 +142 -11
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.types.d.ts +3 -1
- package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.d.ts +22 -1
- package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.js +61 -0
- package/dist/services/conversation/conversation-persistence.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +45 -29
- package/dist/services/conversation/conversation-service.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/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/memory/memory-capabilities.js +2 -2
- 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 +11 -0
- package/dist/services/mode-notices.d.ts.map +1 -1
- package/dist/services/mode-notices.js +37 -3
- package/dist/services/mode-notices.js.map +1 -1
- package/dist/services/queue/queue-controller.d.ts +13 -0
- package/dist/services/queue/queue-controller.d.ts.map +1 -1
- package/dist/services/queue/queue-controller.js +32 -1
- package/dist/services/queue/queue-controller.js.map +1 -1
- 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/retry-classifier.d.ts.map +1 -1
- package/dist/services/retry/retry-classifier.js +18 -12
- package/dist/services/retry/retry-classifier.js.map +1 -1
- package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
- package/dist/services/retry/retry-error-classification.js +10 -6
- package/dist/services/retry/retry-error-classification.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 +7 -2
- package/dist/services/runtime-setting-router.js.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.js +4 -1
- package/dist/services/session/background-task-control.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/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-composition.d.ts +6 -2
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +99 -29
- 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.map +1 -1
- package/dist/services/session/session-stream-processor.js +5 -15
- package/dist/services/session/session-stream-processor.js.map +1 -1
- package/dist/services/session/turn-attempt-factory.d.ts +2 -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 +1 -1
- package/dist/services/session/turn-coordinator.d.ts.map +1 -1
- package/dist/services/session/turn-workflow.d.ts.map +1 -1
- package/dist/services/session/turn-workflow.js +4 -1
- package/dist/services/session/turn-workflow.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +27 -3
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +35 -11
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-service.d.ts +9 -0
- package/dist/services/settings/settings-service.d.ts.map +1 -1
- package/dist/services/settings/settings-service.js +40 -0
- package/dist/services/settings/settings-service.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +5 -0
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +2 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +6 -0
- package/dist/services/settings/test-helpers/settings-consumer-inventory.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/stream-event-processor.d.ts.map +1 -1
- package/dist/services/stream-event-processor.js +15 -0
- package/dist/services/stream-event-processor.js.map +1 -1
- package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
- package/dist/services/subagents/mentor-runner.js +2 -0
- package/dist/services/subagents/mentor-runner.js.map +1 -1
- package/dist/services/subagents/nested-runner.d.ts.map +1 -1
- package/dist/services/subagents/nested-runner.js +34 -1
- package/dist/services/subagents/nested-runner.js.map +1 -1
- package/dist/services/subagents/subagent-async-registry.js +1 -1
- package/dist/services/subagents/subagent-async-registry.js.map +1 -1
- package/dist/services/subagents/subagent-notification-store.d.ts +28 -1
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
- package/dist/services/subagents/subagent-notification-store.js +11 -0
- package/dist/services/subagents/subagent-notification-store.js.map +1 -1
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +10 -5
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/services/subagents/utils.d.ts +2 -0
- package/dist/services/subagents/utils.d.ts.map +1 -1
- package/dist/services/subagents/utils.js +29 -0
- 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/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.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent.js +40 -24
- package/dist/tools/agent/run-subagent.js.map +1 -1
- package/dist/tools/memory/memory-tools.d.ts.map +1 -1
- package/dist/tools/memory/memory-tools.js +322 -59
- 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.map +1 -1
- package/dist/tools/system/shell.js +7 -0
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/types.d.ts +4 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.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 +28 -7
- package/dist/utils/conversation/conversation-event-handler.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/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 +15 -0
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts +2 -0
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +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 +20 -1
- package/dist/utils/shell/sandbox/shell-sandbox-runner.js.map +1 -1
- package/dist/utils/value-suggestions.d.ts.map +1 -1
- package/dist/utils/value-suggestions.js +1 -0
- package/dist/utils/value-suggestions.js.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-run-loop.d.ts","sourceRoot":"","sources":["../../../source/services/agent-runtime/application-run-loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAIV,iBAAiB,EAEjB,sBAAsB,EACtB,6BAA6B,EAC7B,wBAAwB,
|
|
1
|
+
{"version":3,"file":"application-run-loop.d.ts","sourceRoot":"","sources":["../../../source/services/agent-runtime/application-run-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,8 @@ import { RunBudget, isRunBudgetInteraction, } from './run-budget.js';
|
|
|
9
9
|
import { addTokenUsage, normalizeUsage } from '../../utils/ai/token-usage.js';
|
|
10
10
|
import { computeModelCost } from '../../services/cost/model-cost.js';
|
|
11
11
|
import { getCatalogPricingVersion, getModelPricing } from '../../services/cost/pricing.js';
|
|
12
|
-
import {
|
|
12
|
+
import { GenerationGuard, GenerationGuardError, GenerationStreamDeadlines, } from './generation-guard.js';
|
|
13
|
+
import { classifyInLoopModelRetry, sleepWithAbort } from '../retry/in-loop-model-retry.js';
|
|
13
14
|
/**
|
|
14
15
|
* Compatibility error for legacy callers without a staged run budget. The loop
|
|
15
16
|
* owns turn counting — the SDK-era `callModelInputFilter` hook is deliberately
|
|
@@ -657,150 +658,218 @@ export class ApplicationRunLoop {
|
|
|
657
658
|
state.requestBoundaryReady = undefined;
|
|
658
659
|
}
|
|
659
660
|
const model = await this.#deps.resolveModel(state.agent.model);
|
|
660
|
-
|
|
661
|
-
|
|
661
|
+
const maxRetries = state.agent.modelSettings?.retry?.maxRetries ?? 0;
|
|
662
|
+
let attempt = 0;
|
|
663
|
+
let streamedToolCalls = [];
|
|
662
664
|
let completion;
|
|
665
|
+
let sawToolCall = false;
|
|
666
|
+
let activeRequestId = '';
|
|
667
|
+
let activeRequest;
|
|
663
668
|
let pendingNativeReasoning;
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
:
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
:
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
let iteratorFinished = false;
|
|
722
|
-
try {
|
|
723
|
-
iterator = model.stream(request)[Symbol.asyncIterator]();
|
|
724
|
-
while (true) {
|
|
725
|
-
const next = await deadline.wait(iterator.next());
|
|
726
|
-
if (next.done) {
|
|
727
|
-
iteratorFinished = true;
|
|
728
|
-
return;
|
|
729
|
-
}
|
|
730
|
-
const event = next.value;
|
|
731
|
-
if (event.type === 'completion') {
|
|
732
|
-
generationGuard.observeCompletion(event.output);
|
|
733
|
-
completion = event;
|
|
734
|
-
continue;
|
|
735
|
-
}
|
|
736
|
-
if (event.type === 'text_delta') {
|
|
737
|
-
generationGuard.observeText(event.text);
|
|
738
|
-
outputPush(stream, queue, { type: 'text_delta', text: event.text });
|
|
739
|
-
continue;
|
|
740
|
-
}
|
|
741
|
-
if (event.type === 'codex_rate_limits') {
|
|
742
|
-
outputPush(stream, queue, { type: 'codex_rate_limits', rateLimits: event.rateLimits });
|
|
743
|
-
continue;
|
|
669
|
+
let criticalWrapUp = false;
|
|
670
|
+
while (true) {
|
|
671
|
+
streamedToolCalls = [];
|
|
672
|
+
completion = undefined;
|
|
673
|
+
sawToolCall = false;
|
|
674
|
+
pendingNativeReasoning = undefined;
|
|
675
|
+
// Stable process-unique request id, allocated immediately before dispatch
|
|
676
|
+
// so a cost record can be settled exactly once (success or failure).
|
|
677
|
+
activeRequestId = this.#nextRequestId();
|
|
678
|
+
const requestId = activeRequestId;
|
|
679
|
+
const outputLengthBefore = stream.output.length;
|
|
680
|
+
const newItemsLengthBefore = stream.newItems.length;
|
|
681
|
+
const inputLengthBefore = state.input.length;
|
|
682
|
+
const historyLengthBefore = state.history.length;
|
|
683
|
+
const criticalWrapUpDispatchedBefore = state.criticalWrapUpDispatched;
|
|
684
|
+
let provisionalTextCharacters = 0;
|
|
685
|
+
let provisionalReasoningCharacters = 0;
|
|
686
|
+
let provisionalTextDeltas = 0;
|
|
687
|
+
let provisionalReasoningDeltas = 0;
|
|
688
|
+
criticalWrapUp = state.criticalWrapUpPending === true && state.criticalWrapUpDispatched !== true;
|
|
689
|
+
if (criticalWrapUp)
|
|
690
|
+
state.criticalWrapUpDispatched = true;
|
|
691
|
+
const disableChaining = state.disableChainingForAttempt === true;
|
|
692
|
+
if (disableChaining) {
|
|
693
|
+
state.disableChainingForAttempt = false;
|
|
694
|
+
state.responseId = undefined;
|
|
695
|
+
state.responseProviderId = undefined;
|
|
696
|
+
}
|
|
697
|
+
const request = {
|
|
698
|
+
instructions: criticalWrapUp
|
|
699
|
+
? `${state.agent.instructions}\n\nBudget containment is terminal. Do not call tools. In this one final response, summarize what you completed, the evidence you have, and what remains.`
|
|
700
|
+
: state.agent.instructions,
|
|
701
|
+
...(state.supportsConversationChaining &&
|
|
702
|
+
!disableChaining &&
|
|
703
|
+
state.responseId &&
|
|
704
|
+
state.responseProviderId !== undefined &&
|
|
705
|
+
state.responseProviderId === state.currentProviderId
|
|
706
|
+
? { previousResponseId: state.responseId }
|
|
707
|
+
: {}),
|
|
708
|
+
...(disableChaining ? { disableChaining: true } : {}),
|
|
709
|
+
input: state.input,
|
|
710
|
+
tools: toModelTools(criticalWrapUp ? [] : state.agent.tools),
|
|
711
|
+
applicationTools: criticalWrapUp ? [] : state.agent.tools,
|
|
712
|
+
...(state.agent.modelSettings?.temperature !== undefined
|
|
713
|
+
? { temperature: state.agent.modelSettings.temperature }
|
|
714
|
+
: {}),
|
|
715
|
+
...(state.agent.modelSettings?.reasoning ? { reasoning: state.agent.modelSettings.reasoning } : {}),
|
|
716
|
+
...(state.agent.modelSettings?.maxTokens !== undefined
|
|
717
|
+
? { maxTokens: state.agent.modelSettings.maxTokens }
|
|
718
|
+
: {}),
|
|
719
|
+
...(state.agent.outputType !== undefined ? { outputType: state.agent.outputType } : {}),
|
|
720
|
+
...(state.agent.modelSettings?.codex ? { codex: state.agent.modelSettings.codex } : {}),
|
|
721
|
+
...(state.agent.modelSettings?.providerData
|
|
722
|
+
? {
|
|
723
|
+
providerOptions: this.#contextCompactionSessionState.disabled
|
|
724
|
+
? Object.fromEntries(Object.entries(state.agent.modelSettings.providerData).filter(([key]) => key !== 'contextCompaction'))
|
|
725
|
+
: state.agent.modelSettings.providerData,
|
|
744
726
|
}
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
727
|
+
: {}),
|
|
728
|
+
...(options.signal ? { signal: options.signal } : {}),
|
|
729
|
+
};
|
|
730
|
+
activeRequest = request;
|
|
731
|
+
const generationGuard = new GenerationGuard({
|
|
732
|
+
maxOutputCharacters: state.agent.modelSettings?.maxStreamOutputChars,
|
|
733
|
+
maxTextCharacters: state.agent.modelSettings?.maxStreamOutputChars,
|
|
734
|
+
maxReasoningCharacters: state.agent.modelSettings?.maxStreamOutputChars,
|
|
735
|
+
maxToolArgumentCharacters: state.agent.modelSettings?.maxStreamOutputChars,
|
|
736
|
+
maxCumulativeToolArgumentCharacters: state.agent.modelSettings?.maxStreamOutputChars,
|
|
737
|
+
requestDeadlineMs: state.agent.modelSettings?.maxModelRequestDurationMs,
|
|
738
|
+
maxStreamIdleMs: state.agent.modelSettings?.maxModelStreamIdleMs,
|
|
739
|
+
...options.generationGuard,
|
|
740
|
+
});
|
|
741
|
+
const consume = async () => {
|
|
742
|
+
const deadline = new GenerationStreamDeadlines({ totalMs: generationGuard.requestDeadlineMs, idleMs: generationGuard.maxStreamIdleMs }, () => requestAbortController.abort(), () => generationGuard.progress);
|
|
743
|
+
let iterator;
|
|
744
|
+
let iteratorFinished = false;
|
|
745
|
+
try {
|
|
746
|
+
iterator = model.stream(request)[Symbol.asyncIterator]();
|
|
747
|
+
while (true) {
|
|
748
|
+
const next = await deadline.wait(iterator.next());
|
|
749
|
+
if (next.done) {
|
|
750
|
+
iteratorFinished = true;
|
|
751
|
+
return;
|
|
752
|
+
}
|
|
753
|
+
// Any streamed event is transport activity: re-arm the inactivity
|
|
754
|
+
// window so long legitimate reasoning is never mistaken for a stall.
|
|
755
|
+
deadline.recordActivity();
|
|
756
|
+
const event = next.value;
|
|
757
|
+
if (event.type === 'completion') {
|
|
758
|
+
generationGuard.observeCompletion(event.output);
|
|
759
|
+
completion = event;
|
|
760
|
+
continue;
|
|
761
|
+
}
|
|
762
|
+
if (event.type === 'text_delta') {
|
|
763
|
+
generationGuard.observeText(event.text);
|
|
764
|
+
provisionalTextCharacters += event.text.length;
|
|
765
|
+
provisionalTextDeltas++;
|
|
766
|
+
outputPush(stream, queue, { type: 'text_delta', text: event.text });
|
|
767
|
+
continue;
|
|
768
|
+
}
|
|
769
|
+
if (event.type === 'codex_rate_limits') {
|
|
770
|
+
outputPush(stream, queue, { type: 'codex_rate_limits', rateLimits: event.rateLimits });
|
|
771
|
+
continue;
|
|
772
|
+
}
|
|
773
|
+
if (event.type === 'reasoning_delta') {
|
|
774
|
+
const accepted = generationGuard.observeReasoning(event.text);
|
|
775
|
+
if (!accepted)
|
|
776
|
+
continue;
|
|
777
|
+
const forwarded = accepted === event.text ? event : { ...event, text: accepted };
|
|
778
|
+
pendingNativeReasoning = appendNativeReasoning(pendingNativeReasoning, forwarded);
|
|
779
|
+
provisionalReasoningCharacters += accepted.length;
|
|
780
|
+
provisionalReasoningDeltas++;
|
|
781
|
+
outputPush(stream, queue, { type: 'reasoning_delta', text: accepted });
|
|
782
|
+
continue;
|
|
783
|
+
}
|
|
784
|
+
if (event.type === 'tool_call_streaming_delta') {
|
|
785
|
+
generationGuard.observeToolArgumentProgress(event.argumentCharCount);
|
|
786
|
+
outputPush(stream, queue, event);
|
|
787
|
+
continue;
|
|
788
|
+
}
|
|
789
|
+
if (event.type === 'context_compaction_started' || event.type === 'context_compaction_completed') {
|
|
790
|
+
outputPush(stream, queue, event);
|
|
791
|
+
continue;
|
|
792
|
+
}
|
|
793
|
+
if (event.type === 'tool_call') {
|
|
794
|
+
generationGuard.observeToolCall(event.arguments);
|
|
795
|
+
pendingNativeReasoning = commitPendingNativeReasoning(state, stream, queue, pendingNativeReasoning);
|
|
796
|
+
sawToolCall = true;
|
|
797
|
+
streamedToolCalls.push(event);
|
|
798
|
+
}
|
|
750
799
|
}
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
800
|
+
}
|
|
801
|
+
finally {
|
|
802
|
+
deadline.dispose();
|
|
803
|
+
if (iterator && !iteratorFinished)
|
|
804
|
+
void iterator.return?.().catch(() => undefined);
|
|
805
|
+
}
|
|
806
|
+
};
|
|
807
|
+
const dispatch = async () => {
|
|
808
|
+
state.requestPreparation?.prepare(request);
|
|
809
|
+
await consume();
|
|
810
|
+
};
|
|
811
|
+
try {
|
|
812
|
+
if (state.requestPreparation)
|
|
813
|
+
await state.requestPreparation.run(dispatch);
|
|
814
|
+
else
|
|
815
|
+
await dispatch();
|
|
816
|
+
break;
|
|
817
|
+
}
|
|
818
|
+
catch (error) {
|
|
819
|
+
if (error instanceof GenerationGuardError)
|
|
820
|
+
requestAbortController.abort();
|
|
821
|
+
const decision = classifyInLoopModelRetry(error, attempt, maxRetries);
|
|
822
|
+
if (decision.retryable && !options.signal?.aborted) {
|
|
823
|
+
attempt++;
|
|
824
|
+
state.input.splice(inputLengthBefore);
|
|
825
|
+
state.history.splice(historyLengthBefore);
|
|
826
|
+
state.criticalWrapUpDispatched = criticalWrapUpDispatchedBefore;
|
|
827
|
+
stream.output.splice(outputLengthBefore);
|
|
828
|
+
if (stream.newItems !== stream.output) {
|
|
829
|
+
stream.newItems.splice(newItemsLengthBefore);
|
|
755
830
|
}
|
|
756
|
-
if (
|
|
757
|
-
|
|
758
|
-
|
|
831
|
+
if (provisionalTextDeltas > 0 || provisionalReasoningDeltas > 0) {
|
|
832
|
+
queue.push({
|
|
833
|
+
type: 'model_attempt_rollback',
|
|
834
|
+
textCharacters: provisionalTextCharacters,
|
|
835
|
+
reasoningCharacters: provisionalReasoningCharacters,
|
|
836
|
+
textDeltas: provisionalTextDeltas,
|
|
837
|
+
reasoningDeltas: provisionalReasoningDeltas,
|
|
838
|
+
});
|
|
759
839
|
}
|
|
760
|
-
if (
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
streamedToolCalls.push(event);
|
|
840
|
+
if (decision.kind === 'chain_recovery') {
|
|
841
|
+
state.disableChainingForAttempt = true;
|
|
842
|
+
state.responseId = undefined;
|
|
843
|
+
state.responseProviderId = undefined;
|
|
765
844
|
}
|
|
845
|
+
this.#deps.logDiagnostic?.('Retrying model request in run loop', {
|
|
846
|
+
attempt,
|
|
847
|
+
maxRetries,
|
|
848
|
+
kind: decision.kind,
|
|
849
|
+
delayMs: decision.delayMs,
|
|
850
|
+
error: error instanceof Error ? error.message : String(error),
|
|
851
|
+
});
|
|
852
|
+
await (this.#deps.waitBeforeModelRetry ?? sleepWithAbort)(decision.delayMs, options.signal);
|
|
853
|
+
continue;
|
|
766
854
|
}
|
|
855
|
+
// Dispatch began, but no terminal completion was accepted. Record an
|
|
856
|
+
// unpriced marker so the summary stays honest (partial) rather than
|
|
857
|
+
// appearing exact. Observational only: the error still propagates.
|
|
858
|
+
const cancelled = error instanceof Error && error.name === 'AbortError';
|
|
859
|
+
const record = this.#appendCostRecord(state, {
|
|
860
|
+
requestId,
|
|
861
|
+
provider: state.currentProviderId,
|
|
862
|
+
model: state.agent.model,
|
|
863
|
+
tier: resolveServiceTier(request),
|
|
864
|
+
outcome: cancelled ? 'cancelled' : 'failed',
|
|
865
|
+
});
|
|
866
|
+
// Only the live queue sees cost records: `output`/`newItems` feed
|
|
867
|
+
// persistence and replay, and a cost event must never become a
|
|
868
|
+
// restored history item.
|
|
869
|
+
queue.push({ type: 'cost_update', record });
|
|
870
|
+
this.#evaluateRunBudget(state, stream, queue);
|
|
871
|
+
throw error;
|
|
767
872
|
}
|
|
768
|
-
finally {
|
|
769
|
-
deadline.dispose();
|
|
770
|
-
if (iterator && !iteratorFinished)
|
|
771
|
-
void iterator.return?.().catch(() => undefined);
|
|
772
|
-
}
|
|
773
|
-
};
|
|
774
|
-
const dispatch = async () => {
|
|
775
|
-
state.requestPreparation?.prepare(request);
|
|
776
|
-
await consume();
|
|
777
|
-
};
|
|
778
|
-
try {
|
|
779
|
-
if (state.requestPreparation)
|
|
780
|
-
await state.requestPreparation.run(dispatch);
|
|
781
|
-
else
|
|
782
|
-
await dispatch();
|
|
783
|
-
}
|
|
784
|
-
catch (error) {
|
|
785
|
-
if (error instanceof GenerationGuardError)
|
|
786
|
-
requestAbortController.abort();
|
|
787
|
-
// Dispatch began, but no terminal completion was accepted. Record an
|
|
788
|
-
// unpriced marker so the summary stays honest (partial) rather than
|
|
789
|
-
// appearing exact. Observational only: the error still propagates.
|
|
790
|
-
const cancelled = error instanceof Error && error.name === 'AbortError';
|
|
791
|
-
const record = this.#appendCostRecord(state, {
|
|
792
|
-
requestId,
|
|
793
|
-
provider: state.currentProviderId,
|
|
794
|
-
model: state.agent.model,
|
|
795
|
-
tier: resolveServiceTier(request),
|
|
796
|
-
outcome: cancelled ? 'cancelled' : 'failed',
|
|
797
|
-
});
|
|
798
|
-
// Only the live queue sees cost records: `output`/`newItems` feed
|
|
799
|
-
// persistence and replay, and a cost event must never become a
|
|
800
|
-
// restored history item.
|
|
801
|
-
queue.push({ type: 'cost_update', record });
|
|
802
|
-
this.#evaluateRunBudget(state, stream, queue);
|
|
803
|
-
throw error;
|
|
804
873
|
}
|
|
805
874
|
if (!completion) {
|
|
806
875
|
// A few application-owned model fixtures (and legacy adapters) end a
|
|
@@ -820,6 +889,7 @@ export class ApplicationRunLoop {
|
|
|
820
889
|
}
|
|
821
890
|
continue;
|
|
822
891
|
}
|
|
892
|
+
const finalCompletion = completion;
|
|
823
893
|
// Commit the authoritative terminal state before handling terminal-only
|
|
824
894
|
// tool calls. Approval may pause immediately after this point, and the
|
|
825
895
|
// continuation must still carry the response that produced the calls.
|
|
@@ -828,7 +898,7 @@ export class ApplicationRunLoop {
|
|
|
828
898
|
// chaining, while still exposing the completed provider response on the
|
|
829
899
|
// current stream for diagnostics.
|
|
830
900
|
if (state.supportsConversationChaining && state.currentProviderId !== undefined) {
|
|
831
|
-
state.responseId =
|
|
901
|
+
state.responseId = finalCompletion.responseId;
|
|
832
902
|
state.responseProviderId = state.currentProviderId;
|
|
833
903
|
}
|
|
834
904
|
else {
|
|
@@ -836,8 +906,8 @@ export class ApplicationRunLoop {
|
|
|
836
906
|
state.responseProviderId = undefined;
|
|
837
907
|
}
|
|
838
908
|
let normalizedCompletionUsage;
|
|
839
|
-
if (
|
|
840
|
-
normalizedCompletionUsage = normalizeModelUsage(
|
|
909
|
+
if (finalCompletion.usage !== undefined) {
|
|
910
|
+
normalizedCompletionUsage = normalizeModelUsage(finalCompletion.usage);
|
|
841
911
|
if (normalizedCompletionUsage) {
|
|
842
912
|
const accumulated = addTokenUsage(normalizeModelUsage(state.usage), normalizedCompletionUsage);
|
|
843
913
|
state.usage = {
|
|
@@ -858,7 +928,7 @@ export class ApplicationRunLoop {
|
|
|
858
928
|
else {
|
|
859
929
|
// Providers may carry a future/opaque usage shape. Preserve the old
|
|
860
930
|
// pass-through behavior when normalization cannot recognize it.
|
|
861
|
-
state.usage =
|
|
931
|
+
state.usage = finalCompletion.usage;
|
|
862
932
|
}
|
|
863
933
|
}
|
|
864
934
|
else {
|
|
@@ -872,13 +942,13 @@ export class ApplicationRunLoop {
|
|
|
872
942
|
// persistence and replay, and a cost event must never become a restored
|
|
873
943
|
// history item.
|
|
874
944
|
const record = this.#appendCostRecord(state, {
|
|
875
|
-
requestId,
|
|
945
|
+
requestId: activeRequestId,
|
|
876
946
|
provider: state.currentProviderId,
|
|
877
947
|
model: state.agent.model,
|
|
878
|
-
tier: resolveServiceTier(
|
|
948
|
+
tier: activeRequest ? resolveServiceTier(activeRequest) : 'standard',
|
|
879
949
|
outcome: 'completed',
|
|
880
950
|
usage: normalizedCompletionUsage,
|
|
881
|
-
providerUsd:
|
|
951
|
+
providerUsd: finalCompletion.costUsd,
|
|
882
952
|
});
|
|
883
953
|
queue.push({ type: 'cost_update', record });
|
|
884
954
|
// Cost and usage arrive in the same completion metadata, so surface both
|
|
@@ -887,18 +957,18 @@ export class ApplicationRunLoop {
|
|
|
887
957
|
if (normalizedCompletionUsage)
|
|
888
958
|
queue.push({ type: 'usage_update', usage: normalizedCompletionUsage });
|
|
889
959
|
this.#evaluateRunBudget(state, stream, queue);
|
|
890
|
-
stream.lastResponseId =
|
|
891
|
-
stream.rawResponses?.push(
|
|
960
|
+
stream.lastResponseId = finalCompletion.responseId;
|
|
961
|
+
stream.rawResponses?.push(finalCompletion);
|
|
892
962
|
// Some provider adapters report function calls only in the terminal
|
|
893
963
|
// completion rather than as separate stream events. Their reasoning may
|
|
894
964
|
// likewise be terminal-only, so associate it before replaying calls.
|
|
895
965
|
const toolCalls = [...streamedToolCalls];
|
|
896
966
|
if (!sawToolCall) {
|
|
897
|
-
for (const item of
|
|
967
|
+
for (const item of finalCompletion.output) {
|
|
898
968
|
if (item.type === 'reasoning')
|
|
899
969
|
pendingNativeReasoning = appendNativeReasoning(pendingNativeReasoning, item);
|
|
900
970
|
}
|
|
901
|
-
for (const item of
|
|
971
|
+
for (const item of finalCompletion.output) {
|
|
902
972
|
if (item.type !== 'tool_call')
|
|
903
973
|
continue;
|
|
904
974
|
pendingNativeReasoning = commitPendingNativeReasoning(state, stream, queue, pendingNativeReasoning);
|
|
@@ -916,7 +986,7 @@ export class ApplicationRunLoop {
|
|
|
916
986
|
// applies compaction's replacement rule; keeping the item here also
|
|
917
987
|
// makes it available to an in-flight tool continuation before that
|
|
918
988
|
// terminal history commit occurs.
|
|
919
|
-
for (const item of
|
|
989
|
+
for (const item of finalCompletion.output) {
|
|
920
990
|
if (item.type !== 'provider_opaque')
|
|
921
991
|
continue;
|
|
922
992
|
const historyItem = {
|
|
@@ -927,7 +997,7 @@ export class ApplicationRunLoop {
|
|
|
927
997
|
state.input.push(item);
|
|
928
998
|
outputPush(stream, queue, { type: 'item', item });
|
|
929
999
|
}
|
|
930
|
-
const assistantText =
|
|
1000
|
+
const assistantText = finalCompletion.output
|
|
931
1001
|
.filter((item) => item.type === 'message')
|
|
932
1002
|
.flatMap((item) => item.content)
|
|
933
1003
|
.map((part) => part.text)
|
|
@@ -1092,6 +1162,13 @@ export class ApplicationRunLoop {
|
|
|
1092
1162
|
maxParallelToolCalls,
|
|
1093
1163
|
dispatchOrder: group.map((entry) => entry.event.id),
|
|
1094
1164
|
});
|
|
1165
|
+
for (const entry of group) {
|
|
1166
|
+
outputPush(stream, queue, {
|
|
1167
|
+
type: 'tool_call_dispatched',
|
|
1168
|
+
callId: entry.event.id,
|
|
1169
|
+
toolName: entry.event.name,
|
|
1170
|
+
});
|
|
1171
|
+
}
|
|
1095
1172
|
if (group.length > 1) {
|
|
1096
1173
|
const results = await Promise.allSettled(group.map((entry) => this.#invokePlannedTool(entry, toolContext, state)));
|
|
1097
1174
|
const rejected = results.find((result) => result.status === 'rejected');
|
|
@@ -1211,6 +1288,9 @@ export class ApplicationRunLoop {
|
|
|
1211
1288
|
}
|
|
1212
1289
|
}
|
|
1213
1290
|
#emitRunBudgetEvent(state, event, message, stream, queue) {
|
|
1291
|
+
if (state.runBudgetEscalation === 'disabled') {
|
|
1292
|
+
return;
|
|
1293
|
+
}
|
|
1214
1294
|
if (event.type === 'budget_stage' && event.stage === 'critical' && state.wrapUpOnCriticalRunBudget) {
|
|
1215
1295
|
state.criticalWrapUpPending = true;
|
|
1216
1296
|
}
|