@qduc/term2 0.5.0 → 0.6.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/dist/agent.d.ts +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +55 -7
- package/dist/agent.js.map +1 -1
- package/dist/agent.test.js +135 -10
- package/dist/agent.test.js.map +1 -1
- package/dist/app.d.ts +15 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +86 -16
- package/dist/app.js.map +1 -1
- package/dist/app.startup-banner.test.js +48 -1
- package/dist/app.startup-banner.test.js.map +1 -1
- package/dist/cli.js +226 -28
- package/dist/cli.js.map +1 -1
- package/dist/components/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/ApprovalPrompt.js +11 -35
- package/dist/components/ApprovalPrompt.js.map +1 -1
- package/dist/components/Banner.d.ts.map +1 -1
- package/dist/components/Banner.js +2 -7
- package/dist/components/Banner.js.map +1 -1
- package/dist/components/BottomArea.d.ts +7 -1
- package/dist/components/BottomArea.d.ts.map +1 -1
- package/dist/components/BottomArea.js +2 -2
- package/dist/components/BottomArea.js.map +1 -1
- package/dist/components/CommandMessage.d.ts.map +1 -1
- package/dist/components/CommandMessage.js +38 -42
- package/dist/components/CommandMessage.js.map +1 -1
- package/dist/components/CommandMessage.test.js +69 -0
- package/dist/components/CommandMessage.test.js.map +1 -1
- package/dist/components/DiffView.d.ts +7 -0
- package/dist/components/DiffView.d.ts.map +1 -0
- package/dist/components/DiffView.js +80 -0
- package/dist/components/DiffView.js.map +1 -0
- package/dist/components/DiffView.test.d.ts +2 -0
- package/dist/components/DiffView.test.d.ts.map +1 -0
- package/dist/components/DiffView.test.js +45 -0
- package/dist/components/DiffView.test.js.map +1 -0
- package/dist/components/Input/PopupManager.d.ts +7 -0
- package/dist/components/Input/PopupManager.d.ts.map +1 -1
- package/dist/components/Input/PopupManager.js +4 -2
- package/dist/components/Input/PopupManager.js.map +1 -1
- package/dist/components/Input/determine-active-menu.d.ts.map +1 -1
- package/dist/components/Input/determine-active-menu.js +4 -1
- package/dist/components/Input/determine-active-menu.js.map +1 -1
- package/dist/components/Input/popup-props.d.ts +3 -1
- package/dist/components/Input/popup-props.d.ts.map +1 -1
- package/dist/components/Input/popup-props.js +7 -1
- package/dist/components/Input/popup-props.js.map +1 -1
- package/dist/components/InputBox.d.ts +6 -0
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +74 -11
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/InputBox.menu-logic.test.js +16 -1
- package/dist/components/InputBox.menu-logic.test.js.map +1 -1
- package/dist/components/InputBox.test.js +1 -0
- package/dist/components/InputBox.test.js.map +1 -1
- package/dist/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/components/MarkdownRenderer.js +52 -1
- package/dist/components/MarkdownRenderer.js.map +1 -1
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js +3 -2
- package/dist/components/MessageList.js.map +1 -1
- package/dist/components/MessageList.test.js +16 -0
- package/dist/components/MessageList.test.js.map +1 -1
- package/dist/components/SettingsValueSelectionMenu.d.ts.map +1 -1
- package/dist/components/SettingsValueSelectionMenu.js +4 -1
- package/dist/components/SettingsValueSelectionMenu.js.map +1 -1
- package/dist/components/StatusBar.d.ts.map +1 -1
- package/dist/components/StatusBar.js +5 -3
- package/dist/components/StatusBar.js.map +1 -1
- package/dist/components/StatusBar.test.js +24 -0
- package/dist/components/StatusBar.test.js.map +1 -1
- package/dist/components/SubagentActivityMessage.d.ts.map +1 -1
- package/dist/components/SubagentActivityMessage.js +16 -1
- package/dist/components/SubagentActivityMessage.js.map +1 -1
- package/dist/components/UndoSelectionMenu.d.ts +12 -0
- package/dist/components/UndoSelectionMenu.d.ts.map +1 -0
- package/dist/components/UndoSelectionMenu.js +46 -0
- package/dist/components/UndoSelectionMenu.js.map +1 -0
- package/dist/components/UndoSelectionMenu.test.d.ts +2 -0
- package/dist/components/UndoSelectionMenu.test.d.ts.map +1 -0
- package/dist/components/UndoSelectionMenu.test.js +40 -0
- package/dist/components/UndoSelectionMenu.test.js.map +1 -0
- package/dist/components/theme.d.ts +1 -1
- package/dist/components/theme.d.ts.map +1 -1
- package/dist/components/theme.js +1 -3
- package/dist/components/theme.js.map +1 -1
- package/dist/context/InputContext.d.ts +1 -1
- package/dist/context/InputContext.d.ts.map +1 -1
- package/dist/context/InputContext.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +14 -2
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +115 -32
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-app-commands.test.js +231 -1
- package/dist/hooks/use-app-commands.test.js.map +1 -1
- package/dist/hooks/use-conversation.clear.test.d.ts +2 -0
- package/dist/hooks/use-conversation.clear.test.d.ts.map +1 -0
- package/dist/hooks/use-conversation.clear.test.js +49 -0
- package/dist/hooks/use-conversation.clear.test.js.map +1 -0
- package/dist/hooks/use-conversation.d.ts +12 -2
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +88 -5
- 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-conversation.resume.test.d.ts +2 -0
- package/dist/hooks/use-conversation.resume.test.d.ts.map +1 -0
- package/dist/hooks/use-conversation.resume.test.js +26 -0
- package/dist/hooks/use-conversation.resume.test.js.map +1 -0
- package/dist/hooks/use-escape-key.d.ts.map +1 -1
- package/dist/hooks/use-escape-key.js +14 -7
- package/dist/hooks/use-escape-key.js.map +1 -1
- package/dist/hooks/use-escape-key.test.js +168 -4
- package/dist/hooks/use-escape-key.test.js.map +1 -1
- package/dist/hooks/use-input-history.d.ts +4 -3
- package/dist/hooks/use-input-history.d.ts.map +1 -1
- package/dist/hooks/use-input-history.js +10 -8
- package/dist/hooks/use-input-history.js.map +1 -1
- package/dist/hooks/use-input-history.test.d.ts +2 -0
- package/dist/hooks/use-input-history.test.d.ts.map +1 -0
- package/dist/hooks/use-input-history.test.js +43 -0
- package/dist/hooks/use-input-history.test.js.map +1 -0
- package/dist/hooks/use-mode-handlers.d.ts +10 -2
- package/dist/hooks/use-mode-handlers.d.ts.map +1 -1
- package/dist/hooks/use-mode-handlers.js +21 -2
- package/dist/hooks/use-mode-handlers.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts +3 -0
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +3 -0
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
- package/dist/hooks/use-runtime-settings.js +15 -6
- package/dist/hooks/use-runtime-settings.js.map +1 -1
- package/dist/hooks/use-settings-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-completion.js +0 -1
- package/dist/hooks/use-settings-completion.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.d.ts +1 -0
- package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +25 -19
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/hooks/use-shell-mode.d.ts.map +1 -1
- package/dist/hooks/use-shell-mode.js +2 -1
- package/dist/hooks/use-shell-mode.js.map +1 -1
- package/dist/hooks/use-slash-commands.d.ts +1 -0
- package/dist/hooks/use-slash-commands.d.ts.map +1 -1
- package/dist/hooks/use-slash-commands.js +10 -1
- package/dist/hooks/use-slash-commands.js.map +1 -1
- package/dist/hooks/use-undo-selection.d.ts +19 -0
- package/dist/hooks/use-undo-selection.d.ts.map +1 -0
- package/dist/hooks/use-undo-selection.js +76 -0
- package/dist/hooks/use-undo-selection.js.map +1 -0
- package/dist/lib/openai-agent-client.chat.test.js +40 -0
- package/dist/lib/openai-agent-client.chat.test.js.map +1 -1
- package/dist/lib/openai-agent-client.d.ts +10 -1
- package/dist/lib/openai-agent-client.d.ts.map +1 -1
- package/dist/lib/openai-agent-client.js +114 -6
- package/dist/lib/openai-agent-client.js.map +1 -1
- package/dist/lib/openai-agent-client.test.js +23 -0
- package/dist/lib/openai-agent-client.test.js.map +1 -1
- package/dist/lib/retry-executor.js +45 -7
- package/dist/lib/retry-executor.js.map +1 -1
- package/dist/lib/retry-executor.test.js +63 -0
- package/dist/lib/retry-executor.test.js.map +1 -1
- package/dist/non-interactive.d.ts +7 -1
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +73 -5
- package/dist/non-interactive.js.map +1 -1
- package/dist/non-interactive.test.js +184 -2
- package/dist/non-interactive.test.js.map +1 -1
- package/dist/prompts/orchestrator.md +46 -0
- package/dist/prompts/plan-mode-info.md +17 -0
- package/dist/prompts/prompt-selector.d.ts +2 -1
- package/dist/prompts/prompt-selector.d.ts.map +1 -1
- package/dist/prompts/prompt-selector.js +5 -1
- package/dist/prompts/prompt-selector.js.map +1 -1
- package/dist/prompts/prompt-selector.test.js +7 -0
- package/dist/prompts/prompt-selector.test.js.map +1 -1
- package/dist/prompts/prompt-selector.test.ts +18 -0
- package/dist/prompts/prompt-selector.ts +7 -1
- package/dist/prompts/reasoning-efficiency.d.ts +7 -0
- package/dist/prompts/reasoning-efficiency.d.ts.map +1 -0
- package/dist/prompts/reasoning-efficiency.js +19 -0
- package/dist/prompts/reasoning-efficiency.js.map +1 -0
- package/dist/prompts/reasoning-efficiency.ts +18 -0
- package/dist/prompts/search-via-shell.test.js +17 -17
- package/dist/prompts/search-via-shell.test.js.map +1 -1
- package/dist/prompts/search-via-shell.test.ts +17 -17
- package/dist/prompts/shell-auto-approval.d.ts +3 -0
- package/dist/prompts/shell-auto-approval.d.ts.map +1 -0
- package/dist/prompts/shell-auto-approval.js +23 -0
- package/dist/prompts/shell-auto-approval.js.map +1 -0
- package/dist/prompts/shell-auto-approval.ts +23 -0
- package/dist/prompts/subagent-delegation.d.ts +10 -0
- package/dist/prompts/subagent-delegation.d.ts.map +1 -0
- package/dist/prompts/subagent-delegation.js +33 -0
- package/dist/prompts/subagent-delegation.js.map +1 -0
- package/dist/prompts/subagent-delegation.test.d.ts +2 -0
- package/dist/prompts/subagent-delegation.test.d.ts.map +1 -0
- package/dist/prompts/subagent-delegation.test.js +17 -0
- package/dist/prompts/subagent-delegation.test.js.map +1 -0
- package/dist/prompts/subagent-delegation.test.ts +21 -0
- package/dist/prompts/subagent-delegation.ts +40 -0
- package/dist/prompts/subagents/explorer.md +1 -2
- package/dist/prompts/subagents/mentor.md +0 -1
- package/dist/prompts/subagents/researcher.md +0 -1
- package/dist/prompts/subagents/worker.md +3 -4
- package/dist/providers/ai-sdk-anthropic.provider.d.ts +1 -0
- package/dist/providers/ai-sdk-anthropic.provider.d.ts.map +1 -1
- package/dist/providers/ai-sdk-anthropic.provider.js +67 -1
- package/dist/providers/ai-sdk-anthropic.provider.js.map +1 -1
- package/dist/providers/ai-sdk-anthropic.provider.test.d.ts +2 -0
- package/dist/providers/ai-sdk-anthropic.provider.test.d.ts.map +1 -0
- package/dist/providers/ai-sdk-anthropic.provider.test.js +87 -0
- package/dist/providers/ai-sdk-anthropic.provider.test.js.map +1 -0
- package/dist/providers/ai-sdk-logging-fetch.d.ts +1 -1
- package/dist/providers/ai-sdk-logging-fetch.d.ts.map +1 -1
- package/dist/providers/ai-sdk-logging-fetch.js +67 -44
- package/dist/providers/ai-sdk-logging-fetch.js.map +1 -1
- package/dist/providers/ai-sdk-logging-fetch.test.js +59 -5
- package/dist/providers/ai-sdk-logging-fetch.test.js.map +1 -1
- package/dist/providers/common/openai-compatible-messages.d.ts.map +1 -1
- package/dist/providers/common/openai-compatible-messages.js +10 -4
- package/dist/providers/common/openai-compatible-messages.js.map +1 -1
- package/dist/providers/common/openai-compatible-messages.test.js +22 -0
- package/dist/providers/common/openai-compatible-messages.test.js.map +1 -1
- package/dist/providers/custom-provider-adapter.test.js +39 -1
- package/dist/providers/custom-provider-adapter.test.js.map +1 -1
- package/dist/providers/openai-compatible.provider.d.ts +11 -1
- package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible.provider.js +122 -8
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/providers/openai-compatible.provider.test.js +61 -0
- package/dist/providers/openai-compatible.provider.test.js.map +1 -1
- package/dist/providers/openai.provider.js +21 -1
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/openrouter.provider.d.ts +2 -0
- package/dist/providers/openrouter.provider.d.ts.map +1 -1
- package/dist/providers/openrouter.provider.js +20 -2
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/openrouter.provider.request-preprocessing.test.d.ts +2 -0
- package/dist/providers/openrouter.provider.request-preprocessing.test.d.ts.map +1 -0
- package/dist/providers/openrouter.provider.request-preprocessing.test.js +48 -0
- package/dist/providers/openrouter.provider.request-preprocessing.test.js.map +1 -0
- package/dist/providers/registry.test.js +27 -2
- package/dist/providers/registry.test.js.map +1 -1
- package/dist/scripts/eval-auto-approval/dataset.d.ts +2 -2
- package/dist/services/agent-stream.d.ts +1 -0
- package/dist/services/agent-stream.d.ts.map +1 -1
- package/dist/services/approval-flow-coordinator.d.ts +2 -0
- package/dist/services/approval-flow-coordinator.d.ts.map +1 -1
- package/dist/services/approval-flow-coordinator.js +45 -18
- package/dist/services/approval-flow-coordinator.js.map +1 -1
- package/dist/services/approval-flow-coordinator.test.js +87 -0
- package/dist/services/approval-flow-coordinator.test.js.map +1 -1
- package/dist/services/approval-state.d.ts +4 -0
- package/dist/services/approval-state.d.ts.map +1 -1
- package/dist/services/approval-state.js +2 -0
- package/dist/services/approval-state.js.map +1 -1
- package/dist/services/approval-state.test.js +21 -0
- package/dist/services/approval-state.test.js.map +1 -1
- package/dist/services/conversation-clear-save.test.d.ts +2 -0
- package/dist/services/conversation-clear-save.test.d.ts.map +1 -0
- package/dist/services/conversation-clear-save.test.js +85 -0
- package/dist/services/conversation-clear-save.test.js.map +1 -0
- package/dist/services/conversation-history-repair.d.ts +25 -0
- package/dist/services/conversation-history-repair.d.ts.map +1 -0
- package/dist/services/conversation-history-repair.js +227 -0
- package/dist/services/conversation-history-repair.js.map +1 -0
- package/dist/services/conversation-history-repair.test.d.ts +2 -0
- package/dist/services/conversation-history-repair.test.d.ts.map +1 -0
- package/dist/services/conversation-history-repair.test.js +76 -0
- package/dist/services/conversation-history-repair.test.js.map +1 -0
- package/dist/services/conversation-persistence.d.ts +55 -0
- package/dist/services/conversation-persistence.d.ts.map +1 -0
- package/dist/services/conversation-persistence.js +216 -0
- package/dist/services/conversation-persistence.js.map +1 -0
- package/dist/services/conversation-persistence.test.d.ts +2 -0
- package/dist/services/conversation-persistence.test.d.ts.map +1 -0
- package/dist/services/conversation-persistence.test.js +713 -0
- package/dist/services/conversation-persistence.test.js.map +1 -0
- package/dist/services/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation-result-builder.js +13 -0
- package/dist/services/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation-retry-policy.d.ts +7 -0
- package/dist/services/conversation-retry-policy.d.ts.map +1 -1
- package/dist/services/conversation-retry-policy.js +34 -0
- package/dist/services/conversation-retry-policy.js.map +1 -1
- package/dist/services/conversation-retry-policy.test.js +44 -2
- package/dist/services/conversation-retry-policy.test.js.map +1 -1
- package/dist/services/conversation-service.d.ts +25 -2
- package/dist/services/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation-service.js +29 -3
- package/dist/services/conversation-service.js.map +1 -1
- package/dist/services/conversation-session.auto-approval.test.js +7 -10
- package/dist/services/conversation-session.auto-approval.test.js.map +1 -1
- package/dist/services/conversation-session.d.ts +28 -1
- package/dist/services/conversation-session.d.ts.map +1 -1
- package/dist/services/conversation-session.js +300 -95
- package/dist/services/conversation-session.js.map +1 -1
- package/dist/services/conversation-store.d.ts +42 -0
- package/dist/services/conversation-store.d.ts.map +1 -1
- package/dist/services/conversation-store.js +188 -6
- package/dist/services/conversation-store.js.map +1 -1
- package/dist/services/conversation-store.test.js +344 -1
- package/dist/services/conversation-store.test.js.map +1 -1
- package/dist/services/history-service.d.ts +6 -1
- package/dist/services/history-service.d.ts.map +1 -1
- package/dist/services/history-service.js +46 -6
- package/dist/services/history-service.js.map +1 -1
- package/dist/services/history-service.test.d.ts +2 -0
- package/dist/services/history-service.test.d.ts.map +1 -0
- package/dist/services/history-service.test.js +77 -0
- package/dist/services/history-service.test.js.map +1 -0
- package/dist/services/input-surge-guard.d.ts +37 -0
- package/dist/services/input-surge-guard.d.ts.map +1 -0
- package/dist/services/input-surge-guard.js +190 -0
- package/dist/services/input-surge-guard.js.map +1 -0
- package/dist/services/input-surge-guard.test.d.ts +2 -0
- package/dist/services/input-surge-guard.test.d.ts.map +1 -0
- package/dist/services/input-surge-guard.test.js +126 -0
- package/dist/services/input-surge-guard.test.js.map +1 -0
- package/dist/services/logging-contract.d.ts +1 -1
- package/dist/services/logging-service.d.ts +4 -0
- package/dist/services/logging-service.d.ts.map +1 -1
- package/dist/services/logging-service.js +91 -33
- package/dist/services/logging-service.js.map +1 -1
- package/dist/services/mode-notices.d.ts +11 -0
- package/dist/services/mode-notices.d.ts.map +1 -0
- package/dist/services/mode-notices.js +16 -0
- package/dist/services/mode-notices.js.map +1 -0
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +0 -1
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/plan-mode-interceptor.d.ts +10 -0
- package/dist/services/plan-mode-interceptor.d.ts.map +1 -0
- package/dist/services/plan-mode-interceptor.js +38 -0
- package/dist/services/plan-mode-interceptor.js.map +1 -0
- package/dist/services/plan-mode-interceptor.test.d.ts +2 -0
- package/dist/services/plan-mode-interceptor.test.d.ts.map +1 -0
- package/dist/services/plan-mode-interceptor.test.js +55 -0
- package/dist/services/plan-mode-interceptor.test.js.map +1 -0
- package/dist/services/provider-traffic.d.ts +87 -0
- package/dist/services/provider-traffic.d.ts.map +1 -0
- package/dist/services/provider-traffic.js +545 -0
- package/dist/services/provider-traffic.js.map +1 -0
- package/dist/services/provider-traffic.test.d.ts +2 -0
- package/dist/services/provider-traffic.test.d.ts.map +1 -0
- package/dist/services/provider-traffic.test.js +383 -0
- package/dist/services/provider-traffic.test.js.map +1 -0
- package/dist/services/service-interfaces.d.ts +20 -1
- package/dist/services/service-interfaces.d.ts.map +1 -1
- package/dist/services/settings-persistence.js +1 -1
- package/dist/services/settings-schema.d.ts +107 -4
- package/dist/services/settings-schema.d.ts.map +1 -1
- package/dist/services/settings-schema.js +103 -5
- package/dist/services/settings-schema.js.map +1 -1
- package/dist/services/settings-schema.test.js +35 -1
- package/dist/services/settings-schema.test.js.map +1 -1
- package/dist/services/settings-service.d.ts +3 -1
- package/dist/services/settings-service.d.ts.map +1 -1
- package/dist/services/settings-service.js +40 -4
- package/dist/services/settings-service.js.map +1 -1
- package/dist/services/settings-sources.d.ts.map +1 -1
- package/dist/services/settings-sources.js +2 -1
- package/dist/services/settings-sources.js.map +1 -1
- package/dist/services/settings-sources.test.js +4 -0
- package/dist/services/settings-sources.test.js.map +1 -1
- package/dist/services/shell-auto-approval-evaluator.d.ts +3 -2
- package/dist/services/shell-auto-approval-evaluator.d.ts.map +1 -1
- package/dist/services/shell-auto-approval-evaluator.js +287 -101
- package/dist/services/shell-auto-approval-evaluator.js.map +1 -1
- package/dist/services/shell-auto-approval-evaluator.test.js +216 -18
- package/dist/services/shell-auto-approval-evaluator.test.js.map +1 -1
- package/dist/services/shell-auto-approval-resolver.test.js +1 -1
- package/dist/services/shell-auto-approval-resolver.test.js.map +1 -1
- package/dist/services/stream-event-processor.d.ts.map +1 -1
- package/dist/services/stream-event-processor.js +5 -0
- package/dist/services/stream-event-processor.js.map +1 -1
- package/dist/services/stream-event-processor.test.js +27 -0
- package/dist/services/stream-event-processor.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/subagent-manager.d.ts +2 -0
- package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.js +204 -33
- package/dist/services/subagents/subagent-manager.js.map +1 -1
- package/dist/services/subagents/subagent-manager.test.js +331 -42
- package/dist/services/subagents/subagent-manager.test.js.map +1 -1
- package/dist/services/subagents/types.d.ts +6 -0
- package/dist/services/subagents/types.d.ts.map +1 -1
- package/dist/services/terminal-result-collector.d.ts.map +1 -1
- package/dist/services/terminal-result-collector.js +1 -2
- package/dist/services/terminal-result-collector.js.map +1 -1
- package/dist/slash-commands.d.ts +1 -0
- package/dist/slash-commands.d.ts.map +1 -1
- package/dist/slash-commands.js +8 -1
- package/dist/slash-commands.js.map +1 -1
- package/dist/slash-commands.test.d.ts +2 -0
- package/dist/slash-commands.test.d.ts.map +1 -0
- package/dist/slash-commands.test.js +22 -0
- package/dist/slash-commands.test.js.map +1 -0
- package/dist/tools/apply-patch.d.ts.map +1 -1
- package/dist/tools/apply-patch.js +2 -6
- package/dist/tools/apply-patch.js.map +1 -1
- package/dist/tools/apply-patch.test.js +2 -13
- package/dist/tools/apply-patch.test.js.map +1 -1
- package/dist/tools/code-context.test.js +4 -3
- package/dist/tools/code-context.test.js.map +1 -1
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +2 -3
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/create-file.test.js +3 -14
- package/dist/tools/create-file.test.js.map +1 -1
- package/dist/tools/edit-healing.d.ts +3 -3
- package/dist/tools/edit-healing.d.ts.map +1 -1
- package/dist/tools/edit-healing.js.map +1 -1
- package/dist/tools/edit-healing.test.js +0 -1
- package/dist/tools/edit-healing.test.js.map +1 -1
- package/dist/tools/find-files.test.js +3 -2
- package/dist/tools/find-files.test.js.map +1 -1
- package/dist/tools/grep.d.ts +1 -0
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +65 -4
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/grep.test.js +39 -0
- package/dist/tools/grep.test.js.map +1 -0
- package/dist/tools/read-file.d.ts +1 -0
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +7 -5
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/read-file.test.js +3 -2
- package/dist/tools/read-file.test.js.map +1 -1
- package/dist/tools/run-subagent.d.ts +1 -1
- package/dist/tools/run-subagent.d.ts.map +1 -1
- package/dist/tools/run-subagent.js +27 -23
- package/dist/tools/run-subagent.js.map +1 -1
- package/dist/tools/run-subagent.test.js +55 -8
- package/dist/tools/run-subagent.test.js.map +1 -1
- package/dist/tools/search-replace.d.ts +13 -5
- package/dist/tools/search-replace.d.ts.map +1 -1
- package/dist/tools/search-replace.js +46 -115
- package/dist/tools/search-replace.js.map +1 -1
- package/dist/tools/search-replace.test.js +275 -240
- package/dist/tools/search-replace.test.js.map +1 -1
- package/dist/tools/shell.d.ts +1 -0
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +14 -6
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/shell.test.js +52 -0
- package/dist/tools/shell.test.js.map +1 -1
- package/dist/tools/tool-parameter-schema.test.js +13 -4
- package/dist/tools/tool-parameter-schema.test.js.map +1 -1
- package/dist/tools/types.d.ts +1 -1
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +29 -4
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-fetch.test.js +64 -0
- package/dist/tools/web-fetch.test.js.map +1 -1
- package/dist/utils/command-safety/path-analysis.d.ts.map +1 -1
- package/dist/utils/command-safety/path-analysis.js +143 -35
- package/dist/utils/command-safety/path-analysis.js.map +1 -1
- package/dist/utils/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation-event-handler.js +23 -3
- package/dist/utils/conversation-event-handler.js.map +1 -1
- package/dist/utils/conversation-event-handler.test.js +94 -0
- package/dist/utils/conversation-event-handler.test.js.map +1 -1
- package/dist/utils/execute-shell.d.ts +2 -0
- package/dist/utils/execute-shell.d.ts.map +1 -1
- package/dist/utils/execute-shell.js +25 -1
- package/dist/utils/execute-shell.js.map +1 -1
- package/dist/utils/execute-shell.test.js +22 -0
- package/dist/utils/execute-shell.test.js.map +1 -1
- package/dist/utils/model-settings.d.ts.map +1 -1
- package/dist/utils/model-settings.js +18 -0
- package/dist/utils/model-settings.js.map +1 -1
- package/dist/utils/output-trim.d.ts.map +1 -1
- package/dist/utils/output-trim.js +14 -6
- package/dist/utils/output-trim.js.map +1 -1
- package/dist/utils/token-usage.test.js +31 -0
- package/dist/utils/token-usage.test.js.map +1 -1
- package/package.json +3 -3
- package/readme.md +271 -44
|
@@ -58,6 +58,17 @@ test('execute passes writeBoundary to subagent runner', async (t) => {
|
|
|
58
58
|
await tool.execute({ role: 'worker', task: 'update file', writeBoundary: ['src/'] });
|
|
59
59
|
t.deepEqual(capturedParams.writeBoundary, ['src/']);
|
|
60
60
|
});
|
|
61
|
+
test('execute passes tool invocation details to subagent runner', async (t) => {
|
|
62
|
+
let capturedDetails;
|
|
63
|
+
const tool = createRunSubagentToolDefinition(async (_params, _context, details) => {
|
|
64
|
+
capturedDetails = details;
|
|
65
|
+
return makeResult();
|
|
66
|
+
});
|
|
67
|
+
const abortController = new AbortController();
|
|
68
|
+
const details = { signal: abortController.signal };
|
|
69
|
+
await tool.execute({ role: 'explorer', task: 'find files' }, undefined, details);
|
|
70
|
+
t.is(capturedDetails, details);
|
|
71
|
+
});
|
|
61
72
|
test('formatCommandMessage renders completed result', (t) => {
|
|
62
73
|
const result = makeResult({
|
|
63
74
|
finalText: 'Found 3 relevant files.',
|
|
@@ -79,7 +90,7 @@ test('formatCommandMessage renders completed result', (t) => {
|
|
|
79
90
|
});
|
|
80
91
|
test('formatCommandMessage truncates long task in command', (t) => {
|
|
81
92
|
const tool = createRunSubagentToolDefinition(async () => makeResult());
|
|
82
|
-
const longTask = '
|
|
93
|
+
const longTask = 'a'.repeat(400);
|
|
83
94
|
const item = {
|
|
84
95
|
rawItem: {
|
|
85
96
|
arguments: JSON.stringify({ role: 'explorer', task: longTask }),
|
|
@@ -87,9 +98,45 @@ test('formatCommandMessage truncates long task in command', (t) => {
|
|
|
87
98
|
},
|
|
88
99
|
};
|
|
89
100
|
const messages = tool.formatCommandMessage(item, 0, new Map());
|
|
90
|
-
t.
|
|
101
|
+
t.is(messages[0].command.length, 'run_subagent [explorer] '.length + 300);
|
|
91
102
|
t.true(messages[0].command.endsWith('...'));
|
|
92
|
-
|
|
103
|
+
});
|
|
104
|
+
test('formatCommandMessage uses only the first paragraph', (t) => {
|
|
105
|
+
const tool = createRunSubagentToolDefinition(async () => makeResult());
|
|
106
|
+
const taskWithParagraphs = 'First paragraph content.\n\nSecond paragraph content that should be ignored.';
|
|
107
|
+
const item = {
|
|
108
|
+
rawItem: {
|
|
109
|
+
arguments: JSON.stringify({ role: 'explorer', task: taskWithParagraphs }),
|
|
110
|
+
output: 'Status: completed\n\nDone.',
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
const messages = tool.formatCommandMessage(item, 0, new Map());
|
|
114
|
+
t.is(messages[0].command, 'run_subagent [explorer] First paragraph content.');
|
|
115
|
+
});
|
|
116
|
+
test('formatCommandMessage truncates long output', (t) => {
|
|
117
|
+
const longOutput = 'b'.repeat(400);
|
|
118
|
+
const tool = createRunSubagentToolDefinition(async () => makeResult());
|
|
119
|
+
const item = {
|
|
120
|
+
rawItem: {
|
|
121
|
+
arguments: JSON.stringify({ role: 'explorer', task: 'find files' }),
|
|
122
|
+
output: JSON.stringify(makeResult({ finalText: longOutput })),
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
const messages = tool.formatCommandMessage(item, 0, new Map());
|
|
126
|
+
t.is(messages[0].output.split('\n')[0].length, 300);
|
|
127
|
+
t.true(messages[0].output.split('\n')[0].endsWith('...'));
|
|
128
|
+
});
|
|
129
|
+
test('formatCommandMessage uses only the first paragraph of output', (t) => {
|
|
130
|
+
const outputWithParagraphs = 'First output paragraph.\n\nSecond output paragraph.';
|
|
131
|
+
const tool = createRunSubagentToolDefinition(async () => makeResult());
|
|
132
|
+
const item = {
|
|
133
|
+
rawItem: {
|
|
134
|
+
arguments: JSON.stringify({ role: 'explorer', task: 'find files' }),
|
|
135
|
+
output: JSON.stringify(makeResult({ finalText: outputWithParagraphs })),
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
const messages = tool.formatCommandMessage(item, 0, new Map());
|
|
139
|
+
t.is(messages[0].output.split('\n')[0], 'First output paragraph.');
|
|
93
140
|
});
|
|
94
141
|
test('formatCommandMessage renders failed result', (t) => {
|
|
95
142
|
const result = makeResult({ status: 'failed', error: 'Role not found', finalText: '' });
|
|
@@ -142,18 +189,18 @@ test('getSubagentsRolesSection extracts descriptions from markdown files', (t) =
|
|
|
142
189
|
const section = getSubagentsRolesSection();
|
|
143
190
|
t.true(section.includes('## Roles'));
|
|
144
191
|
t.true(section.includes('`explorer`'));
|
|
145
|
-
t.true(section.includes('read-only workspace access. Use for locating files and answering codebase questions.'));
|
|
146
192
|
t.true(section.includes('`mentor`'));
|
|
147
|
-
t.true(section.includes('advisory only, no workspace access. Use for technical advice.'));
|
|
148
193
|
t.true(section.includes('`researcher`'));
|
|
149
|
-
t.true(section.includes('web search + read-only workspace. Use for looking up external docs or current information.'));
|
|
150
194
|
t.true(section.includes('`worker`'));
|
|
151
|
-
t.
|
|
195
|
+
t.regex(section, /-\s+`explorer`:\s+\S+/);
|
|
196
|
+
t.regex(section, /-\s+`mentor`:\s+\S+/);
|
|
197
|
+
t.regex(section, /-\s+`researcher`:\s+\S+/);
|
|
198
|
+
t.regex(section, /-\s+`worker`:\s+\S+/);
|
|
152
199
|
});
|
|
153
200
|
test('createRunSubagentToolDefinition includes dynamic roles description', (t) => {
|
|
154
201
|
const tool = createRunSubagentToolDefinition(async () => makeResult());
|
|
155
202
|
t.true(tool.description.includes('## Roles'));
|
|
156
203
|
t.true(tool.description.includes('`explorer`'));
|
|
157
|
-
t.
|
|
204
|
+
t.regex(tool.description, /-\s+`explorer`:\s+\S+/);
|
|
158
205
|
});
|
|
159
206
|
//# sourceMappingURL=run-subagent.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-subagent.test.js","sourceRoot":"","sources":["../../source/tools/run-subagent.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run-subagent.test.js","sourceRoot":"","sources":["../../source/tools/run-subagent.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAG9F,SAAS,UAAU,CAAC,YAAqC,EAAE;IACzD,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,2BAA2B;QACtC,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,4DAA4D,EAAE,CAAC,CAAC,EAAE,EAAE;IACvE,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAChC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1C,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sCAAsC,EAAE,CAAC,CAAC,EAAE,EAAE;IACjD,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvE,CAAC,CAAC,IAAI,CACJ,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QACxB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,aAAa,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;KAClC,CAAC,CAAC,OAAO,CACX,CAAC;IACF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;AACpF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC5D,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEnE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAEzE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sDAAsD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACvE,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IAEzE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iDAAiD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAClE,IAAI,cAAc,GAAQ,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5D,cAAc,GAAG,MAAM,CAAC;QACxB,OAAO,UAAU,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAErF,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2DAA2D,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IAC5E,IAAI,eAAwB,CAAC;IAC7B,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE;QAChF,eAAe,GAAG,OAAO,CAAC;QAC1B,OAAO,UAAU,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC;IAEnD,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEjF,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+CAA+C,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1D,MAAM,MAAM,GAAG,UAAU,CAAC;QACxB,SAAS,EAAE,yBAAyB;QACpC,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACjD,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACnE,MAAM,EAAE,0EAA0E;SACnF;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qDAAqD,EAAE,CAAC,CAAC,EAAE,EAAE;IAChE,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjC,MAAM,IAAI,GAAG;QACX,OAAO,EAAE;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC/D,MAAM,EAAE,4BAA4B;SACrC;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,0BAA0B,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;IAC1E,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,CAAC,CAAC,EAAE,EAAE;IAC/D,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,MAAM,kBAAkB,GAAG,8EAA8E,CAAC;IAE1G,MAAM,IAAI,GAAG;QACX,OAAO,EAAE;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;YACzE,MAAM,EAAE,4BAA4B;SACrC;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,kDAAkD,CAAC,CAAC;AAChF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,CAAC,CAAC,EAAE,EAAE;IACvD,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACnE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;SAC9D;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8DAA8D,EAAE,CAAC,CAAC,EAAE,EAAE;IACzE,MAAM,oBAAoB,GAAG,qDAAqD,CAAC;IACnF,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACnE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;SACxE;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4CAA4C,EAAE,CAAC,CAAC,EAAE,EAAE;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YACjE,MAAM,EAAE,uCAAuC;SAChD;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kDAAkD,EAAE,CAAC,CAAC,EAAE,EAAE;IAC7D,MAAM,MAAM,GAAG,UAAU,CAAC;QACxB,SAAS,EAAE;YACT,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE;YACnC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;SAC/B;KACF,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;YACxE,MAAM,EAAE,wEAAwE;SACjF;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gEAAgE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC;QACxB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;KAC3C,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG;QACX,OAAO,EAAE;YACP,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;YAClE,MAAM,EAAE,qEAAqE;SAC9E;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC/E,MAAM,OAAO,GAAG,wBAAwB,EAAE,CAAC;IAE3C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAErC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAC1C,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IACxC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;IAC5C,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC/E,MAAM,IAAI,GAAG,+BAA+B,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
|
|
@@ -4,15 +4,23 @@ import type { ILoggingService, ISettingsService } from '../services/service-inte
|
|
|
4
4
|
import { healSearchReplaceParams } from './edit-healing.js';
|
|
5
5
|
import { ExecutionContext } from '../services/execution-context.js';
|
|
6
6
|
declare const searchReplaceOperationSchema: z.ZodObject<{
|
|
7
|
-
path: z.ZodString;
|
|
8
7
|
search_content: z.ZodString;
|
|
9
8
|
replace_content: z.ZodString;
|
|
10
|
-
|
|
9
|
+
}, z.core.$strip>;
|
|
10
|
+
declare const searchReplaceParametersSchema: z.ZodObject<{
|
|
11
|
+
path: z.ZodString;
|
|
12
|
+
replacements: z.ZodArray<z.ZodObject<{
|
|
13
|
+
search_content: z.ZodString;
|
|
14
|
+
replace_content: z.ZodString;
|
|
15
|
+
}, z.core.$strip>>;
|
|
11
16
|
}, z.core.$strip>;
|
|
12
17
|
export type SearchReplaceOperation = z.infer<typeof searchReplaceOperationSchema>;
|
|
13
|
-
export type SearchReplaceToolParams =
|
|
14
|
-
|
|
15
|
-
|
|
18
|
+
export type SearchReplaceToolParams = z.infer<typeof searchReplaceParametersSchema>;
|
|
19
|
+
export interface SearchReplaceFullOperation {
|
|
20
|
+
path: string;
|
|
21
|
+
search_content: string;
|
|
22
|
+
replace_content: string;
|
|
23
|
+
}
|
|
16
24
|
export declare const formatSearchReplaceCommandMessage: FormatCommandMessage;
|
|
17
25
|
export declare function createSearchReplaceToolDefinition(deps: {
|
|
18
26
|
loggingService: ILoggingService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-replace.d.ts","sourceRoot":"","sources":["../../source/tools/search-replace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAkB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAyEpE,QAAA,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"search-replace.d.ts","sourceRoot":"","sources":["../../source/tools/search-replace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAkB,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAyEpE,QAAA,MAAM,4BAA4B;;;iBAOhC,CAAC;AAEH,QAAA,MAAM,6BAA6B;;;;;;iBAGjC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAClF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AA+bD,eAAO,MAAM,iCAAiC,EAAE,oBAkE/C,CAAC;AAEF,wBAAgB,iCAAiC,CAAC,IAAI,EAAE;IACtD,cAAc,EAAE,eAAe,CAAC;IAChC,eAAe,EAAE,gBAAgB,CAAC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,OAAO,uBAAuB,CAAC;CAC9C,GAAG,cAAc,CAAC,uBAAuB,CAAC,CAuc1C"}
|
|
@@ -68,62 +68,21 @@ function detectSummarizationMarkers(content) {
|
|
|
68
68
|
return null;
|
|
69
69
|
}
|
|
70
70
|
const searchReplaceOperationSchema = z.object({
|
|
71
|
-
path: z.string().describe('The absolute or relative path to the file'),
|
|
72
71
|
search_content: z
|
|
73
72
|
.string()
|
|
74
73
|
.describe('The exact content to search for. Put <...> on its own line to match (and replace) everything between a head anchor and a tail anchor — lets you edit or delete a large block without reproducing it. The whole span between anchors is replaced, so use distinctive multi-line anchors (never a single generic line) to avoid deleting the wrong region. Omit the anchors from replace_content to delete them too.'),
|
|
75
74
|
replace_content: z.string().describe('The content to replace it with'),
|
|
76
|
-
replace_all: z
|
|
77
|
-
.boolean()
|
|
78
|
-
.optional()
|
|
79
|
-
.default(false)
|
|
80
|
-
.describe('Whether to replace all occurrences of the search content. If false, requires exactly one match.'),
|
|
81
75
|
});
|
|
82
|
-
const searchReplaceParametersSchema = z
|
|
83
|
-
.
|
|
84
|
-
|
|
85
|
-
search_content: z
|
|
86
|
-
.string()
|
|
87
|
-
.describe('The exact content to search for. Put <...> on its own line to match (and replace) everything between a head anchor and a tail anchor — lets you edit or delete a large block without reproducing it. The whole span between anchors is replaced, so use distinctive multi-line anchors (never a single generic line) to avoid deleting the wrong region. Omit the anchors from replace_content to delete them too.')
|
|
88
|
-
.optional(),
|
|
89
|
-
replace_content: z.string().describe('The content to replace it with').optional(),
|
|
90
|
-
replace_all: z
|
|
91
|
-
.boolean()
|
|
92
|
-
.optional()
|
|
93
|
-
.describe('Whether to replace all occurrences of the search content. If false, requires exactly one match.'),
|
|
94
|
-
replacements: z.array(searchReplaceOperationSchema).min(1).optional(),
|
|
95
|
-
})
|
|
96
|
-
.superRefine((params, ctx) => {
|
|
97
|
-
const hasBatch = Array.isArray(params.replacements);
|
|
98
|
-
const hasSingle = params.path !== undefined || params.search_content !== undefined || params.replace_content !== undefined;
|
|
99
|
-
if (hasBatch && hasSingle) {
|
|
100
|
-
ctx.addIssue({
|
|
101
|
-
code: z.ZodIssueCode.custom,
|
|
102
|
-
message: 'Provide either replacements or a single path/search_content/replace_content edit, not both.',
|
|
103
|
-
});
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
if (!hasBatch &&
|
|
107
|
-
(params.path === undefined || params.search_content === undefined || params.replace_content === undefined)) {
|
|
108
|
-
ctx.addIssue({
|
|
109
|
-
code: z.ZodIssueCode.custom,
|
|
110
|
-
message: 'Provide replacements or all single edit fields: path, search_content, and replace_content.',
|
|
111
|
-
});
|
|
112
|
-
}
|
|
76
|
+
const searchReplaceParametersSchema = z.object({
|
|
77
|
+
path: z.string().describe('The absolute or relative path to the file'),
|
|
78
|
+
replacements: z.array(searchReplaceOperationSchema).min(1).describe('The list of replacements to apply to the file'),
|
|
113
79
|
});
|
|
114
80
|
function getSearchReplaceOperations(params) {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
{
|
|
121
|
-
path: operation.path,
|
|
122
|
-
search_content: operation.search_content,
|
|
123
|
-
replace_content: operation.replace_content,
|
|
124
|
-
replace_all: operation.replace_all ?? false,
|
|
125
|
-
},
|
|
126
|
-
];
|
|
81
|
+
return params.replacements.map((rep) => ({
|
|
82
|
+
path: params.path,
|
|
83
|
+
search_content: rep.search_content,
|
|
84
|
+
replace_content: rep.replace_content,
|
|
85
|
+
}));
|
|
127
86
|
}
|
|
128
87
|
/**
|
|
129
88
|
* Gap marker constant used to indicate omitted middle content in search strings.
|
|
@@ -160,7 +119,6 @@ function getEditCacheKey(params) {
|
|
|
160
119
|
path: params.path,
|
|
161
120
|
search_content: params.search_content,
|
|
162
121
|
replace_content: params.replace_content,
|
|
163
|
-
replace_all: params.replace_all,
|
|
164
122
|
});
|
|
165
123
|
}
|
|
166
124
|
/**
|
|
@@ -382,22 +340,11 @@ function findMatchesInContent(content, searchContent) {
|
|
|
382
340
|
}
|
|
383
341
|
return { type: 'none' };
|
|
384
342
|
}
|
|
385
|
-
function replaceIndexedMatches(content, matches, replaceContent
|
|
386
|
-
|
|
387
|
-
const match = matches[0];
|
|
388
|
-
return {
|
|
389
|
-
newContent: content.substring(0, match.startIndex) + replaceContent + content.substring(match.endIndex),
|
|
390
|
-
replacedCount: 1,
|
|
391
|
-
};
|
|
392
|
-
}
|
|
393
|
-
let newContent = content;
|
|
394
|
-
const sortedMatches = [...matches].sort((a, b) => b.startIndex - a.startIndex);
|
|
395
|
-
for (const m of sortedMatches) {
|
|
396
|
-
newContent = newContent.substring(0, m.startIndex) + replaceContent + newContent.substring(m.endIndex);
|
|
397
|
-
}
|
|
343
|
+
function replaceIndexedMatches(content, matches, replaceContent) {
|
|
344
|
+
const match = matches[0];
|
|
398
345
|
return {
|
|
399
|
-
newContent,
|
|
400
|
-
replacedCount:
|
|
346
|
+
newContent: content.substring(0, match.startIndex) + replaceContent + content.substring(match.endIndex),
|
|
347
|
+
replacedCount: 1,
|
|
401
348
|
};
|
|
402
349
|
}
|
|
403
350
|
function executeReplacement(matchInfo, content, eol, options) {
|
|
@@ -408,15 +355,13 @@ function executeReplacement(matchInfo, content, eol, options) {
|
|
|
408
355
|
error: 'Search content not found. Try splitting the changes into smaller search pattern.',
|
|
409
356
|
};
|
|
410
357
|
}
|
|
358
|
+
if (matchInfo.count > 1) {
|
|
359
|
+
return {
|
|
360
|
+
success: false,
|
|
361
|
+
error: `Found ${matchInfo.count} ${matchInfo.type} matches. Search content must match exactly once.`,
|
|
362
|
+
};
|
|
363
|
+
}
|
|
411
364
|
if (matchInfo.type === 'exact') {
|
|
412
|
-
if (options.replaceAll) {
|
|
413
|
-
return {
|
|
414
|
-
success: true,
|
|
415
|
-
newContent: content.replaceAll(options.normalizedSearchContent, normalizedReplaceContent),
|
|
416
|
-
matchType: 'exact',
|
|
417
|
-
replacedCount: matchInfo.count,
|
|
418
|
-
};
|
|
419
|
-
}
|
|
420
365
|
const firstIndex = content.indexOf(options.normalizedSearchContent);
|
|
421
366
|
return {
|
|
422
367
|
success: true,
|
|
@@ -427,13 +372,7 @@ function executeReplacement(matchInfo, content, eol, options) {
|
|
|
427
372
|
replacedCount: 1,
|
|
428
373
|
};
|
|
429
374
|
}
|
|
430
|
-
|
|
431
|
-
return {
|
|
432
|
-
success: false,
|
|
433
|
-
error: `Found ${matchInfo.count} ${matchInfo.type} matches. Please provide more context or set replace_all to true.`,
|
|
434
|
-
};
|
|
435
|
-
}
|
|
436
|
-
const replaced = replaceIndexedMatches(content, matchInfo.matches, normalizedReplaceContent, options.replaceAll);
|
|
375
|
+
const replaced = replaceIndexedMatches(content, matchInfo.matches, normalizedReplaceContent);
|
|
437
376
|
return {
|
|
438
377
|
success: true,
|
|
439
378
|
newContent: replaced.newContent,
|
|
@@ -449,8 +388,10 @@ export const formatSearchReplaceCommandMessage = (item, index, _toolCallArgument
|
|
|
449
388
|
const normalizedArgs = item?.rawItem?.arguments ?? item?.arguments;
|
|
450
389
|
const args = normalizeToolArguments(normalizedArgs) ?? {};
|
|
451
390
|
const filePath = args?.path ?? 'unknown';
|
|
452
|
-
const
|
|
453
|
-
const
|
|
391
|
+
const replacements = args?.replacements ?? [];
|
|
392
|
+
const firstRep = replacements[0] ?? {};
|
|
393
|
+
const searchContent = firstRep.search_content ?? '';
|
|
394
|
+
const replaceContent = firstRep.replace_content ?? '';
|
|
454
395
|
const command = `search_replace "${searchContent}" → "${replaceContent}" "${filePath}"`;
|
|
455
396
|
const output = getOutputText(item) || 'No output';
|
|
456
397
|
const success = false;
|
|
@@ -464,7 +405,6 @@ export const formatSearchReplaceCommandMessage = (item, index, _toolCallArgument
|
|
|
464
405
|
path: filePath,
|
|
465
406
|
search_content: searchContent,
|
|
466
407
|
replace_content: replaceContent,
|
|
467
|
-
replace_all: args?.replace_all ?? false,
|
|
468
408
|
},
|
|
469
409
|
}),
|
|
470
410
|
];
|
|
@@ -474,8 +414,9 @@ export const formatSearchReplaceCommandMessage = (item, index, _toolCallArgument
|
|
|
474
414
|
for (const [replaceIndex, replaceResult] of replaceOutputItems.entries()) {
|
|
475
415
|
const normalizedArgs = item?.rawItem?.arguments ?? item?.arguments;
|
|
476
416
|
const args = normalizeToolArguments(normalizedArgs) ?? {};
|
|
477
|
-
const
|
|
478
|
-
const
|
|
417
|
+
const filePath = args?.path ?? replaceResult?.path ?? 'unknown';
|
|
418
|
+
const replacements = args?.replacements ?? [];
|
|
419
|
+
const operationArgs = replacements[replaceIndex] ?? {};
|
|
479
420
|
const searchContent = operationArgs?.search_content ?? '';
|
|
480
421
|
const replaceContent = operationArgs?.replace_content ?? '';
|
|
481
422
|
const command = `search_replace "${searchContent}" → "${replaceContent}" "${filePath}"`;
|
|
@@ -494,7 +435,6 @@ export const formatSearchReplaceCommandMessage = (item, index, _toolCallArgument
|
|
|
494
435
|
path: filePath,
|
|
495
436
|
search_content: searchContent,
|
|
496
437
|
replace_content: replaceContent,
|
|
497
|
-
replace_all: operationArgs?.replace_all ?? false,
|
|
498
438
|
},
|
|
499
439
|
}));
|
|
500
440
|
}
|
|
@@ -506,14 +446,12 @@ export function createSearchReplaceToolDefinition(deps) {
|
|
|
506
446
|
return {
|
|
507
447
|
name: 'search_replace',
|
|
508
448
|
description: 'Replace text in a file using exact or relaxed matching.\n' +
|
|
509
|
-
'Set replace_all to true to replace all occurrences instead of requiring a unique match.\n' +
|
|
510
449
|
'Gap matching: put <...> on its own line in search_content to match an unchanged region between a head anchor and a tail anchor. The entire span (both anchors plus everything between them) is what gets replaced, so a mis-placed anchor silently deletes a large region. Choose anchors that are distinctive and unambiguous — prefer a few lines of real, unique code; never anchor on a single generic line like "}", "return", or a blank line. Use this to edit or DELETE a large block without reproducing it. To delete the block including the anchors, omit them from replace_content; to delete only the middle, repeat the anchors in replace_content.\n' +
|
|
511
450
|
'Use this tool for precise edits where you know the content to be replaced.',
|
|
512
451
|
parameters: searchReplaceParametersSchema,
|
|
513
452
|
approvalPresentation: getApprovalPresentationCapability('search_replace'),
|
|
514
453
|
needsApproval: async (params) => {
|
|
515
454
|
try {
|
|
516
|
-
const editMode = settingsService.get('app.editMode');
|
|
517
455
|
const operations = getSearchReplaceOperations(params);
|
|
518
456
|
const cwd = executionContext?.getCwd() || process.cwd();
|
|
519
457
|
if (operations.length > 1) {
|
|
@@ -526,10 +464,10 @@ export function createSearchReplaceToolDefinition(deps) {
|
|
|
526
464
|
return false;
|
|
527
465
|
}
|
|
528
466
|
});
|
|
529
|
-
return !
|
|
467
|
+
return !allInsideCwd;
|
|
530
468
|
}
|
|
531
469
|
const operation = operations[0];
|
|
532
|
-
const { path: filePath, search_content, replace_content
|
|
470
|
+
const { path: filePath, search_content, replace_content } = operation;
|
|
533
471
|
const targetPath = resolveWorkspacePath(filePath, cwd);
|
|
534
472
|
const workspaceRoot = cwd;
|
|
535
473
|
const insideCwd = targetPath.startsWith(workspaceRoot + path.sep);
|
|
@@ -550,7 +488,7 @@ export function createSearchReplaceToolDefinition(deps) {
|
|
|
550
488
|
loggingService.debug('search_replace validation: creating new file because search_content is empty', {
|
|
551
489
|
path: filePath,
|
|
552
490
|
});
|
|
553
|
-
if (
|
|
491
|
+
if (insideCwd) {
|
|
554
492
|
return false;
|
|
555
493
|
}
|
|
556
494
|
return true;
|
|
@@ -592,68 +530,63 @@ export function createSearchReplaceToolDefinition(deps) {
|
|
|
592
530
|
// Cache the result for execute phase
|
|
593
531
|
editCache.set(operation, matchInfo, content, eol);
|
|
594
532
|
if (matchInfo.type === 'exact') {
|
|
595
|
-
if (
|
|
596
|
-
loggingService.warn('search_replace validation: multiple exact matches
|
|
533
|
+
if (matchInfo.count > 1) {
|
|
534
|
+
loggingService.warn('search_replace validation: multiple exact matches - will fail in execute', {
|
|
597
535
|
path: filePath,
|
|
598
536
|
count: matchInfo.count,
|
|
599
537
|
});
|
|
600
|
-
return
|
|
538
|
+
return false;
|
|
601
539
|
}
|
|
602
|
-
loggingService.debug('search_replace validation: exact match
|
|
540
|
+
loggingService.debug('search_replace validation: exact match found', {
|
|
603
541
|
path: filePath,
|
|
604
542
|
count: matchInfo.count,
|
|
605
|
-
replace_all,
|
|
606
543
|
});
|
|
607
|
-
if (
|
|
544
|
+
if (insideCwd) {
|
|
608
545
|
return false;
|
|
609
546
|
}
|
|
610
547
|
return true;
|
|
611
548
|
}
|
|
612
549
|
if (matchInfo.type === 'relaxed') {
|
|
613
|
-
if (
|
|
614
|
-
loggingService.warn('search_replace validation: multiple relaxed matches
|
|
550
|
+
if (matchInfo.count > 1) {
|
|
551
|
+
loggingService.warn('search_replace validation: multiple relaxed matches - will fail in execute', {
|
|
615
552
|
path: filePath,
|
|
616
553
|
count: matchInfo.count,
|
|
617
554
|
});
|
|
618
|
-
// Auto-approve - execute will handle the error gracefully
|
|
619
555
|
return false;
|
|
620
556
|
}
|
|
621
|
-
loggingService.debug('search_replace validation: relaxed match
|
|
557
|
+
loggingService.debug('search_replace validation: relaxed match found', {
|
|
622
558
|
path: filePath,
|
|
623
559
|
count: matchInfo.count,
|
|
624
|
-
replace_all,
|
|
625
560
|
});
|
|
626
561
|
return true;
|
|
627
562
|
}
|
|
628
563
|
if (matchInfo.type === 'normalized') {
|
|
629
|
-
if (
|
|
630
|
-
loggingService.warn('search_replace validation: multiple normalized matches
|
|
564
|
+
if (matchInfo.count > 1) {
|
|
565
|
+
loggingService.warn('search_replace validation: multiple normalized matches - will fail in execute', {
|
|
631
566
|
path: filePath,
|
|
632
567
|
count: matchInfo.count,
|
|
633
568
|
});
|
|
634
569
|
return false;
|
|
635
570
|
}
|
|
636
|
-
loggingService.debug('search_replace validation: normalized match
|
|
571
|
+
loggingService.debug('search_replace validation: normalized match found', {
|
|
637
572
|
path: filePath,
|
|
638
573
|
count: matchInfo.count,
|
|
639
|
-
replace_all,
|
|
640
574
|
});
|
|
641
575
|
return true;
|
|
642
576
|
}
|
|
643
577
|
if (matchInfo.type === 'gap') {
|
|
644
|
-
if (
|
|
645
|
-
loggingService.warn('search_replace validation: multiple gap matches
|
|
578
|
+
if (matchInfo.count > 1) {
|
|
579
|
+
loggingService.warn('search_replace validation: multiple gap matches - will fail in execute', {
|
|
646
580
|
path: filePath,
|
|
647
581
|
count: matchInfo.count,
|
|
648
582
|
});
|
|
649
583
|
return false;
|
|
650
584
|
}
|
|
651
|
-
loggingService.debug('search_replace validation: gap match
|
|
585
|
+
loggingService.debug('search_replace validation: gap match found', {
|
|
652
586
|
path: filePath,
|
|
653
587
|
count: matchInfo.count,
|
|
654
|
-
replace_all,
|
|
655
588
|
});
|
|
656
|
-
if (
|
|
589
|
+
if (insideCwd) {
|
|
657
590
|
return false;
|
|
658
591
|
}
|
|
659
592
|
return true;
|
|
@@ -688,7 +621,7 @@ export function createSearchReplaceToolDefinition(deps) {
|
|
|
688
621
|
return writeFile(p, c, 'utf8');
|
|
689
622
|
};
|
|
690
623
|
const applyToContent = async (operation, content) => {
|
|
691
|
-
const { path: filePath, search_content, replace_content
|
|
624
|
+
const { path: filePath, search_content, replace_content } = operation;
|
|
692
625
|
if (search_content === '') {
|
|
693
626
|
return {
|
|
694
627
|
output: {
|
|
@@ -789,7 +722,6 @@ export function createSearchReplaceToolDefinition(deps) {
|
|
|
789
722
|
const replacementResult = executeReplacement(matchInfo, content, eol, {
|
|
790
723
|
normalizedSearchContent,
|
|
791
724
|
replaceContent: replace_content,
|
|
792
|
-
replaceAll: replace_all,
|
|
793
725
|
});
|
|
794
726
|
if (!replacementResult.success) {
|
|
795
727
|
return {
|
|
@@ -802,7 +734,6 @@ export function createSearchReplaceToolDefinition(deps) {
|
|
|
802
734
|
if (enableFileLogging) {
|
|
803
735
|
loggingService.debug(`File updated (${replacementResult.matchType} match)`, {
|
|
804
736
|
path: filePath,
|
|
805
|
-
replace_all,
|
|
806
737
|
count: replacementResult.replacedCount,
|
|
807
738
|
healed: usedHealing,
|
|
808
739
|
});
|
|
@@ -901,7 +832,7 @@ export function createSearchReplaceToolDefinition(deps) {
|
|
|
901
832
|
if (enableFileLogging) {
|
|
902
833
|
loggingService.error('File operation failed', {
|
|
903
834
|
type: 'search_replace',
|
|
904
|
-
path:
|
|
835
|
+
path: params.path,
|
|
905
836
|
error: error instanceof Error ? error.message : String(error),
|
|
906
837
|
});
|
|
907
838
|
}
|