@qduc/term2 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +46 -6
- package/dist/agent.js.map +1 -1
- package/dist/agent.test.d.ts +2 -0
- package/dist/agent.test.d.ts.map +1 -0
- package/dist/agent.test.js +198 -0
- package/dist/agent.test.js.map +1 -0
- package/dist/app.d.ts +5 -0
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +30 -14
- package/dist/app.js.map +1 -1
- package/dist/app.startup-banner.test.d.ts +2 -0
- package/dist/app.startup-banner.test.d.ts.map +1 -0
- package/dist/app.startup-banner.test.js +11 -0
- package/dist/app.startup-banner.test.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +18 -3
- package/dist/cli.js.map +1 -1
- package/dist/components/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/ApprovalPrompt.js +10 -10
- package/dist/components/ApprovalPrompt.js.map +1 -1
- package/dist/components/Banner.js +1 -1
- package/dist/components/Banner.js.map +1 -1
- package/dist/components/BottomArea.d.ts.map +1 -1
- package/dist/components/BottomArea.js +3 -4
- package/dist/components/BottomArea.js.map +1 -1
- package/dist/components/ChatMessage.d.ts +1 -0
- package/dist/components/ChatMessage.d.ts.map +1 -1
- package/dist/components/ChatMessage.js +2 -2
- package/dist/components/ChatMessage.js.map +1 -1
- package/dist/components/CommandMessage.d.ts.map +1 -1
- package/dist/components/CommandMessage.js +48 -3
- package/dist/components/CommandMessage.js.map +1 -1
- package/dist/components/CommandMessage.test.js +90 -0
- package/dist/components/CommandMessage.test.js.map +1 -1
- package/dist/components/Input/PopupManager.d.ts +3 -0
- package/dist/components/Input/PopupManager.d.ts.map +1 -1
- package/dist/components/Input/PopupManager.js +2 -2
- package/dist/components/Input/PopupManager.js.map +1 -1
- package/dist/components/Input/insertions.d.ts.map +1 -1
- package/dist/components/Input/insertions.js +2 -2
- package/dist/components/Input/insertions.js.map +1 -1
- 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 +73 -0
- package/dist/components/Input/popup-key-navigation.test.js.map +1 -0
- package/dist/components/Input/popup-props.d.ts.map +1 -1
- package/dist/components/Input/popup-props.js +2 -0
- package/dist/components/Input/popup-props.js.map +1 -1
- package/dist/components/Input/triggers.d.ts +1 -0
- package/dist/components/Input/triggers.d.ts.map +1 -1
- package/dist/components/Input/triggers.js +1 -0
- package/dist/components/Input/triggers.js.map +1 -1
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +130 -6
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/InputBox.test.js +42 -1
- package/dist/components/InputBox.test.js.map +1 -1
- package/dist/components/LiveResponse.d.ts +1 -3
- package/dist/components/LiveResponse.d.ts.map +1 -1
- package/dist/components/LiveResponse.js +5 -6
- package/dist/components/LiveResponse.js.map +1 -1
- package/dist/components/MarkdownRenderer.d.ts +5 -2
- package/dist/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/components/MarkdownRenderer.js +66 -45
- package/dist/components/MarkdownRenderer.js.map +1 -1
- package/dist/components/MessageList.d.ts +7 -1
- package/dist/components/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList.js +98 -23
- package/dist/components/MessageList.js.map +1 -1
- package/dist/components/MessageList.test.js +177 -4
- package/dist/components/MessageList.test.js.map +1 -1
- package/dist/components/ModelSelectionMenu.d.ts.map +1 -1
- package/dist/components/ModelSelectionMenu.js +54 -14
- package/dist/components/ModelSelectionMenu.js.map +1 -1
- package/dist/components/PathSelectionMenu.d.ts +2 -0
- package/dist/components/PathSelectionMenu.d.ts.map +1 -1
- package/dist/components/PathSelectionMenu.js +31 -12
- package/dist/components/PathSelectionMenu.js.map +1 -1
- package/dist/components/SettingsSelectionMenu.d.ts +1 -0
- package/dist/components/SettingsSelectionMenu.d.ts.map +1 -1
- package/dist/components/SettingsSelectionMenu.js +32 -23
- package/dist/components/SettingsSelectionMenu.js.map +1 -1
- package/dist/components/SettingsSelectionMenu.scroll.test.d.ts +2 -0
- package/dist/components/SettingsSelectionMenu.scroll.test.d.ts.map +1 -0
- package/dist/components/SettingsSelectionMenu.scroll.test.js +23 -0
- package/dist/components/SettingsSelectionMenu.scroll.test.js.map +1 -0
- package/dist/components/StatusBar.d.ts.map +1 -1
- package/dist/components/StatusBar.js +14 -14
- package/dist/components/StatusBar.js.map +1 -1
- package/dist/components/StatusBar.test.d.ts +2 -0
- package/dist/components/StatusBar.test.d.ts.map +1 -0
- package/dist/components/StatusBar.test.js +30 -0
- package/dist/components/StatusBar.test.js.map +1 -0
- package/dist/contracts/conversation.d.ts +1 -0
- package/dist/contracts/conversation.d.ts.map +1 -1
- package/dist/env-setup.d.ts +2 -0
- package/dist/env-setup.d.ts.map +1 -0
- package/dist/env-setup.js +7 -0
- package/dist/env-setup.js.map +1 -0
- package/dist/env-setup.test.d.ts +2 -0
- package/dist/env-setup.test.d.ts.map +1 -0
- package/dist/env-setup.test.js +6 -0
- package/dist/env-setup.test.js.map +1 -0
- package/dist/hooks/path-completion-filter.d.ts +4 -0
- package/dist/hooks/path-completion-filter.d.ts.map +1 -0
- package/dist/hooks/path-completion-filter.js +27 -0
- package/dist/hooks/path-completion-filter.js.map +1 -0
- package/dist/hooks/path-completion-filter.test.d.ts +2 -0
- package/dist/hooks/path-completion-filter.test.d.ts.map +1 -0
- package/dist/hooks/path-completion-filter.test.js +100 -0
- package/dist/hooks/path-completion-filter.test.js.map +1 -0
- package/dist/hooks/use-app-commands.d.ts +3 -1
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-commands.js +74 -6
- package/dist/hooks/use-app-commands.js.map +1 -1
- package/dist/hooks/use-app-commands.test.js +20 -3
- package/dist/hooks/use-app-commands.test.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +4 -9
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +32 -57
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-mode-handlers.d.ts +3 -1
- package/dist/hooks/use-mode-handlers.d.ts.map +1 -1
- package/dist/hooks/use-mode-handlers.js +8 -0
- package/dist/hooks/use-mode-handlers.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts +1 -1
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +57 -21
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/hooks/use-model-selection.test.js +171 -9
- package/dist/hooks/use-model-selection.test.js.map +1 -1
- package/dist/hooks/use-path-completion.d.ts +1 -0
- package/dist/hooks/use-path-completion.d.ts.map +1 -1
- package/dist/hooks/use-path-completion.js +22 -17
- package/dist/hooks/use-path-completion.js.map +1 -1
- package/dist/hooks/use-settings-completion.d.ts +2 -2
- package/dist/hooks/use-settings-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-completion.js +53 -18
- package/dist/hooks/use-settings-completion.js.map +1 -1
- package/dist/hooks/use-settings-completion.scroll.test.d.ts +2 -0
- package/dist/hooks/use-settings-completion.scroll.test.d.ts.map +1 -0
- package/dist/hooks/use-settings-completion.scroll.test.js +55 -0
- package/dist/hooks/use-settings-completion.scroll.test.js.map +1 -0
- package/dist/hooks/use-settings-completion.test.js +69 -79
- package/dist/hooks/use-settings-completion.test.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.d.ts +1 -2
- package/dist/hooks/use-settings-value-completion.d.ts.map +1 -1
- package/dist/hooks/use-settings-value-completion.js +47 -19
- package/dist/hooks/use-settings-value-completion.js.map +1 -1
- package/dist/hooks/use-settings-value-completion.test.js +5 -18
- package/dist/hooks/use-settings-value-completion.test.js.map +1 -1
- package/dist/hooks/use-slash-commands.d.ts +7 -0
- package/dist/hooks/use-slash-commands.d.ts.map +1 -1
- package/dist/hooks/use-slash-commands.js +20 -13
- package/dist/hooks/use-slash-commands.js.map +1 -1
- package/dist/hooks/use-slash-commands.test.js +52 -1
- package/dist/hooks/use-slash-commands.test.js.map +1 -1
- package/dist/hooks/use-trigger-detection.d.ts.map +1 -1
- package/dist/hooks/use-trigger-detection.js +7 -3
- package/dist/hooks/use-trigger-detection.js.map +1 -1
- package/dist/hooks/use-trigger-detection.test.d.ts +2 -0
- package/dist/hooks/use-trigger-detection.test.d.ts.map +1 -0
- package/dist/hooks/use-trigger-detection.test.js +59 -0
- package/dist/hooks/use-trigger-detection.test.js.map +1 -0
- package/dist/lib/openai-agent-client.d.ts +21 -0
- package/dist/lib/openai-agent-client.d.ts.map +1 -1
- package/dist/lib/openai-agent-client.js +52 -17
- package/dist/lib/openai-agent-client.js.map +1 -1
- package/dist/lib/openai-agent-client.test.js +63 -0
- package/dist/lib/openai-agent-client.test.js.map +1 -1
- package/dist/lib/tool-invoke.d.ts +3 -2
- package/dist/lib/tool-invoke.d.ts.map +1 -1
- package/dist/lib/tool-invoke.js +69 -4
- package/dist/lib/tool-invoke.js.map +1 -1
- package/dist/lib/tool-invoke.test.js +25 -0
- package/dist/lib/tool-invoke.test.js.map +1 -1
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +3 -0
- package/dist/non-interactive.js.map +1 -1
- package/dist/prompts/gpt-5-modern.md +66 -0
- package/dist/prompts/gpt-5.md +10 -0
- package/dist/prompts/lite.md +10 -27
- package/dist/prompts/prompt-selector.js +2 -2
- package/dist/prompts/prompt-selector.js.map +1 -1
- package/dist/prompts/prompt-selector.test.js +7 -2
- package/dist/prompts/prompt-selector.test.js.map +1 -1
- package/dist/prompts/prompt-selector.test.ts +22 -2
- package/dist/prompts/prompt-selector.ts +2 -2
- package/dist/prompts/search-via-shell.d.ts +7 -0
- package/dist/prompts/search-via-shell.d.ts.map +1 -0
- package/dist/prompts/search-via-shell.js +59 -0
- package/dist/prompts/search-via-shell.js.map +1 -0
- package/dist/prompts/search-via-shell.test.d.ts +2 -0
- package/dist/prompts/search-via-shell.test.d.ts.map +1 -0
- package/dist/prompts/search-via-shell.test.js +40 -0
- package/dist/prompts/search-via-shell.test.js.map +1 -0
- package/dist/prompts/search-via-shell.test.ts +47 -0
- package/dist/prompts/search-via-shell.ts +71 -0
- package/dist/prompts/simple.md +40 -186
- package/dist/providers/ai-sdk-agents-adapter.d.ts +7 -0
- package/dist/providers/ai-sdk-agents-adapter.d.ts.map +1 -0
- package/dist/providers/ai-sdk-agents-adapter.js +80 -0
- package/dist/providers/ai-sdk-agents-adapter.js.map +1 -0
- package/dist/providers/ai-sdk-agents-adapter.test.d.ts +2 -0
- package/dist/providers/ai-sdk-agents-adapter.test.d.ts.map +1 -0
- package/dist/providers/ai-sdk-agents-adapter.test.js +158 -0
- package/dist/providers/ai-sdk-agents-adapter.test.js.map +1 -0
- package/dist/providers/ai-sdk-anthropic.provider.d.ts +14 -0
- package/dist/providers/ai-sdk-anthropic.provider.d.ts.map +1 -0
- package/dist/providers/ai-sdk-anthropic.provider.js +18 -0
- package/dist/providers/ai-sdk-anthropic.provider.js.map +1 -0
- package/dist/providers/ai-sdk-google.provider.d.ts +14 -0
- package/dist/providers/ai-sdk-google.provider.d.ts.map +1 -0
- package/dist/providers/ai-sdk-google.provider.js +18 -0
- package/dist/providers/ai-sdk-google.provider.js.map +1 -0
- package/dist/providers/ai-sdk-logging-fetch.d.ts +11 -0
- package/dist/providers/ai-sdk-logging-fetch.d.ts.map +1 -0
- package/dist/providers/ai-sdk-logging-fetch.js +127 -0
- package/dist/providers/ai-sdk-logging-fetch.js.map +1 -0
- package/dist/providers/ai-sdk-logging-fetch.test.d.ts +2 -0
- package/dist/providers/ai-sdk-logging-fetch.test.d.ts.map +1 -0
- package/dist/providers/ai-sdk-logging-fetch.test.js +107 -0
- package/dist/providers/ai-sdk-logging-fetch.test.js.map +1 -0
- package/dist/providers/ai-sdk-message-normalizer.d.ts +8 -0
- package/dist/providers/ai-sdk-message-normalizer.d.ts.map +1 -0
- package/dist/providers/ai-sdk-message-normalizer.js +115 -0
- package/dist/providers/ai-sdk-message-normalizer.js.map +1 -0
- package/dist/providers/ai-sdk-message-normalizer.test.d.ts +2 -0
- package/dist/providers/ai-sdk-message-normalizer.test.d.ts.map +1 -0
- package/dist/providers/ai-sdk-message-normalizer.test.js +435 -0
- package/dist/providers/ai-sdk-message-normalizer.test.js.map +1 -0
- 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 +3 -2
- package/dist/providers/ai-sdk-openai-compatible.provider.js.map +1 -1
- package/dist/providers/ai-sdk-openai-compatible.provider.test.js +25 -0
- package/dist/providers/ai-sdk-openai-compatible.provider.test.js.map +1 -1
- package/dist/providers/ai-sdk-openrouter.provider.d.ts +16 -0
- package/dist/providers/ai-sdk-openrouter.provider.d.ts.map +1 -0
- package/dist/providers/ai-sdk-openrouter.provider.js +21 -0
- package/dist/providers/ai-sdk-openrouter.provider.js.map +1 -0
- package/dist/providers/ai-sdk-openrouter.provider.test.d.ts +2 -0
- package/dist/providers/ai-sdk-openrouter.provider.test.d.ts.map +1 -0
- package/dist/providers/ai-sdk-openrouter.provider.test.js +93 -0
- package/dist/providers/ai-sdk-openrouter.provider.test.js.map +1 -0
- package/dist/providers/common/openai-compatible-messages.d.ts +1 -2
- package/dist/providers/common/openai-compatible-messages.d.ts.map +1 -1
- package/dist/providers/common/openai-compatible-messages.js +22 -48
- package/dist/providers/common/openai-compatible-messages.js.map +1 -1
- package/dist/providers/common/openai-compatible-messages.test.js +93 -1
- package/dist/providers/common/openai-compatible-messages.test.js.map +1 -1
- package/dist/providers/custom-provider-adapter.test.d.ts +2 -0
- package/dist/providers/custom-provider-adapter.test.d.ts.map +1 -0
- package/dist/providers/custom-provider-adapter.test.js +52 -0
- package/dist/providers/custom-provider-adapter.test.js.map +1 -0
- package/dist/providers/openai-compatible-behavior-gate.test.d.ts +2 -0
- package/dist/providers/openai-compatible-behavior-gate.test.d.ts.map +1 -0
- package/dist/providers/openai-compatible-behavior-gate.test.js +216 -0
- package/dist/providers/openai-compatible-behavior-gate.test.js.map +1 -0
- package/dist/providers/openai-compatible.provider.d.ts +10 -1
- package/dist/providers/openai-compatible.provider.d.ts.map +1 -1
- package/dist/providers/openai-compatible.provider.js +341 -31
- package/dist/providers/openai-compatible.provider.js.map +1 -1
- package/dist/providers/openai-compatible.provider.test.d.ts +2 -0
- package/dist/providers/openai-compatible.provider.test.d.ts.map +1 -0
- package/dist/providers/openai-compatible.provider.test.js +462 -0
- package/dist/providers/openai-compatible.provider.test.js.map +1 -0
- package/dist/providers/openai.provider.js +2 -1
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/openai.provider.test.d.ts +2 -0
- package/dist/providers/openai.provider.test.d.ts.map +1 -0
- package/dist/providers/openai.provider.test.js +22 -0
- package/dist/providers/openai.provider.test.js.map +1 -0
- package/dist/providers/openrouter.provider.js +32 -5
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/scripts/eval-auto-approval/dataset.d.ts +2 -2
- package/dist/services/conversation-events.d.ts +3 -0
- package/dist/services/conversation-events.d.ts.map +1 -1
- package/dist/services/conversation-result-builder.d.ts.map +1 -1
- package/dist/services/conversation-result-builder.js +11 -1
- package/dist/services/conversation-result-builder.js.map +1 -1
- package/dist/services/conversation-result-builder.test.js +72 -0
- package/dist/services/conversation-result-builder.test.js.map +1 -1
- package/dist/services/conversation-session.d.ts +2 -1
- package/dist/services/conversation-session.d.ts.map +1 -1
- package/dist/services/conversation-session.js +30 -1
- package/dist/services/conversation-session.js.map +1 -1
- package/dist/services/file-service.js +1 -1
- package/dist/services/file-service.js.map +1 -1
- package/dist/services/logging-contract.d.ts +3 -3
- package/dist/services/logging-service.d.ts.map +1 -1
- package/dist/services/logging-service.js +18 -1
- package/dist/services/logging-service.js.map +1 -1
- package/dist/services/model-service.d.ts.map +1 -1
- package/dist/services/model-service.js +16 -8
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/model-service.test.js +67 -1
- package/dist/services/model-service.test.js.map +1 -1
- package/dist/services/rtk-service.d.ts +23 -0
- package/dist/services/rtk-service.d.ts.map +1 -0
- package/dist/services/rtk-service.js +165 -0
- package/dist/services/rtk-service.js.map +1 -0
- package/dist/services/rtk-service.test.d.ts +2 -0
- package/dist/services/rtk-service.test.d.ts.map +1 -0
- package/dist/services/rtk-service.test.js +239 -0
- package/dist/services/rtk-service.test.js.map +1 -0
- package/dist/services/settings-persistence.d.ts +1 -0
- package/dist/services/settings-persistence.d.ts.map +1 -1
- package/dist/services/settings-persistence.js +28 -5
- package/dist/services/settings-persistence.js.map +1 -1
- package/dist/services/settings-persistence.test.js +55 -3
- package/dist/services/settings-persistence.test.js.map +1 -1
- package/dist/services/settings-schema.d.ts +55 -16
- package/dist/services/settings-schema.d.ts.map +1 -1
- package/dist/services/settings-schema.js +35 -4
- package/dist/services/settings-schema.js.map +1 -1
- package/dist/services/settings-schema.test.d.ts +2 -0
- package/dist/services/settings-schema.test.d.ts.map +1 -0
- package/dist/services/settings-schema.test.js +77 -0
- package/dist/services/settings-schema.test.js.map +1 -0
- package/dist/services/settings-service.d.ts.map +1 -1
- package/dist/services/settings-service.js +7 -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 +1 -0
- package/dist/services/settings-sources.js.map +1 -1
- package/dist/services/shell-auto-approval-evaluator.d.ts +1 -1
- package/dist/services/shell-auto-approval-evaluator.d.ts.map +1 -1
- package/dist/services/shell-auto-approval-evaluator.js +8 -2
- package/dist/services/shell-auto-approval-evaluator.js.map +1 -1
- package/dist/services/stream-event-parsing.js +1 -1
- package/dist/services/stream-event-parsing.js.map +1 -1
- package/dist/services/stream-event-parsing.test.js +13 -0
- package/dist/services/stream-event-parsing.test.js.map +1 -1
- package/dist/services/stream-event-processor.d.ts.map +1 -1
- package/dist/services/stream-event-processor.js +10 -8
- package/dist/services/stream-event-processor.js.map +1 -1
- package/dist/services/stream-event-processor.test.js +32 -0
- package/dist/services/stream-event-processor.test.js.map +1 -1
- package/dist/services/terminal-result-collector.d.ts.map +1 -1
- package/dist/services/terminal-result-collector.js +1 -0
- package/dist/services/terminal-result-collector.js.map +1 -1
- package/dist/services/terminal-result-collector.test.js +22 -0
- package/dist/services/terminal-result-collector.test.js.map +1 -1
- package/dist/tools/apply-patch.d.ts +12 -4
- package/dist/tools/apply-patch.d.ts.map +1 -1
- package/dist/tools/apply-patch.js +204 -208
- package/dist/tools/apply-patch.js.map +1 -1
- package/dist/tools/apply-patch.test.js +44 -0
- package/dist/tools/apply-patch.test.js.map +1 -1
- package/dist/tools/code-context.d.ts +27 -0
- package/dist/tools/code-context.d.ts.map +1 -0
- package/dist/tools/code-context.js +512 -0
- package/dist/tools/code-context.js.map +1 -0
- package/dist/tools/code-context.test.d.ts +2 -0
- package/dist/tools/code-context.test.d.ts.map +1 -0
- package/dist/tools/code-context.test.js +368 -0
- package/dist/tools/code-context.test.js.map +1 -0
- package/dist/tools/create-file.d.ts.map +1 -1
- package/dist/tools/create-file.js +3 -2
- package/dist/tools/create-file.js.map +1 -1
- package/dist/tools/edit-healing.d.ts +4 -3
- package/dist/tools/edit-healing.d.ts.map +1 -1
- package/dist/tools/edit-healing.js +50 -20
- package/dist/tools/edit-healing.js.map +1 -1
- package/dist/tools/edit-healing.test.js +62 -0
- package/dist/tools/edit-healing.test.js.map +1 -1
- package/dist/tools/file-locks.d.ts +2 -0
- package/dist/tools/file-locks.d.ts.map +1 -0
- package/dist/tools/file-locks.js +21 -0
- package/dist/tools/file-locks.js.map +1 -0
- package/dist/tools/find-files.d.ts +1 -0
- package/dist/tools/find-files.d.ts.map +1 -1
- package/dist/tools/find-files.js +59 -139
- package/dist/tools/find-files.js.map +1 -1
- package/dist/tools/find-files.test.js +5 -10
- 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 +10 -46
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/language-providers.d.ts +48 -0
- package/dist/tools/language-providers.d.ts.map +1 -0
- package/dist/tools/language-providers.js +244 -0
- package/dist/tools/language-providers.js.map +1 -0
- package/dist/tools/search-replace.d.ts +5 -2
- package/dist/tools/search-replace.d.ts.map +1 -1
- package/dist/tools/search-replace.js +201 -106
- package/dist/tools/search-replace.js.map +1 -1
- package/dist/tools/search-replace.test.js +111 -1
- package/dist/tools/search-replace.test.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +5 -15
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/shell.d.ts +2 -0
- package/dist/tools/shell.d.ts.map +1 -1
- package/dist/tools/shell.js +15 -7
- package/dist/tools/shell.js.map +1 -1
- package/dist/tools/shell.test.js +28 -0
- package/dist/tools/shell.test.js.map +1 -1
- package/dist/tools/tool-names.d.ts +3 -0
- package/dist/tools/tool-names.d.ts.map +1 -1
- package/dist/tools/tool-names.js +3 -0
- package/dist/tools/tool-names.js.map +1 -1
- package/dist/tools/tool-names.test.js +4 -1
- package/dist/tools/tool-names.test.js.map +1 -1
- package/dist/tools/tool-parameter-schema.test.js +18 -0
- package/dist/tools/tool-parameter-schema.test.js.map +1 -1
- package/dist/utils/command-safety/constants.d.ts.map +1 -1
- package/dist/utils/command-safety/constants.js +30 -5
- package/dist/utils/command-safety/constants.js.map +1 -1
- package/dist/utils/command-safety/index.d.ts.map +1 -1
- package/dist/utils/command-safety/index.js +3 -0
- package/dist/utils/command-safety/index.js.map +1 -1
- package/dist/utils/command-safety/path-analysis.d.ts.map +1 -1
- package/dist/utils/command-safety/path-analysis.js +8 -0
- package/dist/utils/command-safety/path-analysis.js.map +1 -1
- package/dist/utils/command-safety.find.test.js +1 -1
- package/dist/utils/command-safety.find.test.js.map +1 -1
- package/dist/utils/command-safety.path.test.js +14 -0
- package/dist/utils/command-safety.path.test.js.map +1 -1
- package/dist/utils/command-safety.specialized-handlers.test.d.ts +2 -0
- package/dist/utils/command-safety.specialized-handlers.test.d.ts.map +1 -0
- package/dist/utils/command-safety.specialized-handlers.test.js +20 -0
- package/dist/utils/command-safety.specialized-handlers.test.js.map +1 -0
- package/dist/utils/conversation-event-handler.d.ts +8 -6
- package/dist/utils/conversation-event-handler.d.ts.map +1 -1
- package/dist/utils/conversation-event-handler.js +166 -46
- package/dist/utils/conversation-event-handler.js.map +1 -1
- package/dist/utils/conversation-event-handler.test.js +391 -12
- package/dist/utils/conversation-event-handler.test.js.map +1 -1
- package/dist/utils/conversation-utils.d.ts +2 -0
- package/dist/utils/conversation-utils.d.ts.map +1 -1
- package/dist/utils/conversation-utils.js +2 -0
- package/dist/utils/conversation-utils.js.map +1 -1
- package/dist/utils/execute-shell.d.ts +5 -6
- package/dist/utils/execute-shell.d.ts.map +1 -1
- package/dist/utils/execute-shell.js +21 -11
- package/dist/utils/execute-shell.js.map +1 -1
- package/dist/utils/execute-shell.test.js +37 -6
- package/dist/utils/execute-shell.test.js.map +1 -1
- package/dist/utils/extract-command-messages.d.ts.map +1 -1
- package/dist/utils/extract-command-messages.js +4 -1
- package/dist/utils/extract-command-messages.js.map +1 -1
- package/dist/utils/flex-service-tier.d.ts +2 -0
- package/dist/utils/flex-service-tier.d.ts.map +1 -0
- package/dist/utils/flex-service-tier.js +20 -0
- package/dist/utils/flex-service-tier.js.map +1 -0
- package/dist/utils/flex-service-tier.test.d.ts +2 -0
- package/dist/utils/flex-service-tier.test.d.ts.map +1 -0
- package/dist/utils/flex-service-tier.test.js +25 -0
- package/dist/utils/flex-service-tier.test.js.map +1 -0
- package/dist/utils/log-truncation.d.ts +4 -2
- package/dist/utils/log-truncation.d.ts.map +1 -1
- package/dist/utils/log-truncation.js +143 -41
- package/dist/utils/log-truncation.js.map +1 -1
- package/dist/utils/log-truncation.test.js +131 -1
- package/dist/utils/log-truncation.test.js.map +1 -1
- package/dist/utils/project-tree.d.ts +14 -0
- package/dist/utils/project-tree.d.ts.map +1 -0
- package/dist/utils/project-tree.js +111 -0
- package/dist/utils/project-tree.js.map +1 -0
- package/dist/utils/project-tree.test.d.ts +2 -0
- package/dist/utils/project-tree.test.d.ts.map +1 -0
- package/dist/utils/project-tree.test.js +149 -0
- package/dist/utils/project-tree.test.js.map +1 -0
- package/dist/utils/provider-traffic-extractor.d.ts.map +1 -1
- package/dist/utils/provider-traffic-extractor.js +0 -1
- package/dist/utils/provider-traffic-extractor.js.map +1 -1
- package/dist/utils/streaming-session-factory.d.ts +1 -3
- package/dist/utils/streaming-session-factory.d.ts.map +1 -1
- package/dist/utils/streaming-session-factory.js +29 -10
- package/dist/utils/streaming-session-factory.js.map +1 -1
- package/dist/utils/streaming-session-factory.test.js +47 -15
- package/dist/utils/streaming-session-factory.test.js.map +1 -1
- package/dist/utils/subsequence-filter.d.ts +8 -0
- package/dist/utils/subsequence-filter.d.ts.map +1 -0
- package/dist/utils/subsequence-filter.js +47 -0
- package/dist/utils/subsequence-filter.js.map +1 -0
- package/dist/utils/terminal-clear.d.ts +7 -0
- package/dist/utils/terminal-clear.d.ts.map +1 -0
- package/dist/utils/terminal-clear.js +5 -0
- package/dist/utils/terminal-clear.js.map +1 -0
- package/dist/utils/terminal-clear.test.d.ts +2 -0
- package/dist/utils/terminal-clear.test.d.ts.map +1 -0
- package/dist/utils/terminal-clear.test.js +13 -0
- package/dist/utils/terminal-clear.test.js.map +1 -0
- package/dist/utils/token-usage.d.ts +13 -1
- package/dist/utils/token-usage.d.ts.map +1 -1
- package/dist/utils/token-usage.js +119 -28
- package/dist/utils/token-usage.js.map +1 -1
- package/dist/utils/token-usage.test.js +135 -3
- package/dist/utils/token-usage.test.js.map +1 -1
- package/package.json +5 -4
- package/readme.md +29 -24
- package/dist/agent.lite-mode.test.d.ts +0 -2
- package/dist/agent.lite-mode.test.d.ts.map +0 -1
- package/dist/agent.lite-mode.test.js +0 -39
- package/dist/agent.lite-mode.test.js.map +0 -1
- package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts +0 -2
- package/dist/components/ModelSelectionMenu.error-tabs.test.d.ts.map +0 -1
- package/dist/components/ModelSelectionMenu.error-tabs.test.js +0 -18
- package/dist/components/ModelSelectionMenu.error-tabs.test.js.map +0 -1
- package/dist/components/TextInput.d.ts +0 -42
- package/dist/components/TextInput.d.ts.map +0 -1
- package/dist/components/TextInput.js +0 -398
- package/dist/components/TextInput.js.map +0 -1
- package/dist/components/TextInput.test.d.ts +0 -2
- package/dist/components/TextInput.test.d.ts.map +0 -1
- package/dist/components/TextInput.test.js +0 -75
- package/dist/components/TextInput.test.js.map +0 -1
- package/dist/debug_ask_mentor.d.ts +0 -2
- package/dist/debug_ask_mentor.d.ts.map +0 -1
- package/dist/debug_ask_mentor.js +0 -73
- package/dist/debug_ask_mentor.js.map +0 -1
- package/dist/lib/shell.d.ts +0 -7
- package/dist/lib/shell.d.ts.map +0 -1
- package/dist/lib/shell.js +0 -56
- package/dist/lib/shell.js.map +0 -1
- package/dist/modes/companion/command-index.d.ts +0 -26
- package/dist/modes/companion/command-index.d.ts.map +0 -1
- package/dist/modes/companion/command-index.js +0 -50
- package/dist/modes/companion/command-index.js.map +0 -1
- package/dist/modes/companion/command-index.test.d.ts +0 -2
- package/dist/modes/companion/command-index.test.d.ts.map +0 -1
- package/dist/modes/companion/command-index.test.js +0 -86
- package/dist/modes/companion/command-index.test.js.map +0 -1
- package/dist/modes/companion/companion-app.d.ts +0 -12
- package/dist/modes/companion/companion-app.d.ts.map +0 -1
- package/dist/modes/companion/companion-app.js +0 -297
- package/dist/modes/companion/companion-app.js.map +0 -1
- package/dist/modes/companion/companion-session.d.ts +0 -63
- package/dist/modes/companion/companion-session.d.ts.map +0 -1
- package/dist/modes/companion/companion-session.js +0 -146
- package/dist/modes/companion/companion-session.js.map +0 -1
- package/dist/modes/companion/companion-session.test.d.ts +0 -2
- package/dist/modes/companion/companion-session.test.d.ts.map +0 -1
- package/dist/modes/companion/companion-session.test.js +0 -28
- package/dist/modes/companion/companion-session.test.js.map +0 -1
- package/dist/modes/companion/components/status-bar.d.ts +0 -13
- package/dist/modes/companion/components/status-bar.d.ts.map +0 -1
- package/dist/modes/companion/components/status-bar.js +0 -26
- package/dist/modes/companion/components/status-bar.js.map +0 -1
- package/dist/modes/companion/context-buffer.d.ts +0 -65
- package/dist/modes/companion/context-buffer.d.ts.map +0 -1
- package/dist/modes/companion/context-buffer.js +0 -156
- package/dist/modes/companion/context-buffer.js.map +0 -1
- package/dist/modes/companion/context-buffer.test.d.ts +0 -2
- package/dist/modes/companion/context-buffer.test.d.ts.map +0 -1
- package/dist/modes/companion/context-buffer.test.js +0 -154
- package/dist/modes/companion/context-buffer.test.js.map +0 -1
- package/dist/modes/companion/event-detector.d.ts +0 -46
- package/dist/modes/companion/event-detector.d.ts.map +0 -1
- package/dist/modes/companion/event-detector.js +0 -169
- package/dist/modes/companion/event-detector.js.map +0 -1
- package/dist/modes/companion/event-detector.test.d.ts +0 -2
- package/dist/modes/companion/event-detector.test.d.ts.map +0 -1
- package/dist/modes/companion/event-detector.test.js +0 -121
- package/dist/modes/companion/event-detector.test.js.map +0 -1
- package/dist/modes/companion/index.d.ts +0 -33
- package/dist/modes/companion/index.d.ts.map +0 -1
- package/dist/modes/companion/index.js +0 -21
- package/dist/modes/companion/index.js.map +0 -1
- package/dist/modes/companion/input-key-mapper.d.ts +0 -3
- package/dist/modes/companion/input-key-mapper.d.ts.map +0 -1
- package/dist/modes/companion/input-key-mapper.js +0 -31
- package/dist/modes/companion/input-key-mapper.js.map +0 -1
- package/dist/modes/companion/input-key-mapper.test.d.ts +0 -2
- package/dist/modes/companion/input-key-mapper.test.d.ts.map +0 -1
- package/dist/modes/companion/input-key-mapper.test.js +0 -26
- package/dist/modes/companion/input-key-mapper.test.js.map +0 -1
- package/dist/modes/companion/input-parser.d.ts +0 -53
- package/dist/modes/companion/input-parser.d.ts.map +0 -1
- package/dist/modes/companion/input-parser.js +0 -114
- package/dist/modes/companion/input-parser.js.map +0 -1
- package/dist/modes/companion/input-parser.test.d.ts +0 -2
- package/dist/modes/companion/input-parser.test.d.ts.map +0 -1
- package/dist/modes/companion/input-parser.test.js +0 -123
- package/dist/modes/companion/input-parser.test.js.map +0 -1
- package/dist/modes/companion/mode-manager.d.ts +0 -41
- package/dist/modes/companion/mode-manager.d.ts.map +0 -1
- package/dist/modes/companion/mode-manager.js +0 -56
- package/dist/modes/companion/mode-manager.js.map +0 -1
- package/dist/modes/companion/mode-manager.test.d.ts +0 -2
- package/dist/modes/companion/mode-manager.test.d.ts.map +0 -1
- package/dist/modes/companion/mode-manager.test.js +0 -65
- package/dist/modes/companion/mode-manager.test.js.map +0 -1
- package/dist/modes/companion/output-classifier.d.ts +0 -15
- package/dist/modes/companion/output-classifier.d.ts.map +0 -1
- package/dist/modes/companion/output-classifier.js +0 -77
- package/dist/modes/companion/output-classifier.js.map +0 -1
- package/dist/modes/companion/output-classifier.test.d.ts +0 -2
- package/dist/modes/companion/output-classifier.test.d.ts.map +0 -1
- package/dist/modes/companion/output-classifier.test.js +0 -133
- package/dist/modes/companion/output-classifier.test.js.map +0 -1
- package/dist/modes/companion/pty-wrapper.d.ts +0 -46
- package/dist/modes/companion/pty-wrapper.d.ts.map +0 -1
- package/dist/modes/companion/pty-wrapper.js +0 -143
- package/dist/modes/companion/pty-wrapper.js.map +0 -1
- package/dist/modes/companion/safety-classifier.d.ts +0 -31
- package/dist/modes/companion/safety-classifier.d.ts.map +0 -1
- package/dist/modes/companion/safety-classifier.js +0 -140
- package/dist/modes/companion/safety-classifier.js.map +0 -1
- package/dist/modes/companion/safety-classifier.test.d.ts +0 -2
- package/dist/modes/companion/safety-classifier.test.d.ts.map +0 -1
- package/dist/modes/companion/safety-classifier.test.js +0 -151
- package/dist/modes/companion/safety-classifier.test.js.map +0 -1
- package/dist/modes/companion/summarizer.d.ts +0 -24
- package/dist/modes/companion/summarizer.d.ts.map +0 -1
- package/dist/modes/companion/summarizer.js +0 -132
- package/dist/modes/companion/summarizer.js.map +0 -1
- package/dist/modes/companion/terminal-history.d.ts +0 -27
- package/dist/modes/companion/terminal-history.d.ts.map +0 -1
- package/dist/modes/companion/terminal-history.js +0 -142
- package/dist/modes/companion/terminal-history.js.map +0 -1
- package/dist/prompts/simple-mentor.md +0 -215
- package/dist/providers/github-copilot/converters.d.ts +0 -45
- package/dist/providers/github-copilot/converters.d.ts.map +0 -1
- package/dist/providers/github-copilot/converters.js +0 -118
- package/dist/providers/github-copilot/converters.js.map +0 -1
- package/dist/providers/github-copilot/converters.test.d.ts +0 -2
- package/dist/providers/github-copilot/converters.test.d.ts.map +0 -1
- package/dist/providers/github-copilot/converters.test.js +0 -162
- package/dist/providers/github-copilot/converters.test.js.map +0 -1
- package/dist/providers/github-copilot/github-copilot.provider.d.ts +0 -2
- package/dist/providers/github-copilot/github-copilot.provider.d.ts.map +0 -1
- package/dist/providers/github-copilot/github-copilot.provider.js +0 -75
- package/dist/providers/github-copilot/github-copilot.provider.js.map +0 -1
- package/dist/providers/github-copilot/github-copilot.provider.test.d.ts +0 -2
- package/dist/providers/github-copilot/github-copilot.provider.test.d.ts.map +0 -1
- package/dist/providers/github-copilot/github-copilot.provider.test.js +0 -26
- package/dist/providers/github-copilot/github-copilot.provider.test.js.map +0 -1
- package/dist/providers/github-copilot/index.d.ts +0 -4
- package/dist/providers/github-copilot/index.d.ts.map +0 -1
- package/dist/providers/github-copilot/index.js +0 -4
- package/dist/providers/github-copilot/index.js.map +0 -1
- package/dist/providers/github-copilot/model.d.ts +0 -24
- package/dist/providers/github-copilot/model.d.ts.map +0 -1
- package/dist/providers/github-copilot/model.delta.test.d.ts +0 -2
- package/dist/providers/github-copilot/model.delta.test.d.ts.map +0 -1
- package/dist/providers/github-copilot/model.delta.test.js +0 -15
- package/dist/providers/github-copilot/model.delta.test.js.map +0 -1
- package/dist/providers/github-copilot/model.js +0 -498
- package/dist/providers/github-copilot/model.js.map +0 -1
- package/dist/providers/github-copilot/model.test.d.ts +0 -2
- package/dist/providers/github-copilot/model.test.d.ts.map +0 -1
- package/dist/providers/github-copilot/model.test.js +0 -63
- package/dist/providers/github-copilot/model.test.js.map +0 -1
- package/dist/providers/github-copilot/provider.d.ts +0 -15
- package/dist/providers/github-copilot/provider.d.ts.map +0 -1
- package/dist/providers/github-copilot/provider.js +0 -25
- package/dist/providers/github-copilot/provider.js.map +0 -1
- package/dist/providers/github-copilot/provider.test.d.ts +0 -2
- package/dist/providers/github-copilot/provider.test.d.ts.map +0 -1
- package/dist/providers/github-copilot/provider.test.js +0 -52
- package/dist/providers/github-copilot/provider.test.js.map +0 -1
- package/dist/providers/github-copilot/utils.d.ts +0 -20
- package/dist/providers/github-copilot/utils.d.ts.map +0 -1
- package/dist/providers/github-copilot/utils.js +0 -142
- package/dist/providers/github-copilot/utils.js.map +0 -1
- package/dist/providers/github-copilot/utils.test.d.ts +0 -2
- package/dist/providers/github-copilot/utils.test.d.ts.map +0 -1
- package/dist/providers/github-copilot/utils.test.js +0 -21
- package/dist/providers/github-copilot/utils.test.js.map +0 -1
- package/dist/providers/openai-compatible/api.d.ts +0 -17
- package/dist/providers/openai-compatible/api.d.ts.map +0 -1
- package/dist/providers/openai-compatible/api.js +0 -58
- package/dist/providers/openai-compatible/api.js.map +0 -1
- package/dist/providers/openai-compatible/model.d.ts +0 -17
- package/dist/providers/openai-compatible/model.d.ts.map +0 -1
- package/dist/providers/openai-compatible/model.js +0 -473
- package/dist/providers/openai-compatible/model.js.map +0 -1
- package/dist/providers/openai-compatible/provider.d.ts +0 -22
- package/dist/providers/openai-compatible/provider.d.ts.map +0 -1
- package/dist/providers/openai-compatible/provider.js +0 -43
- package/dist/providers/openai-compatible/provider.js.map +0 -1
- package/dist/providers/openai-compatible/reasoning-content.test.d.ts +0 -2
- package/dist/providers/openai-compatible/reasoning-content.test.d.ts.map +0 -1
- package/dist/providers/openai-compatible/reasoning-content.test.js +0 -258
- package/dist/providers/openai-compatible/reasoning-content.test.js.map +0 -1
- package/dist/providers/openai-compatible/utils.d.ts +0 -3
- package/dist/providers/openai-compatible/utils.d.ts.map +0 -1
- package/dist/providers/openai-compatible/utils.js +0 -11
- package/dist/providers/openai-compatible/utils.js.map +0 -1
- package/dist/providers/openrouter/api.d.ts +0 -39
- package/dist/providers/openrouter/api.d.ts.map +0 -1
- package/dist/providers/openrouter/api.js +0 -164
- package/dist/providers/openrouter/api.js.map +0 -1
- package/dist/providers/openrouter/converters.d.ts +0 -8
- package/dist/providers/openrouter/converters.d.ts.map +0 -1
- package/dist/providers/openrouter/converters.js +0 -391
- package/dist/providers/openrouter/converters.js.map +0 -1
- package/dist/providers/openrouter/converters.test.d.ts +0 -2
- package/dist/providers/openrouter/converters.test.d.ts.map +0 -1
- package/dist/providers/openrouter/converters.test.js +0 -179
- package/dist/providers/openrouter/converters.test.js.map +0 -1
- package/dist/providers/openrouter/index.d.ts +0 -4
- package/dist/providers/openrouter/index.d.ts.map +0 -1
- package/dist/providers/openrouter/index.js +0 -4
- package/dist/providers/openrouter/index.js.map +0 -1
- package/dist/providers/openrouter/model.d.ts +0 -14
- package/dist/providers/openrouter/model.d.ts.map +0 -1
- package/dist/providers/openrouter/model.js +0 -457
- package/dist/providers/openrouter/model.js.map +0 -1
- package/dist/providers/openrouter/provider.d.ts +0 -15
- package/dist/providers/openrouter/provider.d.ts.map +0 -1
- package/dist/providers/openrouter/provider.js +0 -21
- package/dist/providers/openrouter/provider.js.map +0 -1
- package/dist/providers/openrouter/reasoning-content.test.d.ts +0 -2
- package/dist/providers/openrouter/reasoning-content.test.d.ts.map +0 -1
- package/dist/providers/openrouter/reasoning-content.test.js +0 -122
- package/dist/providers/openrouter/reasoning-content.test.js.map +0 -1
- package/dist/providers/openrouter/utils.d.ts +0 -11
- package/dist/providers/openrouter/utils.d.ts.map +0 -1
- package/dist/providers/openrouter/utils.js +0 -29
- package/dist/providers/openrouter/utils.js.map +0 -1
- package/dist/providers/openrouter.api.retry.test.d.ts +0 -2
- package/dist/providers/openrouter.api.retry.test.d.ts.map +0 -1
- package/dist/providers/openrouter.api.retry.test.js +0 -148
- package/dist/providers/openrouter.api.retry.test.js.map +0 -1
- package/dist/providers/openrouter.test.d.ts +0 -2
- package/dist/providers/openrouter.test.d.ts.map +0 -1
- package/dist/providers/openrouter.test.js +0 -1449
- package/dist/providers/openrouter.test.js.map +0 -1
- package/dist/safety-checker.js +0 -57
- package/dist/services/check_mock.d.ts +0 -2
- package/dist/services/check_mock.d.ts.map +0 -1
- package/dist/services/check_mock.js +0 -22
- package/dist/services/check_mock.js.map +0 -1
- package/dist/services/conversation-service.test.d.ts +0 -2
- package/dist/services/conversation-service.test.d.ts.map +0 -1
- package/dist/services/conversation-service.test.js +0 -156
- package/dist/services/conversation-service.test.js.map +0 -1
- package/dist/tools/bash.d.ts +0 -10
- package/dist/tools/bash.d.ts.map +0 -1
- package/dist/tools/bash.js +0 -55
- package/dist/tools/bash.js.map +0 -1
- package/dist/utils/command-safety.d.ts +0 -21
- package/dist/utils/command-safety.d.ts.map +0 -1
- package/dist/utils/command-safety.devnull.test.d.ts +0 -2
- package/dist/utils/command-safety.devnull.test.d.ts.map +0 -1
- package/dist/utils/command-safety.devnull.test.js +0 -13
- package/dist/utils/command-safety.devnull.test.js.map +0 -1
- package/dist/utils/command-safety.js +0 -348
- package/dist/utils/command-safety.js.map +0 -1
- package/dist/utils/extract-command-messages.test.d.ts +0 -2
- package/dist/utils/extract-command-messages.test.d.ts.map +0 -1
- package/dist/utils/extract-command-messages.test.js +0 -64
- package/dist/utils/extract-command-messages.test.js.map +0 -1
- package/dist/utils/provider-traffic-extractor.repro.test.d.ts +0 -2
- package/dist/utils/provider-traffic-extractor.repro.test.d.ts.map +0 -1
- package/dist/utils/provider-traffic-extractor.repro.test.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
const DEFAULT_PROMPT = 'simple.md';
|
|
3
3
|
const ANTHROPIC_PROMPT = 'anthropic.md';
|
|
4
|
-
const
|
|
4
|
+
const MODERN_GPT_PROMPT = 'gpt-5-modern.md';
|
|
5
5
|
const CODEX_PROMPT = 'codex.md';
|
|
6
6
|
const LITE_PROMPT = 'lite.md';
|
|
7
7
|
export function getPromptPath({ basePromptDir, model, liteMode }) {
|
|
@@ -15,7 +15,7 @@ export function getPromptPath({ basePromptDir, model, liteMode }) {
|
|
|
15
15
|
if (normalizedModel.includes('gpt-5') && normalizedModel.includes('codex'))
|
|
16
16
|
return path.join(basePromptDir, CODEX_PROMPT);
|
|
17
17
|
if (normalizedModel.includes('gpt-5'))
|
|
18
|
-
return path.join(basePromptDir,
|
|
18
|
+
return path.join(basePromptDir, MODERN_GPT_PROMPT);
|
|
19
19
|
return path.join(basePromptDir, DEFAULT_PROMPT);
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=prompt-selector.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-selector.js","sourceRoot":"","sources":["../../source/prompts/prompt-selector.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,
|
|
1
|
+
{"version":3,"file":"prompt-selector.js","sourceRoot":"","sources":["../../source/prompts/prompt-selector.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,cAAc,GAAG,WAAW,CAAC;AACnC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAC5C,MAAM,YAAY,GAAG,UAAU,CAAC;AAChC,MAAM,WAAW,GAAG,SAAS,CAAC;AAQ9B,MAAM,UAAU,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAyB;IACrF,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAEnD,uEAAuE;IACvE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzE,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACpD,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxE,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAChD,IAAI,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAE1F,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -11,9 +11,14 @@ test('getPromptPath selects anthropic prompt for sonnet or haiku', (t) => {
|
|
|
11
11
|
});
|
|
12
12
|
test('getPromptPath selects codex prompt for gpt-5 codex', (t) => {
|
|
13
13
|
t.is(getPromptPath({ basePromptDir, model: 'gpt-5-codex', liteMode: false }), path.join(basePromptDir, 'codex.md'));
|
|
14
|
+
t.is(getPromptPath({ basePromptDir, model: 'gpt-5.3-codex', liteMode: false }), path.join(basePromptDir, 'codex.md'));
|
|
14
15
|
});
|
|
15
|
-
test('getPromptPath selects gpt-5 prompt
|
|
16
|
-
t.is(getPromptPath({ basePromptDir, model: ' GPT-5 ', liteMode: false }), path.join(basePromptDir, 'gpt-5.md'));
|
|
16
|
+
test('getPromptPath selects modern gpt-5 prompt for all non-codex gpt-5 models', (t) => {
|
|
17
|
+
t.is(getPromptPath({ basePromptDir, model: ' GPT-5 ', liteMode: false }), path.join(basePromptDir, 'gpt-5-modern.md'));
|
|
18
|
+
t.is(getPromptPath({ basePromptDir, model: 'gpt-5.1', liteMode: false }), path.join(basePromptDir, 'gpt-5-modern.md'));
|
|
19
|
+
t.is(getPromptPath({ basePromptDir, model: 'gpt-5.2', liteMode: false }), path.join(basePromptDir, 'gpt-5-modern.md'));
|
|
20
|
+
t.is(getPromptPath({ basePromptDir, model: 'gpt-5.4-mini', liteMode: false }), path.join(basePromptDir, 'gpt-5-modern.md'));
|
|
21
|
+
t.is(getPromptPath({ basePromptDir, model: 'gpt-5.5-2026-04-23', liteMode: false }), path.join(basePromptDir, 'gpt-5-modern.md'));
|
|
17
22
|
});
|
|
18
23
|
test('getPromptPath falls back to simple prompt', (t) => {
|
|
19
24
|
t.is(getPromptPath({ basePromptDir, model: 'gpt-4o', liteMode: false }), path.join(basePromptDir, 'simple.md'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-selector.test.js","sourceRoot":"","sources":["../../source/prompts/prompt-selector.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5C,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9G,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,CAAC,CAAC,EAAE,EAAE;IACvE,CAAC,CAAC,EAAE,CACF,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAC3E,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CACzC,CAAC;IACF,CAAC,CAAC,EAAE,CACF,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAC1E,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CACzC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,CAAC,CAAC,EAAE,EAAE;IAC/D,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"prompt-selector.test.js","sourceRoot":"","sources":["../../source/prompts/prompt-selector.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,aAAa,GAAG,UAAU,CAAC;AAEjC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5C,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAC9G,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,CAAC,CAAC,EAAE,EAAE;IACvE,CAAC,CAAC,EAAE,CACF,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAC3E,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CACzC,CAAC;IACF,CAAC,CAAC,EAAE,CACF,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAC1E,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CACzC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,CAAC,CAAC,EAAE,EAAE;IAC/D,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IACpH,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;AACxH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,CAAC,CAAC,EAAE,EAAE;IACrF,CAAC,CAAC,EAAE,CACF,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EACnE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAC5C,CAAC;IACF,CAAC,CAAC,EAAE,CACF,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EACnE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAC5C,CAAC;IACF,CAAC,CAAC,EAAE,CACF,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EACnE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAC5C,CAAC;IACF,CAAC,CAAC,EAAE,CACF,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EACxE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAC5C,CAAC;IACF,CAAC,CAAC,EAAE,CACF,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAC9E,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAC5C,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE,EAAE;IACtD,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAClH,CAAC,CAAC,CAAC"}
|
|
@@ -21,10 +21,30 @@ test('getPromptPath selects anthropic prompt for sonnet or haiku', (t) => {
|
|
|
21
21
|
|
|
22
22
|
test('getPromptPath selects codex prompt for gpt-5 codex', (t) => {
|
|
23
23
|
t.is(getPromptPath({ basePromptDir, model: 'gpt-5-codex', liteMode: false }), path.join(basePromptDir, 'codex.md'));
|
|
24
|
+
t.is(getPromptPath({ basePromptDir, model: 'gpt-5.3-codex', liteMode: false }), path.join(basePromptDir, 'codex.md'));
|
|
24
25
|
});
|
|
25
26
|
|
|
26
|
-
test('getPromptPath selects gpt-5 prompt
|
|
27
|
-
t.is(
|
|
27
|
+
test('getPromptPath selects modern gpt-5 prompt for all non-codex gpt-5 models', (t) => {
|
|
28
|
+
t.is(
|
|
29
|
+
getPromptPath({ basePromptDir, model: ' GPT-5 ', liteMode: false }),
|
|
30
|
+
path.join(basePromptDir, 'gpt-5-modern.md'),
|
|
31
|
+
);
|
|
32
|
+
t.is(
|
|
33
|
+
getPromptPath({ basePromptDir, model: 'gpt-5.1', liteMode: false }),
|
|
34
|
+
path.join(basePromptDir, 'gpt-5-modern.md'),
|
|
35
|
+
);
|
|
36
|
+
t.is(
|
|
37
|
+
getPromptPath({ basePromptDir, model: 'gpt-5.2', liteMode: false }),
|
|
38
|
+
path.join(basePromptDir, 'gpt-5-modern.md'),
|
|
39
|
+
);
|
|
40
|
+
t.is(
|
|
41
|
+
getPromptPath({ basePromptDir, model: 'gpt-5.4-mini', liteMode: false }),
|
|
42
|
+
path.join(basePromptDir, 'gpt-5-modern.md'),
|
|
43
|
+
);
|
|
44
|
+
t.is(
|
|
45
|
+
getPromptPath({ basePromptDir, model: 'gpt-5.5-2026-04-23', liteMode: false }),
|
|
46
|
+
path.join(basePromptDir, 'gpt-5-modern.md'),
|
|
47
|
+
);
|
|
28
48
|
});
|
|
29
49
|
|
|
30
50
|
test('getPromptPath falls back to simple prompt', (t) => {
|
|
@@ -2,7 +2,7 @@ import path from 'path';
|
|
|
2
2
|
|
|
3
3
|
const DEFAULT_PROMPT = 'simple.md';
|
|
4
4
|
const ANTHROPIC_PROMPT = 'anthropic.md';
|
|
5
|
-
const
|
|
5
|
+
const MODERN_GPT_PROMPT = 'gpt-5-modern.md';
|
|
6
6
|
const CODEX_PROMPT = 'codex.md';
|
|
7
7
|
const LITE_PROMPT = 'lite.md';
|
|
8
8
|
|
|
@@ -24,7 +24,7 @@ export function getPromptPath({ basePromptDir, model, liteMode }: PromptSelector
|
|
|
24
24
|
return path.join(basePromptDir, ANTHROPIC_PROMPT);
|
|
25
25
|
if (normalizedModel.includes('gpt-5') && normalizedModel.includes('codex'))
|
|
26
26
|
return path.join(basePromptDir, CODEX_PROMPT);
|
|
27
|
-
if (normalizedModel.includes('gpt-5')) return path.join(basePromptDir,
|
|
27
|
+
if (normalizedModel.includes('gpt-5')) return path.join(basePromptDir, MODERN_GPT_PROMPT);
|
|
28
28
|
|
|
29
29
|
return path.join(basePromptDir, DEFAULT_PROMPT);
|
|
30
30
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ExecutionContext } from '../services/execution-context.js';
|
|
2
|
+
export interface SearchViaShellOptions {
|
|
3
|
+
checkBinary?: (cmd: string) => boolean;
|
|
4
|
+
executionContext?: ExecutionContext;
|
|
5
|
+
}
|
|
6
|
+
export declare function getSearchViaShellAddendum(options?: SearchViaShellOptions): string;
|
|
7
|
+
//# sourceMappingURL=search-via-shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-via-shell.d.ts","sourceRoot":"","sources":["../../source/prompts/search-via-shell.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAcpE,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,qBAA0B,GAAG,MAAM,CAkDrF"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { spawnSync } from 'child_process';
|
|
2
|
+
function defaultCheckBinary(cmd) {
|
|
3
|
+
try {
|
|
4
|
+
const result = spawnSync(cmd, ['--version'], {
|
|
5
|
+
stdio: 'ignore',
|
|
6
|
+
windowsHide: true,
|
|
7
|
+
});
|
|
8
|
+
return result.status === 0;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function getSearchViaShellAddendum(options = {}) {
|
|
15
|
+
const checkBinary = options.checkBinary ?? defaultCheckBinary;
|
|
16
|
+
const isRemote = options.executionContext?.isRemote() ?? false;
|
|
17
|
+
// For remote hosts, we can't synchronously check binary availability.
|
|
18
|
+
// Default to grep/find which are universally available on Unix-like systems.
|
|
19
|
+
const hasRg = isRemote ? false : checkBinary('rg');
|
|
20
|
+
const hasFd = isRemote ? false : checkBinary('fd');
|
|
21
|
+
const header = `### Searching via the shell
|
|
22
|
+
|
|
23
|
+
Use the \`shell\` tool with the standard CLI binaries.`;
|
|
24
|
+
const textSearch = hasRg
|
|
25
|
+
? `**For text search**, use \`rg\` (ripgrep). Examples:
|
|
26
|
+
- \`rg "pattern" src/\` — basic search, respects \`.gitignore\` by default.
|
|
27
|
+
- \`rg -i "pattern" .\` — case-insensitive.
|
|
28
|
+
- \`rg --no-ignore "pattern" .\` — when you need to search \`node_modules\`, build output, or anything in \`.gitignore\`.
|
|
29
|
+
- \`rg -uu "pattern" .\` — include hidden + gitignored.
|
|
30
|
+
- \`rg -g '*.ts' "pattern" .\` — restrict by glob.
|
|
31
|
+
- \`rg -t ts "pattern" .\` — restrict by language preset.
|
|
32
|
+
- \`rg -n "pattern" .\` — show line numbers (useful for follow-up edits).
|
|
33
|
+
- \`rg -l "pattern" .\` — list files only.
|
|
34
|
+
- \`rg -C 3 "pattern" .\` — 3 lines of context.
|
|
35
|
+
- **Always pass an explicit path** (e.g. \`.\` or \`src/\`) to \`rg\`. When no path is given and stdin is a pipe, ripgrep reads stdin instead of searching the filesystem, returning no results.`
|
|
36
|
+
: `**For text search**, use \`grep\`. Examples:
|
|
37
|
+
- \`grep -rn "pattern" src/\` — recursive search with line numbers.
|
|
38
|
+
- \`grep -ri "pattern" src/\` — case-insensitive recursive search.
|
|
39
|
+
- \`grep -rl "pattern" src/\` — list matching files only.
|
|
40
|
+
- \`grep -C 3 "pattern" src/\` — show 3 lines of context.`;
|
|
41
|
+
const fileSearch = hasFd
|
|
42
|
+
? `**For file search**, use \`fd\`. Examples:
|
|
43
|
+
- \`fd '\\.ts$'\` — regex over basenames.
|
|
44
|
+
- \`fd -e ts\` — by extension.
|
|
45
|
+
- \`fd -H -I\` — include hidden + gitignored (\`-uu\` style).
|
|
46
|
+
- \`fd 'pattern' path/\` — scoped to a directory.`
|
|
47
|
+
: `**For file search**, use \`find\`. Examples:
|
|
48
|
+
- \`find src/ -type f -name '*.ts'\` — search a subtree by basename glob.
|
|
49
|
+
- **Always search from a specific path, not \`/\`.** Scanning the whole filesystem can exhaust resources on large trees.
|
|
50
|
+
- When using \`find -regex\` with alternation, put the longest alternative first: \`'.*\\.(tsx|ts)'\` works; \`'.*\\.(ts|tsx)'\` silently skips \`.tsx\`.`;
|
|
51
|
+
const hygiene = `**General shell hygiene:**
|
|
52
|
+
- Quote paths that contain spaces.
|
|
53
|
+
- Prefer absolute paths or paths relative to a known root; avoid \`cd\`.
|
|
54
|
+
- When chaining commands, use \`&&\` for "stop on first failure", \`;\` only if you accept failures, never raw newlines.
|
|
55
|
+
- Don't use \`cat\` / \`head\` / \`tail\` / \`sed\` / \`echo\` for reading or writing files — use the dedicated \`read_file\`, \`apply_patch\`, and \`search_replace\` tools. The shell is for *search* and *one-shot inspection*, not for editing.
|
|
56
|
+
- For destructive operations (deletes, force-pushes, schema migrations), pause and confirm before running.`;
|
|
57
|
+
return `${header}\n\n${textSearch}\n\n${fileSearch}\n\n${hygiene}`;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=search-via-shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-via-shell.js","sourceRoot":"","sources":["../../source/prompts/search-via-shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE;YAC3C,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAOD,MAAM,UAAU,yBAAyB,CAAC,UAAiC,EAAE;IAC3E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,kBAAkB,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;IAE/D,sEAAsE;IACtE,6EAA6E;IAC7E,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG;;uDAEsC,CAAC;IAEtD,MAAM,UAAU,GAAG,KAAK;QACtB,CAAC,CAAC;;;;;;;;;;iMAU2L;QAC7L,CAAC,CAAC;;;;0DAIoD,CAAC;IAEzD,MAAM,UAAU,GAAG,KAAK;QACtB,CAAC,CAAC;;;;kDAI4C;QAC9C,CAAC,CAAC;;;0JAGoJ,CAAC;IAEzJ,MAAM,OAAO,GAAG;;;;;2GAKyF,CAAC;IAE1G,OAAO,GAAG,MAAM,OAAO,UAAU,OAAO,UAAU,OAAO,OAAO,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-via-shell.test.d.ts","sourceRoot":"","sources":["../../source/prompts/search-via-shell.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import test from 'ava';
|
|
2
|
+
import { getSearchViaShellAddendum } from './search-via-shell.js';
|
|
3
|
+
test('getSearchViaShellAddendum includes rg and fd when both available', (t) => {
|
|
4
|
+
const result = getSearchViaShellAddendum({
|
|
5
|
+
checkBinary: () => true,
|
|
6
|
+
});
|
|
7
|
+
t.true(result.includes('use `rg` (ripgrep)'));
|
|
8
|
+
t.true(result.includes('use `fd`'));
|
|
9
|
+
t.false(result.includes('use `grep`'));
|
|
10
|
+
t.false(result.includes('use `find`'));
|
|
11
|
+
t.true(result.includes('General shell hygiene'));
|
|
12
|
+
});
|
|
13
|
+
test('getSearchViaShellAddendum falls back to grep when rg is missing', (t) => {
|
|
14
|
+
const result = getSearchViaShellAddendum({
|
|
15
|
+
checkBinary: (cmd) => cmd === 'fd',
|
|
16
|
+
});
|
|
17
|
+
t.false(result.includes('use `rg` (ripgrep)'));
|
|
18
|
+
t.true(result.includes('use `grep`'));
|
|
19
|
+
t.true(result.includes('use `fd`'));
|
|
20
|
+
t.false(result.includes('use `find`'));
|
|
21
|
+
});
|
|
22
|
+
test('getSearchViaShellAddendum falls back to find when fd is missing', (t) => {
|
|
23
|
+
const result = getSearchViaShellAddendum({
|
|
24
|
+
checkBinary: (cmd) => cmd === 'rg',
|
|
25
|
+
});
|
|
26
|
+
t.true(result.includes('use `rg` (ripgrep)'));
|
|
27
|
+
t.false(result.includes('use `fd`'));
|
|
28
|
+
t.true(result.includes('use `find`'));
|
|
29
|
+
});
|
|
30
|
+
test('getSearchViaShellAddendum falls back to grep and find when both missing', (t) => {
|
|
31
|
+
const result = getSearchViaShellAddendum({
|
|
32
|
+
checkBinary: () => false,
|
|
33
|
+
});
|
|
34
|
+
t.false(result.includes('use `rg` (ripgrep)'));
|
|
35
|
+
t.true(result.includes('use `grep`'));
|
|
36
|
+
t.false(result.includes('use `fd`'));
|
|
37
|
+
t.true(result.includes('use `find`'));
|
|
38
|
+
t.true(result.includes('General shell hygiene'));
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=search-via-shell.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-via-shell.test.js","sourceRoot":"","sources":["../../source/prompts/search-via-shell.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE,IAAI,CAAC,kEAAkE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC7E,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACvC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;KACxB,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iEAAiE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5E,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACvC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI;KACnC,CAAC,CAAC;IAEH,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iEAAiE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5E,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACvC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI;KACnC,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yEAAyE,EAAE,CAAC,CAAC,EAAE,EAAE;IACpF,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACvC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;KACzB,CAAC,CAAC;IAEH,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import test from 'ava';
|
|
2
|
+
import { getSearchViaShellAddendum } from './search-via-shell.js';
|
|
3
|
+
|
|
4
|
+
test('getSearchViaShellAddendum includes rg and fd when both available', (t) => {
|
|
5
|
+
const result = getSearchViaShellAddendum({
|
|
6
|
+
checkBinary: () => true,
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
t.true(result.includes('use `rg` (ripgrep)'));
|
|
10
|
+
t.true(result.includes('use `fd`'));
|
|
11
|
+
t.false(result.includes('use `grep`'));
|
|
12
|
+
t.false(result.includes('use `find`'));
|
|
13
|
+
t.true(result.includes('General shell hygiene'));
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
test('getSearchViaShellAddendum falls back to grep when rg is missing', (t) => {
|
|
17
|
+
const result = getSearchViaShellAddendum({
|
|
18
|
+
checkBinary: (cmd) => cmd === 'fd',
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
t.false(result.includes('use `rg` (ripgrep)'));
|
|
22
|
+
t.true(result.includes('use `grep`'));
|
|
23
|
+
t.true(result.includes('use `fd`'));
|
|
24
|
+
t.false(result.includes('use `find`'));
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
test('getSearchViaShellAddendum falls back to find when fd is missing', (t) => {
|
|
28
|
+
const result = getSearchViaShellAddendum({
|
|
29
|
+
checkBinary: (cmd) => cmd === 'rg',
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
t.true(result.includes('use `rg` (ripgrep)'));
|
|
33
|
+
t.false(result.includes('use `fd`'));
|
|
34
|
+
t.true(result.includes('use `find`'));
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test('getSearchViaShellAddendum falls back to grep and find when both missing', (t) => {
|
|
38
|
+
const result = getSearchViaShellAddendum({
|
|
39
|
+
checkBinary: () => false,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
t.false(result.includes('use `rg` (ripgrep)'));
|
|
43
|
+
t.true(result.includes('use `grep`'));
|
|
44
|
+
t.false(result.includes('use `fd`'));
|
|
45
|
+
t.true(result.includes('use `find`'));
|
|
46
|
+
t.true(result.includes('General shell hygiene'));
|
|
47
|
+
});
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { spawnSync } from 'child_process';
|
|
2
|
+
import { ExecutionContext } from '../services/execution-context.js';
|
|
3
|
+
|
|
4
|
+
function defaultCheckBinary(cmd: string): boolean {
|
|
5
|
+
try {
|
|
6
|
+
const result = spawnSync(cmd, ['--version'], {
|
|
7
|
+
stdio: 'ignore',
|
|
8
|
+
windowsHide: true,
|
|
9
|
+
});
|
|
10
|
+
return result.status === 0;
|
|
11
|
+
} catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface SearchViaShellOptions {
|
|
17
|
+
checkBinary?: (cmd: string) => boolean;
|
|
18
|
+
executionContext?: ExecutionContext;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function getSearchViaShellAddendum(options: SearchViaShellOptions = {}): string {
|
|
22
|
+
const checkBinary = options.checkBinary ?? defaultCheckBinary;
|
|
23
|
+
const isRemote = options.executionContext?.isRemote() ?? false;
|
|
24
|
+
|
|
25
|
+
// For remote hosts, we can't synchronously check binary availability.
|
|
26
|
+
// Default to grep/find which are universally available on Unix-like systems.
|
|
27
|
+
const hasRg = isRemote ? false : checkBinary('rg');
|
|
28
|
+
const hasFd = isRemote ? false : checkBinary('fd');
|
|
29
|
+
|
|
30
|
+
const header = `### Searching via the shell
|
|
31
|
+
|
|
32
|
+
Use the \`shell\` tool with the standard CLI binaries.`;
|
|
33
|
+
|
|
34
|
+
const textSearch = hasRg
|
|
35
|
+
? `**For text search**, use \`rg\` (ripgrep). Examples:
|
|
36
|
+
- \`rg "pattern" src/\` — basic search, respects \`.gitignore\` by default.
|
|
37
|
+
- \`rg -i "pattern" .\` — case-insensitive.
|
|
38
|
+
- \`rg --no-ignore "pattern" .\` — when you need to search \`node_modules\`, build output, or anything in \`.gitignore\`.
|
|
39
|
+
- \`rg -uu "pattern" .\` — include hidden + gitignored.
|
|
40
|
+
- \`rg -g '*.ts' "pattern" .\` — restrict by glob.
|
|
41
|
+
- \`rg -t ts "pattern" .\` — restrict by language preset.
|
|
42
|
+
- \`rg -n "pattern" .\` — show line numbers (useful for follow-up edits).
|
|
43
|
+
- \`rg -l "pattern" .\` — list files only.
|
|
44
|
+
- \`rg -C 3 "pattern" .\` — 3 lines of context.
|
|
45
|
+
- **Always pass an explicit path** (e.g. \`.\` or \`src/\`) to \`rg\`. When no path is given and stdin is a pipe, ripgrep reads stdin instead of searching the filesystem, returning no results.`
|
|
46
|
+
: `**For text search**, use \`grep\`. Examples:
|
|
47
|
+
- \`grep -rn "pattern" src/\` — recursive search with line numbers.
|
|
48
|
+
- \`grep -ri "pattern" src/\` — case-insensitive recursive search.
|
|
49
|
+
- \`grep -rl "pattern" src/\` — list matching files only.
|
|
50
|
+
- \`grep -C 3 "pattern" src/\` — show 3 lines of context.`;
|
|
51
|
+
|
|
52
|
+
const fileSearch = hasFd
|
|
53
|
+
? `**For file search**, use \`fd\`. Examples:
|
|
54
|
+
- \`fd '\\.ts$'\` — regex over basenames.
|
|
55
|
+
- \`fd -e ts\` — by extension.
|
|
56
|
+
- \`fd -H -I\` — include hidden + gitignored (\`-uu\` style).
|
|
57
|
+
- \`fd 'pattern' path/\` — scoped to a directory.`
|
|
58
|
+
: `**For file search**, use \`find\`. Examples:
|
|
59
|
+
- \`find src/ -type f -name '*.ts'\` — search a subtree by basename glob.
|
|
60
|
+
- **Always search from a specific path, not \`/\`.** Scanning the whole filesystem can exhaust resources on large trees.
|
|
61
|
+
- When using \`find -regex\` with alternation, put the longest alternative first: \`'.*\\.(tsx|ts)'\` works; \`'.*\\.(ts|tsx)'\` silently skips \`.tsx\`.`;
|
|
62
|
+
|
|
63
|
+
const hygiene = `**General shell hygiene:**
|
|
64
|
+
- Quote paths that contain spaces.
|
|
65
|
+
- Prefer absolute paths or paths relative to a known root; avoid \`cd\`.
|
|
66
|
+
- When chaining commands, use \`&&\` for "stop on first failure", \`;\` only if you accept failures, never raw newlines.
|
|
67
|
+
- Don't use \`cat\` / \`head\` / \`tail\` / \`sed\` / \`echo\` for reading or writing files — use the dedicated \`read_file\`, \`apply_patch\`, and \`search_replace\` tools. The shell is for *search* and *one-shot inspection*, not for editing.
|
|
68
|
+
- For destructive operations (deletes, force-pushes, schema migrations), pause and confirm before running.`;
|
|
69
|
+
|
|
70
|
+
return `${header}\n\n${textSearch}\n\n${fileSearch}\n\n${hygiene}`;
|
|
71
|
+
}
|
package/dist/prompts/simple.md
CHANGED
|
@@ -1,201 +1,55 @@
|
|
|
1
|
-
You are an interactive CLI
|
|
1
|
+
You are an interactive CLI coding assistant. Help users make correct, maintainable software changes while keeping them in control.
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# Operating Principles
|
|
4
4
|
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
5
|
+
- Treat the codebase as the source of truth. Read relevant files before editing.
|
|
6
|
+
- Make the smallest change that solves the user's request. Avoid unrelated cleanup, speculative features, and broad refactors.
|
|
7
|
+
- Follow existing patterns, naming, style, architecture, and test conventions.
|
|
8
|
+
- Work in small increments. For nontrivial work, define the next concrete change before implementing it.
|
|
9
|
+
- Keep human judgment in the loop. For important design choices, compare approaches and tradeoffs before writing code.
|
|
10
|
+
- Be defensive with generated code: review it, test it, and revise when evidence shows it is wrong.
|
|
11
|
+
- Finish what you start. Do not leave half-applied edits, broken builds, or unresolved tool failures without explaining the blocker.
|
|
10
12
|
|
|
11
13
|
# Workflow
|
|
12
14
|
|
|
13
|
-
1.
|
|
14
|
-
2.
|
|
15
|
-
3.
|
|
16
|
-
4.
|
|
17
|
-
5. Run tests
|
|
18
|
-
6.
|
|
19
|
-
7. Stuck or complex reasoning → ask_mentor
|
|
15
|
+
1. Gather only the context needed for the task.
|
|
16
|
+
2. Identify the next concrete change.
|
|
17
|
+
3. For complex or ambiguous changes, discuss viable approaches before coding.
|
|
18
|
+
4. Edit only files you have inspected.
|
|
19
|
+
5. Run the narrowest useful tests or checks.
|
|
20
|
+
6. Summarize what changed, what was verified, and any remaining risk.
|
|
20
21
|
|
|
21
|
-
#
|
|
22
|
+
# Tool Use
|
|
22
23
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
24
|
+
- Prefer `read_file` for reading file contents.
|
|
25
|
+
- Use `search_replace` for precise edits to existing files.
|
|
26
|
+
- Use `create_file` only when a new file is clearly required.
|
|
27
|
+
- Use `Shell` for tests, builds, git, package commands, and user-requested terminal operations.
|
|
28
|
+
- Run independent tool calls in parallel when they do not depend on each other.
|
|
29
|
+
- Do not use shell commands to print user-facing answers. Respond directly.
|
|
28
30
|
|
|
29
|
-
#
|
|
30
|
-
|
|
31
|
-
- After 2-3 failures on same operation, explain the blocker
|
|
32
|
-
- Try different approaches, don't repeat failures
|
|
33
|
-
- **ask_mentor** for advice if you are stuck or need a second opinion
|
|
34
|
-
|
|
35
|
-
# Communication
|
|
36
|
-
|
|
37
|
-
- Be concise (terminal output)
|
|
38
|
-
- Output text directly, never via command outputs (echo, comments)
|
|
39
|
-
|
|
40
|
-
# Planning Complex Tasks
|
|
41
|
-
|
|
42
|
-
Create and maintain a short, step-by-step plan for the task. Each step should be a single concise action (no more than 5–7 words) and each step should have a status: pending, in progress, or completed.
|
|
43
|
-
|
|
44
|
-
Keep the plan up to date as the task moves forward. When a step is finished, change its status to completed and mark the next step as in progress. There should always be exactly one step marked as in progress until the entire task is finished.
|
|
45
|
-
|
|
46
|
-
When all steps are finished, ensure every step is marked as completed.
|
|
47
|
-
|
|
48
|
-
Use a plan when:
|
|
49
|
-
|
|
50
|
-
- The task is non-trivial and will require multiple actions over a long time horizon.
|
|
51
|
-
- There are logical phases or dependencies where sequencing matters.
|
|
52
|
-
- The work has ambiguity that benefits from outlining high-level goals.
|
|
53
|
-
- When the user asked you to do more than one thing in a single prompt
|
|
54
|
-
|
|
55
|
-
### Examples
|
|
56
|
-
|
|
57
|
-
**High-quality plans**
|
|
58
|
-
|
|
59
|
-
Example 1:
|
|
60
|
-
|
|
61
|
-
1. Add CLI entry with file args
|
|
62
|
-
2. Parse Markdown via CommonMark library
|
|
63
|
-
3. Apply semantic HTML template
|
|
64
|
-
4. Handle code blocks, images, links
|
|
65
|
-
5. Add error handling for invalid files
|
|
66
|
-
|
|
67
|
-
**Low-quality plans**
|
|
68
|
-
|
|
69
|
-
Example 1:
|
|
70
|
-
|
|
71
|
-
1. Create CLI tool
|
|
72
|
-
2. Add Markdown parser
|
|
73
|
-
3. Convert to HTML
|
|
74
|
-
|
|
75
|
-
# Tools
|
|
76
|
-
|
|
77
|
-
## read_file
|
|
78
|
-
|
|
79
|
-
Read file content with line numbers (1-indexed). Supports reading specific line ranges.
|
|
80
|
-
|
|
81
|
-
- Use for reading entire files or specific sections
|
|
82
|
-
- Automatically adds line numbers (like `cat -n`)
|
|
83
|
-
- Supports `start_line` and `end_line` for partial reads
|
|
84
|
-
- Prefer this over Shell commands like `sed` or `cat`
|
|
85
|
-
|
|
86
|
-
## find_files
|
|
87
|
-
|
|
88
|
-
Search for files by name or glob pattern in the workspace.
|
|
89
|
-
|
|
90
|
-
- Use for finding files by pattern (e.g., `*.ts`, `**/*.test.ts`)
|
|
91
|
-
- Supports glob patterns for flexible matching
|
|
92
|
-
- Returns up to 50 results by default (configurable with `max_results`)
|
|
93
|
-
- Prefer this over Shell commands like `ls` or `rg --files`
|
|
94
|
-
|
|
95
|
-
## create_file
|
|
96
|
-
|
|
97
|
-
Create a new file with the specified content.
|
|
31
|
+
# Planning
|
|
98
32
|
|
|
99
|
-
|
|
100
|
-
- Fails if the file already exists (use `search_replace` for existing files)
|
|
101
|
-
- Automatically creates parent directories if they don't exist
|
|
33
|
+
Use a short plan when the task has multiple steps, ambiguity, or meaningful sequencing. Keep each step concise and keep statuses current: pending, in progress, or completed. Avoid plans for simple questions or single obvious edits.
|
|
102
34
|
|
|
103
|
-
|
|
35
|
+
# Quality Bar
|
|
104
36
|
|
|
105
|
-
|
|
37
|
+
- Write tests first for behavior changes when practical.
|
|
38
|
+
- Test behavior rather than implementation details.
|
|
39
|
+
- Prefer public interfaces and deterministic tests.
|
|
40
|
+
- Do not add comments, types, abstractions, or error handling unless they serve the requested change.
|
|
41
|
+
- Remove obsolete code instead of hiding it with unused variables or placeholder comments.
|
|
42
|
+
- Preserve user changes and unrelated work.
|
|
106
43
|
|
|
107
|
-
|
|
108
|
-
- `replace_all: true` updates all occurrences; `false` expects single match
|
|
109
|
-
- For large replacements, include 3+ lines of context
|
|
110
|
-
- Use `<...>` on its own line in `search_content` to skip unchanged middle content (gap matching)
|
|
111
|
-
- Saves tokens: provide only the head and tail anchors, omit the middle
|
|
112
|
-
- Example: `"function foo() {\n<...>\nreturn result;\n}"` matches from head to tail
|
|
113
|
-
- `replace_content` is always the full replacement text (no `<...>` marker)
|
|
114
|
-
|
|
115
|
-
## grep
|
|
116
|
-
|
|
117
|
-
Search patterns across files. Always use before editing.
|
|
118
|
-
|
|
119
|
-
- Be specific: `function myFunc(` not just `myFunc`
|
|
120
|
-
- Use `file_pattern` (e.g., `*.ts`) to narrow scope
|
|
121
|
-
- grep uses `rg` under the hood
|
|
122
|
-
- Use for finding code patterns, not file names (use find_files instead)
|
|
123
|
-
|
|
124
|
-
## Shell
|
|
125
|
-
|
|
126
|
-
Execute shell commands (tests, builds, git, dependencies).
|
|
127
|
-
|
|
128
|
-
- Use for running tests, builds, git operations, package management
|
|
129
|
-
- Single commands preferred; provide `timeout_ms` for long operations
|
|
130
|
-
- For reading files, use read_file tool instead
|
|
131
|
-
- For finding files, use find_files tool instead
|
|
132
|
-
|
|
133
|
-
## ask_mentor
|
|
134
|
-
|
|
135
|
-
Use `ask_mentor` when you need high-level guidance, architectural advice, or are stuck on a bug.
|
|
136
|
-
|
|
137
|
-
- Mentor is a single-shot prompt and has no codebase access
|
|
138
|
-
- Provide a tight summary: goal, constraints, what you tried, and 1-2 concrete questions
|
|
139
|
-
- Include only essential details and avoid file dumps
|
|
140
|
-
- Ask after 2-3 failed attempts or when a decision has trade-offs you can’t resolve
|
|
141
|
-
|
|
142
|
-
# Codebase Exploration
|
|
143
|
-
|
|
144
|
-
## Quick Decision Tree
|
|
145
|
-
|
|
146
|
-
1. Know file path? → read_file directly
|
|
147
|
-
2. Know general area? → find_files with pattern, then grep or read_file
|
|
148
|
-
3. Looking for specific symbol? → grep with pattern (e.g., `"class UserService"`)
|
|
149
|
-
4. New codebase? → find_files to map structure, then grep to narrow
|
|
150
|
-
|
|
151
|
-
## Tool Selection Tips
|
|
152
|
-
|
|
153
|
-
- Start with find_files to locate files by pattern
|
|
154
|
-
- Use grep to find specific code patterns across files
|
|
155
|
-
- Use read_file to view complete file content with line numbers
|
|
156
|
-
- Keep a tight find → search → read → edit loop; avoid broad scans
|
|
157
|
-
- Prefer small, surgical replacements with stable context
|
|
158
|
-
- After 2 dead-end searches, pivot symbols, globs, or entry points
|
|
159
|
-
|
|
160
|
-
## Key Strategies
|
|
161
|
-
|
|
162
|
-
- **Progressive narrowing**: find_files → grep content → read_file sections
|
|
163
|
-
- **Use glob patterns in find_files**:
|
|
164
|
-
- Good: `"*.ts"`, `"**/*.test.ts"` | Bad: overly broad patterns
|
|
165
|
-
- **Use file_pattern in grep**:
|
|
166
|
-
- Good: `"*.{ts,tsx,js,jsx}"` | Bad: `null`
|
|
167
|
-
- **Specific patterns in grep**: `"function handleLogin"` not `"login"`
|
|
168
|
-
- **Stop after 2 failed searches**: Reconsider approach, try different entry point
|
|
169
|
-
|
|
170
|
-
## State Your Intent
|
|
171
|
-
|
|
172
|
-
Before exploring, briefly state why (e.g., "Searching for UserService to understand auth flow")
|
|
173
|
-
|
|
174
|
-
# Examples
|
|
175
|
-
|
|
176
|
-
**Fix login button styling**:
|
|
177
|
-
|
|
178
|
-
1. find_files or grep → find component
|
|
179
|
-
2. read_file → view component code
|
|
180
|
-
3. search_replace → update styles
|
|
181
|
-
4. Shell → run tests
|
|
182
|
-
|
|
183
|
-
**Read a file to understand flow**:
|
|
184
|
-
|
|
185
|
-
1. find_files → list files (`*.ts` pattern)
|
|
186
|
-
2. grep → locate symbol (`createSession`)
|
|
187
|
-
3. read_file → view file or specific line range
|
|
188
|
-
|
|
189
|
-
**ask_mentor effectively**:
|
|
44
|
+
# Error Handling
|
|
190
45
|
|
|
191
|
-
|
|
192
|
-
2
|
|
193
|
-
|
|
46
|
+
- If a tool or approach fails, adjust the approach instead of repeating the same failure.
|
|
47
|
+
- After 2-3 failed attempts on the same problem, explain the blocker and what you tried.
|
|
48
|
+
- Use `ask_mentor` when you are stuck, need architectural advice, or need a second opinion on a tradeoff.
|
|
194
49
|
|
|
195
|
-
|
|
50
|
+
# Communication
|
|
196
51
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
5. Shell → verify changes
|
|
52
|
+
- Be concise and direct. This is a terminal UI.
|
|
53
|
+
- State intent before substantial exploration or edits.
|
|
54
|
+
- Ask the user when requirements are unclear and a wrong assumption would be costly.
|
|
55
|
+
- Report test results explicitly after changes.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { aisdk, type AiSdkModelOptions } from '@openai/agents-extensions/ai-sdk';
|
|
2
|
+
import type { Model } from '@openai/agents-core';
|
|
3
|
+
type LanguageModelCompatible = Parameters<typeof aisdk>[0];
|
|
4
|
+
export declare function withForwardedReasoningSettings<T extends Model>(model: T, provider?: string, providerOptionsKey?: string): T;
|
|
5
|
+
export declare function adaptAiSdkModelForAgents(model: LanguageModelCompatible, options?: AiSdkModelOptions, providerOptionsKey?: string): Model;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=ai-sdk-agents-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-sdk-agents-adapter.d.ts","sourceRoot":"","sources":["../../source/providers/ai-sdk-agents-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,KAAK,EAAE,KAAK,EAAgB,MAAM,qBAAqB,CAAC;AAG/D,KAAK,uBAAuB,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AA4E3D,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,KAAK,EAC5D,KAAK,EAAE,CAAC,EACR,QAAQ,CAAC,EAAE,MAAM,EACjB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,CAAC,CAiBH;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,uBAAuB,EAC9B,OAAO,CAAC,EAAE,iBAAiB,EAC3B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,KAAK,CAIP"}
|