@qduc/term2 0.11.1 → 0.12.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 +6 -4
- package/dist/agent.d.ts +21 -24
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +73 -21
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts +3 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +283 -128
- package/dist/app.js.map +1 -1
- package/dist/cli.js +91 -27
- package/dist/cli.js.map +1 -1
- package/dist/commands/auto-approve-command.js.map +1 -1
- package/dist/commands/mode-commands.js.map +1 -1
- package/dist/commands/retry-tool-command.d.ts +13 -0
- package/dist/commands/retry-tool-command.d.ts.map +1 -0
- package/dist/commands/retry-tool-command.js +20 -0
- package/dist/commands/retry-tool-command.js.map +1 -0
- package/dist/commands/rewind-command.d.ts +37 -0
- package/dist/commands/rewind-command.d.ts.map +1 -0
- package/dist/commands/rewind-command.js +97 -0
- package/dist/commands/rewind-command.js.map +1 -0
- package/dist/commands/sandbox-command.js.map +1 -1
- package/dist/components/InputBox.d.ts +18 -32
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +178 -579
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/input/ApplicationInputSurface.d.ts +37 -0
- package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -0
- package/dist/components/input/ApplicationInputSurface.js +78 -0
- package/dist/components/input/ApplicationInputSurface.js.map +1 -0
- package/dist/components/input/MenuStackHost.d.ts +12 -0
- package/dist/components/input/MenuStackHost.d.ts.map +1 -0
- package/dist/components/input/MenuStackHost.js +13 -0
- package/dist/components/input/MenuStackHost.js.map +1 -0
- package/dist/components/input/MenuSurface.d.ts +13 -0
- package/dist/components/input/MenuSurface.d.ts.map +1 -0
- package/dist/components/input/MenuSurface.js +86 -0
- package/dist/components/input/MenuSurface.js.map +1 -0
- package/dist/components/input/ModelMenuSession.d.ts +19 -0
- package/dist/components/input/ModelMenuSession.d.ts.map +1 -0
- package/dist/components/input/ModelMenuSession.js +144 -0
- package/dist/components/input/ModelMenuSession.js.map +1 -0
- package/dist/components/input/PathMenuSession.d.ts +16 -0
- package/dist/components/input/PathMenuSession.d.ts.map +1 -0
- package/dist/components/input/PathMenuSession.js +68 -0
- package/dist/components/input/PathMenuSession.js.map +1 -0
- package/dist/components/input/PendingQueueList.d.ts +20 -0
- package/dist/components/input/PendingQueueList.d.ts.map +1 -0
- package/dist/components/input/PendingQueueList.js +26 -0
- package/dist/components/input/PendingQueueList.js.map +1 -0
- package/dist/components/input/ProviderMenuSession.d.ts +16 -0
- package/dist/components/input/ProviderMenuSession.d.ts.map +1 -0
- package/dist/components/input/ProviderMenuSession.js +93 -0
- package/dist/components/input/ProviderMenuSession.js.map +1 -0
- package/dist/components/input/RewindMenuSession.d.ts +14 -0
- package/dist/components/input/RewindMenuSession.d.ts.map +1 -0
- package/dist/components/input/RewindMenuSession.js +77 -0
- package/dist/components/input/RewindMenuSession.js.map +1 -0
- package/dist/components/input/SettingsMenuSession.d.ts +17 -0
- package/dist/components/input/SettingsMenuSession.d.ts.map +1 -0
- package/dist/components/input/SettingsMenuSession.js +136 -0
- package/dist/components/input/SettingsMenuSession.js.map +1 -0
- package/dist/components/input/SettingsValueMenuSession.d.ts +19 -0
- package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -0
- package/dist/components/input/SettingsValueMenuSession.js +113 -0
- package/dist/components/input/SettingsValueMenuSession.js.map +1 -0
- package/dist/components/input/SkillsMenuSession.d.ts +16 -0
- package/dist/components/input/SkillsMenuSession.d.ts.map +1 -0
- package/dist/components/input/SkillsMenuSession.js +64 -0
- package/dist/components/input/SkillsMenuSession.js.map +1 -0
- package/dist/components/input/SlashMenuSession.d.ts +17 -0
- package/dist/components/input/SlashMenuSession.d.ts.map +1 -0
- package/dist/components/input/SlashMenuSession.js +57 -0
- package/dist/components/input/SlashMenuSession.js.map +1 -0
- package/dist/components/input/determine-active-menu.d.ts +2 -0
- package/dist/components/input/determine-active-menu.d.ts.map +1 -1
- package/dist/components/input/determine-active-menu.js +12 -4
- package/dist/components/input/determine-active-menu.js.map +1 -1
- package/dist/components/input/insertions.d.ts +0 -13
- package/dist/components/input/insertions.d.ts.map +1 -1
- package/dist/components/input/insertions.js +0 -26
- package/dist/components/input/insertions.js.map +1 -1
- package/dist/components/input/menu-controller.d.ts +52 -0
- package/dist/components/input/menu-controller.d.ts.map +1 -0
- package/dist/components/input/menu-controller.js +690 -0
- package/dist/components/input/menu-controller.js.map +1 -0
- package/dist/components/input/menu-editor.d.ts +9 -0
- package/dist/components/input/menu-editor.d.ts.map +1 -0
- package/dist/components/input/menu-editor.js +45 -0
- package/dist/components/input/menu-editor.js.map +1 -0
- package/dist/components/input/menu-registry.d.ts +20 -0
- package/dist/components/input/menu-registry.d.ts.map +1 -0
- package/dist/components/input/menu-registry.js +25 -0
- package/dist/components/input/menu-registry.js.map +1 -0
- package/dist/components/input/menu-types.d.ts +320 -0
- package/dist/components/input/menu-types.d.ts.map +1 -0
- package/dist/components/input/menu-types.js +2 -0
- package/dist/components/input/menu-types.js.map +1 -0
- package/dist/components/input/settings-intent-host.d.ts +22 -0
- package/dist/components/input/settings-intent-host.d.ts.map +1 -0
- package/dist/components/input/settings-intent-host.js +69 -0
- package/dist/components/input/settings-intent-host.js.map +1 -0
- package/dist/components/input/triggers.d.ts +3 -0
- package/dist/components/input/triggers.d.ts.map +1 -1
- package/dist/components/input/triggers.js +258 -0
- package/dist/components/input/triggers.js.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.d.ts +16 -0
- package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -0
- package/dist/components/layout/BackgroundTaskManager.js +236 -0
- package/dist/components/layout/BackgroundTaskManager.js.map +1 -0
- 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 +54 -33
- package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
- package/dist/components/layout/Banner.js.map +1 -1
- package/dist/components/layout/BottomArea.d.ts +23 -19
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +74 -48
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts +3 -1
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +102 -83
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
- package/dist/components/menu/RewindMenu.d.ts +18 -0
- package/dist/components/menu/RewindMenu.d.ts.map +1 -0
- package/dist/components/menu/RewindMenu.js +59 -0
- package/dist/components/menu/RewindMenu.js.map +1 -0
- package/dist/components/message/ChatMessage.d.ts +2 -1
- package/dist/components/message/ChatMessage.d.ts.map +1 -1
- package/dist/components/message/ChatMessage.js +1 -1
- package/dist/components/message/ChatMessage.js.map +1 -1
- package/dist/components/message/CommandMessage.d.ts.map +1 -1
- package/dist/components/message/CommandMessage.js +138 -17
- package/dist/components/message/CommandMessage.js.map +1 -1
- package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
- package/dist/components/message/MemoryRenderer.js +16 -10
- package/dist/components/message/MemoryRenderer.js.map +1 -1
- package/dist/components/message/MessageList.d.ts +20 -3
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +1 -1
- package/dist/components/message/MessageList.js.map +1 -1
- package/dist/components/message/SubagentActivityMessage.d.ts +5 -1
- package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
- package/dist/components/message/SubagentActivityMessage.js +12 -4
- package/dist/components/message/SubagentActivityMessage.js.map +1 -1
- package/dist/components/message/command-message-helpers.d.ts +37 -0
- package/dist/components/message/command-message-helpers.d.ts.map +1 -1
- package/dist/components/message/command-message-helpers.js +49 -8
- package/dist/components/message/command-message-helpers.js.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts +1 -0
- package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.js +136 -59
- package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
- package/dist/context/InputContext.d.ts +15 -8
- package/dist/context/InputContext.d.ts.map +1 -1
- package/dist/context/InputContext.js +92 -15
- package/dist/context/InputContext.js.map +1 -1
- package/dist/contracts/application-stream.d.ts +38 -0
- package/dist/contracts/application-stream.d.ts.map +1 -0
- package/dist/contracts/application-stream.js +2 -0
- package/dist/contracts/application-stream.js.map +1 -0
- package/dist/contracts/continuation-handle.d.ts +18 -0
- package/dist/contracts/continuation-handle.d.ts.map +1 -0
- package/dist/contracts/continuation-handle.js +22 -0
- package/dist/contracts/continuation-handle.js.map +1 -0
- package/dist/contracts/conversation-items.d.ts +47 -0
- package/dist/contracts/conversation-items.d.ts.map +1 -0
- package/dist/contracts/conversation-items.js +2 -0
- package/dist/contracts/conversation-items.js.map +1 -0
- package/dist/contracts/conversation.d.ts +44 -4
- package/dist/contracts/conversation.d.ts.map +1 -1
- package/dist/contracts/conversation.js +9 -0
- package/dist/contracts/conversation.js.map +1 -1
- package/dist/contracts/model-errors.d.ts +10 -0
- package/dist/contracts/model-errors.d.ts.map +1 -0
- package/dist/contracts/model-errors.js +15 -0
- package/dist/contracts/model-errors.js.map +1 -0
- package/dist/contracts/model-types.d.ts +16 -0
- package/dist/contracts/model-types.d.ts.map +1 -0
- package/dist/contracts/model-types.js +2 -0
- package/dist/contracts/model-types.js.map +1 -0
- package/dist/contracts/patch.d.ts +17 -0
- package/dist/contracts/patch.d.ts.map +1 -0
- package/dist/contracts/patch.js +2 -0
- package/dist/contracts/patch.js.map +1 -0
- package/dist/contracts/provider-input.d.ts +34 -0
- package/dist/contracts/provider-input.d.ts.map +1 -0
- package/dist/contracts/provider-input.js +2 -0
- package/dist/contracts/provider-input.js.map +1 -0
- package/dist/contracts/streamed-model-turn.d.ts +230 -0
- package/dist/contracts/streamed-model-turn.d.ts.map +1 -0
- package/dist/contracts/streamed-model-turn.js +2 -0
- package/dist/contracts/streamed-model-turn.js.map +1 -0
- package/dist/env-setup.js +1 -1
- package/dist/hooks/conversation-ui-reducer.d.ts +22 -4
- package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.js +43 -4
- package/dist/hooks/conversation-ui-reducer.js.map +1 -1
- package/dist/hooks/handoff-flow-reducer.d.ts +1 -36
- package/dist/hooks/handoff-flow-reducer.d.ts.map +1 -1
- package/dist/hooks/handoff-flow-reducer.js +3 -57
- package/dist/hooks/handoff-flow-reducer.js.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts +1 -0
- package/dist/hooks/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +30 -6
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +13 -11
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +90 -63
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts +18 -1
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.js +77 -8
- package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +30 -13
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +84 -18
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-escape-key.d.ts +4 -32
- package/dist/hooks/use-escape-key.d.ts.map +1 -1
- package/dist/hooks/use-escape-key.js +27 -68
- package/dist/hooks/use-escape-key.js.map +1 -1
- package/dist/hooks/use-handoff-flow.d.ts +6 -6
- package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
- package/dist/hooks/use-handoff-flow.js +110 -118
- package/dist/hooks/use-handoff-flow.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +50 -59
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/hooks/use-path-completion.d.ts.map +1 -1
- package/dist/hooks/use-path-completion.js +20 -11
- package/dist/hooks/use-path-completion.js.map +1 -1
- package/dist/hooks/use-provider-selection.d.ts.map +1 -1
- package/dist/hooks/use-provider-selection.js +19 -16
- package/dist/hooks/use-provider-selection.js.map +1 -1
- package/dist/hooks/use-rewind-selection.d.ts +30 -0
- package/dist/hooks/use-rewind-selection.d.ts.map +1 -0
- package/dist/hooks/{use-undo-selection.js → use-rewind-selection.js} +37 -28
- package/dist/hooks/use-rewind-selection.js.map +1 -0
- package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
- package/dist/hooks/use-runtime-settings.js +4 -3
- package/dist/hooks/use-runtime-settings.js.map +1 -1
- package/dist/hooks/use-selection.d.ts +1 -0
- package/dist/hooks/use-selection.d.ts.map +1 -1
- package/dist/hooks/use-selection.js +1 -1
- package/dist/hooks/use-selection.js.map +1 -1
- package/dist/hooks/use-setting.d.ts +3 -2
- package/dist/hooks/use-setting.d.ts.map +1 -1
- package/dist/hooks/use-setting.js +1 -1
- package/dist/hooks/use-setting.js.map +1 -1
- package/dist/hooks/use-settings-completion.d.ts +1 -0
- package/dist/hooks/use-settings-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-completion.js +22 -15
- package/dist/hooks/use-settings-completion.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +40 -28
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/hooks/use-shell-mode.d.ts +3 -13
- package/dist/hooks/use-shell-mode.d.ts.map +1 -1
- package/dist/hooks/use-shell-mode.js +14 -53
- package/dist/hooks/use-shell-mode.js.map +1 -1
- package/dist/hooks/use-skill-selection.d.ts.map +1 -1
- package/dist/hooks/use-skill-selection.js +17 -11
- package/dist/hooks/use-skill-selection.js.map +1 -1
- package/dist/hooks/use-slash-commands.d.ts.map +1 -1
- package/dist/hooks/use-slash-commands.js +11 -10
- package/dist/hooks/use-slash-commands.js.map +1 -1
- package/dist/hooks/use-terminal-focus-notifier.js.map +1 -1
- package/dist/lib/agent-chat-service.d.ts +12 -8
- package/dist/lib/agent-chat-service.d.ts.map +1 -1
- package/dist/lib/agent-chat-service.js +79 -44
- package/dist/lib/agent-chat-service.js.map +1 -1
- package/dist/lib/agent-client.d.ts +93 -17
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +398 -37
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +33 -15
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +104 -9
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +22 -4
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +137 -101
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/lib/chained-input-filter.d.ts +7 -1
- package/dist/lib/chained-input-filter.d.ts.map +1 -1
- package/dist/lib/chained-input-filter.js +46 -62
- package/dist/lib/chained-input-filter.js.map +1 -1
- package/dist/lib/continuation-projection-mode.d.ts +3 -0
- package/dist/lib/continuation-projection-mode.d.ts.map +1 -0
- package/dist/lib/continuation-projection-mode.js +2 -0
- package/dist/lib/continuation-projection-mode.js.map +1 -0
- package/dist/lib/editor-impl.d.ts +1 -1
- package/dist/lib/editor-impl.d.ts.map +1 -1
- package/dist/lib/editor-impl.js +1 -1
- package/dist/lib/editor-impl.js.map +1 -1
- package/dist/lib/harness-invariant-error.d.ts +22 -0
- package/dist/lib/harness-invariant-error.d.ts.map +1 -0
- package/dist/lib/harness-invariant-error.js +30 -0
- package/dist/lib/harness-invariant-error.js.map +1 -0
- package/dist/lib/input-owner.d.ts +64 -0
- package/dist/lib/input-owner.d.ts.map +1 -0
- package/dist/lib/input-owner.js +34 -0
- package/dist/lib/input-owner.js.map +1 -0
- package/dist/lib/openai-strict-tool-schema.d.ts +7 -4
- package/dist/lib/openai-strict-tool-schema.d.ts.map +1 -1
- package/dist/lib/openai-strict-tool-schema.js +8 -0
- package/dist/lib/openai-strict-tool-schema.js.map +1 -1
- package/dist/lib/subagent-bridge.d.ts +36 -4
- package/dist/lib/subagent-bridge.d.ts.map +1 -1
- package/dist/lib/subagent-bridge.js +92 -20
- package/dist/lib/subagent-bridge.js.map +1 -1
- package/dist/lib/tool-invoke.d.ts +18 -10
- package/dist/lib/tool-invoke.d.ts.map +1 -1
- package/dist/lib/tool-invoke.js +92 -44
- package/dist/lib/tool-invoke.js.map +1 -1
- package/dist/non-interactive.d.ts +14 -4
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +91 -84
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/async-subagent-delegation.d.ts +1 -4
- package/dist/prompts/async-subagent-delegation.d.ts.map +1 -1
- package/dist/prompts/async-subagent-delegation.js +9 -47
- package/dist/prompts/async-subagent-delegation.js.map +1 -1
- package/dist/prompts/async-subagent-delegation.ts +9 -58
- package/dist/prompts/memory.md +1 -1
- package/dist/prompts/orchestrator-prompt.test.ts +15 -0
- package/dist/prompts/orchestrator.md +7 -5
- package/dist/prompts/plan-mode-info.md +1 -1
- package/dist/prompts/prompt-constructor.d.ts +1 -0
- package/dist/prompts/prompt-constructor.d.ts.map +1 -1
- package/dist/prompts/prompt-constructor.js +5 -7
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +9 -8
- package/dist/prompts/prompt-constructor.ts +6 -7
- package/dist/prompts/shell-auto-approval.d.ts +2 -2
- package/dist/prompts/shell-auto-approval.d.ts.map +1 -1
- package/dist/prompts/shell-auto-approval.js +20 -5
- package/dist/prompts/shell-auto-approval.js.map +1 -1
- package/dist/prompts/shell-auto-approval.ts +20 -5
- package/dist/prompts/steering-notice.d.ts +16 -0
- package/dist/prompts/steering-notice.d.ts.map +1 -0
- package/dist/prompts/steering-notice.js +24 -0
- package/dist/prompts/steering-notice.js.map +1 -0
- package/dist/prompts/steering-notice.ts +24 -0
- package/dist/prompts/subagent-delegation.d.ts +6 -5
- package/dist/prompts/subagent-delegation.d.ts.map +1 -1
- package/dist/prompts/subagent-delegation.js +36 -13
- package/dist/prompts/subagent-delegation.js.map +1 -1
- package/dist/prompts/subagent-delegation.test.ts +9 -2
- package/dist/prompts/subagent-delegation.ts +54 -14
- package/dist/prompts/subagents/explorer.md +24 -14
- package/dist/prompts/subagents/worker-prompt.test.ts +2 -2
- package/dist/prompts/worktree-hygiene.md +1 -0
- package/dist/providers/ai-sdk-anthropic.provider.d.ts +3 -3
- package/dist/providers/ai-sdk-anthropic.provider.d.ts.map +1 -1
- package/dist/providers/ai-sdk-anthropic.provider.js +8 -4
- package/dist/providers/ai-sdk-anthropic.provider.js.map +1 -1
- package/dist/providers/ai-sdk-google.provider.d.ts +5 -4
- package/dist/providers/ai-sdk-google.provider.d.ts.map +1 -1
- package/dist/providers/ai-sdk-google.provider.js +23 -3
- package/dist/providers/ai-sdk-google.provider.js.map +1 -1
- package/dist/providers/ai-sdk-message-normalizer.d.ts +3 -7
- package/dist/providers/ai-sdk-message-normalizer.d.ts.map +1 -1
- package/dist/providers/ai-sdk-message-normalizer.js +27 -11
- package/dist/providers/ai-sdk-message-normalizer.js.map +1 -1
- package/dist/providers/ai-sdk-openrouter.provider.d.ts +5 -4
- package/dist/providers/ai-sdk-openrouter.provider.d.ts.map +1 -1
- package/dist/providers/ai-sdk-openrouter.provider.js +25 -3
- package/dist/providers/ai-sdk-openrouter.provider.js.map +1 -1
- package/dist/providers/ai-sdk-provider-settings.d.ts +10 -0
- package/dist/providers/ai-sdk-provider-settings.d.ts.map +1 -0
- package/dist/providers/ai-sdk-provider-settings.js +37 -0
- package/dist/providers/ai-sdk-provider-settings.js.map +1 -0
- package/dist/providers/ai-sdk-streamed-model.d.ts +5 -0
- package/dist/providers/ai-sdk-streamed-model.d.ts.map +1 -0
- package/dist/providers/ai-sdk-streamed-model.js +338 -0
- package/dist/providers/ai-sdk-streamed-model.js.map +1 -0
- package/dist/providers/codex-responses-model.d.ts +39 -12
- package/dist/providers/codex-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +656 -155
- package/dist/providers/codex-responses-model.js.map +1 -1
- package/dist/providers/codex-turn-converter.d.ts +12 -0
- package/dist/providers/codex-turn-converter.d.ts.map +1 -0
- package/dist/providers/codex-turn-converter.js +168 -0
- package/dist/providers/codex-turn-converter.js.map +1 -0
- package/dist/providers/codex.provider.d.ts +21 -0
- package/dist/providers/codex.provider.d.ts.map +1 -1
- package/dist/providers/codex.provider.js +57 -27
- package/dist/providers/codex.provider.js.map +1 -1
- package/dist/providers/common/openai-compatible-message-contract.d.ts +8 -0
- package/dist/providers/common/openai-compatible-message-contract.d.ts.map +1 -0
- package/dist/providers/common/openai-compatible-message-contract.js +23 -0
- package/dist/providers/common/openai-compatible-message-contract.js.map +1 -0
- package/dist/providers/common/openai-compatible-messages.d.ts +0 -4
- package/dist/providers/common/openai-compatible-messages.d.ts.map +1 -1
- package/dist/providers/common/openai-compatible-messages.js +0 -288
- package/dist/providers/common/openai-compatible-messages.js.map +1 -1
- package/dist/providers/fetch/composer.d.ts.map +1 -1
- package/dist/providers/fetch/composer.js +1 -0
- package/dist/providers/fetch/composer.js.map +1 -1
- package/dist/providers/model-catalog/catalog.d.ts +31 -0
- package/dist/providers/model-catalog/catalog.d.ts.map +1 -0
- package/dist/providers/model-catalog/catalog.generated.d.ts +3010 -0
- package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -0
- package/dist/providers/model-catalog/catalog.generated.js +3004 -0
- package/dist/providers/model-catalog/catalog.generated.js.map +1 -0
- package/dist/providers/model-catalog/catalog.js +62 -0
- package/dist/providers/model-catalog/catalog.js.map +1 -0
- package/dist/providers/model-catalog/generate-catalog.d.ts +42 -0
- package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -0
- package/dist/providers/model-catalog/generate-catalog.js +96 -0
- package/dist/providers/model-catalog/generate-catalog.js.map +1 -0
- package/dist/providers/openai-chained-input-compatibility.d.ts +36 -0
- package/dist/providers/openai-chained-input-compatibility.d.ts.map +1 -0
- package/dist/providers/openai-chained-input-compatibility.js +60 -0
- package/dist/providers/openai-chained-input-compatibility.js.map +1 -0
- package/dist/providers/openai-chat-completions-model.d.ts +12 -0
- package/dist/providers/openai-chat-completions-model.d.ts.map +1 -0
- package/dist/providers/openai-chat-completions-model.js +271 -0
- package/dist/providers/openai-chat-completions-model.js.map +1 -0
- package/dist/providers/openai-compatible-lazy.d.ts +1 -1
- package/dist/providers/openai-compatible-lazy.d.ts.map +1 -1
- package/dist/providers/openai-compatible-lazy.js +24 -36
- package/dist/providers/openai-compatible-lazy.js.map +1 -1
- package/dist/providers/openai-compatible-middleware.d.ts +4 -1
- package/dist/providers/openai-compatible-middleware.d.ts.map +1 -1
- package/dist/providers/openai-compatible-middleware.js +15 -14
- package/dist/providers/openai-compatible-middleware.js.map +1 -1
- package/dist/providers/openai-compatible-response-normalizer.d.ts +10 -1
- package/dist/providers/openai-compatible-response-normalizer.d.ts.map +1 -1
- package/dist/providers/openai-compatible-response-normalizer.js +15 -4
- package/dist/providers/openai-compatible-response-normalizer.js.map +1 -1
- package/dist/providers/openai-compatible.provider.d.ts +7 -10
- package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible.provider.js +80 -78
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/providers/openai-request-prefix-binding.d.ts +28 -0
- package/dist/providers/openai-request-prefix-binding.d.ts.map +1 -0
- package/dist/providers/openai-request-prefix-binding.js +78 -0
- package/dist/providers/openai-request-prefix-binding.js.map +1 -0
- package/dist/providers/openai-responses-model.d.ts +43 -0
- package/dist/providers/openai-responses-model.d.ts.map +1 -0
- package/dist/providers/openai-responses-model.js +564 -0
- package/dist/providers/openai-responses-model.js.map +1 -0
- package/dist/providers/openai.provider.d.ts +11 -8
- package/dist/providers/openai.provider.d.ts.map +1 -1
- package/dist/providers/openai.provider.js +43 -91
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/opencode-routing.d.ts +1 -1
- package/dist/providers/opencode-routing.d.ts.map +1 -1
- package/dist/providers/opencode-routing.js +4 -2
- package/dist/providers/opencode-routing.js.map +1 -1
- package/dist/providers/opencode-session.d.ts.map +1 -1
- package/dist/providers/opencode-session.js +28 -3
- package/dist/providers/opencode-session.js.map +1 -1
- package/dist/providers/openrouter.provider.d.ts.map +1 -1
- package/dist/providers/openrouter.provider.js +33 -33
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/provider-request-capture.d.ts +35 -0
- package/dist/providers/provider-request-capture.d.ts.map +1 -0
- package/dist/providers/provider-request-capture.js +22 -0
- package/dist/providers/provider-request-capture.js.map +1 -0
- package/dist/providers/provider-service.d.ts +9 -7
- package/dist/providers/provider-service.d.ts.map +1 -1
- package/dist/providers/provider-service.js +29 -28
- package/dist/providers/provider-service.js.map +1 -1
- package/dist/providers/registry.d.ts +14 -9
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/retrying-model.d.ts +8 -6
- package/dist/providers/retrying-model.d.ts.map +1 -1
- package/dist/providers/retrying-model.js +7 -20
- package/dist/providers/retrying-model.js.map +1 -1
- package/dist/providers/web-search/exa.provider.js.map +1 -1
- package/dist/providers/web-search/registry.js.map +1 -1
- package/dist/providers/web-search/tavily.provider.js.map +1 -1
- package/dist/providers/websocket-receive-watchdog.d.ts.map +1 -1
- package/dist/providers/websocket-receive-watchdog.js +9 -1
- package/dist/providers/websocket-receive-watchdog.js.map +1 -1
- package/dist/scripts/eval-auto-approval/runner.js +2 -0
- package/dist/scripts/eval-auto-approval/runner.js.map +1 -1
- package/dist/services/agent-runtime/application-run-loop.d.ts +205 -0
- package/dist/services/agent-runtime/application-run-loop.d.ts.map +1 -0
- package/dist/services/agent-runtime/application-run-loop.js +1236 -0
- package/dist/services/agent-runtime/application-run-loop.js.map +1 -0
- package/dist/services/agent-runtime/compose-agent-runtime.d.ts +3 -0
- package/dist/services/agent-runtime/compose-agent-runtime.d.ts.map +1 -1
- package/dist/services/agent-runtime/compose-agent-runtime.js +4 -0
- package/dist/services/agent-runtime/compose-agent-runtime.js.map +1 -1
- package/dist/services/agent-runtime/generation-guard.d.ts +69 -0
- package/dist/services/agent-runtime/generation-guard.d.ts.map +1 -0
- package/dist/services/agent-runtime/generation-guard.js +270 -0
- package/dist/services/agent-runtime/generation-guard.js.map +1 -0
- package/dist/services/agent-runtime/model-resolver.d.ts.map +1 -1
- package/dist/services/agent-runtime/model-resolver.js +7 -6
- package/dist/services/agent-runtime/model-resolver.js.map +1 -1
- package/dist/services/agent-runtime/structured-output.d.ts.map +1 -1
- package/dist/services/agent-runtime/structured-output.js +1 -21
- package/dist/services/agent-runtime/structured-output.js.map +1 -1
- package/dist/services/agent-runtime/tool-invocation-context.d.ts +73 -0
- package/dist/services/agent-runtime/tool-invocation-context.d.ts.map +1 -0
- package/dist/services/agent-runtime/tool-invocation-context.js +66 -0
- package/dist/services/agent-runtime/tool-invocation-context.js.map +1 -0
- package/dist/services/agent-stream.d.ts +41 -2
- package/dist/services/agent-stream.d.ts.map +1 -1
- package/dist/services/agent-stream.js +46 -1
- package/dist/services/agent-stream.js.map +1 -1
- package/dist/services/approval/approval-decision-executor.d.ts +42 -0
- package/dist/services/approval/approval-decision-executor.d.ts.map +1 -0
- package/dist/services/approval/approval-decision-executor.js +207 -0
- package/dist/services/approval/approval-decision-executor.js.map +1 -0
- package/dist/services/approval/approval-flow-coordinator.d.ts +25 -8
- package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.js +34 -167
- package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval/approval-replay.d.ts +52 -0
- package/dist/services/approval/approval-replay.d.ts.map +1 -0
- package/dist/services/approval/approval-replay.js +68 -0
- package/dist/services/approval/approval-replay.js.map +1 -0
- package/dist/services/approval/approval-state.d.ts +3 -6
- package/dist/services/approval/approval-state.d.ts.map +1 -1
- package/dist/services/approval/approval-state.js +0 -10
- package/dist/services/approval/approval-state.js.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.d.ts +25 -0
- package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -0
- package/dist/services/approval/background-subagent-approval-controller.js +65 -0
- package/dist/services/approval/background-subagent-approval-controller.js.map +1 -0
- package/dist/services/approval/background-subagent-approval-queue.d.ts +137 -0
- package/dist/services/approval/background-subagent-approval-queue.d.ts.map +1 -0
- package/dist/services/approval/background-subagent-approval-queue.js +200 -0
- package/dist/services/approval/background-subagent-approval-queue.js.map +1 -0
- package/dist/services/approval/non-interactive-approval-policy.d.ts +33 -0
- package/dist/services/approval/non-interactive-approval-policy.d.ts.map +1 -0
- package/dist/services/approval/non-interactive-approval-policy.js +85 -0
- package/dist/services/approval/non-interactive-approval-policy.js.map +1 -0
- package/dist/services/approval/session-read-access.d.ts +10 -0
- package/dist/services/approval/session-read-access.d.ts.map +1 -1
- package/dist/services/approval/session-read-access.js +12 -0
- package/dist/services/approval/session-read-access.js.map +1 -1
- package/dist/services/approval/session-read-grant-target.d.ts +7 -0
- package/dist/services/approval/session-read-grant-target.d.ts.map +1 -0
- package/dist/services/approval/session-read-grant-target.js +36 -0
- package/dist/services/approval/session-read-grant-target.js.map +1 -0
- package/dist/services/approval/shell-auto-approval-evaluator.d.ts +11 -3
- package/dist/services/approval/shell-auto-approval-evaluator.d.ts.map +1 -1
- package/dist/services/approval/shell-auto-approval-evaluator.js +140 -46
- package/dist/services/approval/shell-auto-approval-evaluator.js.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.d.ts +13 -0
- package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.js +74 -6
- package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
- package/dist/services/approval/shell-sandbox-approval.d.ts +22 -1
- package/dist/services/approval/shell-sandbox-approval.d.ts.map +1 -1
- package/dist/services/approval/shell-sandbox-approval.js +31 -4
- package/dist/services/approval/shell-sandbox-approval.js.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts +9 -0
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.js +20 -4
- package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
- package/dist/services/approval/tool-owner.d.ts +5 -2
- package/dist/services/approval/tool-owner.d.ts.map +1 -1
- package/dist/services/approval/tool-owner.js +0 -56
- package/dist/services/approval/tool-owner.js.map +1 -1
- package/dist/services/approval/tool-ownership-registry.d.ts +25 -0
- package/dist/services/approval/tool-ownership-registry.d.ts.map +1 -0
- package/dist/services/approval/tool-ownership-registry.js +63 -0
- package/dist/services/approval/tool-ownership-registry.js.map +1 -0
- package/dist/services/command-message-streaming.d.ts +8 -4
- package/dist/services/command-message-streaming.d.ts.map +1 -1
- package/dist/services/command-message-streaming.js +13 -52
- package/dist/services/command-message-streaming.js.map +1 -1
- package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter-factory.js +1 -0
- package/dist/services/conversation/conversation-adapter-factory.js.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts +112 -13
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +270 -47
- package/dist/services/conversation/conversation-adapter.js.map +1 -1
- package/dist/services/conversation/conversation-admission-workflow.d.ts +69 -0
- package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -0
- package/dist/services/conversation/conversation-admission-workflow.js +110 -0
- package/dist/services/conversation/conversation-admission-workflow.js.map +1 -0
- package/dist/services/conversation/conversation-decoder.d.ts +14 -0
- package/dist/services/conversation/conversation-decoder.d.ts.map +1 -0
- package/dist/services/conversation/conversation-decoder.js +149 -0
- package/dist/services/conversation/conversation-decoder.js.map +1 -0
- package/dist/services/conversation/conversation-events.d.ts +50 -26
- package/dist/services/conversation/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation/conversation-history-repair.d.ts.map +1 -1
- package/dist/services/conversation/conversation-history-repair.js +34 -37
- package/dist/services/conversation/conversation-history-repair.js.map +1 -1
- package/dist/services/conversation/conversation-message-projection.d.ts +27 -0
- package/dist/services/conversation/conversation-message-projection.d.ts.map +1 -0
- package/dist/services/conversation/conversation-message-projection.js +59 -0
- package/dist/services/conversation/conversation-message-projection.js.map +1 -0
- package/dist/services/conversation/conversation-orchestrator.d.ts +23 -14
- package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +358 -159
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.types.d.ts +14 -11
- package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence-types.d.ts +15 -38
- package/dist/services/conversation/conversation-persistence-types.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.d.ts +3 -10
- package/dist/services/conversation/conversation-persistence.d.ts.map +1 -1
- package/dist/services/conversation/conversation-persistence.js +66 -15
- package/dist/services/conversation/conversation-persistence.js.map +1 -1
- package/dist/services/conversation/conversation-replay.d.ts +7 -5
- package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
- package/dist/services/conversation/conversation-replay.js +127 -66
- package/dist/services/conversation/conversation-replay.js.map +1 -1
- package/dist/services/conversation/conversation-result-builder.d.ts +16 -2
- package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-result-builder.js +51 -15
- package/dist/services/conversation/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation/conversation-runtime-factory.d.ts +18 -0
- package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +65 -12
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +129 -16
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/conversation-state-projector.d.ts +3 -3
- package/dist/services/conversation/conversation-state-projector.d.ts.map +1 -1
- package/dist/services/conversation/conversation-state-projector.js +18 -0
- package/dist/services/conversation/conversation-state-projector.js.map +1 -1
- package/dist/services/conversation/conversation-store.d.ts +69 -12
- package/dist/services/conversation/conversation-store.d.ts.map +1 -1
- package/dist/services/conversation/conversation-store.js +216 -119
- package/dist/services/conversation/conversation-store.js.map +1 -1
- package/dist/services/conversation/conversation-turn-items.d.ts +8 -2
- package/dist/services/conversation/conversation-turn-items.d.ts.map +1 -1
- package/dist/services/conversation/conversation-turn-items.js +96 -275
- package/dist/services/conversation/conversation-turn-items.js.map +1 -1
- package/dist/services/conversation/journal-to-ledger.d.ts.map +1 -1
- package/dist/services/conversation/journal-to-ledger.js +4 -24
- package/dist/services/conversation/journal-to-ledger.js.map +1 -1
- package/dist/services/conversation/run-item-normalizer.d.ts +5 -0
- package/dist/services/conversation/run-item-normalizer.d.ts.map +1 -0
- package/dist/services/conversation/run-item-normalizer.js +245 -0
- package/dist/services/conversation/run-item-normalizer.js.map +1 -0
- package/dist/services/conversation/user-turn-item.d.ts +14 -0
- package/dist/services/conversation/user-turn-item.d.ts.map +1 -0
- package/dist/services/conversation/user-turn-item.js +27 -0
- package/dist/services/conversation/user-turn-item.js.map +1 -0
- package/dist/services/conversation-agent-client.d.ts +77 -6
- package/dist/services/conversation-agent-client.d.ts.map +1 -1
- package/dist/services/cost/model-cost.d.ts +147 -0
- package/dist/services/cost/model-cost.d.ts.map +1 -0
- package/dist/services/cost/model-cost.js +217 -0
- package/dist/services/cost/model-cost.js.map +1 -0
- package/dist/services/cost/pricing-overlay.d.ts +26 -0
- package/dist/services/cost/pricing-overlay.d.ts.map +1 -0
- package/dist/services/cost/pricing-overlay.js +39 -0
- package/dist/services/cost/pricing-overlay.js.map +1 -0
- package/dist/services/cost/pricing.d.ts +13 -0
- package/dist/services/cost/pricing.d.ts.map +1 -0
- package/dist/services/cost/pricing.js +76 -0
- package/dist/services/cost/pricing.js.map +1 -0
- package/dist/services/handoff/handoff-flow-reducer.d.ts +27 -0
- package/dist/services/handoff/handoff-flow-reducer.d.ts.map +1 -0
- package/dist/services/handoff/handoff-flow-reducer.js +26 -0
- package/dist/services/handoff/handoff-flow-reducer.js.map +1 -0
- package/dist/services/handoff/handoff-session.d.ts +35 -0
- package/dist/services/handoff/handoff-session.d.ts.map +1 -0
- package/dist/services/handoff/handoff-session.js +136 -0
- package/dist/services/handoff/handoff-session.js.map +1 -0
- package/dist/services/hooks/hook-contracts.d.ts +124 -0
- package/dist/services/hooks/hook-contracts.d.ts.map +1 -0
- package/dist/services/hooks/hook-contracts.js +92 -0
- package/dist/services/hooks/hook-contracts.js.map +1 -0
- package/dist/services/hooks/hook-discovery.d.ts +45 -0
- package/dist/services/hooks/hook-discovery.d.ts.map +1 -0
- package/dist/services/hooks/hook-discovery.js +255 -0
- package/dist/services/hooks/hook-discovery.js.map +1 -0
- package/dist/services/hooks/hook-editor-shim.d.ts +6 -0
- package/dist/services/hooks/hook-editor-shim.d.ts.map +1 -0
- package/dist/services/hooks/hook-editor-shim.js +190 -0
- package/dist/services/hooks/hook-editor-shim.js.map +1 -0
- package/dist/services/hooks/hook-event-factory.d.ts +19 -0
- package/dist/services/hooks/hook-event-factory.d.ts.map +1 -0
- package/dist/services/hooks/hook-event-factory.js +45 -0
- package/dist/services/hooks/hook-event-factory.js.map +1 -0
- package/dist/services/hooks/hook-module-loader.d.ts +38 -0
- package/dist/services/hooks/hook-module-loader.d.ts.map +1 -0
- package/dist/services/hooks/hook-module-loader.js +69 -0
- package/dist/services/hooks/hook-module-loader.js.map +1 -0
- package/dist/services/hooks/hook-registry.d.ts +47 -0
- package/dist/services/hooks/hook-registry.d.ts.map +1 -0
- package/dist/services/hooks/hook-registry.js +185 -0
- package/dist/services/hooks/hook-registry.js.map +1 -0
- package/dist/services/hooks/hook-service.d.ts +44 -0
- package/dist/services/hooks/hook-service.d.ts.map +1 -0
- package/dist/services/hooks/hook-service.js +138 -0
- package/dist/services/hooks/hook-service.js.map +1 -0
- package/dist/services/hooks/hook-tool-lifecycle.d.ts +6 -0
- package/dist/services/hooks/hook-tool-lifecycle.d.ts.map +1 -0
- package/dist/services/hooks/hook-tool-lifecycle.js +33 -0
- package/dist/services/hooks/hook-tool-lifecycle.js.map +1 -0
- package/dist/services/hooks/index.d.ts +2 -0
- package/dist/services/hooks/index.d.ts.map +1 -0
- package/dist/services/hooks/index.js +2 -0
- package/dist/services/hooks/index.js.map +1 -0
- package/dist/services/input-surge-guard.d.ts.map +1 -1
- package/dist/services/input-surge-guard.js +13 -34
- package/dist/services/input-surge-guard.js.map +1 -1
- package/dist/services/logging/assistant-turn-journal.d.ts +1 -1
- package/dist/services/logging/assistant-turn-journal.d.ts.map +1 -1
- package/dist/services/logging/assistant-turn-journal.js +21 -36
- package/dist/services/logging/assistant-turn-journal.js.map +1 -1
- package/dist/services/logging/conversation-log-events.d.ts +62 -7
- package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-events.js +9 -0
- package/dist/services/logging/conversation-log-events.js.map +1 -1
- package/dist/services/logging/conversation-log-writer.d.ts +9 -4
- package/dist/services/logging/conversation-log-writer.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-writer.js +183 -56
- 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 +24 -1
- package/dist/services/logging/conversation-logger.js.map +1 -1
- package/dist/services/logging/logging-service.d.ts.map +1 -1
- package/dist/services/logging/logging-service.js +6 -2
- package/dist/services/logging/logging-service.js.map +1 -1
- package/dist/services/logging/provider-traffic.d.ts +2 -1
- package/dist/services/logging/provider-traffic.d.ts.map +1 -1
- package/dist/services/logging/provider-traffic.js +81 -5
- 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 +13 -8
- package/dist/services/memory/memory-capabilities.js.map +1 -1
- package/dist/services/model-service.d.ts +3 -0
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +3 -1
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/models/model-catalog-session.d.ts +24 -0
- package/dist/services/models/model-catalog-session.d.ts.map +1 -0
- package/dist/services/models/model-catalog-session.js +70 -0
- package/dist/services/models/model-catalog-session.js.map +1 -0
- package/dist/services/openai-candidate-observer.d.ts +18 -0
- package/dist/services/openai-candidate-observer.d.ts.map +1 -0
- package/dist/services/openai-candidate-observer.js +56 -0
- package/dist/services/openai-candidate-observer.js.map +1 -0
- package/dist/services/openai-root-checkpoint-lifecycle-observer.d.ts +20 -0
- package/dist/services/openai-root-checkpoint-lifecycle-observer.d.ts.map +1 -0
- package/dist/services/openai-root-checkpoint-lifecycle-observer.js +21 -0
- package/dist/services/openai-root-checkpoint-lifecycle-observer.js.map +1 -0
- package/dist/services/openai-root-provider-identity.d.ts +11 -0
- package/dist/services/openai-root-provider-identity.d.ts.map +1 -0
- package/dist/services/openai-root-provider-identity.js +16 -0
- package/dist/services/openai-root-provider-identity.js.map +1 -0
- package/dist/services/openai-root-selector-parity-observer.d.ts +53 -0
- package/dist/services/openai-root-selector-parity-observer.d.ts.map +1 -0
- package/dist/services/openai-root-selector-parity-observer.js +62 -0
- package/dist/services/openai-root-selector-parity-observer.js.map +1 -0
- package/dist/services/plan-mode-interceptor.js +2 -2
- package/dist/services/plan-mode-interceptor.js.map +1 -1
- package/dist/services/provider-continuity.d.ts +79 -0
- package/dist/services/provider-continuity.d.ts.map +1 -1
- package/dist/services/provider-continuity.js +170 -0
- package/dist/services/provider-continuity.js.map +1 -1
- package/dist/services/providers/provider-management-session.d.ts +12 -0
- package/dist/services/providers/provider-management-session.d.ts.map +1 -0
- package/dist/services/providers/provider-management-session.js +21 -0
- package/dist/services/providers/provider-management-session.js.map +1 -0
- package/dist/services/queue/queue-controller.d.ts +9 -14
- package/dist/services/queue/queue-controller.d.ts.map +1 -1
- package/dist/services/queue/queue-controller.js +75 -60
- package/dist/services/queue/queue-controller.js.map +1 -1
- package/dist/services/retry/conversation-retry-policy.js +3 -3
- package/dist/services/retry/conversation-retry-policy.js.map +1 -1
- package/dist/services/retry/recovery-executor.d.ts.map +1 -1
- package/dist/services/retry/recovery-executor.js +7 -8
- 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 -1
- 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 +2 -1
- package/dist/services/retry/retry-classifier.js.map +1 -1
- package/dist/services/retry/retry-contracts.d.ts +3 -5
- package/dist/services/retry/retry-contracts.d.ts.map +1 -1
- package/dist/services/retry/retry-error-classification.d.ts +1 -0
- package/dist/services/retry/retry-error-classification.d.ts.map +1 -1
- package/dist/services/retry/retry-error-classification.js +28 -0
- package/dist/services/retry/retry-error-classification.js.map +1 -1
- package/dist/services/retry/retry-event-presenter.d.ts.map +1 -1
- package/dist/services/retry/retry-event-presenter.js +4 -1
- package/dist/services/retry/retry-event-presenter.js.map +1 -1
- package/dist/services/retry/upstream-retry-policy.js +3 -3
- package/dist/services/rtk-service.d.ts.map +1 -1
- package/dist/services/rtk-service.js +3 -15
- package/dist/services/rtk-service.js.map +1 -1
- package/dist/services/runtime-setting-router.d.ts +19 -0
- package/dist/services/runtime-setting-router.d.ts.map +1 -1
- package/dist/services/runtime-setting-router.js +33 -0
- package/dist/services/runtime-setting-router.js.map +1 -1
- package/dist/services/service-interfaces.d.ts +19 -2
- package/dist/services/service-interfaces.d.ts.map +1 -1
- package/dist/services/session/background-task-control.d.ts +123 -0
- package/dist/services/session/background-task-control.d.ts.map +1 -0
- package/dist/services/session/background-task-control.js +183 -0
- package/dist/services/session/background-task-control.js.map +1 -0
- package/dist/services/session/continuation-call-id-resolver.d.ts +16 -9
- package/dist/services/session/continuation-call-id-resolver.d.ts.map +1 -1
- package/dist/services/session/continuation-call-id-resolver.js +34 -48
- package/dist/services/session/continuation-call-id-resolver.js.map +1 -1
- package/dist/services/session/continuation-plan-applier.d.ts.map +1 -1
- package/dist/services/session/continuation-plan-applier.js +1 -3
- package/dist/services/session/continuation-plan-applier.js.map +1 -1
- package/dist/services/session/continuation-recovery-handler.d.ts.map +1 -1
- package/dist/services/session/continuation-recovery-handler.js +0 -2
- package/dist/services/session/continuation-recovery-handler.js.map +1 -1
- package/dist/services/session/continuation-state.d.ts +9 -5
- package/dist/services/session/continuation-state.d.ts.map +1 -1
- package/dist/services/session/continuation-state.js +1 -1
- package/dist/services/session/continuation-state.js.map +1 -1
- package/dist/services/session/live-run.d.ts +29 -0
- package/dist/services/session/live-run.d.ts.map +1 -0
- package/dist/services/session/live-run.js +111 -0
- package/dist/services/session/live-run.js.map +1 -0
- package/dist/services/session/nested-tool-compatibility-state.d.ts +20 -0
- package/dist/services/session/nested-tool-compatibility-state.d.ts.map +1 -0
- package/dist/services/session/nested-tool-compatibility-state.js +29 -0
- package/dist/services/session/nested-tool-compatibility-state.js.map +1 -0
- package/dist/services/session/pending-interaction-state.d.ts +60 -0
- package/dist/services/session/pending-interaction-state.d.ts.map +1 -0
- package/dist/services/session/pending-interaction-state.js +132 -0
- package/dist/services/session/pending-interaction-state.js.map +1 -0
- package/dist/services/session/post-execute-pause-capability.d.ts +17 -0
- package/dist/services/session/post-execute-pause-capability.d.ts.map +1 -0
- package/dist/services/session/post-execute-pause-capability.js +27 -0
- package/dist/services/session/post-execute-pause-capability.js.map +1 -0
- package/dist/services/session/post-execute-pause-policy.d.ts +20 -0
- package/dist/services/session/post-execute-pause-policy.d.ts.map +1 -0
- package/dist/services/session/post-execute-pause-policy.js +34 -0
- package/dist/services/session/post-execute-pause-policy.js.map +1 -0
- package/dist/services/session/post-execute-pending-registry.d.ts +63 -0
- package/dist/services/session/post-execute-pending-registry.d.ts.map +1 -0
- package/dist/services/session/post-execute-pending-registry.js +123 -0
- package/dist/services/session/post-execute-pending-registry.js.map +1 -0
- package/dist/services/session/session-access-state.d.ts +24 -0
- package/dist/services/session/session-access-state.d.ts.map +1 -0
- package/dist/services/session/session-access-state.js +91 -0
- package/dist/services/session/session-access-state.js.map +1 -0
- package/dist/services/session/session-client-factory.d.ts +61 -0
- package/dist/services/session/session-client-factory.d.ts.map +1 -0
- package/dist/services/session/session-client-factory.js +103 -0
- package/dist/services/session/session-client-factory.js.map +1 -0
- package/dist/services/session/session-composition.d.ts +58 -0
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +178 -13
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-input-planner.d.ts +6 -2
- package/dist/services/session/session-input-planner.d.ts.map +1 -1
- package/dist/services/session/session-input-planner.js +4 -0
- package/dist/services/session/session-input-planner.js.map +1 -1
- package/dist/services/session/session-lifecycle.d.ts +5 -0
- package/dist/services/session/session-lifecycle.d.ts.map +1 -1
- package/dist/services/session/session-lifecycle.js +16 -6
- package/dist/services/session/session-lifecycle.js.map +1 -1
- package/dist/services/session/session-manager.d.ts +11 -1
- package/dist/services/session/session-manager.d.ts.map +1 -1
- package/dist/services/session/session-manager.js +16 -3
- package/dist/services/session/session-manager.js.map +1 -1
- package/dist/services/session/session-stream-processor.d.ts +5 -0
- package/dist/services/session/session-stream-processor.d.ts.map +1 -1
- package/dist/services/session/session-stream-processor.js +164 -35
- package/dist/services/session/session-stream-processor.js.map +1 -1
- package/dist/services/session/session-tool-tracker.d.ts +10 -21
- package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
- package/dist/services/session/session-tool-tracker.js +12 -52
- package/dist/services/session/session-tool-tracker.js.map +1 -1
- package/dist/services/session/terminal-result-collector.d.ts +8 -0
- package/dist/services/session/terminal-result-collector.d.ts.map +1 -1
- package/dist/services/session/terminal-result-collector.js +18 -4
- package/dist/services/session/terminal-result-collector.js.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.js +8 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -1
- package/dist/services/session/turn-attempt-factory.d.ts +2 -2
- package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
- package/dist/services/session/turn-attempt.d.ts +4 -2
- 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 +32 -2
- package/dist/services/session/turn-coordinator.d.ts.map +1 -1
- package/dist/services/session/turn-coordinator.js +180 -9
- package/dist/services/session/turn-coordinator.js.map +1 -1
- package/dist/services/session/turn-status-machine.d.ts +21 -6
- package/dist/services/session/turn-status-machine.d.ts.map +1 -1
- package/dist/services/session/turn-status-machine.js +50 -13
- package/dist/services/session/turn-status-machine.js.map +1 -1
- package/dist/services/session/turn-workflow.d.ts +35 -0
- package/dist/services/session/turn-workflow.d.ts.map +1 -1
- package/dist/services/session/turn-workflow.js +373 -27
- package/dist/services/session/turn-workflow.js.map +1 -1
- package/dist/services/settings/ancillary-settings-migration.js +3 -3
- package/dist/services/settings/ancillary-settings-migration.js.map +1 -1
- package/dist/services/settings/custom-provider-normalization.d.ts +10 -0
- package/dist/services/settings/custom-provider-normalization.d.ts.map +1 -1
- package/dist/services/settings/custom-provider-normalization.js +35 -2
- package/dist/services/settings/custom-provider-normalization.js.map +1 -1
- package/dist/services/settings/settings-env.d.ts +3 -0
- package/dist/services/settings/settings-env.d.ts.map +1 -1
- package/dist/services/settings/settings-env.js +3 -3
- package/dist/services/settings/settings-env.js.map +1 -1
- package/dist/services/settings/settings-merger.d.ts +6 -5
- package/dist/services/settings/settings-merger.d.ts.map +1 -1
- package/dist/services/settings/settings-merger.js +9 -4
- package/dist/services/settings/settings-merger.js.map +1 -1
- package/dist/services/settings/settings-persistence.d.ts +17 -6
- package/dist/services/settings/settings-persistence.d.ts.map +1 -1
- package/dist/services/settings/settings-persistence.js +155 -28
- package/dist/services/settings/settings-persistence.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +100 -4
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +78 -8
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-service.d.ts +34 -5
- package/dist/services/settings/settings-service.d.ts.map +1 -1
- package/dist/services/settings/settings-service.js +200 -8
- 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 +6 -0
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/shell/background-shell-registry.d.ts +110 -0
- package/dist/services/shell/background-shell-registry.d.ts.map +1 -0
- package/dist/services/shell/background-shell-registry.js +326 -0
- package/dist/services/shell/background-shell-registry.js.map +1 -0
- package/dist/services/shell/shell-interaction-session.d.ts +43 -0
- package/dist/services/shell/shell-interaction-session.d.ts.map +1 -0
- package/dist/services/shell/shell-interaction-session.js +113 -0
- package/dist/services/shell/shell-interaction-session.js.map +1 -0
- package/dist/services/stream-event-processor.d.ts +11 -12
- package/dist/services/stream-event-processor.d.ts.map +1 -1
- package/dist/services/stream-event-processor.js +115 -352
- package/dist/services/stream-event-processor.js.map +1 -1
- package/dist/services/stream-snapshot.d.ts +0 -1
- package/dist/services/stream-snapshot.d.ts.map +1 -1
- package/dist/services/stream-snapshot.js +0 -1
- package/dist/services/stream-snapshot.js.map +1 -1
- package/dist/services/subagents/codename-run-id.d.ts +43 -0
- package/dist/services/subagents/codename-run-id.d.ts.map +1 -0
- package/dist/services/subagents/codename-run-id.js +683 -0
- package/dist/services/subagents/codename-run-id.js.map +1 -0
- package/dist/services/subagents/execution-runner.d.ts +2 -0
- package/dist/services/subagents/execution-runner.d.ts.map +1 -1
- package/dist/services/subagents/execution-runner.js +13 -3
- package/dist/services/subagents/execution-runner.js.map +1 -1
- package/dist/services/subagents/foreground-subagent-lease.d.ts +77 -0
- package/dist/services/subagents/foreground-subagent-lease.d.ts.map +1 -0
- package/dist/services/subagents/foreground-subagent-lease.js +156 -0
- package/dist/services/subagents/foreground-subagent-lease.js.map +1 -0
- package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
- package/dist/services/subagents/mentor-runner.js +43 -31
- package/dist/services/subagents/mentor-runner.js.map +1 -1
- package/dist/services/subagents/nested-runner.d.ts +47 -23
- package/dist/services/subagents/nested-runner.d.ts.map +1 -1
- package/dist/services/subagents/nested-runner.js +263 -64
- package/dist/services/subagents/nested-runner.js.map +1 -1
- package/dist/services/subagents/role-loader.d.ts +3 -3
- package/dist/services/subagents/role-loader.d.ts.map +1 -1
- package/dist/services/subagents/role-loader.js +6 -7
- package/dist/services/subagents/role-loader.js.map +1 -1
- package/dist/services/subagents/runtime.d.ts +10 -0
- package/dist/services/subagents/runtime.d.ts.map +1 -1
- package/dist/services/subagents/runtime.js +15 -1
- package/dist/services/subagents/runtime.js.map +1 -1
- package/dist/services/subagents/subagent-async-registry.d.ts +21 -2
- package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
- package/dist/services/subagents/subagent-async-registry.js +156 -10
- package/dist/services/subagents/subagent-async-registry.js.map +1 -1
- package/dist/services/subagents/subagent-client-types.d.ts +2 -0
- package/dist/services/subagents/subagent-client-types.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.d.ts +26 -7
- package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.js +31 -1
- package/dist/services/subagents/subagent-manager.js.map +1 -1
- package/dist/services/subagents/subagent-notification-store.d.ts +72 -6
- package/dist/services/subagents/subagent-notification-store.d.ts.map +1 -1
- package/dist/services/subagents/subagent-notification-store.js +118 -10
- package/dist/services/subagents/subagent-notification-store.js.map +1 -1
- package/dist/services/subagents/subagent-session.d.ts +12 -7
- package/dist/services/subagents/subagent-session.d.ts.map +1 -1
- package/dist/services/subagents/subagent-session.js +13 -14
- package/dist/services/subagents/subagent-session.js.map +1 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts +4 -5
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +66 -65
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -1
- package/dist/services/subagents/tool-policy.d.ts +19 -17
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +89 -53
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/services/subagents/types.d.ts +22 -3
- package/dist/services/subagents/types.d.ts.map +1 -1
- package/dist/services/subagents/types.js +2 -2
- package/dist/services/subagents/types.js.map +1 -1
- package/dist/services/subagents/utils.d.ts +8 -1
- package/dist/services/subagents/utils.d.ts.map +1 -1
- package/dist/services/subagents/utils.js +43 -16
- package/dist/services/subagents/utils.js.map +1 -1
- package/dist/services/test-helpers/mock-stream.d.ts +3 -0
- package/dist/services/test-helpers/mock-stream.d.ts.map +1 -1
- package/dist/services/test-helpers/mock-stream.js +8 -0
- package/dist/services/test-helpers/mock-stream.js.map +1 -1
- package/dist/services/tool-execution-ledger.d.ts +2 -0
- package/dist/services/tool-execution-ledger.d.ts.map +1 -1
- package/dist/services/tool-execution-ledger.js +59 -81
- package/dist/services/tool-execution-ledger.js.map +1 -1
- package/dist/test-helpers/conversation-session-with-adapter.d.ts +1 -1
- package/dist/test-helpers/conversation-session-with-adapter.d.ts.map +1 -1
- package/dist/test-helpers/conversation-session-with-adapter.js +5 -1
- package/dist/test-helpers/conversation-session-with-adapter.js.map +1 -1
- package/dist/test-helpers/ink-testing.d.ts.map +1 -1
- package/dist/test-helpers/ink-testing.js +2 -1
- package/dist/test-helpers/ink-testing.js.map +1 -1
- package/dist/tools/agent/activate-skill.d.ts +6 -1
- package/dist/tools/agent/activate-skill.d.ts.map +1 -1
- package/dist/tools/agent/activate-skill.js.map +1 -1
- package/dist/tools/agent/ask-mentor.d.ts +1 -1
- package/dist/tools/agent/ask-mentor.d.ts.map +1 -1
- package/dist/tools/agent/ask-mentor.js.map +1 -1
- package/dist/tools/agent/ask-orchestrator.d.ts +1 -1
- package/dist/tools/agent/ask-orchestrator.d.ts.map +1 -1
- package/dist/tools/agent/ask-user-constants.d.ts +6 -0
- package/dist/tools/agent/ask-user-constants.d.ts.map +1 -1
- package/dist/tools/agent/ask-user-constants.js +6 -0
- package/dist/tools/agent/ask-user-constants.js.map +1 -1
- package/dist/tools/agent/run-subagent-async.d.ts +6 -6
- package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent-async.js +16 -52
- package/dist/tools/agent/run-subagent-async.js.map +1 -1
- package/dist/tools/agent/run-subagent.d.ts +28 -14
- package/dist/tools/agent/run-subagent.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent.js +173 -68
- package/dist/tools/agent/run-subagent.js.map +1 -1
- package/dist/tools/file/apply-patch.d.ts +3 -1
- package/dist/tools/file/apply-patch.d.ts.map +1 -1
- package/dist/tools/file/apply-patch.js +34 -10
- package/dist/tools/file/apply-patch.js.map +1 -1
- package/dist/tools/file/code-context.d.ts +2 -2
- package/dist/tools/file/code-context.d.ts.map +1 -1
- package/dist/tools/file/code-context.js +1 -1
- package/dist/tools/file/code-context.js.map +1 -1
- package/dist/tools/file/create-file.d.ts +4 -2
- package/dist/tools/file/create-file.d.ts.map +1 -1
- package/dist/tools/file/create-file.js +10 -7
- package/dist/tools/file/create-file.js.map +1 -1
- package/dist/tools/file/edit-healing.d.ts.map +1 -1
- package/dist/tools/file/edit-healing.js +54 -35
- package/dist/tools/file/edit-healing.js.map +1 -1
- package/dist/tools/file/glob-target.d.ts +12 -0
- package/dist/tools/file/glob-target.d.ts.map +1 -0
- package/dist/tools/file/glob-target.js +22 -0
- package/dist/tools/file/glob-target.js.map +1 -0
- package/dist/tools/file/glob.d.ts +9 -2
- package/dist/tools/file/glob.d.ts.map +1 -1
- package/dist/tools/file/glob.js +12 -16
- package/dist/tools/file/glob.js.map +1 -1
- package/dist/tools/file/grep.d.ts +8 -1
- package/dist/tools/file/grep.d.ts.map +1 -1
- package/dist/tools/file/grep.js +60 -4
- package/dist/tools/file/grep.js.map +1 -1
- package/dist/tools/file/read-file.d.ts +7 -1
- package/dist/tools/file/read-file.d.ts.map +1 -1
- package/dist/tools/file/read-file.js +3 -4
- package/dist/tools/file/read-file.js.map +1 -1
- package/dist/tools/file/search-replace.d.ts +5 -3
- package/dist/tools/file/search-replace.d.ts.map +1 -1
- package/dist/tools/file/search-replace.js +29 -19
- package/dist/tools/file/search-replace.js.map +1 -1
- package/dist/tools/format-helpers.d.ts +4 -3
- package/dist/tools/format-helpers.d.ts.map +1 -1
- package/dist/tools/format-helpers.js +16 -17
- 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 +61 -49
- package/dist/tools/memory/memory-tools.js.map +1 -1
- package/dist/tools/run-agent-workflow.d.ts +1 -1
- package/dist/tools/run-agent-workflow.d.ts.map +1 -1
- package/dist/tools/system/shell.d.ts +39 -3
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +380 -149
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/types.d.ts +102 -5
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/types.js +4 -1
- package/dist/tools/types.js.map +1 -1
- package/dist/tools/utils.d.ts +18 -0
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +78 -0
- package/dist/tools/utils.js.map +1 -1
- package/dist/tools/web/web-fetch.d.ts +1 -1
- package/dist/tools/web/web-fetch.d.ts.map +1 -1
- package/dist/tools/web/web-fetch.js.map +1 -1
- package/dist/tools/web/web-search.d.ts +1 -1
- package/dist/tools/web/web-search.d.ts.map +1 -1
- package/dist/tools/web/web-search.js.map +1 -1
- package/dist/types/message.d.ts +2 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js.map +1 -1
- package/dist/utils/ai/model-settings.d.ts.map +1 -1
- package/dist/utils/ai/model-settings.js +0 -6
- package/dist/utils/ai/model-settings.js.map +1 -1
- package/dist/utils/ai/token-usage.d.ts +10 -5
- package/dist/utils/ai/token-usage.d.ts.map +1 -1
- package/dist/utils/ai/token-usage.js +48 -35
- package/dist/utils/ai/token-usage.js.map +1 -1
- package/dist/utils/apply-diff.d.ts +3 -0
- package/dist/utils/apply-diff.d.ts.map +1 -0
- package/dist/utils/apply-diff.js +192 -0
- package/dist/utils/apply-diff.js.map +1 -0
- package/dist/utils/conversation/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.js +72 -16
- package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
- package/dist/utils/conversation/conversation-utils.d.ts +5 -0
- package/dist/utils/conversation/conversation-utils.d.ts.map +1 -1
- package/dist/utils/conversation/conversation-utils.js +1 -0
- package/dist/utils/conversation/conversation-utils.js.map +1 -1
- package/dist/utils/conversation/message-utils.d.ts +6 -0
- package/dist/utils/conversation/message-utils.d.ts.map +1 -1
- package/dist/utils/conversation/message-utils.js +17 -14
- package/dist/utils/conversation/message-utils.js.map +1 -1
- package/dist/utils/conversation/rewind-items.d.ts +32 -0
- package/dist/utils/conversation/rewind-items.d.ts.map +1 -0
- package/dist/utils/conversation/rewind-items.js +33 -0
- package/dist/utils/conversation/rewind-items.js.map +1 -0
- package/dist/utils/inject-warning-into-tool-output.d.ts +10 -0
- package/dist/utils/inject-warning-into-tool-output.d.ts.map +1 -1
- package/dist/utils/inject-warning-into-tool-output.js +17 -0
- package/dist/utils/inject-warning-into-tool-output.js.map +1 -1
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +41 -4
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/shell/command-logger.js.map +1 -1
- package/dist/utils/shell/command-safety/find-helpers.d.ts +3 -2
- package/dist/utils/shell/command-safety/find-helpers.d.ts.map +1 -1
- package/dist/utils/shell/command-safety/find-helpers.js +34 -17
- package/dist/utils/shell/command-safety/find-helpers.js.map +1 -1
- package/dist/utils/shell/command-safety/handlers/find-handler.d.ts.map +1 -1
- package/dist/utils/shell/command-safety/handlers/find-handler.js +0 -2
- package/dist/utils/shell/command-safety/handlers/find-handler.js.map +1 -1
- package/dist/utils/shell/command-safety/handlers/git-handler.d.ts.map +1 -1
- package/dist/utils/shell/command-safety/handlers/git-handler.js.map +1 -1
- package/dist/utils/shell/command-safety/handlers/sed-handler.d.ts.map +1 -1
- package/dist/utils/shell/command-safety/handlers/sed-handler.js +14 -9
- package/dist/utils/shell/command-safety/handlers/sed-handler.js.map +1 -1
- package/dist/utils/shell/command-safety/handlers/types.d.ts +5 -4
- package/dist/utils/shell/command-safety/handlers/types.d.ts.map +1 -1
- package/dist/utils/shell/command-safety/index.d.ts.map +1 -1
- package/dist/utils/shell/command-safety/index.js +212 -88
- package/dist/utils/shell/command-safety/index.js.map +1 -1
- package/dist/utils/shell/command-safety/utils.d.ts +2 -1
- package/dist/utils/shell/command-safety/utils.d.ts.map +1 -1
- package/dist/utils/shell/command-safety/utils.js +5 -5
- package/dist/utils/shell/command-safety/utils.js.map +1 -1
- package/dist/utils/shell/execute-shell.d.ts +24 -3
- package/dist/utils/shell/execute-shell.d.ts.map +1 -1
- package/dist/utils/shell/execute-shell.js +228 -28
- package/dist/utils/shell/execute-shell.js.map +1 -1
- package/dist/utils/shell/sandbox/denied-read-stores.d.ts +1 -8
- package/dist/utils/shell/sandbox/denied-read-stores.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/denied-read-stores.js +1 -8
- package/dist/utils/shell/sandbox/denied-read-stores.js.map +1 -1
- package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts +36 -6
- package/dist/utils/shell/sandbox/docker-host-control-grants.d.ts.map +1 -1
- package/dist/utils/shell/sandbox/docker-host-control-grants.js +47 -17
- package/dist/utils/shell/sandbox/docker-host-control-grants.js.map +1 -1
- package/dist/utils/shell/sandbox/sandbox-network-approval-coordinator.d.ts +21 -0
- package/dist/utils/shell/sandbox/sandbox-network-approval-coordinator.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-network-approval-coordinator.js +66 -0
- package/dist/utils/shell/sandbox/sandbox-network-approval-coordinator.js.map +1 -0
- package/dist/utils/shell/shell-session.js.map +1 -1
- package/dist/utils/slash-command-dispatch.d.ts +21 -0
- package/dist/utils/slash-command-dispatch.d.ts.map +1 -0
- package/dist/utils/slash-command-dispatch.js +34 -0
- package/dist/utils/slash-command-dispatch.js.map +1 -0
- package/dist/utils/streaming/extract-command-messages.d.ts.map +1 -1
- package/dist/utils/streaming/extract-command-messages.js +29 -51
- package/dist/utils/streaming/extract-command-messages.js.map +1 -1
- package/dist/utils/value-suggestions.d.ts.map +1 -1
- package/dist/utils/value-suggestions.js +0 -8
- package/dist/utils/value-suggestions.js.map +1 -1
- package/package.json +21 -19
- package/dist/commands/retry-command.d.ts +0 -20
- package/dist/commands/retry-command.d.ts.map +0 -1
- package/dist/commands/retry-command.js +0 -39
- package/dist/commands/retry-command.js.map +0 -1
- package/dist/commands/undo-command.d.ts +0 -15
- package/dist/commands/undo-command.d.ts.map +0 -1
- package/dist/commands/undo-command.js +0 -28
- package/dist/commands/undo-command.js.map +0 -1
- package/dist/components/input/PopupManager.d.ts +0 -88
- package/dist/components/input/PopupManager.d.ts.map +0 -1
- package/dist/components/input/PopupManager.js +0 -21
- package/dist/components/input/PopupManager.js.map +0 -1
- package/dist/components/input/popup-key-navigation.d.ts +0 -18
- package/dist/components/input/popup-key-navigation.d.ts.map +0 -1
- package/dist/components/input/popup-key-navigation.js +0 -16
- package/dist/components/input/popup-key-navigation.js.map +0 -1
- package/dist/components/input/popup-props.d.ts +0 -24
- package/dist/components/input/popup-props.d.ts.map +0 -1
- package/dist/components/input/popup-props.js +0 -72
- package/dist/components/input/popup-props.js.map +0 -1
- package/dist/components/menu/UndoSelectionMenu.d.ts +0 -12
- package/dist/components/menu/UndoSelectionMenu.d.ts.map +0 -1
- package/dist/components/menu/UndoSelectionMenu.js +0 -19
- package/dist/components/menu/UndoSelectionMenu.js.map +0 -1
- package/dist/hooks/use-mode-handlers.d.ts +0 -79
- package/dist/hooks/use-mode-handlers.d.ts.map +0 -1
- package/dist/hooks/use-mode-handlers.js +0 -183
- package/dist/hooks/use-mode-handlers.js.map +0 -1
- package/dist/hooks/use-pending-turn-guards.d.ts +0 -43
- package/dist/hooks/use-pending-turn-guards.d.ts.map +0 -1
- package/dist/hooks/use-pending-turn-guards.js +0 -120
- package/dist/hooks/use-pending-turn-guards.js.map +0 -1
- package/dist/hooks/use-trigger-detection.d.ts +0 -49
- package/dist/hooks/use-trigger-detection.d.ts.map +0 -1
- package/dist/hooks/use-trigger-detection.js +0 -104
- package/dist/hooks/use-trigger-detection.js.map +0 -1
- package/dist/hooks/use-undo-selection.d.ts +0 -23
- package/dist/hooks/use-undo-selection.d.ts.map +0 -1
- package/dist/hooks/use-undo-selection.js.map +0 -1
- package/dist/lib/agent-run-orchestrator.d.ts +0 -38
- package/dist/lib/agent-run-orchestrator.d.ts.map +0 -1
- package/dist/lib/agent-run-orchestrator.js +0 -266
- package/dist/lib/agent-run-orchestrator.js.map +0 -1
- package/dist/lib/retry-executor.d.ts +0 -16
- package/dist/lib/retry-executor.d.ts.map +0 -1
- package/dist/lib/retry-executor.js +0 -53
- package/dist/lib/retry-executor.js.map +0 -1
- package/dist/lib/runner-manager.d.ts +0 -22
- package/dist/lib/runner-manager.d.ts.map +0 -1
- package/dist/lib/runner-manager.js +0 -56
- package/dist/lib/runner-manager.js.map +0 -1
- package/dist/prompts/shell-sandbox.md +0 -18
- package/dist/prompts/simple.md +0 -53
- package/dist/prompts/simple_prev.md +0 -33
- package/dist/prompts/simple_v2.md +0 -84
- package/dist/prompts/simple_v3.md +0 -267
- package/dist/prompts/subagents/researcher.md +0 -46
- package/dist/providers/ai-sdk-agents-adapter.d.ts +0 -7
- package/dist/providers/ai-sdk-agents-adapter.d.ts.map +0 -1
- package/dist/providers/ai-sdk-agents-adapter.js +0 -80
- package/dist/providers/ai-sdk-agents-adapter.js.map +0 -1
- package/dist/providers/fallback-responses-model.d.ts +0 -46
- package/dist/providers/fallback-responses-model.d.ts.map +0 -1
- package/dist/providers/fallback-responses-model.js +0 -296
- package/dist/providers/fallback-responses-model.js.map +0 -1
- package/dist/services/stream-event-parsing.d.ts +0 -4
- package/dist/services/stream-event-parsing.d.ts.map +0 -1
- package/dist/services/stream-event-parsing.js +0 -79
- package/dist/services/stream-event-parsing.js.map +0 -1
|
@@ -8,17 +8,17 @@ import { logValidationError as logValidationErrorUtil } from '../../utils/shell/
|
|
|
8
8
|
import { executeShellCommand } from '../../utils/shell/execute-shell.js';
|
|
9
9
|
import { setTrimConfig, getTrimConfig, DEFAULT_TRIM_CONFIG, } from '../../utils/output/output-trim.js';
|
|
10
10
|
import { formatShellExecutionOutput } from '../../utils/shell/shell-output.js';
|
|
11
|
-
import { coerceToText, getOutputText, normalizeToolArguments, createBaseMessage, getCallIdFromItem, } from '../format-helpers.js';
|
|
11
|
+
import { coerceToText, getOutputText, normalizeToolArguments, createBaseMessage, getCallIdFromItem, safeJsonParse, } from '../format-helpers.js';
|
|
12
12
|
import { ensureRtkInstalled, isRtkSupportedCommand, wrapWithRtk } from '../../services/rtk-service.js';
|
|
13
13
|
import { shouldPreferPatchEditingModel } from '../../lib/tool-selection-policy.js';
|
|
14
|
+
import { HarnessInvariantError } from '../../lib/harness-invariant-error.js';
|
|
14
15
|
import { createSandboxEnvironment } from '../../utils/shell/sandbox/sandbox-env.js';
|
|
15
16
|
import { SANDBOX_ESCAPE_INSTRUCTION, createSandboxRuntimeConfig, } from '../../utils/shell/sandbox/sandbox-policy.js';
|
|
16
17
|
import { getDefaultShellSandboxRunner } from '../../utils/shell/sandbox/shell-sandbox-runner.js';
|
|
17
18
|
import { DETAILED_DENIED_READ_INSTRUCTION } from '../../utils/shell/sandbox/denied-read-detector.js';
|
|
18
|
-
import {
|
|
19
|
+
import { getProjectAllowReadStore } from '../../utils/shell/sandbox/denied-read-stores.js';
|
|
19
20
|
import { classifySandboxFailure } from '../../utils/shell/sandbox/sandbox-failure-classifier.js';
|
|
20
21
|
import { createDockerHostControl, DOCKER_HOST_CONTROL_RETRY_INSTRUCTION, } from '../../utils/shell/sandbox/docker-host-control.js';
|
|
21
|
-
import { configureDockerHostControlGrants, consumeDockerHostControlDenial, consumeDockerHostControlOnce, recordDockerHostControlDenial, requiresDockerHostControlApproval, hasDockerHostControlProject, hasDockerHostControlSession, } from '../../utils/shell/sandbox/docker-host-control-grants.js';
|
|
22
22
|
const shellSandboxModeSchema = z.enum(['default', 'unsandboxed']).optional().default('default');
|
|
23
23
|
const shellParametersSchema = z.object({
|
|
24
24
|
command: z.string().min(1).describe('Single shell command to execute.'),
|
|
@@ -33,9 +33,61 @@ const shellParametersSchema = z.object({
|
|
|
33
33
|
.optional()
|
|
34
34
|
.describe('Optional maximum output length in characters for each command. Outputs exceeding this length will be trimmed. Defaults to 40000 characters if not specified.'),
|
|
35
35
|
sandbox: shellSandboxModeSchema.describe('Run mode. default runs inside the sandbox when available. unsandboxed requires explicit user approval.'),
|
|
36
|
+
background: z
|
|
37
|
+
.boolean()
|
|
38
|
+
.optional()
|
|
39
|
+
.default(false)
|
|
40
|
+
.describe('Run locally in the background and return a job ID immediately. Defaults to false.'),
|
|
36
41
|
});
|
|
37
42
|
// Re-export trim utilities for backwards compatibility
|
|
38
43
|
export { setTrimConfig, getTrimConfig, DEFAULT_TRIM_CONFIG };
|
|
44
|
+
const getBackgroundShellJobParameters = z.object({
|
|
45
|
+
job_id: z.string().min(1).describe('The background shell job ID.'),
|
|
46
|
+
});
|
|
47
|
+
function backgroundShellJobResponse(job) {
|
|
48
|
+
return {
|
|
49
|
+
jobId: job.id,
|
|
50
|
+
command: job.command,
|
|
51
|
+
status: job.status,
|
|
52
|
+
...(job.result === undefined ? {} : { output: job.result.output }),
|
|
53
|
+
...(job.error === undefined ? {} : { error: job.error }),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Root composition registers these alongside `shell` when it supplies the
|
|
58
|
+
* session-owned registry. Keeping them here makes the model contract and its
|
|
59
|
+
* shell lifecycle use the same job representation.
|
|
60
|
+
*/
|
|
61
|
+
export function createBackgroundShellJobToolDefinitions(registry) {
|
|
62
|
+
return {
|
|
63
|
+
get: {
|
|
64
|
+
name: 'get_shell_job',
|
|
65
|
+
description: 'Get the non-blocking status and bounded output of a background shell job.',
|
|
66
|
+
parameters: getBackgroundShellJobParameters,
|
|
67
|
+
needsApproval: () => false,
|
|
68
|
+
execute: ({ job_id }) => {
|
|
69
|
+
const job = registry.get(job_id);
|
|
70
|
+
return JSON.stringify(job ? backgroundShellJobResponse(job) : { jobId: job_id, status: 'not_found' });
|
|
71
|
+
},
|
|
72
|
+
formatCommandMessage: () => [],
|
|
73
|
+
},
|
|
74
|
+
cancel: {
|
|
75
|
+
name: 'cancel_shell_job',
|
|
76
|
+
description: 'Request cancellation of a running background shell job without waiting for it to exit.',
|
|
77
|
+
parameters: getBackgroundShellJobParameters,
|
|
78
|
+
needsApproval: () => false,
|
|
79
|
+
execute: ({ job_id }) => {
|
|
80
|
+
const job = registry.get(job_id);
|
|
81
|
+
if (!job)
|
|
82
|
+
return JSON.stringify({ jobId: job_id, status: 'not_found' });
|
|
83
|
+
registry.cancel(job_id);
|
|
84
|
+
const current = registry.get(job_id);
|
|
85
|
+
return JSON.stringify(backgroundShellJobResponse(current ?? job));
|
|
86
|
+
},
|
|
87
|
+
formatCommandMessage: () => [],
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
}
|
|
39
91
|
/**
|
|
40
92
|
* Strip redundant 'cd <path> &&' prefix if it targets the current working directory
|
|
41
93
|
*/
|
|
@@ -98,11 +150,12 @@ export const formatShellCommandMessage = (item, index, toolCallArgumentsById) =>
|
|
|
98
150
|
if (typeof args === 'string') {
|
|
99
151
|
return args;
|
|
100
152
|
}
|
|
101
|
-
const
|
|
153
|
+
const argsRecord = args && typeof args === 'object' && !Array.isArray(args) ? args : {};
|
|
154
|
+
const directCommand = coerceCommandText(argsRecord.command);
|
|
102
155
|
if (directCommand) {
|
|
103
156
|
return directCommand;
|
|
104
157
|
}
|
|
105
|
-
const commandsValue =
|
|
158
|
+
const commandsValue = argsRecord.commands;
|
|
106
159
|
if (typeof commandsValue === 'string') {
|
|
107
160
|
return commandsValue;
|
|
108
161
|
}
|
|
@@ -122,6 +175,23 @@ export const formatShellCommandMessage = (item, index, toolCallArgumentsById) =>
|
|
|
122
175
|
return 'Unknown command';
|
|
123
176
|
})();
|
|
124
177
|
const outputText = getOutputText(item);
|
|
178
|
+
const backgroundRequested = args !== null && typeof args === 'object' && !Array.isArray(args) && args.background === true;
|
|
179
|
+
const launchAcknowledgement = backgroundRequested
|
|
180
|
+
? safeJsonParse(outputText)
|
|
181
|
+
: null;
|
|
182
|
+
if (launchAcknowledgement?.status === 'running' &&
|
|
183
|
+
typeof launchAcknowledgement.jobId === 'string' &&
|
|
184
|
+
launchAcknowledgement.jobId.length > 0) {
|
|
185
|
+
return [
|
|
186
|
+
createBaseMessage(item, index, 0, false, {
|
|
187
|
+
command,
|
|
188
|
+
output: `Background job ${launchAcknowledgement.jobId} is running.`,
|
|
189
|
+
success: true,
|
|
190
|
+
toolName: 'shell',
|
|
191
|
+
toolArgs: args,
|
|
192
|
+
}),
|
|
193
|
+
];
|
|
194
|
+
}
|
|
125
195
|
// Check if this is an error message (doesn't start with expected status formats)
|
|
126
196
|
const firstLine = outputText.split('\n')[0]?.trim() || '';
|
|
127
197
|
const isErrorMessage = firstLine.includes('error') ||
|
|
@@ -173,8 +243,9 @@ const getShellDescription = (searchViaShell) => 'Execute a single shell command.
|
|
|
173
243
|
const SHELL_DESCRIPTION_ORCHESTRATOR = 'Execute a single shell command. Directly inspect, test, or perform a small clear operation when that is the most efficient path. By default, local shell commands run inside the sandbox when available. Use sandbox: "unsandboxed" only for network or outside-host access; it requires explicit user approval and must be run by the main agent. Long output is truncated, the full output is saved to a file; ' +
|
|
174
244
|
'delegate complex, risky, or separable work when specialization, context compression, or safe parallelism provides meaningful leverage.';
|
|
175
245
|
export function createShellToolDefinition(deps) {
|
|
176
|
-
const { loggingService, settingsService, executionContext, rtkInstaller = ensureRtkInstalled, executeShellCommandImpl = executeShellCommand, shellSandboxRunner = getDefaultShellSandboxRunner(), dockerHostControlFactory = createDockerHostControl, orchestratorMode = false, searchViaShell: searchViaShellExplicit, } = deps;
|
|
177
|
-
|
|
246
|
+
const { loggingService, settingsService, executionContext, rtkInstaller = ensureRtkInstalled, executeShellCommandImpl = executeShellCommand, shellSandboxRunner = getDefaultShellSandboxRunner(), dockerHostControlFactory = createDockerHostControl, orchestratorMode = false, searchViaShell: searchViaShellExplicit, postExecuteDeniedRead = false, sessionAccess, nestedCompatibility, backgroundShellRegistry, } = deps;
|
|
247
|
+
const deniedReadByCallId = new Map();
|
|
248
|
+
const overrideByCallId = new Map();
|
|
178
249
|
// Create command logger function with dependencies
|
|
179
250
|
const logValidationError = (message) => logValidationErrorUtil(settingsService, message);
|
|
180
251
|
const searchViaShellSetting = settingsService.get('app.searchViaShell') ?? 'auto';
|
|
@@ -203,17 +274,22 @@ export function createShellToolDefinition(deps) {
|
|
|
203
274
|
const cwd = executionContext?.getCwd() || process.cwd();
|
|
204
275
|
const sessionId = getConversationSessionId(context);
|
|
205
276
|
const sandboxEnabled = isSandboxEnabled();
|
|
206
|
-
const dockerHostControlRequested = sandboxEnabled &&
|
|
277
|
+
const dockerHostControlRequested = sandboxEnabled &&
|
|
278
|
+
(sessionAccess?.requiresDockerApproval(params.command) ??
|
|
279
|
+
nestedCompatibility?.docker.requiresApproval(sessionId, params.command) ??
|
|
280
|
+
false);
|
|
207
281
|
if (dockerHostControlRequested &&
|
|
208
|
-
!
|
|
209
|
-
|
|
282
|
+
!(sessionAccess?.hasDockerProject(cwd) ?? nestedCompatibility?.docker.hasProject(cwd) ?? false) &&
|
|
283
|
+
!(sessionAccess?.hasDockerSessionGrant(cwd) ??
|
|
284
|
+
(sessionId ? nestedCompatibility?.docker.hasSession(sessionId, cwd) : false) ??
|
|
285
|
+
false)) {
|
|
210
286
|
return true;
|
|
211
287
|
}
|
|
212
288
|
const sshService = executionContext?.getSSHService();
|
|
213
289
|
if (!sshService && sandboxEnabled) {
|
|
214
290
|
// If a previous sandboxed run denied a read for this command, require
|
|
215
291
|
// approval so the user can allow/remember the path or escape unsandboxed.
|
|
216
|
-
if (
|
|
292
|
+
if (!postExecuteDeniedRead && nestedCompatibility?.deniedReads.peek(params.command)) {
|
|
217
293
|
return true;
|
|
218
294
|
}
|
|
219
295
|
const availability = await shellSandboxRunner.availability();
|
|
@@ -236,20 +312,34 @@ export function createShellToolDefinition(deps) {
|
|
|
236
312
|
logValidationError(`Validation failed: ${errorMessage}`);
|
|
237
313
|
loggingService.error('Shell tool validation error', {
|
|
238
314
|
error: errorMessage,
|
|
239
|
-
|
|
315
|
+
// params.command may itself be why we're in this catch (e.g. undefined
|
|
316
|
+
// after a malformed tool call), so don't re-dereference it unguarded.
|
|
317
|
+
commands: [typeof params.command === 'string' ? params.command.substring(0, 100) : String(params.command)],
|
|
240
318
|
});
|
|
241
319
|
return true; // fail-safe: require approval on validation errors
|
|
242
320
|
}
|
|
243
321
|
},
|
|
244
|
-
execute: async ({ command, timeout_ms, max_output_length, sandbox = 'default' }, _context, details) => {
|
|
322
|
+
execute: async ({ command, timeout_ms, max_output_length, sandbox = 'default', background = false }, _context, details) => {
|
|
323
|
+
const toolCallId = details?.toolCall?.callId;
|
|
324
|
+
// The application run loop owns turn cancellation on its typed context;
|
|
325
|
+
// SDK details only identify the provider tool call.
|
|
326
|
+
const toolSignal = _context?.signal ??
|
|
327
|
+
details?.signal;
|
|
245
328
|
const cwd = executionContext?.getCwd() || process.cwd();
|
|
246
329
|
const sessionId = getConversationSessionId(_context);
|
|
247
330
|
const sandboxEnabled = isSandboxEnabled();
|
|
248
|
-
const dockerHostControlRequested = sandboxEnabled &&
|
|
331
|
+
const dockerHostControlRequested = sandboxEnabled &&
|
|
332
|
+
(sessionAccess?.requiresDockerApproval(command) ??
|
|
333
|
+
nestedCompatibility?.docker.requiresApproval(sessionId, command) ??
|
|
334
|
+
false);
|
|
249
335
|
const hasDockerGrant = dockerHostControlRequested &&
|
|
250
|
-
(
|
|
251
|
-
(
|
|
252
|
-
(
|
|
336
|
+
(sessionAccess?.hasDockerGrant(command, cwd) ??
|
|
337
|
+
(nestedCompatibility
|
|
338
|
+
? nestedCompatibility.docker.hasProject(cwd) ||
|
|
339
|
+
(sessionId &&
|
|
340
|
+
(nestedCompatibility.docker.hasSession(sessionId, cwd) ||
|
|
341
|
+
nestedCompatibility.docker.consumeOnce(sessionId, command)))
|
|
342
|
+
: false));
|
|
253
343
|
if (dockerHostControlRequested && !hasDockerGrant) {
|
|
254
344
|
return 'Error: Docker host control requires explicit approval.';
|
|
255
345
|
}
|
|
@@ -257,54 +347,81 @@ export function createShellToolDefinition(deps) {
|
|
|
257
347
|
return `Error: plan mode is read-only. Command not executed: ${command}`;
|
|
258
348
|
}
|
|
259
349
|
const sshService = executionContext?.getSSHService();
|
|
350
|
+
if (background && !backgroundShellRegistry) {
|
|
351
|
+
return 'Error: Background shell execution is unavailable in this session.';
|
|
352
|
+
}
|
|
353
|
+
if (background && sshService) {
|
|
354
|
+
return 'Error: Background shell execution is only available for local sessions.';
|
|
355
|
+
}
|
|
260
356
|
const previousCorrelationId = loggingService.getCorrelationId();
|
|
261
357
|
const correlationId = randomUUID();
|
|
262
358
|
const startedAt = Date.now();
|
|
263
359
|
let sandboxed = false;
|
|
264
360
|
let dockerHostControl;
|
|
265
|
-
|
|
266
|
-
|
|
361
|
+
let backgroundCleanupDeferred = false;
|
|
362
|
+
let transferred = false;
|
|
363
|
+
const ownsCorrelationId = !background;
|
|
364
|
+
let foregroundCorrelationRestored = false;
|
|
365
|
+
const restoreForegroundCorrelation = () => {
|
|
366
|
+
if (!ownsCorrelationId || foregroundCorrelationRestored)
|
|
367
|
+
return;
|
|
368
|
+
foregroundCorrelationRestored = true;
|
|
369
|
+
if (previousCorrelationId) {
|
|
370
|
+
loggingService.setCorrelationId(previousCorrelationId);
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
loggingService.clearCorrelationId();
|
|
374
|
+
}
|
|
375
|
+
};
|
|
376
|
+
// The logger correlation ID is process-global. A foreground command owns
|
|
377
|
+
// it for the duration of its await; a background job uses the explicit
|
|
378
|
+
// `correlationId` fields below instead so it cannot contaminate another
|
|
379
|
+
// overlapping command's logs.
|
|
380
|
+
if (ownsCorrelationId)
|
|
381
|
+
loggingService.setCorrelationId(correlationId);
|
|
382
|
+
const withExecutionCorrelation = (metadata) => background || transferred ? { ...metadata, correlationId } : metadata;
|
|
267
383
|
try {
|
|
268
384
|
// Use provided values or settings defaults or hardcoded defaults
|
|
269
385
|
const timeoutValue = timeout_ms ?? settingsService.get('shell.timeout');
|
|
270
386
|
const timeout = timeoutValue != null ? timeoutValue : undefined;
|
|
271
387
|
const maxOutputLengthValue = max_output_length ?? settingsService.get('shell.maxOutputChars');
|
|
272
|
-
const
|
|
273
|
-
|
|
388
|
+
const configuredMaxOutputLength = settingsService.get('shell.maxOutputChars');
|
|
389
|
+
const foregroundMaxOutputLength = maxOutputLengthValue != null ? maxOutputLengthValue : undefined;
|
|
390
|
+
const backgroundMaxOutputLength = configuredMaxOutputLength != null
|
|
391
|
+
? Math.min(foregroundMaxOutputLength ?? configuredMaxOutputLength, configuredMaxOutputLength)
|
|
392
|
+
: foregroundMaxOutputLength;
|
|
393
|
+
const initialMaxOutputLength = background ? backgroundMaxOutputLength : foregroundMaxOutputLength;
|
|
394
|
+
loggingService.debug('Shell command execution started', withExecutionCorrelation({
|
|
274
395
|
commandCount: 1,
|
|
275
396
|
commands: [command],
|
|
276
397
|
timeout,
|
|
277
398
|
workingDirectory: cwd,
|
|
278
|
-
maxOutputLength,
|
|
279
|
-
});
|
|
399
|
+
maxOutputLength: initialMaxOutputLength,
|
|
400
|
+
}));
|
|
280
401
|
// Strip redundant 'cd <path> &&' if it targets the current directory
|
|
281
402
|
const optimizedCommand = stripRedundantCd(command, cwd);
|
|
282
403
|
if (optimizedCommand !== command) {
|
|
283
|
-
loggingService.debug('Stripped redundant cd command', {
|
|
284
|
-
original: command,
|
|
285
|
-
optimized: optimizedCommand,
|
|
286
|
-
cwd,
|
|
287
|
-
});
|
|
404
|
+
loggingService.debug('Stripped redundant cd command', withExecutionCorrelation({ original: command, optimized: optimizedCommand, cwd }));
|
|
288
405
|
}
|
|
289
406
|
let commandToRun = optimizedCommand;
|
|
290
407
|
let sandboxAvailability;
|
|
291
|
-
if (!sshService &&
|
|
292
|
-
settingsService.get('shell.useRtkCompression') &&
|
|
293
|
-
isRtkSupportedCommand(optimizedCommand)) {
|
|
408
|
+
if (!sshService && settingsService.get('shell.useRtkCompression') && isRtkSupportedCommand(optimizedCommand)) {
|
|
294
409
|
const rtkPath = await rtkInstaller({ loggingService });
|
|
295
410
|
if (rtkPath) {
|
|
296
411
|
commandToRun = wrapWithRtk(optimizedCommand, rtkPath);
|
|
297
|
-
loggingService.debug('Wrapped command with rtk', { rtkPath, original: optimizedCommand });
|
|
412
|
+
loggingService.debug('Wrapped command with rtk', withExecutionCorrelation({ rtkPath, original: optimizedCommand }));
|
|
298
413
|
}
|
|
299
414
|
}
|
|
300
415
|
// Consume any execution override set by a denied-read approval decision.
|
|
301
416
|
// This is a one-shot override for this single execution only.
|
|
302
|
-
const override =
|
|
417
|
+
const override = postExecuteDeniedRead && typeof toolCallId === 'string'
|
|
418
|
+
? overrideByCallId.get(toolCallId) ?? null
|
|
419
|
+
: nestedCompatibility?.executionOverrides.consume(command) ?? null;
|
|
420
|
+
if (postExecuteDeniedRead && typeof toolCallId === 'string')
|
|
421
|
+
overrideByCallId.delete(toolCallId);
|
|
303
422
|
if (override?.forceUnsandboxed) {
|
|
304
423
|
sandbox = 'unsandboxed';
|
|
305
|
-
loggingService.debug('Shell executing unsandboxed by approved override', {
|
|
306
|
-
command: optimizedCommand.substring(0, 100),
|
|
307
|
-
});
|
|
424
|
+
loggingService.debug('Shell executing unsandboxed by approved override', withExecutionCorrelation({ command: optimizedCommand.substring(0, 100) }));
|
|
308
425
|
}
|
|
309
426
|
const extraAllowReadFromOverride = override?.extraAllowRead ?? [];
|
|
310
427
|
if (dockerHostControlRequested) {
|
|
@@ -315,13 +432,15 @@ export function createShellToolDefinition(deps) {
|
|
|
315
432
|
dockerHostControl = dockerHostControlFactory();
|
|
316
433
|
// The run that uses the approval settles the pending block, so a
|
|
317
434
|
// later run of the same command is judged on its own.
|
|
318
|
-
|
|
319
|
-
|
|
435
|
+
if (sessionAccess)
|
|
436
|
+
sessionAccess.consumeDockerDenial(command);
|
|
437
|
+
else
|
|
438
|
+
nestedCompatibility?.docker.consumeDenial(sessionId, command);
|
|
439
|
+
loggingService.security('Docker host-control capability granted for shell command', withExecutionCorrelation({
|
|
320
440
|
command: optimizedCommand.substring(0, 100),
|
|
321
441
|
cwd,
|
|
322
442
|
socketPath: dockerHostControl.socketPath,
|
|
323
|
-
|
|
324
|
-
});
|
|
443
|
+
}));
|
|
325
444
|
}
|
|
326
445
|
catch (error) {
|
|
327
446
|
return `Error: ${error instanceof Error ? error.message : String(error)}`;
|
|
@@ -346,146 +465,258 @@ export function createShellToolDefinition(deps) {
|
|
|
346
465
|
...extraAllowReadFromOverride,
|
|
347
466
|
],
|
|
348
467
|
onProtectedFiltered: (filtered) => {
|
|
349
|
-
loggingService.info('Shell sandbox removed write access to protected paths', {
|
|
350
|
-
filtered,
|
|
351
|
-
cwd,
|
|
352
|
-
});
|
|
468
|
+
loggingService.info('Shell sandbox removed write access to protected paths', withExecutionCorrelation({ filtered, cwd }));
|
|
353
469
|
},
|
|
354
470
|
});
|
|
355
471
|
const wrapped = await shellSandboxRunner.wrap(commandToRun, {
|
|
356
472
|
cwd,
|
|
357
473
|
config: sandboxConfig,
|
|
358
|
-
signal:
|
|
474
|
+
signal: toolSignal,
|
|
359
475
|
});
|
|
360
476
|
commandToRun = wrapped.command;
|
|
361
477
|
sandboxed = true;
|
|
362
478
|
if (wrapped.diagnostics?.length) {
|
|
363
|
-
loggingService.debug('Shell sandbox diagnostics', { diagnostics: wrapped.diagnostics });
|
|
479
|
+
loggingService.debug('Shell sandbox diagnostics', withExecutionCorrelation({ diagnostics: wrapped.diagnostics }));
|
|
364
480
|
}
|
|
365
481
|
}
|
|
366
482
|
catch (error) {
|
|
367
|
-
loggingService.warn('Shell sandbox initialization failed; refusing unsandboxed fallback', {
|
|
368
|
-
error: error instanceof Error ? error.message : String(error),
|
|
369
|
-
});
|
|
483
|
+
loggingService.warn('Shell sandbox initialization failed; refusing unsandboxed fallback', withExecutionCorrelation({ error: error instanceof Error ? error.message : String(error) }));
|
|
370
484
|
return `Error: ${SANDBOX_ESCAPE_INSTRUCTION}`;
|
|
371
485
|
}
|
|
372
486
|
}
|
|
373
|
-
else
|
|
374
|
-
loggingService.warn('Shell sandbox unavailable;
|
|
487
|
+
else {
|
|
488
|
+
loggingService.warn('Shell sandbox unavailable; refusing unsandboxed fallback', withExecutionCorrelation({
|
|
375
489
|
availability: sandboxAvailability.type,
|
|
376
490
|
reason: 'reason' in sandboxAvailability ? sandboxAvailability.reason : undefined,
|
|
377
|
-
});
|
|
491
|
+
}));
|
|
492
|
+
return `Error: ${SANDBOX_ESCAPE_INSTRUCTION}`;
|
|
378
493
|
}
|
|
379
494
|
}
|
|
380
|
-
const
|
|
381
|
-
|
|
382
|
-
timeout,
|
|
383
|
-
maxBuffer: 1024 * 1024, // 1MB max buffer
|
|
384
|
-
env: sandboxed
|
|
385
|
-
? createSandboxEnvironment(undefined, {
|
|
386
|
-
cwd,
|
|
387
|
-
readPolicy: settingsService.get('sandbox.readPolicy'),
|
|
388
|
-
dockerHostControl,
|
|
389
|
-
})
|
|
390
|
-
: undefined,
|
|
391
|
-
pauseOnSandboxNetworkApproval: sandboxed,
|
|
392
|
-
signal: details?.signal,
|
|
393
|
-
sshService,
|
|
394
|
-
});
|
|
395
|
-
const stdout = result.stdout ?? '';
|
|
396
|
-
const rawStderr = stripRtkWarning(result.stderr ?? '');
|
|
397
|
-
const annotatedStderr = sandboxed ? shellSandboxRunner.annotateFailure(optimizedCommand, rawStderr) : rawStderr;
|
|
398
|
-
const readPolicy = settingsService.get('sandbox.readPolicy');
|
|
399
|
-
const sandboxFailure = classifySandboxFailure({
|
|
400
|
-
command: optimizedCommand,
|
|
401
|
-
rawStderr,
|
|
402
|
-
annotatedStderr,
|
|
403
|
-
sandboxed,
|
|
404
|
-
readPolicy,
|
|
405
|
-
dockerHostControlActive: Boolean(dockerHostControl),
|
|
406
|
-
exitCode: result.exitCode,
|
|
407
|
-
});
|
|
408
|
-
if (sandboxFailure?.type === 'docker_blocked') {
|
|
409
|
-
// Keyed by the command the model passed, because that is what the
|
|
410
|
-
// approval flow and the retry will present.
|
|
411
|
-
recordDockerHostControlDenial(command);
|
|
412
|
-
loggingService.security('Sandbox blocked Docker daemon access; agent retry will prompt for approval', {
|
|
413
|
-
confidence: sandboxFailure.confidence,
|
|
414
|
-
command: command.substring(0, 100),
|
|
495
|
+
const executePreparedCommand = async (signal) => {
|
|
496
|
+
const result = await executeShellCommandImpl(commandToRun, {
|
|
415
497
|
cwd,
|
|
416
|
-
correlationId,
|
|
417
|
-
});
|
|
418
|
-
return `Error: ${DOCKER_HOST_CONTROL_RETRY_INSTRUCTION}`;
|
|
419
|
-
}
|
|
420
|
-
if (sandboxFailure?.type === 'denied_read') {
|
|
421
|
-
deniedReadStore.record(optimizedCommand, sandboxFailure.deniedRead);
|
|
422
|
-
loggingService.security('Sandbox denied read; agent retry will prompt for approval', {
|
|
423
|
-
deniedPath: sandboxFailure.deniedRead.path,
|
|
424
|
-
suggestedParent: sandboxFailure.deniedRead.suggestedParent,
|
|
425
|
-
sensitive: sandboxFailure.deniedRead.sensitive,
|
|
426
|
-
confidence: sandboxFailure.confidence,
|
|
427
|
-
command: optimizedCommand.substring(0, 100),
|
|
428
|
-
correlationId,
|
|
429
|
-
});
|
|
430
|
-
return `Error: ${DETAILED_DENIED_READ_INSTRUCTION}`;
|
|
431
|
-
}
|
|
432
|
-
const stderr = sandboxFailure ? `${sandboxFailure.stderr}\n\n${SANDBOX_ESCAPE_INSTRUCTION}` : annotatedStderr;
|
|
433
|
-
const exitCode = result.exitCode ?? null;
|
|
434
|
-
const outcome = result.timedOut
|
|
435
|
-
? { type: 'timeout' }
|
|
436
|
-
: { type: 'exit', exitCode };
|
|
437
|
-
if (result.timedOut) {
|
|
438
|
-
loggingService.warn('Shell command timeout', {
|
|
439
|
-
command: optimizedCommand.substring(0, 100),
|
|
440
498
|
timeout,
|
|
499
|
+
maxBuffer: 1024 * 1024, // 1MB max buffer
|
|
500
|
+
env: sandboxed
|
|
501
|
+
? createSandboxEnvironment(undefined, {
|
|
502
|
+
cwd,
|
|
503
|
+
readPolicy: settingsService.get('sandbox.readPolicy'),
|
|
504
|
+
dockerHostControl,
|
|
505
|
+
})
|
|
506
|
+
: undefined,
|
|
507
|
+
pauseOnSandboxNetworkApproval: sandboxed,
|
|
508
|
+
signal,
|
|
509
|
+
sshService,
|
|
441
510
|
});
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
511
|
+
const stdout = result.stdout ?? '';
|
|
512
|
+
const rawStderr = stripRtkWarning(result.stderr ?? '');
|
|
513
|
+
const annotatedStderr = sandboxed
|
|
514
|
+
? shellSandboxRunner.annotateFailure(optimizedCommand, rawStderr)
|
|
515
|
+
: rawStderr;
|
|
516
|
+
const readPolicy = settingsService.get('sandbox.readPolicy');
|
|
517
|
+
const sandboxFailure = classifySandboxFailure({
|
|
518
|
+
command: optimizedCommand,
|
|
519
|
+
rawStderr,
|
|
520
|
+
annotatedStderr,
|
|
521
|
+
sandboxed,
|
|
522
|
+
readPolicy,
|
|
523
|
+
dockerHostControlActive: Boolean(dockerHostControl),
|
|
524
|
+
exitCode: result.exitCode,
|
|
449
525
|
});
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
526
|
+
if (sandboxFailure?.type === 'docker_blocked') {
|
|
527
|
+
// Keyed by the command the model passed, because that is what the
|
|
528
|
+
// approval flow and the retry will present.
|
|
529
|
+
if (sessionAccess)
|
|
530
|
+
sessionAccess.recordDockerDenial(command);
|
|
531
|
+
else
|
|
532
|
+
nestedCompatibility?.docker.recordDenial(sessionId, command);
|
|
533
|
+
loggingService.security('Sandbox blocked Docker daemon access; agent retry will prompt for approval', withExecutionCorrelation({
|
|
534
|
+
confidence: sandboxFailure.confidence,
|
|
535
|
+
command: command.substring(0, 100),
|
|
536
|
+
cwd,
|
|
537
|
+
sessionId,
|
|
538
|
+
// Without a session the block is unattributable, so it is not
|
|
539
|
+
// remembered and the retry will be sandboxed again.
|
|
540
|
+
denialRecorded: Boolean(sessionId),
|
|
541
|
+
}));
|
|
542
|
+
return { output: `Error: ${DOCKER_HOST_CONTROL_RETRY_INSTRUCTION}`, status: 'failed' };
|
|
543
|
+
}
|
|
544
|
+
if (sandboxFailure?.type === 'denied_read') {
|
|
545
|
+
if (!background && !transferred && postExecuteDeniedRead && typeof toolCallId !== 'string') {
|
|
546
|
+
throw new HarnessInvariantError('Root shell denied-read handling requires an SDK tool call ID');
|
|
547
|
+
}
|
|
548
|
+
// Keyed by the command the model passed, not `optimizedCommand`: the
|
|
549
|
+
// retry and both approval lookups (needsApproval here, and the
|
|
550
|
+
// conversation layer, which has no cwd to re-derive the stripped form)
|
|
551
|
+
// only ever see the raw string.
|
|
552
|
+
if ((background || transferred) && postExecuteDeniedRead) {
|
|
553
|
+
loggingService.security('Sandbox denied read in background shell job; foreground retry is required', withExecutionCorrelation({
|
|
554
|
+
deniedPath: sandboxFailure.deniedRead.path,
|
|
555
|
+
suggestedParent: sandboxFailure.deniedRead.suggestedParent,
|
|
556
|
+
sensitive: sandboxFailure.deniedRead.sensitive,
|
|
557
|
+
confidence: sandboxFailure.confidence,
|
|
558
|
+
command: optimizedCommand.substring(0, 100),
|
|
559
|
+
}));
|
|
560
|
+
return {
|
|
561
|
+
output: 'Error: Sandbox blocked a read access. Background jobs cannot request permission after launch; rerun this command in the foreground to choose an allow option.',
|
|
562
|
+
status: 'failed',
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
if (postExecuteDeniedRead) {
|
|
566
|
+
deniedReadByCallId.set(toolCallId, sandboxFailure.deniedRead);
|
|
567
|
+
}
|
|
568
|
+
else {
|
|
569
|
+
nestedCompatibility?.deniedReads.record(command, sandboxFailure.deniedRead);
|
|
570
|
+
}
|
|
571
|
+
loggingService.security('Sandbox denied read; agent retry will prompt for approval', withExecutionCorrelation({
|
|
572
|
+
deniedPath: sandboxFailure.deniedRead.path,
|
|
573
|
+
suggestedParent: sandboxFailure.deniedRead.suggestedParent,
|
|
574
|
+
sensitive: sandboxFailure.deniedRead.sensitive,
|
|
575
|
+
confidence: sandboxFailure.confidence,
|
|
576
|
+
command: optimizedCommand.substring(0, 100),
|
|
577
|
+
}));
|
|
578
|
+
return { output: `Error: ${DETAILED_DENIED_READ_INSTRUCTION}`, status: 'failed' };
|
|
579
|
+
}
|
|
580
|
+
const stderr = sandboxFailure ? `${sandboxFailure.stderr}\n\n${SANDBOX_ESCAPE_INSTRUCTION}` : annotatedStderr;
|
|
581
|
+
const exitCode = result.exitCode ?? null;
|
|
582
|
+
const outcome = result.timedOut
|
|
583
|
+
? { type: 'timeout' }
|
|
584
|
+
: { type: 'exit', exitCode };
|
|
585
|
+
if (result.timedOut) {
|
|
586
|
+
loggingService.warn('Shell command timeout', withExecutionCorrelation({ command: optimizedCommand.substring(0, 100), timeout }));
|
|
587
|
+
}
|
|
588
|
+
else if (exitCode === 0) {
|
|
589
|
+
loggingService.debug('Shell command executed successfully', withExecutionCorrelation({
|
|
590
|
+
command: optimizedCommand.substring(0, 100),
|
|
591
|
+
exitCode: 0,
|
|
592
|
+
stdoutLength: stdout.length,
|
|
593
|
+
stderrLength: stderr.length,
|
|
594
|
+
}));
|
|
595
|
+
}
|
|
596
|
+
else {
|
|
597
|
+
loggingService.debug('Shell command execution failed', withExecutionCorrelation({
|
|
598
|
+
command: optimizedCommand.substring(0, 100),
|
|
599
|
+
exitCode,
|
|
600
|
+
stderrLength: stderr.length,
|
|
601
|
+
}));
|
|
602
|
+
}
|
|
603
|
+
loggingService.debug('Shell command execution completed', withExecutionCorrelation({
|
|
604
|
+
commandCount: 1,
|
|
605
|
+
successCount: outcome.type === 'exit' && outcome.exitCode === 0 ? 1 : 0,
|
|
606
|
+
failureCount: outcome.type === 'exit' && outcome.exitCode !== 0 ? 1 : 0,
|
|
607
|
+
timeoutCount: outcome.type === 'timeout' ? 1 : 0,
|
|
608
|
+
}));
|
|
609
|
+
const formattedOutput = await formatShellExecutionOutput({
|
|
610
|
+
command: optimizedCommand,
|
|
611
|
+
cwd,
|
|
612
|
+
stdout,
|
|
613
|
+
stderr,
|
|
454
614
|
exitCode,
|
|
455
|
-
|
|
615
|
+
timedOut: outcome.type === 'timeout',
|
|
616
|
+
maxOutputLength: background || transferred ? backgroundMaxOutputLength : foregroundMaxOutputLength,
|
|
617
|
+
durationMs: Date.now() - startedAt,
|
|
456
618
|
});
|
|
619
|
+
return {
|
|
620
|
+
output: formattedOutput.text,
|
|
621
|
+
status: result.timedOut ? 'timed_out' : exitCode === 0 ? 'completed' : 'failed',
|
|
622
|
+
};
|
|
623
|
+
};
|
|
624
|
+
const cleanupAfterExecution = async () => {
|
|
625
|
+
if (sandboxed) {
|
|
626
|
+
await shellSandboxRunner.cleanupAfterCommand?.();
|
|
627
|
+
}
|
|
628
|
+
dockerHostControl?.cleanup();
|
|
629
|
+
restoreForegroundCorrelation();
|
|
630
|
+
};
|
|
631
|
+
if (background) {
|
|
632
|
+
try {
|
|
633
|
+
const job = backgroundShellRegistry.launch({
|
|
634
|
+
command: optimizedCommand,
|
|
635
|
+
run: executePreparedCommand,
|
|
636
|
+
onSettled: cleanupAfterExecution,
|
|
637
|
+
resultToStatus: (result) => result.status,
|
|
638
|
+
});
|
|
639
|
+
backgroundCleanupDeferred = true;
|
|
640
|
+
return JSON.stringify({ jobId: job.id, status: job.status });
|
|
641
|
+
}
|
|
642
|
+
catch (error) {
|
|
643
|
+
return `Error: ${error instanceof Error ? error.message : String(error)}`;
|
|
644
|
+
}
|
|
457
645
|
}
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
646
|
+
if (backgroundShellRegistry && !sshService && typeof toolCallId === 'string') {
|
|
647
|
+
const lease = backgroundShellRegistry.startForeground({
|
|
648
|
+
callId: toolCallId,
|
|
649
|
+
command: optimizedCommand,
|
|
650
|
+
parentSignal: toolSignal,
|
|
651
|
+
run: executePreparedCommand,
|
|
652
|
+
onSettled: cleanupAfterExecution,
|
|
653
|
+
resultToStatus: (result) => result.status,
|
|
654
|
+
onAdopted: () => {
|
|
655
|
+
transferred = true;
|
|
656
|
+
restoreForegroundCorrelation();
|
|
657
|
+
},
|
|
658
|
+
});
|
|
659
|
+
// Cleanup is lease-owned now, whether it stays foreground or moves.
|
|
660
|
+
backgroundCleanupDeferred = true;
|
|
661
|
+
const result = await lease.foregroundResult;
|
|
662
|
+
if ('jobId' in result) {
|
|
663
|
+
// The tool call returns now, but only the parent-turn ownership is
|
|
664
|
+
// released. Process cleanup remains deferred to lease settlement.
|
|
665
|
+
restoreForegroundCorrelation();
|
|
666
|
+
return JSON.stringify(result);
|
|
667
|
+
}
|
|
668
|
+
return result.output;
|
|
669
|
+
}
|
|
670
|
+
return (await executePreparedCommand(toolSignal)).output;
|
|
475
671
|
}
|
|
476
672
|
finally {
|
|
477
|
-
if (
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
}
|
|
484
|
-
else {
|
|
485
|
-
loggingService.clearCorrelationId();
|
|
673
|
+
if (!backgroundCleanupDeferred) {
|
|
674
|
+
if (sandboxed) {
|
|
675
|
+
await shellSandboxRunner.cleanupAfterCommand?.();
|
|
676
|
+
}
|
|
677
|
+
dockerHostControl?.cleanup();
|
|
678
|
+
restoreForegroundCorrelation();
|
|
486
679
|
}
|
|
487
680
|
}
|
|
488
681
|
},
|
|
682
|
+
postExecutePause: postExecuteDeniedRead
|
|
683
|
+
? {
|
|
684
|
+
describe: (params, _result, details) => {
|
|
685
|
+
const callId = details?.toolCall?.callId;
|
|
686
|
+
if (typeof callId !== 'string')
|
|
687
|
+
return null;
|
|
688
|
+
const info = deniedReadByCallId.get(callId);
|
|
689
|
+
if (!info)
|
|
690
|
+
return null;
|
|
691
|
+
return {
|
|
692
|
+
toolName: 'shell',
|
|
693
|
+
argumentsText: JSON.stringify(params),
|
|
694
|
+
deniedRead: {
|
|
695
|
+
deniedPath: info.path,
|
|
696
|
+
suggestedParent: info.suggestedParent,
|
|
697
|
+
sensitive: info.sensitive,
|
|
698
|
+
command: params.command,
|
|
699
|
+
},
|
|
700
|
+
};
|
|
701
|
+
},
|
|
702
|
+
resolve: async ({ result, details, executeAgain }, decision) => {
|
|
703
|
+
const callId = details?.toolCall?.callId;
|
|
704
|
+
const info = typeof callId === 'string' ? deniedReadByCallId.get(callId) : undefined;
|
|
705
|
+
if (typeof callId === 'string')
|
|
706
|
+
deniedReadByCallId.delete(callId);
|
|
707
|
+
if (typeof callId !== 'string' ||
|
|
708
|
+
!info ||
|
|
709
|
+
(decision !== 'allow-once' && decision !== 'allow-remember' && decision !== 'unsandboxed-once')) {
|
|
710
|
+
return result;
|
|
711
|
+
}
|
|
712
|
+
if (decision === 'allow-remember') {
|
|
713
|
+
getProjectAllowReadStore(executionContext?.getCwd() || process.cwd()).append(info.suggestedParent);
|
|
714
|
+
}
|
|
715
|
+
overrideByCallId.set(callId, decision === 'unsandboxed-once' ? { forceUnsandboxed: true } : { extraAllowRead: [info.suggestedParent] });
|
|
716
|
+
return executeAgain();
|
|
717
|
+
},
|
|
718
|
+
}
|
|
719
|
+
: undefined,
|
|
489
720
|
formatCommandMessage: formatShellCommandMessage,
|
|
490
721
|
};
|
|
491
722
|
}
|