@qduc/term2 0.8.0 → 0.9.1
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 +397 -0
- package/dist/agent.d.ts +1 -9
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +15 -132
- package/dist/agent.js.map +1 -1
- package/dist/agent.lite-mode.test.d.ts +2 -0
- package/dist/agent.lite-mode.test.d.ts.map +1 -0
- package/dist/agent.lite-mode.test.js +39 -0
- package/dist/agent.lite-mode.test.js.map +1 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +28 -16
- package/dist/app.js.map +1 -1
- package/dist/app.large-uncached-warning.test.js +15 -0
- package/dist/app.large-uncached-warning.test.js.map +1 -1
- package/dist/commands/effort-command.d.ts +2 -2
- package/dist/commands/effort-command.d.ts.map +1 -1
- package/dist/commands/effort-command.js +3 -3
- package/dist/commands/effort-command.js.map +1 -1
- package/dist/commands/guarded-settings-command.d.ts +2 -2
- package/dist/commands/guarded-settings-command.d.ts.map +1 -1
- package/dist/commands/guarded-settings-command.js +2 -2
- package/dist/commands/guarded-settings-command.js.map +1 -1
- package/dist/commands/model-command.d.ts +2 -2
- package/dist/commands/model-command.d.ts.map +1 -1
- package/dist/commands/model-command.js +2 -2
- package/dist/commands/model-command.js.map +1 -1
- package/dist/commands/retry-command.d.ts +2 -1
- package/dist/commands/retry-command.d.ts.map +1 -1
- package/dist/commands/retry-command.js +12 -3
- package/dist/commands/retry-command.js.map +1 -1
- package/dist/commands/skills-command.d.ts +1 -1
- package/dist/commands/skills-command.d.ts.map +1 -1
- package/dist/commands/skills-command.js +1 -1
- package/dist/commands/skills-command.js.map +1 -1
- package/dist/commands/undo-command.d.ts +2 -2
- package/dist/commands/undo-command.d.ts.map +1 -1
- package/dist/commands/undo-command.js +2 -2
- package/dist/commands/undo-command.js.map +1 -1
- package/dist/components/ApprovalPrompt.test.d.ts +2 -0
- package/dist/components/ApprovalPrompt.test.d.ts.map +1 -0
- package/dist/components/ApprovalPrompt.test.js +23 -0
- package/dist/components/ApprovalPrompt.test.js.map +1 -0
- package/dist/components/Common/MenuContainer.d.ts.map +1 -1
- package/dist/components/Common/MenuContainer.js.map +1 -1
- package/dist/components/Common/MenuContainer.test.d.ts.map +1 -1
- package/dist/components/Common/MenuContainer.test.js +53 -24
- package/dist/components/Common/MenuContainer.test.js.map +1 -1
- package/dist/components/Common/ScrollableTabBar.d.ts.map +1 -1
- package/dist/components/Common/ScrollableTabBar.js.map +1 -1
- package/dist/components/Common/compute-visible-tabs.d.ts.map +1 -1
- package/dist/components/Common/compute-visible-tabs.js.map +1 -1
- package/dist/components/Common/compute-visible-tabs.test.d.ts.map +1 -1
- package/dist/components/Common/compute-visible-tabs.test.js +28 -28
- package/dist/components/Common/compute-visible-tabs.test.js.map +1 -1
- package/dist/components/Input/PopupManager.d.ts +1 -9
- package/dist/components/Input/PopupManager.d.ts.map +1 -1
- package/dist/components/Input/PopupManager.js +8 -10
- package/dist/components/Input/PopupManager.js.map +1 -1
- package/dist/components/Input/determine-active-menu.d.ts +0 -3
- package/dist/components/Input/determine-active-menu.d.ts.map +1 -1
- package/dist/components/Input/determine-active-menu.js +2 -10
- package/dist/components/Input/determine-active-menu.js.map +1 -1
- package/dist/components/Input/input-width.d.ts.map +1 -1
- package/dist/components/Input/input-width.js.map +1 -1
- package/dist/components/Input/insertions.d.ts +0 -8
- package/dist/components/Input/insertions.d.ts.map +1 -1
- package/dist/components/Input/insertions.js +0 -12
- package/dist/components/Input/insertions.js.map +1 -1
- package/dist/components/Input/popup-key-navigation.d.ts.map +1 -1
- package/dist/components/Input/popup-key-navigation.js.map +1 -1
- package/dist/components/Input/popup-key-navigation.test.d.ts.map +1 -1
- package/dist/components/Input/popup-key-navigation.test.js +21 -21
- package/dist/components/Input/popup-key-navigation.test.js.map +1 -1
- package/dist/components/Input/popup-props.d.ts +1 -3
- package/dist/components/Input/popup-props.d.ts.map +1 -1
- package/dist/components/Input/popup-props.js +1 -8
- package/dist/components/Input/popup-props.js.map +1 -1
- package/dist/components/Input/popup-props.test.d.ts.map +1 -1
- package/dist/components/Input/popup-props.test.js +3 -10
- package/dist/components/Input/popup-props.test.js.map +1 -1
- package/dist/components/Input/triggers.d.ts +0 -1
- package/dist/components/Input/triggers.d.ts.map +1 -1
- package/dist/components/Input/triggers.js +0 -1
- package/dist/components/Input/triggers.js.map +1 -1
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +41 -12
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/LiveResponse.test.d.ts +2 -0
- package/dist/components/LiveResponse.test.d.ts.map +1 -0
- package/dist/components/LiveResponse.test.js +13 -0
- package/dist/components/LiveResponse.test.js.map +1 -0
- package/dist/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/components/MarkdownRenderer.js +3 -2
- package/dist/components/MarkdownRenderer.js.map +1 -1
- package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts +2 -0
- package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts.map +1 -0
- package/dist/components/ModelSelectionMenu.error-tabs.test.js +18 -0
- package/dist/components/ModelSelectionMenu.error-tabs.test.js.map +1 -0
- package/dist/components/TextInput.d.ts +42 -0
- package/dist/components/TextInput.d.ts.map +1 -0
- package/dist/components/TextInput.js +398 -0
- package/dist/components/TextInput.js.map +1 -0
- package/dist/components/TextInput.test.d.ts +2 -0
- package/dist/components/TextInput.test.d.ts.map +1 -0
- package/dist/components/TextInput.test.js +75 -0
- package/dist/components/TextInput.test.js.map +1 -0
- package/dist/components/__test_act.test.d.ts +2 -0
- package/dist/components/__test_act.test.d.ts.map +1 -0
- package/dist/components/__test_act.test.js +22 -0
- package/dist/components/__test_act.test.js.map +1 -0
- package/dist/components/__test_act_test.d.ts +2 -0
- package/dist/components/__test_act_test.d.ts.map +1 -0
- package/dist/components/__test_act_test.js +22 -0
- package/dist/components/__test_act_test.js.map +1 -0
- package/dist/components/act-test.test.d.ts +2 -0
- package/dist/components/act-test.test.d.ts.map +1 -0
- package/dist/components/act-test.test.js +22 -0
- package/dist/components/act-test.test.js.map +1 -0
- package/dist/components/common/MenuContainer.d.ts +19 -0
- package/dist/components/common/MenuContainer.d.ts.map +1 -0
- package/dist/components/common/MenuContainer.js +52 -0
- package/dist/components/common/MenuContainer.js.map +1 -0
- package/dist/components/common/MenuContainer.test.d.ts +2 -0
- package/dist/components/common/MenuContainer.test.d.ts.map +1 -0
- package/dist/components/common/MenuContainer.test.js +37 -0
- package/dist/components/common/MenuContainer.test.js.map +1 -0
- package/dist/components/common/ScrollableTabBar.d.ts +26 -0
- package/dist/components/common/ScrollableTabBar.d.ts.map +1 -0
- package/dist/components/common/ScrollableTabBar.js +26 -0
- package/dist/components/common/ScrollableTabBar.js.map +1 -0
- package/dist/components/common/compute-visible-tabs.d.ts +16 -0
- package/dist/components/common/compute-visible-tabs.d.ts.map +1 -0
- package/dist/components/common/compute-visible-tabs.js +53 -0
- package/dist/components/common/compute-visible-tabs.js.map +1 -0
- package/dist/components/common/compute-visible-tabs.test.d.ts +2 -0
- package/dist/components/common/compute-visible-tabs.test.d.ts.map +1 -0
- package/dist/components/common/compute-visible-tabs.test.js +97 -0
- package/dist/components/common/compute-visible-tabs.test.js.map +1 -0
- package/dist/components/input/PopupManager.d.ts +88 -0
- package/dist/components/input/PopupManager.d.ts.map +1 -0
- package/dist/components/input/PopupManager.js +21 -0
- package/dist/components/input/PopupManager.js.map +1 -0
- package/dist/components/input/determine-active-menu.d.ts +27 -0
- package/dist/components/input/determine-active-menu.d.ts.map +1 -0
- package/dist/components/input/determine-active-menu.js +81 -0
- package/dist/components/input/determine-active-menu.js.map +1 -0
- package/dist/components/input/input-width.d.ts +8 -0
- package/dist/components/input/input-width.d.ts.map +1 -0
- package/dist/components/input/input-width.js +24 -0
- package/dist/components/input/input-width.js.map +1 -0
- package/dist/components/input/insertions.d.ts +44 -0
- package/dist/components/input/insertions.d.ts.map +1 -0
- package/dist/components/input/insertions.js +67 -0
- package/dist/components/input/insertions.js.map +1 -0
- package/dist/components/input/popup-key-navigation.d.ts +18 -0
- package/dist/components/input/popup-key-navigation.d.ts.map +1 -0
- package/dist/components/input/popup-key-navigation.js +16 -0
- package/dist/components/input/popup-key-navigation.js.map +1 -0
- package/dist/components/input/popup-key-navigation.test.d.ts +2 -0
- package/dist/components/input/popup-key-navigation.test.d.ts.map +1 -0
- package/dist/components/input/popup-key-navigation.test.js +75 -0
- package/dist/components/input/popup-key-navigation.test.js.map +1 -0
- package/dist/components/input/popup-props.d.ts +24 -0
- package/dist/components/input/popup-props.d.ts.map +1 -0
- package/dist/components/input/popup-props.js +72 -0
- package/dist/components/input/popup-props.js.map +1 -0
- package/dist/components/input/popup-props.test.d.ts +2 -0
- package/dist/components/input/popup-props.test.d.ts.map +1 -0
- package/dist/components/input/popup-props.test.js +86 -0
- package/dist/components/input/popup-props.test.js.map +1 -0
- package/dist/components/input/triggers.d.ts +11 -0
- package/dist/components/input/triggers.d.ts.map +1 -0
- package/dist/components/input/triggers.js +27 -0
- package/dist/components/input/triggers.js.map +1 -0
- package/dist/components/layout/BottomArea.d.ts +2 -0
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +4 -2
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/DiffView.d.ts.map +1 -1
- package/dist/components/layout/DiffView.js +33 -26
- package/dist/components/layout/DiffView.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts +2 -0
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +29 -8
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.js +1 -1
- package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
- package/dist/components/message/CommandMessage.d.ts +2 -1
- package/dist/components/message/CommandMessage.d.ts.map +1 -1
- package/dist/components/message/CommandMessage.js +203 -227
- package/dist/components/message/CommandMessage.js.map +1 -1
- package/dist/components/message/MessageList.d.ts +16 -0
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +45 -1
- package/dist/components/message/MessageList.js.map +1 -1
- package/dist/components/message/command-message-helpers.d.ts +1 -1
- package/dist/components/message/command-message-helpers.d.ts.map +1 -1
- package/dist/components/message/command-message-helpers.js +17 -17
- package/dist/components/message/command-message-helpers.js.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.ask-user.test.js +35 -12
- package/dist/components/prompt/ApprovalPrompt.ask-user.test.js.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.js +124 -14
- package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
- package/dist/context/InputContext.d.ts +4 -0
- package/dist/context/InputContext.d.ts.map +1 -1
- package/dist/context/InputContext.js +5 -1
- package/dist/context/InputContext.js.map +1 -1
- package/dist/contracts/conversation.d.ts +22 -0
- package/dist/contracts/conversation.d.ts.map +1 -1
- package/dist/contracts/conversation.js +11 -1
- package/dist/contracts/conversation.js.map +1 -1
- package/dist/debug_ask_mentor.d.ts +2 -0
- package/dist/debug_ask_mentor.d.ts.map +1 -0
- package/dist/debug_ask_mentor.js +73 -0
- package/dist/debug_ask_mentor.js.map +1 -0
- package/dist/hooks/conversation-ui-reducer.ask-user-bugfix.test.js +7 -7
- package/dist/hooks/conversation-ui-reducer.ask-user-bugfix.test.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +3 -2
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +16 -8
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +1 -0
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +92 -9
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-conversation.max-turns-undo.test.d.ts +2 -0
- package/dist/hooks/use-conversation.max-turns-undo.test.d.ts.map +1 -0
- package/dist/hooks/use-conversation.max-turns-undo.test.js +118 -0
- package/dist/hooks/use-conversation.max-turns-undo.test.js.map +1 -0
- package/dist/hooks/use-handoff-flow.d.ts +3 -2
- package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
- package/dist/hooks/use-handoff-flow.js +28 -18
- package/dist/hooks/use-handoff-flow.js.map +1 -1
- package/dist/hooks/use-mode-handlers.d.ts +2 -0
- package/dist/hooks/use-mode-handlers.d.ts.map +1 -1
- package/dist/hooks/use-mode-handlers.js +2 -2
- package/dist/hooks/use-mode-handlers.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts +1 -0
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +19 -5
- 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 +4 -2
- package/dist/hooks/use-path-completion.js.map +1 -1
- package/dist/hooks/use-path-completion.repro.test.d.ts +2 -0
- package/dist/hooks/use-path-completion.repro.test.d.ts.map +1 -0
- package/dist/hooks/use-path-completion.repro.test.js.map +1 -0
- package/dist/hooks/use-pending-turn-guards.d.ts +2 -2
- package/dist/hooks/use-pending-turn-guards.d.ts.map +1 -1
- package/dist/hooks/use-pending-turn-guards.js +8 -8
- package/dist/hooks/use-pending-turn-guards.js.map +1 -1
- package/dist/hooks/use-provider-selection.d.ts.map +1 -1
- package/dist/hooks/use-provider-selection.js +20 -18
- package/dist/hooks/use-provider-selection.js.map +1 -1
- package/dist/hooks/use-selection.d.ts.map +1 -1
- package/dist/hooks/use-selection.js +5 -1
- package/dist/hooks/use-selection.js.map +1 -1
- package/dist/hooks/use-setting.d.ts.map +1 -1
- package/dist/hooks/use-setting.js +3 -5
- package/dist/hooks/use-setting.js.map +1 -1
- package/dist/hooks/use-settings-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-completion.js +19 -7
- 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 +13 -2
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/hooks/use-shell-mode.d.ts +2 -2
- package/dist/hooks/use-shell-mode.d.ts.map +1 -1
- package/dist/hooks/use-shell-mode.js +5 -3
- package/dist/hooks/use-shell-mode.js.map +1 -1
- package/dist/hooks/use-skill-selection.js +3 -3
- package/dist/hooks/use-skill-selection.js.map +1 -1
- package/dist/hooks/use-slash-commands.js +3 -3
- package/dist/hooks/use-slash-commands.js.map +1 -1
- package/dist/hooks/use-terminal-width.js +2 -2
- package/dist/hooks/use-terminal-width.js.map +1 -1
- package/dist/hooks/use-undo-selection.d.ts.map +1 -1
- package/dist/hooks/use-undo-selection.js +3 -1
- package/dist/hooks/use-undo-selection.js.map +1 -1
- package/dist/lib/agent-chat-service.js +2 -2
- package/dist/lib/agent-chat-service.js.map +1 -1
- package/dist/lib/agent-factory.test.js +21 -0
- package/dist/lib/agent-factory.test.js.map +1 -1
- package/dist/lib/agent-run-orchestrator.js +1 -1
- package/dist/lib/agent-run-orchestrator.js.map +1 -1
- package/dist/lib/editor-impl.test.js +73 -29
- package/dist/lib/editor-impl.test.js.map +1 -1
- package/dist/lib/openai-agent-client.public-methods.test.js +9 -1
- package/dist/lib/openai-agent-client.public-methods.test.js.map +1 -1
- package/dist/lib/shell.d.ts +7 -0
- package/dist/lib/shell.d.ts.map +1 -0
- package/dist/lib/shell.js +56 -0
- package/dist/lib/shell.js.map +1 -0
- package/dist/lib/subagent-bridge.d.ts.map +1 -1
- package/dist/lib/subagent-bridge.js +15 -3
- package/dist/lib/subagent-bridge.js.map +1 -1
- package/dist/modes/companion/command-index.d.ts +26 -0
- package/dist/modes/companion/command-index.d.ts.map +1 -0
- package/dist/modes/companion/command-index.js +50 -0
- package/dist/modes/companion/command-index.js.map +1 -0
- package/dist/modes/companion/command-index.test.d.ts +2 -0
- package/dist/modes/companion/command-index.test.d.ts.map +1 -0
- package/dist/modes/companion/command-index.test.js +86 -0
- package/dist/modes/companion/command-index.test.js.map +1 -0
- package/dist/modes/companion/companion-app.d.ts +12 -0
- package/dist/modes/companion/companion-app.d.ts.map +1 -0
- package/dist/modes/companion/companion-app.js +297 -0
- package/dist/modes/companion/companion-app.js.map +1 -0
- package/dist/modes/companion/companion-session.d.ts +63 -0
- package/dist/modes/companion/companion-session.d.ts.map +1 -0
- package/dist/modes/companion/companion-session.js +146 -0
- package/dist/modes/companion/companion-session.js.map +1 -0
- package/dist/modes/companion/companion-session.test.d.ts +2 -0
- package/dist/modes/companion/companion-session.test.d.ts.map +1 -0
- package/dist/modes/companion/companion-session.test.js +28 -0
- package/dist/modes/companion/companion-session.test.js.map +1 -0
- package/dist/modes/companion/components/status-bar.d.ts +13 -0
- package/dist/modes/companion/components/status-bar.d.ts.map +1 -0
- package/dist/modes/companion/components/status-bar.js +26 -0
- package/dist/modes/companion/components/status-bar.js.map +1 -0
- package/dist/modes/companion/context-buffer.d.ts +65 -0
- package/dist/modes/companion/context-buffer.d.ts.map +1 -0
- package/dist/modes/companion/context-buffer.js +156 -0
- package/dist/modes/companion/context-buffer.js.map +1 -0
- package/dist/modes/companion/context-buffer.test.d.ts +2 -0
- package/dist/modes/companion/context-buffer.test.d.ts.map +1 -0
- package/dist/modes/companion/context-buffer.test.js +154 -0
- package/dist/modes/companion/context-buffer.test.js.map +1 -0
- package/dist/modes/companion/event-detector.d.ts +46 -0
- package/dist/modes/companion/event-detector.d.ts.map +1 -0
- package/dist/modes/companion/event-detector.js +169 -0
- package/dist/modes/companion/event-detector.js.map +1 -0
- package/dist/modes/companion/event-detector.test.d.ts +2 -0
- package/dist/modes/companion/event-detector.test.d.ts.map +1 -0
- package/dist/modes/companion/event-detector.test.js +121 -0
- package/dist/modes/companion/event-detector.test.js.map +1 -0
- package/dist/modes/companion/index.d.ts +33 -0
- package/dist/modes/companion/index.d.ts.map +1 -0
- package/dist/modes/companion/index.js +21 -0
- package/dist/modes/companion/index.js.map +1 -0
- package/dist/modes/companion/input-key-mapper.d.ts +3 -0
- package/dist/modes/companion/input-key-mapper.d.ts.map +1 -0
- package/dist/modes/companion/input-key-mapper.js +31 -0
- package/dist/modes/companion/input-key-mapper.js.map +1 -0
- package/dist/modes/companion/input-key-mapper.test.d.ts +2 -0
- package/dist/modes/companion/input-key-mapper.test.d.ts.map +1 -0
- package/dist/modes/companion/input-key-mapper.test.js +26 -0
- package/dist/modes/companion/input-key-mapper.test.js.map +1 -0
- package/dist/modes/companion/input-parser.d.ts +53 -0
- package/dist/modes/companion/input-parser.d.ts.map +1 -0
- package/dist/modes/companion/input-parser.js +114 -0
- package/dist/modes/companion/input-parser.js.map +1 -0
- package/dist/modes/companion/input-parser.test.d.ts +2 -0
- package/dist/modes/companion/input-parser.test.d.ts.map +1 -0
- package/dist/modes/companion/input-parser.test.js +123 -0
- package/dist/modes/companion/input-parser.test.js.map +1 -0
- package/dist/modes/companion/mode-manager.d.ts +41 -0
- package/dist/modes/companion/mode-manager.d.ts.map +1 -0
- package/dist/modes/companion/mode-manager.js +56 -0
- package/dist/modes/companion/mode-manager.js.map +1 -0
- package/dist/modes/companion/mode-manager.test.d.ts +2 -0
- package/dist/modes/companion/mode-manager.test.d.ts.map +1 -0
- package/dist/modes/companion/mode-manager.test.js +65 -0
- package/dist/modes/companion/mode-manager.test.js.map +1 -0
- package/dist/modes/companion/output-classifier.d.ts +15 -0
- package/dist/modes/companion/output-classifier.d.ts.map +1 -0
- package/dist/modes/companion/output-classifier.js +77 -0
- package/dist/modes/companion/output-classifier.js.map +1 -0
- package/dist/modes/companion/output-classifier.test.d.ts +2 -0
- package/dist/modes/companion/output-classifier.test.d.ts.map +1 -0
- package/dist/modes/companion/output-classifier.test.js +133 -0
- package/dist/modes/companion/output-classifier.test.js.map +1 -0
- package/dist/modes/companion/pty-wrapper.d.ts +46 -0
- package/dist/modes/companion/pty-wrapper.d.ts.map +1 -0
- package/dist/modes/companion/pty-wrapper.js +143 -0
- package/dist/modes/companion/pty-wrapper.js.map +1 -0
- package/dist/modes/companion/safety-classifier.d.ts +31 -0
- package/dist/modes/companion/safety-classifier.d.ts.map +1 -0
- package/dist/modes/companion/safety-classifier.js +140 -0
- package/dist/modes/companion/safety-classifier.js.map +1 -0
- package/dist/modes/companion/safety-classifier.test.d.ts +2 -0
- package/dist/modes/companion/safety-classifier.test.d.ts.map +1 -0
- package/dist/modes/companion/safety-classifier.test.js +151 -0
- package/dist/modes/companion/safety-classifier.test.js.map +1 -0
- package/dist/modes/companion/summarizer.d.ts +24 -0
- package/dist/modes/companion/summarizer.d.ts.map +1 -0
- package/dist/modes/companion/summarizer.js +132 -0
- package/dist/modes/companion/summarizer.js.map +1 -0
- package/dist/modes/companion/terminal-history.d.ts +27 -0
- package/dist/modes/companion/terminal-history.d.ts.map +1 -0
- package/dist/modes/companion/terminal-history.js +142 -0
- package/dist/modes/companion/terminal-history.js.map +1 -0
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +0 -2
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/anthropic.md +1 -0
- package/dist/prompts/codex.md +1 -0
- package/dist/prompts/gpt-5-modern.md +1 -0
- package/dist/prompts/gpt-5.5.md +1 -0
- package/dist/prompts/gpt-5.md +4 -7
- package/dist/prompts/kimi.md +3 -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 +12 -38
- package/dist/prompts/prompt-constructor.js.map +1 -1
- package/dist/prompts/prompt-constructor.test.ts +15 -36
- package/dist/prompts/prompt-constructor.ts +19 -47
- package/dist/prompts/shell-sandbox.d.ts +2 -0
- package/dist/prompts/shell-sandbox.d.ts.map +1 -0
- package/dist/prompts/shell-sandbox.js +29 -0
- package/dist/prompts/shell-sandbox.js.map +1 -0
- package/dist/prompts/shell-sandbox.md +18 -0
- package/dist/prompts/shell-sandbox.ts +29 -0
- package/dist/prompts/simple-mentor.md +215 -0
- package/dist/prompts/subagent-delegation.js +1 -1
- package/dist/prompts/subagent-delegation.ts +1 -1
- package/dist/providers/ai-sdk-openai-compatible.provider.d.ts +2 -0
- package/dist/providers/ai-sdk-openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/ai-sdk-openai-compatible.provider.js +8 -4
- package/dist/providers/ai-sdk-openai-compatible.provider.js.map +1 -1
- package/dist/providers/ai-sdk-openai-compatible.provider.test.js +119 -1
- package/dist/providers/ai-sdk-openai-compatible.provider.test.js.map +1 -1
- package/dist/providers/ai-sdk-openai.provider.d.ts +14 -0
- package/dist/providers/ai-sdk-openai.provider.d.ts.map +1 -0
- package/dist/providers/ai-sdk-openai.provider.js +18 -0
- package/dist/providers/ai-sdk-openai.provider.js.map +1 -0
- package/dist/providers/codex-responses-model.d.ts +1 -0
- package/dist/providers/codex-responses-model.d.ts.map +1 -1
- package/dist/providers/codex-responses-model.js +5 -4
- package/dist/providers/codex-responses-model.js.map +1 -1
- package/dist/providers/github-copilot/converters.d.ts +45 -0
- package/dist/providers/github-copilot/converters.d.ts.map +1 -0
- package/dist/providers/github-copilot/converters.js +118 -0
- package/dist/providers/github-copilot/converters.js.map +1 -0
- package/dist/providers/github-copilot/converters.test.d.ts +2 -0
- package/dist/providers/github-copilot/converters.test.d.ts.map +1 -0
- package/dist/providers/github-copilot/converters.test.js +162 -0
- package/dist/providers/github-copilot/converters.test.js.map +1 -0
- package/dist/providers/github-copilot/github-copilot.provider.d.ts +2 -0
- package/dist/providers/github-copilot/github-copilot.provider.d.ts.map +1 -0
- package/dist/providers/github-copilot/github-copilot.provider.js +75 -0
- package/dist/providers/github-copilot/github-copilot.provider.js.map +1 -0
- package/dist/providers/github-copilot/github-copilot.provider.test.d.ts +2 -0
- package/dist/providers/github-copilot/github-copilot.provider.test.d.ts.map +1 -0
- package/dist/providers/github-copilot/github-copilot.provider.test.js +26 -0
- package/dist/providers/github-copilot/github-copilot.provider.test.js.map +1 -0
- package/dist/providers/github-copilot/index.d.ts +4 -0
- package/dist/providers/github-copilot/index.d.ts.map +1 -0
- package/dist/providers/github-copilot/index.js +4 -0
- package/dist/providers/github-copilot/index.js.map +1 -0
- package/dist/providers/github-copilot/model.d.ts +24 -0
- package/dist/providers/github-copilot/model.d.ts.map +1 -0
- package/dist/providers/github-copilot/model.delta.test.d.ts +2 -0
- package/dist/providers/github-copilot/model.delta.test.d.ts.map +1 -0
- package/dist/providers/github-copilot/model.delta.test.js +15 -0
- package/dist/providers/github-copilot/model.delta.test.js.map +1 -0
- package/dist/providers/github-copilot/model.js +498 -0
- package/dist/providers/github-copilot/model.js.map +1 -0
- package/dist/providers/github-copilot/model.test.d.ts +2 -0
- package/dist/providers/github-copilot/model.test.d.ts.map +1 -0
- package/dist/providers/github-copilot/model.test.js +63 -0
- package/dist/providers/github-copilot/model.test.js.map +1 -0
- package/dist/providers/github-copilot/provider.d.ts +15 -0
- package/dist/providers/github-copilot/provider.d.ts.map +1 -0
- package/dist/providers/github-copilot/provider.js +25 -0
- package/dist/providers/github-copilot/provider.js.map +1 -0
- package/dist/providers/github-copilot/provider.test.d.ts +2 -0
- package/dist/providers/github-copilot/provider.test.d.ts.map +1 -0
- package/dist/providers/github-copilot/provider.test.js +52 -0
- package/dist/providers/github-copilot/provider.test.js.map +1 -0
- package/dist/providers/github-copilot/utils.d.ts +20 -0
- package/dist/providers/github-copilot/utils.d.ts.map +1 -0
- package/dist/providers/github-copilot/utils.js +142 -0
- package/dist/providers/github-copilot/utils.js.map +1 -0
- package/dist/providers/github-copilot/utils.test.d.ts +2 -0
- package/dist/providers/github-copilot/utils.test.d.ts.map +1 -0
- package/dist/providers/github-copilot/utils.test.js +21 -0
- package/dist/providers/github-copilot/utils.test.js.map +1 -0
- package/dist/providers/openai-compatible/api.d.ts +17 -0
- package/dist/providers/openai-compatible/api.d.ts.map +1 -0
- package/dist/providers/openai-compatible/api.js +58 -0
- package/dist/providers/openai-compatible/api.js.map +1 -0
- package/dist/providers/openai-compatible/model.d.ts +17 -0
- package/dist/providers/openai-compatible/model.d.ts.map +1 -0
- package/dist/providers/openai-compatible/model.js +473 -0
- package/dist/providers/openai-compatible/model.js.map +1 -0
- package/dist/providers/openai-compatible/provider.d.ts +22 -0
- package/dist/providers/openai-compatible/provider.d.ts.map +1 -0
- package/dist/providers/openai-compatible/provider.js +43 -0
- package/dist/providers/openai-compatible/provider.js.map +1 -0
- package/dist/providers/openai-compatible/reasoning-content.test.d.ts +2 -0
- package/dist/providers/openai-compatible/reasoning-content.test.d.ts.map +1 -0
- package/dist/providers/openai-compatible/reasoning-content.test.js +258 -0
- package/dist/providers/openai-compatible/reasoning-content.test.js.map +1 -0
- package/dist/providers/openai-compatible/utils.d.ts +3 -0
- package/dist/providers/openai-compatible/utils.d.ts.map +1 -0
- package/dist/providers/openai-compatible/utils.js +11 -0
- package/dist/providers/openai-compatible/utils.js.map +1 -0
- package/dist/providers/openai-compatible-behavior-gate.test.js +42 -1
- package/dist/providers/openai-compatible-behavior-gate.test.js.map +1 -1
- package/dist/providers/openai-compatible-middleware.js +1 -1
- package/dist/providers/openai-compatible-middleware.js.map +1 -1
- package/dist/providers/openai-compatible.provider.js +1 -1
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/providers/openrouter/api.d.ts +39 -0
- package/dist/providers/openrouter/api.d.ts.map +1 -0
- package/dist/providers/openrouter/api.js +164 -0
- package/dist/providers/openrouter/api.js.map +1 -0
- package/dist/providers/openrouter/converters.d.ts +8 -0
- package/dist/providers/openrouter/converters.d.ts.map +1 -0
- package/dist/providers/openrouter/converters.js +391 -0
- package/dist/providers/openrouter/converters.js.map +1 -0
- package/dist/providers/openrouter/converters.test.d.ts +2 -0
- package/dist/providers/openrouter/converters.test.d.ts.map +1 -0
- package/dist/providers/openrouter/converters.test.js +179 -0
- package/dist/providers/openrouter/converters.test.js.map +1 -0
- package/dist/providers/openrouter/index.d.ts +4 -0
- package/dist/providers/openrouter/index.d.ts.map +1 -0
- package/dist/providers/openrouter/index.js +4 -0
- package/dist/providers/openrouter/index.js.map +1 -0
- package/dist/providers/openrouter/model.d.ts +14 -0
- package/dist/providers/openrouter/model.d.ts.map +1 -0
- package/dist/providers/openrouter/model.js +457 -0
- package/dist/providers/openrouter/model.js.map +1 -0
- package/dist/providers/openrouter/provider.d.ts +15 -0
- package/dist/providers/openrouter/provider.d.ts.map +1 -0
- package/dist/providers/openrouter/provider.js +21 -0
- package/dist/providers/openrouter/provider.js.map +1 -0
- package/dist/providers/openrouter/reasoning-content.test.d.ts +2 -0
- package/dist/providers/openrouter/reasoning-content.test.d.ts.map +1 -0
- package/dist/providers/openrouter/reasoning-content.test.js +122 -0
- package/dist/providers/openrouter/reasoning-content.test.js.map +1 -0
- package/dist/providers/openrouter/utils.d.ts +11 -0
- package/dist/providers/openrouter/utils.d.ts.map +1 -0
- package/dist/providers/openrouter/utils.js +29 -0
- package/dist/providers/openrouter/utils.js.map +1 -0
- package/dist/providers/openrouter.api.retry.test.d.ts +2 -0
- package/dist/providers/openrouter.api.retry.test.d.ts.map +1 -0
- package/dist/providers/openrouter.api.retry.test.js +148 -0
- package/dist/providers/openrouter.api.retry.test.js.map +1 -0
- package/dist/providers/openrouter.test.d.ts +2 -0
- package/dist/providers/openrouter.test.d.ts.map +1 -0
- package/dist/providers/openrouter.test.js +1449 -0
- package/dist/providers/openrouter.test.js.map +1 -0
- package/dist/providers/protocol-client.d.ts +17 -0
- package/dist/providers/protocol-client.d.ts.map +1 -0
- package/dist/providers/protocol-client.js +57 -0
- package/dist/providers/protocol-client.js.map +1 -0
- package/dist/providers/protocol-client.test.d.ts +2 -0
- package/dist/providers/protocol-client.test.d.ts.map +1 -0
- package/dist/providers/protocol-client.test.js +55 -0
- package/dist/providers/protocol-client.test.js.map +1 -0
- package/dist/safety-checker.js +57 -0
- package/dist/scripts/eval-auto-approval/runner.js +1 -1
- package/dist/scripts/eval-auto-approval/runner.js.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.d.ts.map +1 -1
- package/dist/services/approval/approval-flow-coordinator.js +43 -3
- package/dist/services/approval/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval/shell-sandbox-approval.d.ts +2 -0
- package/dist/services/approval/shell-sandbox-approval.d.ts.map +1 -0
- package/dist/services/approval/shell-sandbox-approval.js +7 -0
- package/dist/services/approval/shell-sandbox-approval.js.map +1 -0
- package/dist/services/approval/tool-approval-batch-coordinator.d.ts.map +1 -1
- package/dist/services/approval/tool-approval-batch-coordinator.js +4 -2
- package/dist/services/approval/tool-approval-batch-coordinator.js.map +1 -1
- package/dist/services/approval-flow-coordinator.js +1 -1
- package/dist/services/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval-state.d.ts +1 -1
- package/dist/services/approval-state.d.ts.map +1 -1
- package/dist/services/check_mock.d.ts +2 -0
- package/dist/services/check_mock.d.ts.map +1 -0
- package/dist/services/check_mock.js +22 -0
- package/dist/services/check_mock.js.map +1 -0
- package/dist/services/continuation-driver.js +1 -1
- package/dist/services/continuation-driver.js.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts +2 -1
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +4 -1
- package/dist/services/conversation/conversation-adapter.js.map +1 -1
- package/dist/services/conversation/conversation-replay.js +1 -1
- package/dist/services/conversation/conversation-replay.js.map +1 -1
- package/dist/services/conversation/conversation-result-builder.d.ts +2 -0
- package/dist/services/conversation/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation/conversation-result-builder.js +31 -2
- package/dist/services/conversation/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +8 -0
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +14 -0
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/conversation-store.d.ts +13 -0
- package/dist/services/conversation/conversation-store.d.ts.map +1 -1
- package/dist/services/conversation/conversation-store.js +72 -13
- package/dist/services/conversation/conversation-store.js.map +1 -1
- package/dist/services/conversation-adapter.d.ts +3 -2
- package/dist/services/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation-adapter.js +10 -8
- package/dist/services/conversation-adapter.js.map +1 -1
- package/dist/services/conversation-events.d.ts +1 -1
- package/dist/services/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation-log-events.d.ts +1 -1
- package/dist/services/conversation-log-events.d.ts.map +1 -1
- package/dist/services/conversation-replay.d.ts +1 -1
- package/dist/services/conversation-replay.d.ts.map +1 -1
- package/dist/services/conversation-replay.js +1 -1
- package/dist/services/conversation-replay.js.map +1 -1
- package/dist/services/conversation-result-builder.d.ts +1 -1
- package/dist/services/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation-result-builder.js +2 -2
- package/dist/services/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation-result-builder.test.js +3 -3
- package/dist/services/conversation-result-builder.test.js.map +1 -1
- package/dist/services/conversation-service.test.js +2 -2
- package/dist/services/conversation-service.test.js.map +1 -1
- package/dist/services/conversation-session-composition.d.ts +3 -1
- package/dist/services/conversation-session-composition.d.ts.map +1 -1
- package/dist/services/conversation-session-composition.js +3 -2
- package/dist/services/conversation-session-composition.js.map +1 -1
- package/dist/services/conversation-session-factory.d.ts +3 -1
- package/dist/services/conversation-session-factory.d.ts.map +1 -1
- package/dist/services/conversation-session-factory.js +7 -1
- package/dist/services/conversation-session-factory.js.map +1 -1
- package/dist/services/conversation-session.characterization.test.js +23 -13
- package/dist/services/conversation-session.characterization.test.js.map +1 -1
- package/dist/services/conversation-store.merge-modes.removed.d.ts +2 -0
- package/dist/services/conversation-store.merge-modes.removed.d.ts.map +1 -0
- package/dist/services/conversation-store.merge-modes.removed.js +2 -0
- package/dist/services/conversation-store.merge-modes.removed.js.map +1 -0
- package/dist/services/conversation-store.merge-modes.test.d.ts.map +1 -1
- package/dist/services/conversation-store.merge-modes.test.js +1 -160
- package/dist/services/conversation-store.merge-modes.test.js.map +1 -1
- package/dist/services/conversation-turn-runner.d.ts +2 -1
- package/dist/services/conversation-turn-runner.d.ts.map +1 -1
- package/dist/services/logging/logging-service.d.ts.map +1 -1
- package/dist/services/logging/logging-service.js +4 -2
- package/dist/services/logging/logging-service.js.map +1 -1
- package/dist/services/logging-service.js +1 -1
- package/dist/services/logging-service.js.map +1 -1
- package/dist/services/model-service.d.ts +1 -1
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +7 -2
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/repro-error.test.d.ts +2 -0
- package/dist/services/repro-error.test.d.ts.map +1 -0
- package/dist/services/repro-error.test.js +38 -0
- package/dist/services/repro-error.test.js.map +1 -0
- package/dist/services/rtk-service.d.ts.map +1 -1
- package/dist/services/rtk-service.js +6 -2
- package/dist/services/rtk-service.js.map +1 -1
- package/dist/services/session/continuation-driver.test.js +169 -7
- package/dist/services/session/continuation-driver.test.js.map +1 -1
- package/dist/services/session/continuation-recovery-handler.test.js +3 -4
- package/dist/services/session/continuation-recovery-handler.test.js.map +1 -1
- package/dist/services/session/conversation-session.d.ts +1 -0
- package/dist/services/session/conversation-session.d.ts.map +1 -1
- package/dist/services/session/conversation-session.js.map +1 -1
- package/dist/services/session/initial-input-preparer.d.ts +1 -0
- package/dist/services/session/initial-input-preparer.d.ts.map +1 -1
- package/dist/services/session/initial-input-preparer.js +2 -1
- package/dist/services/session/initial-input-preparer.js.map +1 -1
- package/dist/services/session/initial-turn-runner.d.ts.map +1 -1
- package/dist/services/session/initial-turn-runner.js +11 -3
- package/dist/services/session/initial-turn-runner.js.map +1 -1
- package/dist/services/session/session-adapter-bridge.d.ts +1 -11
- package/dist/services/session/session-adapter-bridge.d.ts.map +1 -1
- package/dist/services/session/session-adapter-bridge.js +1 -10
- package/dist/services/session/session-adapter-bridge.js.map +1 -1
- package/dist/services/session/session-composition.d.ts +1 -0
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +1 -0
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-factory.d.ts +46 -3
- package/dist/services/session/session-factory.d.ts.map +1 -1
- package/dist/services/session/session-factory.js +44 -3
- package/dist/services/session/session-factory.js.map +1 -1
- package/dist/services/session/session-factory.test.js +17 -18
- package/dist/services/session/session-factory.test.js.map +1 -1
- package/dist/services/session/session-input-planner.d.ts +1 -0
- package/dist/services/session/session-input-planner.d.ts.map +1 -1
- package/dist/services/session/session-input-planner.js +30 -2
- package/dist/services/session/session-input-planner.js.map +1 -1
- package/dist/services/session/session-lifecycle.d.ts +4 -0
- package/dist/services/session/session-lifecycle.d.ts.map +1 -1
- package/dist/services/session/session-lifecycle.js +10 -0
- package/dist/services/session/session-lifecycle.js.map +1 -1
- package/dist/services/session/session-manager.d.ts +14 -0
- package/dist/services/session/session-manager.d.ts.map +1 -1
- package/dist/services/session/session-manager.js +21 -0
- package/dist/services/session/session-manager.js.map +1 -1
- package/dist/services/session/session-stream-processor.d.ts.map +1 -1
- package/dist/services/session/session-stream-processor.js +13 -0
- package/dist/services/session/session-stream-processor.js.map +1 -1
- package/dist/services/session/session-tool-tracker.d.ts +14 -1
- package/dist/services/session/session-tool-tracker.d.ts.map +1 -1
- package/dist/services/session/session-tool-tracker.js +20 -5
- package/dist/services/session/session-tool-tracker.js.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts +12 -0
- package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -0
- package/dist/services/session/test-helpers/conversation-session-fixtures.js +29 -0
- package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -0
- package/dist/services/session/turn-attempt-factory.d.ts +1 -0
- package/dist/services/session/turn-attempt-factory.d.ts.map +1 -1
- package/dist/services/session/turn-attempt-factory.js +1 -1
- package/dist/services/session/turn-attempt-factory.js.map +1 -1
- package/dist/services/session/turn-coordinator.d.ts +3 -0
- package/dist/services/session/turn-coordinator.d.ts.map +1 -1
- package/dist/services/session/turn-coordinator.js +6 -6
- package/dist/services/session/turn-coordinator.js.map +1 -1
- package/dist/services/session/turn-executor.d.ts.map +1 -1
- package/dist/services/session/turn-executor.js +1 -0
- package/dist/services/session/turn-executor.js.map +1 -1
- package/dist/services/session-state-facade.d.ts +2 -2
- package/dist/services/session-state-facade.d.ts.map +1 -1
- package/dist/services/session-state-facade.js.map +1 -1
- package/dist/services/settings/settings-merger.d.ts.map +1 -1
- package/dist/services/settings/settings-merger.js +7 -5
- package/dist/services/settings/settings-merger.js.map +1 -1
- package/dist/services/settings/settings-persistence.js +1 -1
- package/dist/services/settings/settings-persistence.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +25 -0
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +23 -2
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +5 -0
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/shell-auto-approval-evaluator.js +1 -1
- package/dist/services/shell-auto-approval-evaluator.js.map +1 -1
- package/dist/services/skills/skills-service.d.ts.map +1 -1
- package/dist/services/skills/skills-service.js +12 -19
- package/dist/services/skills/skills-service.js.map +1 -1
- package/dist/services/skills/skills-service.test.js +19 -0
- package/dist/services/skills/skills-service.test.js.map +1 -1
- package/dist/services/subagents/reasoning-inheritance.test.d.ts +2 -0
- package/dist/services/subagents/reasoning-inheritance.test.d.ts.map +1 -0
- package/dist/services/subagents/reasoning-inheritance.test.js +73 -0
- package/dist/services/subagents/reasoning-inheritance.test.js.map +1 -0
- package/dist/services/subagents/role-loader.js +3 -3
- package/dist/services/subagents/role-loader.js.map +1 -1
- package/dist/services/subagents/subagent-manager-abort-state.test.d.ts +2 -0
- package/dist/services/subagents/subagent-manager-abort-state.test.d.ts.map +1 -0
- package/dist/services/subagents/subagent-manager-abort-state.test.js +36 -0
- package/dist/services/subagents/subagent-manager-abort-state.test.js.map +1 -0
- package/dist/services/subagents/subagent-manager-abort.test.d.ts +2 -0
- package/dist/services/subagents/subagent-manager-abort.test.d.ts.map +1 -0
- package/dist/services/subagents/subagent-manager-abort.test.js +3 -0
- package/dist/services/subagents/subagent-manager-abort.test.js.map +1 -0
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts +35 -0
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -0
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +174 -0
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -0
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +22 -3
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/services/tool-execution-ledger.d.ts +42 -1
- package/dist/services/tool-execution-ledger.d.ts.map +1 -1
- package/dist/services/tool-execution-ledger.js +117 -1
- package/dist/services/tool-execution-ledger.js.map +1 -1
- package/dist/services/turn-item-accumulator.d.ts +1 -1
- package/dist/services/turn-item-accumulator.d.ts.map +1 -1
- package/dist/tools/agent/activate-skill.js +1 -1
- package/dist/tools/agent/activate-skill.js.map +1 -1
- package/dist/tools/agent/ask-user.d.ts.map +1 -1
- package/dist/tools/agent/ask-user.js +4 -15
- package/dist/tools/agent/ask-user.js.map +1 -1
- package/dist/tools/agent/ask-user.test.js +50 -11
- package/dist/tools/agent/ask-user.test.js.map +1 -1
- package/dist/tools/agent/run-subagent.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent.js +2 -5
- package/dist/tools/agent/run-subagent.js.map +1 -1
- package/dist/tools/bash.d.ts +10 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +55 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/file/apply-patch.js +2 -2
- package/dist/tools/file/apply-patch.js.map +1 -1
- package/dist/tools/file/apply-patch.test.js +27 -0
- package/dist/tools/file/apply-patch.test.js.map +1 -1
- package/dist/tools/file/code-context.d.ts +27 -0
- package/dist/tools/file/code-context.d.ts.map +1 -0
- package/dist/tools/file/code-context.js +542 -0
- package/dist/tools/file/code-context.js.map +1 -0
- package/dist/tools/file/create-file.d.ts.map +1 -1
- package/dist/tools/file/create-file.js +2 -5
- package/dist/tools/file/create-file.js.map +1 -1
- package/dist/tools/file/create-file.test.js +24 -0
- package/dist/tools/file/create-file.test.js.map +1 -1
- package/dist/tools/file/find-files.d.ts.map +1 -1
- package/dist/tools/file/find-files.js +53 -28
- package/dist/tools/file/find-files.js.map +1 -1
- package/dist/tools/file/glob.d.ts +18 -0
- package/dist/tools/file/glob.d.ts.map +1 -0
- package/dist/tools/file/glob.js +216 -0
- package/dist/tools/file/glob.js.map +1 -0
- package/dist/tools/file/grep.d.ts +21 -0
- package/dist/tools/file/grep.d.ts.map +1 -0
- package/dist/tools/file/grep.js +221 -0
- package/dist/tools/file/grep.js.map +1 -0
- package/dist/tools/file/read-file.d.ts.map +1 -1
- package/dist/tools/file/read-file.js +24 -6
- package/dist/tools/file/read-file.js.map +1 -1
- package/dist/tools/file/search-replace.d.ts.map +1 -1
- package/dist/tools/file/search-replace.js +4 -6
- package/dist/tools/file/search-replace.js.map +1 -1
- package/dist/tools/file/search-replace.test.js +30 -0
- package/dist/tools/file/search-replace.test.js.map +1 -1
- package/dist/tools/format-helpers.js +0 -2
- package/dist/tools/format-helpers.js.map +1 -1
- package/dist/tools/language-providers.d.ts.map +1 -1
- package/dist/tools/language-providers.js +0 -379
- package/dist/tools/language-providers.js.map +1 -1
- package/dist/tools/languages/csharp.js +1 -1
- package/dist/tools/languages/csharp.js.map +1 -1
- package/dist/tools/languages/java.js +1 -1
- package/dist/tools/languages/java.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +2 -1
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/system/code-context.d.ts.map +1 -1
- package/dist/tools/system/code-context.js +28 -10
- package/dist/tools/system/code-context.js.map +1 -1
- package/dist/tools/system/grep.d.ts +4 -6
- package/dist/tools/system/grep.d.ts.map +1 -1
- package/dist/tools/system/grep.js +83 -50
- package/dist/tools/system/grep.js.map +1 -1
- package/dist/tools/system/shell.d.ts +10 -1
- package/dist/tools/system/shell.d.ts.map +1 -1
- package/dist/tools/system/shell.js +136 -10
- package/dist/tools/system/shell.js.map +1 -1
- package/dist/tools/types.d.ts +1 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/utils.d.ts +4 -0
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +17 -5
- package/dist/tools/utils.js.map +1 -1
- package/dist/tools/web/web-fetch.js +1 -1
- package/dist/tools/web/web-fetch.js.map +1 -1
- package/dist/utils/command-safety/handlers/script-handler.d.ts +3 -0
- package/dist/utils/command-safety/handlers/script-handler.d.ts.map +1 -0
- package/dist/utils/command-safety/handlers/script-handler.js +92 -0
- package/dist/utils/command-safety/handlers/script-handler.js.map +1 -0
- package/dist/utils/command-safety/handlers/script-handler.test.d.ts +2 -0
- package/dist/utils/command-safety/handlers/script-handler.test.d.ts.map +1 -0
- package/dist/utils/command-safety/handlers/script-handler.test.js +44 -0
- package/dist/utils/command-safety/handlers/script-handler.test.js.map +1 -0
- package/dist/utils/command-safety/index.test.d.ts +2 -0
- package/dist/utils/command-safety/index.test.d.ts.map +1 -0
- package/dist/utils/command-safety/index.test.js +22 -0
- package/dist/utils/command-safety/index.test.js.map +1 -0
- package/dist/utils/command-safety.d.ts +21 -0
- package/dist/utils/command-safety.d.ts.map +1 -0
- package/dist/utils/command-safety.devnull.test.d.ts +2 -0
- package/dist/utils/command-safety.devnull.test.d.ts.map +1 -0
- package/dist/utils/command-safety.devnull.test.js +13 -0
- package/dist/utils/command-safety.devnull.test.js.map +1 -0
- package/dist/utils/command-safety.js +348 -0
- package/dist/utils/command-safety.js.map +1 -0
- package/dist/utils/conversation/conversation-event-handler.js +1 -1
- package/dist/utils/conversation/conversation-event-handler.js.map +1 -1
- package/dist/utils/conversation/message-utils.d.ts +5 -0
- package/dist/utils/conversation/message-utils.d.ts.map +1 -1
- package/dist/utils/conversation/message-utils.js +20 -0
- package/dist/utils/conversation/message-utils.js.map +1 -1
- package/dist/utils/conversation/test-helpers/event-handler-fixtures.d.ts +31 -0
- package/dist/utils/conversation/test-helpers/event-handler-fixtures.d.ts.map +1 -0
- package/dist/utils/conversation/test-helpers/event-handler-fixtures.js +42 -0
- package/dist/utils/conversation/test-helpers/event-handler-fixtures.js.map +1 -0
- package/dist/utils/extract-command-messages.test.js +6 -6
- package/dist/utils/extract-command-messages.test.js.map +1 -1
- package/dist/utils/output/output-trim.d.ts +1 -1
- package/dist/utils/output/output-trim.js +1 -1
- package/dist/utils/project-tree.d.ts +7 -12
- package/dist/utils/project-tree.d.ts.map +1 -1
- package/dist/utils/project-tree.js +184 -83
- package/dist/utils/project-tree.js.map +1 -1
- package/dist/utils/provider-traffic-extractor.repro.test.d.ts +2 -0
- package/dist/utils/provider-traffic-extractor.repro.test.d.ts.map +1 -0
- package/dist/utils/provider-traffic-extractor.repro.test.js.map +1 -0
- package/dist/utils/settings-command.d.ts +2 -2
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +2 -2
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/shell/command-safety/find-helpers.js +1 -1
- package/dist/utils/shell/command-safety/find-helpers.js.map +1 -1
- package/dist/utils/shell/command-safety/handlers/git-handler.js +1 -1
- package/dist/utils/shell/command-safety/handlers/git-handler.js.map +1 -1
- package/dist/utils/shell/execute-shell.d.ts +2 -0
- package/dist/utils/shell/execute-shell.d.ts.map +1 -1
- package/dist/utils/shell/execute-shell.js +9 -6
- package/dist/utils/shell/execute-shell.js.map +1 -1
- package/dist/utils/shell/sandbox/denied-read-detector.d.ts +39 -0
- package/dist/utils/shell/sandbox/denied-read-detector.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/denied-read-detector.js +250 -0
- package/dist/utils/shell/sandbox/denied-read-detector.js.map +1 -0
- package/dist/utils/shell/sandbox/denied-read-stores.d.ts +74 -0
- package/dist/utils/shell/sandbox/denied-read-stores.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/denied-read-stores.js +166 -0
- package/dist/utils/shell/sandbox/denied-read-stores.js.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-env.d.ts +7 -0
- package/dist/utils/shell/sandbox/sandbox-env.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-env.js +40 -0
- package/dist/utils/shell/sandbox/sandbox-env.js.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts +41 -0
- package/dist/utils/shell/sandbox/sandbox-policy.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/sandbox-policy.js +217 -0
- package/dist/utils/shell/sandbox/sandbox-policy.js.map +1 -0
- package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts +18 -0
- package/dist/utils/shell/sandbox/shell-sandbox-runner.d.ts.map +1 -0
- package/dist/utils/shell/sandbox/shell-sandbox-runner.js +58 -0
- package/dist/utils/shell/sandbox/shell-sandbox-runner.js.map +1 -0
- package/dist/utils/shell/shell-output.d.ts.map +1 -1
- package/dist/utils/shell/shell-output.js +8 -6
- package/dist/utils/shell/shell-output.js.map +1 -1
- package/dist/utils/shell/temp-dir.d.ts +10 -0
- package/dist/utils/shell/temp-dir.d.ts.map +1 -0
- package/dist/utils/shell/temp-dir.js +68 -0
- package/dist/utils/shell/temp-dir.js.map +1 -0
- package/dist/utils/skill-discovery-paths.d.ts +5 -0
- package/dist/utils/skill-discovery-paths.d.ts.map +1 -0
- package/dist/utils/skill-discovery-paths.js +18 -0
- package/dist/utils/skill-discovery-paths.js.map +1 -0
- package/package.json +10 -16
- package/dist/components/ModelSelectionMenu.debug.test.d.ts +0 -2
- package/dist/components/ModelSelectionMenu.debug.test.d.ts.map +0 -1
- package/dist/components/ModelSelectionMenu.debug.test.js.map +0 -1
- package/dist/hooks/conversation-ui-reducer.multi-select.test.d.ts +0 -2
- package/dist/hooks/conversation-ui-reducer.multi-select.test.d.ts.map +0 -1
- package/dist/hooks/conversation-ui-reducer.multi-select.test.js +0 -123
- package/dist/hooks/conversation-ui-reducer.multi-select.test.js.map +0 -1
- package/dist/hooks/use-conversation.ask-user-multi-select.test.d.ts +0 -2
- package/dist/hooks/use-conversation.ask-user-multi-select.test.d.ts.map +0 -1
- package/dist/hooks/use-conversation.ask-user-multi-select.test.js +0 -159
- package/dist/hooks/use-conversation.ask-user-multi-select.test.js.map +0 -1
- package/dist/inspect_zod.d.ts +0 -2
- package/dist/inspect_zod.d.ts.map +0 -1
- package/dist/inspect_zod.js +0 -16
- package/dist/inspect_zod.js.map +0 -1
- package/dist/prompts/simple_prev2.md +0 -33
- package/dist/services/conversation-result-resolver.d.ts +0 -25
- package/dist/services/conversation-result-resolver.d.ts.map +0 -1
- package/dist/services/conversation-result-resolver.js +0 -79
- package/dist/services/conversation-result-resolver.js.map +0 -1
- package/dist/services/conversation-result-resolver.test.d.ts +0 -2
- package/dist/services/conversation-result-resolver.test.d.ts.map +0 -1
- package/dist/services/conversation-result-resolver.test.js +0 -186
- package/dist/services/conversation-result-resolver.test.js.map +0 -1
- package/dist/services/session-state-controller.test.d.ts +0 -2
- package/dist/services/session-state-controller.test.d.ts.map +0 -1
- package/dist/services/session-state-controller.test.js +0 -125
- package/dist/services/session-state-controller.test.js.map +0 -1
- package/dist/services/turn-execution-orchestrator.d.ts +0 -79
- package/dist/services/turn-execution-orchestrator.d.ts.map +0 -1
- package/dist/services/turn-execution-orchestrator.js +0 -687
- package/dist/services/turn-execution-orchestrator.js.map +0 -1
- package/dist/services/turn-execution-orchestrator.test.d.ts +0 -2
- package/dist/services/turn-execution-orchestrator.test.d.ts.map +0 -1
- package/dist/services/turn-execution-orchestrator.test.js +0 -236
- package/dist/services/turn-execution-orchestrator.test.js.map +0 -1
- package/dist/utils/command-safety/_scratch-classify.test.d.ts +0 -2
- package/dist/utils/command-safety/_scratch-classify.test.d.ts.map +0 -1
- package/dist/utils/command-safety/_scratch-classify.test.js +0 -22
- package/dist/utils/command-safety/_scratch-classify.test.js.map +0 -1
- package/dist/utils/command-safety/scratch-classify.test.d.ts +0 -2
- package/dist/utils/command-safety/scratch-classify.test.d.ts.map +0 -1
- package/dist/utils/command-safety/scratch-classify.test.js +0 -22
- package/dist/utils/command-safety/scratch-classify.test.js.map +0 -1
- package/dist/utils/command-safety/scratch-tally.test.d.ts +0 -2
- package/dist/utils/command-safety/scratch-tally.test.d.ts.map +0 -1
- package/dist/utils/command-safety/scratch-tally.test.js +0 -68
- package/dist/utils/command-safety/scratch-tally.test.js.map +0 -1
- package/dist/utils/project-tree.test.d.ts +0 -2
- package/dist/utils/project-tree.test.d.ts.map +0 -1
- package/dist/utils/project-tree.test.js +0 -149
- package/dist/utils/project-tree.test.js.map +0 -1
- package/dist/utils/terminal-clear.d.ts +0 -7
- package/dist/utils/terminal-clear.d.ts.map +0 -1
- package/dist/utils/terminal-clear.js +0 -5
- package/dist/utils/terminal-clear.js.map +0 -1
- package/dist/utils/terminal-clear.test.d.ts +0 -2
- package/dist/utils/terminal-clear.test.d.ts.map +0 -1
- package/dist/utils/terminal-clear.test.js +0 -13
- package/dist/utils/terminal-clear.test.js.map +0 -1
- package/dist/utils/test-render.d.ts +0 -14
- package/dist/utils/test-render.d.ts.map +0 -1
- package/dist/utils/test-render.js +0 -44
- package/dist/utils/test-render.js.map +0 -1
- package/readme.md +0 -887
- /package/dist/components/{Input → input}/input-width.test.d.ts +0 -0
- /package/dist/components/{Input → input}/input-width.test.d.ts.map +0 -0
- /package/dist/components/{Input → input}/input-width.test.js +0 -0
- /package/dist/components/{Input → input}/input-width.test.js.map +0 -0
- /package/dist/components/{Input → input}/insertions.test.d.ts +0 -0
- /package/dist/components/{Input → input}/insertions.test.d.ts.map +0 -0
- /package/dist/components/{Input → input}/insertions.test.js +0 -0
- /package/dist/components/{Input → input}/insertions.test.js.map +0 -0
|
@@ -10,6 +10,13 @@ import { setTrimConfig, getTrimConfig, DEFAULT_TRIM_CONFIG, } from '../../utils/
|
|
|
10
10
|
import { formatShellExecutionOutput } from '../../utils/shell/shell-output.js';
|
|
11
11
|
import { coerceToText, getOutputText, normalizeToolArguments, createBaseMessage, getCallIdFromItem, } from '../format-helpers.js';
|
|
12
12
|
import { ensureRtkInstalled, isRtkSupportedCommand, wrapWithRtk } from '../../services/rtk-service.js';
|
|
13
|
+
import { shouldPreferPatchEditingModel } from '../../lib/tool-selection-policy.js';
|
|
14
|
+
import { createSandboxEnvironment } from '../../utils/shell/sandbox/sandbox-env.js';
|
|
15
|
+
import { SANDBOX_ESCAPE_INSTRUCTION, createSandboxRuntimeConfig, } from '../../utils/shell/sandbox/sandbox-policy.js';
|
|
16
|
+
import { getDefaultShellSandboxRunner } from '../../utils/shell/sandbox/shell-sandbox-runner.js';
|
|
17
|
+
import { detectDeniedRead, DETAILED_DENIED_READ_INSTRUCTION } from '../../utils/shell/sandbox/denied-read-detector.js';
|
|
18
|
+
import { deniedReadStore, executionOverrideStore, getProjectAllowReadStore, } from '../../utils/shell/sandbox/denied-read-stores.js';
|
|
19
|
+
const shellSandboxModeSchema = z.enum(['default', 'unsandboxed']).optional().default('default');
|
|
13
20
|
const shellParametersSchema = z.object({
|
|
14
21
|
command: z.string().min(1).describe('Single shell command to execute.'),
|
|
15
22
|
timeout_ms: relaxedNumber
|
|
@@ -21,7 +28,8 @@ const shellParametersSchema = z.object({
|
|
|
21
28
|
.int()
|
|
22
29
|
.positive()
|
|
23
30
|
.optional()
|
|
24
|
-
.describe('Optional maximum output length in characters for each command. Outputs exceeding this length will be trimmed. Defaults to
|
|
31
|
+
.describe('Optional maximum output length in characters for each command. Outputs exceeding this length will be trimmed. Defaults to 40000 characters if not specified.'),
|
|
32
|
+
sandbox: shellSandboxModeSchema.describe('Run mode. default runs inside the sandbox when available. unsandboxed requires explicit user approval.'),
|
|
25
33
|
});
|
|
26
34
|
// Re-export trim utilities for backwards compatibility
|
|
27
35
|
export { setTrimConfig, getTrimConfig, DEFAULT_TRIM_CONFIG };
|
|
@@ -143,23 +151,54 @@ export const formatShellCommandMessage = (item, index, toolCallArgumentsById) =>
|
|
|
143
151
|
}),
|
|
144
152
|
];
|
|
145
153
|
};
|
|
146
|
-
const
|
|
147
|
-
'Long output is
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
154
|
+
const getShellDescription = (searchViaShell) => 'Execute a single shell command. ' +
|
|
155
|
+
'Long output is truncated and the full output is saved to a file; ' +
|
|
156
|
+
(searchViaShell
|
|
157
|
+
? 'Do NOT use this to write. Use the specialized tools for those tasks. '
|
|
158
|
+
: 'Do NOT use this to read, write or search. Use the specialized tools for those tasks. ') +
|
|
159
|
+
'Do NOT write multi-line inline scripts, it is prone to escaping mistakes. Create a temporary script then use this tool to run it. ' +
|
|
160
|
+
'Do NOT use this for complex multi-step edits or broad codebase exploration; use `run_subagent` instead.';
|
|
161
|
+
const SHELL_DESCRIPTION_ORCHESTRATOR = 'Execute a single shell command to verify state (e.g., run tests, check git status, or verify a subagent\'s work). 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; ' +
|
|
162
|
+
'For performing complex operations or making changes, prefer delegating to a `worker` subagent via `run_subagent`.';
|
|
151
163
|
export function createShellToolDefinition(deps) {
|
|
152
|
-
const { loggingService, settingsService, executionContext, rtkInstaller = ensureRtkInstalled, executeShellCommandImpl = executeShellCommand, orchestratorMode = false, } = deps;
|
|
164
|
+
const { loggingService, settingsService, executionContext, rtkInstaller = ensureRtkInstalled, executeShellCommandImpl = executeShellCommand, shellSandboxRunner = getDefaultShellSandboxRunner(), orchestratorMode = false, searchViaShell: searchViaShellExplicit, } = deps;
|
|
153
165
|
// Create command logger function with dependencies
|
|
154
166
|
const logValidationError = (message) => logValidationErrorUtil(settingsService, message);
|
|
155
|
-
const
|
|
167
|
+
const searchViaShellSetting = settingsService.get('app.searchViaShell') ?? 'auto';
|
|
168
|
+
const resolvedSearchViaShell = searchViaShellExplicit ??
|
|
169
|
+
(searchViaShellSetting === 'auto'
|
|
170
|
+
? (() => {
|
|
171
|
+
const model = settingsService.get('agent.model');
|
|
172
|
+
return model ? shouldPreferPatchEditingModel(model) : false;
|
|
173
|
+
})()
|
|
174
|
+
: searchViaShellSetting === 'on');
|
|
175
|
+
const shellDescription = orchestratorMode
|
|
176
|
+
? SHELL_DESCRIPTION_ORCHESTRATOR
|
|
177
|
+
: getShellDescription(resolvedSearchViaShell);
|
|
156
178
|
return {
|
|
157
179
|
name: 'shell',
|
|
158
180
|
description: shellDescription,
|
|
159
181
|
parameters: shellParametersSchema,
|
|
160
182
|
needsApproval: async (params) => {
|
|
161
183
|
try {
|
|
184
|
+
if (params.sandbox === 'unsandboxed') {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
162
187
|
const cwd = executionContext?.getCwd() || process.cwd();
|
|
188
|
+
const sshService = executionContext?.getSSHService();
|
|
189
|
+
const sandboxEnabled = settingsService.get('sandbox.enabled') !== false;
|
|
190
|
+
if (!sshService && sandboxEnabled) {
|
|
191
|
+
// If a previous sandboxed run denied a read for this command, require
|
|
192
|
+
// approval so the user can allow/remember the path or escape unsandboxed.
|
|
193
|
+
if (deniedReadStore.peek(params.command)) {
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
const availability = await shellSandboxRunner.availability();
|
|
197
|
+
if (availability.type === 'available') {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
163
202
|
const isDangerous = isMutatingCommand(params.command, cwd, loggingService);
|
|
164
203
|
// Log security event for all shell commands with dangerous flag
|
|
165
204
|
loggingService.security('Shell tool needsApproval check', {
|
|
@@ -179,7 +218,7 @@ export function createShellToolDefinition(deps) {
|
|
|
179
218
|
return true; // fail-safe: require approval on validation errors
|
|
180
219
|
}
|
|
181
220
|
},
|
|
182
|
-
execute: async ({ command, timeout_ms, max_output_length }, _context, details) => {
|
|
221
|
+
execute: async ({ command, timeout_ms, max_output_length, sandbox = 'default' }, _context, details) => {
|
|
183
222
|
const cwd = executionContext?.getCwd() || process.cwd();
|
|
184
223
|
if (settingsService.get('app.planMode') && isMutatingCommand(command, cwd, loggingService)) {
|
|
185
224
|
return `Error: plan mode is read-only. Command not executed: ${command}`;
|
|
@@ -188,6 +227,7 @@ export function createShellToolDefinition(deps) {
|
|
|
188
227
|
const previousCorrelationId = loggingService.getCorrelationId();
|
|
189
228
|
const correlationId = randomUUID();
|
|
190
229
|
const startedAt = Date.now();
|
|
230
|
+
let sandboxed = false;
|
|
191
231
|
// Set correlation ID for tracking related operations
|
|
192
232
|
loggingService.setCorrelationId(correlationId);
|
|
193
233
|
try {
|
|
@@ -213,6 +253,7 @@ export function createShellToolDefinition(deps) {
|
|
|
213
253
|
});
|
|
214
254
|
}
|
|
215
255
|
let commandToRun = optimizedCommand;
|
|
256
|
+
let sandboxAvailability;
|
|
216
257
|
if (!sshService &&
|
|
217
258
|
settingsService.get('shell.useRtkCompression') &&
|
|
218
259
|
isRtkSupportedCommand(optimizedCommand)) {
|
|
@@ -222,15 +263,97 @@ export function createShellToolDefinition(deps) {
|
|
|
222
263
|
loggingService.debug('Wrapped command with rtk', { rtkPath, original: optimizedCommand });
|
|
223
264
|
}
|
|
224
265
|
}
|
|
266
|
+
// Consume any execution override set by a denied-read approval decision.
|
|
267
|
+
// This is a one-shot override for this single execution only.
|
|
268
|
+
const override = executionOverrideStore.consume(command);
|
|
269
|
+
if (override?.forceUnsandboxed) {
|
|
270
|
+
sandbox = 'unsandboxed';
|
|
271
|
+
loggingService.debug('Shell executing unsandboxed by approved override', {
|
|
272
|
+
command: optimizedCommand.substring(0, 100),
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
const extraAllowReadFromOverride = override?.extraAllowRead ?? [];
|
|
276
|
+
const sandboxEnabled = settingsService.get('sandbox.enabled') !== false;
|
|
277
|
+
if (!sshService && sandbox === 'default' && sandboxEnabled) {
|
|
278
|
+
sandboxAvailability = await shellSandboxRunner.availability();
|
|
279
|
+
if (sandboxAvailability.type === 'available') {
|
|
280
|
+
try {
|
|
281
|
+
const projectAllowRead = getProjectAllowReadStore(cwd).load();
|
|
282
|
+
const sandboxConfig = createSandboxRuntimeConfig({
|
|
283
|
+
cwd,
|
|
284
|
+
readPolicy: settingsService.get('sandbox.readPolicy'),
|
|
285
|
+
allowReadExtra: [
|
|
286
|
+
...(settingsService.get('sandbox.allowReadExtra') ?? []),
|
|
287
|
+
...projectAllowRead,
|
|
288
|
+
...extraAllowReadFromOverride,
|
|
289
|
+
],
|
|
290
|
+
onProtectedFiltered: (filtered) => {
|
|
291
|
+
loggingService.info('Shell sandbox removed write access to protected paths', {
|
|
292
|
+
filtered,
|
|
293
|
+
cwd,
|
|
294
|
+
});
|
|
295
|
+
},
|
|
296
|
+
});
|
|
297
|
+
const wrapped = await shellSandboxRunner.wrap(commandToRun, {
|
|
298
|
+
cwd,
|
|
299
|
+
config: sandboxConfig,
|
|
300
|
+
signal: details?.signal,
|
|
301
|
+
});
|
|
302
|
+
commandToRun = wrapped.command;
|
|
303
|
+
sandboxed = true;
|
|
304
|
+
if (wrapped.diagnostics?.length) {
|
|
305
|
+
loggingService.debug('Shell sandbox diagnostics', { diagnostics: wrapped.diagnostics });
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
loggingService.warn('Shell sandbox initialization failed; refusing unsandboxed fallback', {
|
|
310
|
+
error: error instanceof Error ? error.message : String(error),
|
|
311
|
+
});
|
|
312
|
+
return `Error: ${SANDBOX_ESCAPE_INSTRUCTION}`;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
else if (sandboxAvailability.type !== 'disabled') {
|
|
316
|
+
loggingService.warn('Shell sandbox unavailable; running command without sandbox', {
|
|
317
|
+
availability: sandboxAvailability.type,
|
|
318
|
+
reason: 'reason' in sandboxAvailability ? sandboxAvailability.reason : undefined,
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
}
|
|
225
322
|
const result = await executeShellCommandImpl(commandToRun, {
|
|
226
323
|
cwd,
|
|
227
324
|
timeout,
|
|
228
325
|
maxBuffer: 1024 * 1024, // 1MB max buffer
|
|
326
|
+
env: sandboxed
|
|
327
|
+
? createSandboxEnvironment(undefined, {
|
|
328
|
+
cwd,
|
|
329
|
+
readPolicy: settingsService.get('sandbox.readPolicy'),
|
|
330
|
+
})
|
|
331
|
+
: undefined,
|
|
229
332
|
signal: details?.signal,
|
|
230
333
|
sshService,
|
|
231
334
|
});
|
|
232
335
|
const stdout = result.stdout ?? '';
|
|
233
|
-
const
|
|
336
|
+
const rawStderr = stripRtkWarning(result.stderr ?? '');
|
|
337
|
+
const annotatedStderr = sandboxed ? shellSandboxRunner.annotateFailure(optimizedCommand, rawStderr) : rawStderr;
|
|
338
|
+
const sandboxViolation = sandboxed && annotatedStderr !== rawStderr;
|
|
339
|
+
// If the sandbox denied a read under strict, try to extract the denied
|
|
340
|
+
// path so the agent's retry triggers a 4-option approval prompt.
|
|
341
|
+
const readPolicy = settingsService.get('sandbox.readPolicy');
|
|
342
|
+
if (sandboxed && readPolicy === 'strict') {
|
|
343
|
+
const deniedInfo = detectDeniedRead(optimizedCommand, annotatedStderr);
|
|
344
|
+
if (deniedInfo) {
|
|
345
|
+
deniedReadStore.record(optimizedCommand, deniedInfo);
|
|
346
|
+
loggingService.security('Sandbox denied read; agent retry will prompt for approval', {
|
|
347
|
+
deniedPath: deniedInfo.path,
|
|
348
|
+
suggestedParent: deniedInfo.suggestedParent,
|
|
349
|
+
sensitive: deniedInfo.sensitive,
|
|
350
|
+
command: optimizedCommand.substring(0, 100),
|
|
351
|
+
correlationId,
|
|
352
|
+
});
|
|
353
|
+
return `Error: ${DETAILED_DENIED_READ_INSTRUCTION}`;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
const stderr = sandboxViolation ? `${annotatedStderr}\n\n${SANDBOX_ESCAPE_INSTRUCTION}` : annotatedStderr;
|
|
234
357
|
const exitCode = result.exitCode ?? null;
|
|
235
358
|
const outcome = result.timedOut
|
|
236
359
|
? { type: 'timeout' }
|
|
@@ -275,6 +398,9 @@ export function createShellToolDefinition(deps) {
|
|
|
275
398
|
return formattedOutput.text;
|
|
276
399
|
}
|
|
277
400
|
finally {
|
|
401
|
+
if (sandboxed) {
|
|
402
|
+
await shellSandboxRunner.cleanupAfterCommand?.();
|
|
403
|
+
}
|
|
278
404
|
if (previousCorrelationId) {
|
|
279
405
|
loggingService.setCorrelationId(previousCorrelationId);
|
|
280
406
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../source/tools/system/shell.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../source/tools/system/shell.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/types.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { ApprovalPresentationCapability } from './tool-capabilities.js';
|
|
|
3
3
|
export interface CommandMessage {
|
|
4
4
|
id: string;
|
|
5
5
|
sender: 'command';
|
|
6
|
-
status: 'pending' | 'running' | 'completed' | 'failed';
|
|
6
|
+
status: 'pending' | 'running' | 'completed' | 'failed' | 'aborted';
|
|
7
7
|
command: string;
|
|
8
8
|
output: string;
|
|
9
9
|
success?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../source/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../source/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,IAAI,EAAE,OAAO,qBAAqB,EAAE,cAAc,EAClD,KAAK,EAAE,MAAM,EACb,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,KACxC,cAAc,EAAE,CAAC;AAEtB,MAAM,WAAW,cAAc,CAAC,MAAM,GAAG,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACtC,oBAAoB,CAAC,EAAE,8BAA8B,CAAC;IACtD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjF,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACtF;;;;;;OAMG;IACH,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C"}
|
package/dist/tools/utils.d.ts
CHANGED
|
@@ -8,6 +8,10 @@ export declare function resolveWorkspacePath(relativePath: string, baseDir?: str
|
|
|
8
8
|
* Intended for Lite Mode read-only tools.
|
|
9
9
|
*/
|
|
10
10
|
allowOutsideWorkspace?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* If true, paths under skill discovery directories are allowed even when outside baseDir.
|
|
13
|
+
*/
|
|
14
|
+
allowDiscoveredSkillFolders?: boolean;
|
|
11
15
|
}): string;
|
|
12
16
|
/**
|
|
13
17
|
* A Zod schema that allows either a number or a string that can be parsed as a number.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../source/tools/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../source/tools/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,MAAsB,EAC/B,OAAO,CAAC,EAAE;IACR;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,GACA,MAAM,CAkDR;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,6BAAoB,CAAC"}
|
package/dist/tools/utils.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { homedir } from 'os';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
+
import { getDiscoveredSkillRoots } from '../utils/skill-discovery-paths.js';
|
|
5
|
+
import { SANDBOX_TEMP_DIR } from '../utils/shell/temp-dir.js';
|
|
4
6
|
/**
|
|
5
7
|
* Resolves a relative path and ensures it's within the workspace
|
|
6
8
|
*/
|
|
7
9
|
export function resolveWorkspacePath(relativePath, baseDir = process.cwd(), options) {
|
|
8
10
|
const allowOutsideWorkspace = options?.allowOutsideWorkspace ?? false;
|
|
11
|
+
const allowDiscoveredSkillFolders = options?.allowDiscoveredSkillFolders ?? false;
|
|
9
12
|
// Expand ~ if the path starts with it
|
|
10
13
|
const expandedPath = relativePath.startsWith('~') ? relativePath.replace(/^~/, homedir()) : relativePath;
|
|
11
14
|
const resolved = path.isAbsolute(expandedPath) ? path.normalize(expandedPath) : path.resolve(baseDir, expandedPath);
|
|
@@ -18,15 +21,24 @@ export function resolveWorkspacePath(relativePath, baseDir = process.cwd(), opti
|
|
|
18
21
|
const basePrefix = normalizedBaseDir.endsWith(path.sep) ? normalizedBaseDir : normalizedBaseDir + path.sep;
|
|
19
22
|
let isInside = normalizedResolved === normalizedBaseDir || normalizedResolved.startsWith(basePrefix);
|
|
20
23
|
if (!isInside) {
|
|
21
|
-
// Check if the path is in
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
normalizedResolved === '/private/tmp' ||
|
|
25
|
-
normalizedResolved.startsWith('/private/tmp' + path.sep);
|
|
24
|
+
// Check if the path is in the sandbox-specific temp directory.
|
|
25
|
+
// Only the app's own temp dir is allowed — not the entire /tmp tree.
|
|
26
|
+
const isTempDir = normalizedResolved === SANDBOX_TEMP_DIR || normalizedResolved.startsWith(SANDBOX_TEMP_DIR + path.sep);
|
|
26
27
|
if (isTempDir) {
|
|
27
28
|
isInside = true;
|
|
28
29
|
}
|
|
29
30
|
}
|
|
31
|
+
if (!isInside && allowDiscoveredSkillFolders) {
|
|
32
|
+
const isWithin = (targetPath, rootPath) => {
|
|
33
|
+
const normalizedRoot = path.resolve(rootPath);
|
|
34
|
+
const rootPrefix = normalizedRoot.endsWith(path.sep) ? normalizedRoot : normalizedRoot + path.sep;
|
|
35
|
+
return targetPath === normalizedRoot || targetPath.startsWith(rootPrefix);
|
|
36
|
+
};
|
|
37
|
+
const discoveredSkillRoots = getDiscoveredSkillRoots(normalizedBaseDir, homedir());
|
|
38
|
+
if (discoveredSkillRoots.some((rootPath) => isWithin(normalizedResolved, rootPath))) {
|
|
39
|
+
isInside = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
30
42
|
if (!isInside) {
|
|
31
43
|
throw new Error(`Operation outside workspace: ${relativePath}`);
|
|
32
44
|
}
|
package/dist/tools/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../source/tools/utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../source/tools/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ const webFetchSchema = z.object({
|
|
|
18
18
|
.max(MAX_CHARS_LIMIT)
|
|
19
19
|
.optional()
|
|
20
20
|
.default(DEFAULT_MAX_CHARS)
|
|
21
|
-
.describe(
|
|
21
|
+
.describe('Maximum number of characters to return.'),
|
|
22
22
|
heading: z
|
|
23
23
|
.array(z.union([z.string(), z.number()]))
|
|
24
24
|
.optional()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../source/tools/web/web-fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGnH,MAAM,qBAAqB,GACzB,6DAA6D;IAC7D,kGAAkG;IAClG,qDAAqD;IACrD,0EAA0E;IAC1E,0GAA0G,CAAC;AAE7G,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;IAC7D,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,GAAG,CAAC,eAAe,CAAC;SACpB,QAAQ,EAAE;SACV,OAAO,CAAC,iBAAiB,CAAC;SAC1B,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../source/tools/web/web-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-handler.d.ts","sourceRoot":"","sources":["../../../../source/utils/command-safety/handlers/script-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAA+C,MAAM,YAAY,CAAC;AA0E9F,eAAO,MAAM,aAAa,EAAE,cAyC3B,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { SafetyStatus } from '../constants.js';
|
|
2
|
+
const INLINE_EVAL_FLAGS = new Set(['-e', '--eval', '-p']);
|
|
3
|
+
const INTERPRETER_METADATA_FLAGS = new Set(['-h', '--help', '-v', '--version']);
|
|
4
|
+
const SHELL_INTERPRETERS = new Set(['bash', 'sh', 'zsh', 'dash']);
|
|
5
|
+
const SCRIPT_INTERPRETERS = new Set(['node', 'nodejs', 'python', 'python3']);
|
|
6
|
+
const SCRIPT_EXTENSIONS = ['.js', '.mjs', '.cjs', '.ts', '.tsx', '.py', '.sh', '.bash', '.zsh', '.dash', '.pl', '.rb'];
|
|
7
|
+
function getCommandName(node, extractWordText) {
|
|
8
|
+
return node?.name?.text || (node?.name && extractWordText(node.name));
|
|
9
|
+
}
|
|
10
|
+
function getSuffixWords(node, extractWordText) {
|
|
11
|
+
if (!Array.isArray(node?.suffix)) {
|
|
12
|
+
return [];
|
|
13
|
+
}
|
|
14
|
+
return node.suffix
|
|
15
|
+
.map((arg) => extractWordText(arg))
|
|
16
|
+
.filter((value) => {
|
|
17
|
+
return typeof value === 'string' && value.length > 0;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function isMetadataCommand(args) {
|
|
21
|
+
return args.some((arg) => INTERPRETER_METADATA_FLAGS.has(arg));
|
|
22
|
+
}
|
|
23
|
+
function isInlineEvalCommand(args) {
|
|
24
|
+
return args.some((arg) => INLINE_EVAL_FLAGS.has(arg));
|
|
25
|
+
}
|
|
26
|
+
function isInlineShellCommand(args) {
|
|
27
|
+
return args.some((arg) => {
|
|
28
|
+
if (!arg.startsWith('-') || arg.startsWith('--')) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return arg.includes('c');
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function isLikelyScriptPath(value) {
|
|
35
|
+
if (!value || value.startsWith('-') || value.startsWith('--')) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (value.startsWith('/')) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
if (value.startsWith('./') || value.startsWith('../')) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
if (value.includes('/')) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
return SCRIPT_EXTENSIONS.some((extension) => value.endsWith(extension));
|
|
48
|
+
}
|
|
49
|
+
function buildSandboxResult(reason) {
|
|
50
|
+
return {
|
|
51
|
+
status: SafetyStatus.YELLOW,
|
|
52
|
+
reasons: [reason],
|
|
53
|
+
execution: {
|
|
54
|
+
requiresSandbox: true,
|
|
55
|
+
sandboxReason: reason,
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export const scriptHandler = {
|
|
60
|
+
handle(node, helpers) {
|
|
61
|
+
const { extractWordText } = helpers;
|
|
62
|
+
const commandName = getCommandName(node, extractWordText);
|
|
63
|
+
const args = getSuffixWords(node, extractWordText);
|
|
64
|
+
if (!commandName) {
|
|
65
|
+
return { status: SafetyStatus.GREEN, reasons: [] };
|
|
66
|
+
}
|
|
67
|
+
if (SCRIPT_INTERPRETERS.has(commandName)) {
|
|
68
|
+
if (isMetadataCommand(args)) {
|
|
69
|
+
return { status: SafetyStatus.GREEN, reasons: [] };
|
|
70
|
+
}
|
|
71
|
+
if (isInlineEvalCommand(args)) {
|
|
72
|
+
return buildSandboxResult(`${commandName} inline evaluation requires sandbox`);
|
|
73
|
+
}
|
|
74
|
+
if ((commandName === 'python' || commandName === 'python3') && args.includes('-c')) {
|
|
75
|
+
return buildSandboxResult(`${commandName} inline evaluation requires sandbox`);
|
|
76
|
+
}
|
|
77
|
+
const firstPositionalArg = args.find((arg) => !arg.startsWith('-'));
|
|
78
|
+
if (firstPositionalArg && isLikelyScriptPath(firstPositionalArg)) {
|
|
79
|
+
return buildSandboxResult(`${commandName} script execution requires sandbox: ${firstPositionalArg}`);
|
|
80
|
+
}
|
|
81
|
+
return { status: SafetyStatus.GREEN, reasons: [] };
|
|
82
|
+
}
|
|
83
|
+
if (SHELL_INTERPRETERS.has(commandName) && isInlineShellCommand(args)) {
|
|
84
|
+
return buildSandboxResult(`${commandName} inline shell execution requires sandbox`);
|
|
85
|
+
}
|
|
86
|
+
if (isLikelyScriptPath(commandName)) {
|
|
87
|
+
return buildSandboxResult(`local script execution requires sandbox: ${commandName}`);
|
|
88
|
+
}
|
|
89
|
+
return { status: SafetyStatus.GREEN, reasons: [] };
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=script-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-handler.js","sourceRoot":"","sources":["../../../../source/utils/command-safety/handlers/script-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-handler.test.d.ts","sourceRoot":"","sources":["../../../../source/utils/command-safety/handlers/script-handler.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import test from 'ava';
|
|
2
|
+
import { SafetyStatus } from '../constants.js';
|
|
3
|
+
import { classifyCommandDetailed } from '../index.js';
|
|
4
|
+
test('script handler classifies inline interpreter eval commands as sandbox-required', (t) => {
|
|
5
|
+
const cases = [
|
|
6
|
+
'node -e "console.log(1)"',
|
|
7
|
+
'node --eval "console.log(1)"',
|
|
8
|
+
'node -p "1 + 1"',
|
|
9
|
+
'python -c "print(1)"',
|
|
10
|
+
'python3 -c "print(1)"',
|
|
11
|
+
'bash -c "echo hello"',
|
|
12
|
+
'sh -c "echo hello"',
|
|
13
|
+
'zsh -c "echo hello"',
|
|
14
|
+
'dash -c "echo hello"',
|
|
15
|
+
];
|
|
16
|
+
for (const command of cases) {
|
|
17
|
+
const result = classifyCommandDetailed(command);
|
|
18
|
+
t.is(result.status, SafetyStatus.YELLOW, command);
|
|
19
|
+
t.true(result.execution.requiresSandbox, command);
|
|
20
|
+
t.truthy(result.execution.sandboxReason, command);
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
test('script handler classifies direct script targets as sandbox-required', (t) => {
|
|
24
|
+
const cases = ['node temp.js', 'python test.py', './run.sh', 'scripts/build.sh', 'node_modules/.bin/eslint'];
|
|
25
|
+
for (const command of cases) {
|
|
26
|
+
const result = classifyCommandDetailed(command);
|
|
27
|
+
t.is(result.status, SafetyStatus.YELLOW, command);
|
|
28
|
+
t.true(result.execution.requiresSandbox, command);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
test('script handler leaves interpreter metadata commands as green', (t) => {
|
|
32
|
+
const cases = ['node --version', 'python --version', 'bash --version', 'sh --help'];
|
|
33
|
+
for (const command of cases) {
|
|
34
|
+
const result = classifyCommandDetailed(command);
|
|
35
|
+
t.is(result.status, SafetyStatus.GREEN, command);
|
|
36
|
+
t.false(result.execution.requiresSandbox ?? false, command);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
test('script handler propagates sandbox requirement through nested command substitutions', (t) => {
|
|
40
|
+
const result = classifyCommandDetailed('echo $(node -e "console.log(1)")');
|
|
41
|
+
t.is(result.status, SafetyStatus.YELLOW);
|
|
42
|
+
t.true(result.execution.requiresSandbox);
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=script-handler.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-handler.test.js","sourceRoot":"","sources":["../../../../source/utils/command-safety/handlers/script-handler.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,IAAI,CAAC,gFAAgF,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3F,MAAM,KAAK,GAAG;QACZ,0BAA0B;QAC1B,8BAA8B;QAC9B,iBAAiB;QACjB,sBAAsB;QACtB,uBAAuB;QACvB,sBAAsB;QACtB,oBAAoB;QACpB,qBAAqB;QACrB,sBAAsB;KACvB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,CAAC,CAAC,EAAE,EAAE;IAChF,MAAM,KAAK,GAAG,CAAC,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,CAAC;IAE7G,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8DAA8D,EAAE,CAAC,CAAC,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAEpF,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAChD,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,IAAI,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oFAAoF,EAAE,CAAC,CAAC,EAAE,EAAE;IAC/F,MAAM,MAAM,GAAG,uBAAuB,CAAC,kCAAkC,CAAC,CAAC;IAE3E,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../source/utils/command-safety/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import test from 'ava';
|
|
2
|
+
import { classifyCommandDetailed, validateCommandSafety } from './index.js';
|
|
3
|
+
import { SafetyStatus } from './constants.js';
|
|
4
|
+
test('classifyCommandDetailed returns merged execution metadata for sandbox-required commands', (t) => {
|
|
5
|
+
const result = classifyCommandDetailed('node -e "console.log(1)"');
|
|
6
|
+
t.is(result.status, SafetyStatus.YELLOW);
|
|
7
|
+
t.true(result.reasons.length > 0);
|
|
8
|
+
t.deepEqual(result.execution, {
|
|
9
|
+
requiresSandbox: true,
|
|
10
|
+
sandboxReason: 'node inline evaluation requires sandbox',
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
test('classifyCommandDetailed keeps execution metadata empty for normal commands', (t) => {
|
|
14
|
+
const result = classifyCommandDetailed('ls');
|
|
15
|
+
t.is(result.status, SafetyStatus.GREEN);
|
|
16
|
+
t.deepEqual(result.execution, {});
|
|
17
|
+
});
|
|
18
|
+
test('validateCommandSafety remains backward compatible', (t) => {
|
|
19
|
+
t.false(validateCommandSafety('ls'));
|
|
20
|
+
t.true(validateCommandSafety('node -e "console.log(1)"'));
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../source/utils/command-safety/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,IAAI,CAAC,yFAAyF,EAAE,CAAC,CAAC,EAAE,EAAE;IACpG,MAAM,MAAM,GAAG,uBAAuB,CAAC,0BAA0B,CAAC,CAAC;IAEnE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE;QAC5B,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,yCAAyC;KACzD,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4EAA4E,EAAE,CAAC,CAAC,EAAE,EAAE;IACvF,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAE7C,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,CAAC,CAAC,EAAE,EAAE;IAC9D,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC"}
|