@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
|
@@ -2,6 +2,13 @@ import test from 'ava';
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { render } from 'ink-testing-library';
|
|
4
4
|
import MessageList, { splitStaticHistory } from './MessageList.js';
|
|
5
|
+
import { createMockSettingsService } from '../services/settings-service.mock.js';
|
|
6
|
+
const countOccurrences = (text, pattern) => text.split(pattern).length - 1;
|
|
7
|
+
const stripAnsi = (text) => text.replaceAll(/\u001B\[[0-9;]*m/g, '');
|
|
8
|
+
const firstTableBorder = (text) => stripAnsi(text)
|
|
9
|
+
.split('\n')
|
|
10
|
+
.find((line) => line.trimStart().startsWith('+')) ?? '';
|
|
11
|
+
const renderedLines = (text) => stripAnsi(text).trim().split('\n');
|
|
5
12
|
test('MessageList renders user and bot messages', (t) => {
|
|
6
13
|
const messages = [
|
|
7
14
|
{ id: 1, sender: 'user', text: 'hello' },
|
|
@@ -26,7 +33,87 @@ test('MessageList renders image attachment summaries without leaked sentinel ids
|
|
|
26
33
|
t.true(output.includes('[1 image attached]'));
|
|
27
34
|
t.false(output.includes('f9uatvt88vql1'));
|
|
28
35
|
});
|
|
29
|
-
test('
|
|
36
|
+
test('MessageList retains static history across rerenders', (t) => {
|
|
37
|
+
const renderer = render(React.createElement(MessageList, { messages: [{ id: 'one', sender: 'bot', text: 'one' }] }));
|
|
38
|
+
renderer.rerender(React.createElement(MessageList, { messages: [
|
|
39
|
+
{ id: 'one', sender: 'bot', text: 'one' },
|
|
40
|
+
{ id: 'two', sender: 'bot', text: 'two' },
|
|
41
|
+
] }));
|
|
42
|
+
const output = renderer.lastFrame() ?? '';
|
|
43
|
+
t.true(output.includes('one'));
|
|
44
|
+
t.true(output.includes('two'));
|
|
45
|
+
});
|
|
46
|
+
test('MessageList updates static history when a message with the same id is corrected', (t) => {
|
|
47
|
+
const renderer = render(React.createElement(MessageList, { messages: [{ id: 'corrected-message', sender: 'bot', status: 'finalized', text: 'Hello wrold' }] }));
|
|
48
|
+
renderer.rerender(React.createElement(MessageList, { messages: [{ id: 'corrected-message', sender: 'bot', status: 'finalized', text: 'Hello world' }] }));
|
|
49
|
+
const output = renderer.lastFrame() ?? '';
|
|
50
|
+
t.true(output.includes('Hello world'));
|
|
51
|
+
t.false(output.includes('Hello wrold'));
|
|
52
|
+
});
|
|
53
|
+
test('MessageList appends a fresh startup banner after clearing conversation history', (t) => {
|
|
54
|
+
const settingsService = createMockSettingsService();
|
|
55
|
+
const renderer = render(React.createElement(MessageList, { messages: [{ id: 'one', sender: 'bot', text: 'one' }], bannerItems: ['startup-banner-0'], settingsService: settingsService }));
|
|
56
|
+
renderer.rerender(React.createElement(MessageList, { messages: [], bannerItems: ['startup-banner-0', 'startup-banner-1'], settingsService: settingsService }));
|
|
57
|
+
const output = renderer.lastFrame() ?? '';
|
|
58
|
+
t.is(countOccurrences(output, 'term²'), 2);
|
|
59
|
+
});
|
|
60
|
+
test('MessageList moves a message from active to static without duplicating it', (t) => {
|
|
61
|
+
const renderer = render(React.createElement(MessageList, { messages: [
|
|
62
|
+
{ id: 'before', sender: 'bot', text: 'before' },
|
|
63
|
+
{ id: 'running-command', sender: 'command', status: 'running', command: 'npm test', output: '' },
|
|
64
|
+
] }));
|
|
65
|
+
renderer.rerender(React.createElement(MessageList, { messages: [
|
|
66
|
+
{ id: 'before', sender: 'bot', text: 'before' },
|
|
67
|
+
{ id: 'running-command', sender: 'command', status: 'completed', command: 'npm test', output: '' },
|
|
68
|
+
] }));
|
|
69
|
+
const output = renderer.lastFrame() ?? '';
|
|
70
|
+
t.is(countOccurrences(output, 'before'), 1);
|
|
71
|
+
t.is(countOccurrences(output, 'npm test'), 1);
|
|
72
|
+
});
|
|
73
|
+
test('MessageList preserves spaces in bot text immediately before a command message', (t) => {
|
|
74
|
+
const messages = [
|
|
75
|
+
{
|
|
76
|
+
id: 'before-tool',
|
|
77
|
+
sender: 'bot',
|
|
78
|
+
status: 'finalized',
|
|
79
|
+
text: 'I will read this file:',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: 'read-file-call',
|
|
83
|
+
sender: 'command',
|
|
84
|
+
status: 'running',
|
|
85
|
+
command: 'source/components/MessageList.tsx',
|
|
86
|
+
output: '',
|
|
87
|
+
toolName: 'read_file',
|
|
88
|
+
toolArgs: { path: 'source/components/MessageList.tsx' },
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
const { lastFrame } = render(React.createElement(MessageList, { messages: messages }));
|
|
92
|
+
const output = stripAnsi(lastFrame() ?? '');
|
|
93
|
+
t.true(output.includes('read this file:'));
|
|
94
|
+
t.false(output.includes('read thisfile:'));
|
|
95
|
+
});
|
|
96
|
+
test('MessageList renders active and static markdown tables with the same padded width', (t) => {
|
|
97
|
+
const markdown = `| File | Change |
|
|
98
|
+
| --- | --- |
|
|
99
|
+
| \`openai-compatible/model.ts\` | Track \`reasoningContent\` separately from \`reasoning\`; emit both \`reasoning_content\` and \`providerData\` in messages and function_calls; accumulate \`reasoning_content\` delta in streams |`;
|
|
100
|
+
const renderer = render(React.createElement(MessageList, { messages: [{ id: 'table', sender: 'bot', status: 'streaming', text: markdown }] }));
|
|
101
|
+
const activeBorder = firstTableBorder(renderer.lastFrame() ?? '');
|
|
102
|
+
renderer.rerender(React.createElement(MessageList, { messages: [{ id: 'table', sender: 'bot', status: 'finalized', text: markdown }] }));
|
|
103
|
+
const staticBorder = firstTableBorder(renderer.lastFrame() ?? '');
|
|
104
|
+
t.regex(activeBorder, /^ {2,}\+/);
|
|
105
|
+
t.is(staticBorder, activeBorder);
|
|
106
|
+
});
|
|
107
|
+
test('MessageList renders active and static wrapped text with the same line breaks', (t) => {
|
|
108
|
+
const text = 'This paragraph is intentionally long enough to wrap near the terminal boundary while the message is streaming and must keep the same wrapped shape after it is finalized.';
|
|
109
|
+
const renderer = render(React.createElement(MessageList, { messages: [{ id: 'paragraph', sender: 'bot', status: 'streaming', text }] }));
|
|
110
|
+
const activeLines = renderedLines(renderer.lastFrame() ?? '');
|
|
111
|
+
renderer.rerender(React.createElement(MessageList, { messages: [{ id: 'paragraph', sender: 'bot', status: 'finalized', text }] }));
|
|
112
|
+
const staticLines = renderedLines(renderer.lastFrame() ?? '');
|
|
113
|
+
t.true(activeLines.length > 1);
|
|
114
|
+
t.deepEqual(staticLines, activeLines);
|
|
115
|
+
});
|
|
116
|
+
test('splitStaticHistory keeps running command messages active regardless of position', (t) => {
|
|
30
117
|
const messages = [
|
|
31
118
|
...Array.from({ length: 25 }, (_, index) => ({
|
|
32
119
|
id: `msg-${index}`,
|
|
@@ -46,11 +133,30 @@ test('splitStaticHistory keeps running command messages active even when outside
|
|
|
46
133
|
text: `tail ${index}`,
|
|
47
134
|
})),
|
|
48
135
|
];
|
|
49
|
-
const { history, active } = splitStaticHistory(messages
|
|
136
|
+
const { history, active } = splitStaticHistory(messages);
|
|
50
137
|
t.false(history.some((message) => message.id === 'running-command'));
|
|
51
138
|
t.true(active.some((message) => message.id === 'running-command'));
|
|
139
|
+
// Only the prefix before the running command can be static without reordering output.
|
|
140
|
+
t.true(history.some((message) => message.id === 'msg-0'));
|
|
141
|
+
t.true(active.some((message) => message.id === 'tail-24'));
|
|
142
|
+
});
|
|
143
|
+
test('splitStaticHistory keeps bot text before a running command active', (t) => {
|
|
144
|
+
const messages = [
|
|
145
|
+
{ id: 'older', sender: 'bot', text: 'older', status: 'finalized' },
|
|
146
|
+
{ id: 'before-tool', sender: 'bot', text: 'I will read this file:', status: 'finalized' },
|
|
147
|
+
{
|
|
148
|
+
id: 'running-command',
|
|
149
|
+
sender: 'command',
|
|
150
|
+
status: 'running',
|
|
151
|
+
command: 'read_file "source/components/MessageList.tsx"',
|
|
152
|
+
output: '',
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
const { history, active } = splitStaticHistory(messages);
|
|
156
|
+
t.deepEqual(history.map((message) => message.id), ['older']);
|
|
157
|
+
t.deepEqual(active.map((message) => message.id), ['before-tool', 'running-command']);
|
|
52
158
|
});
|
|
53
|
-
test('splitStaticHistory keeps reasoning messages
|
|
159
|
+
test('splitStaticHistory keeps unfinalized reasoning messages and following messages active', (t) => {
|
|
54
160
|
const messages = [
|
|
55
161
|
...Array.from({ length: 25 }, (_, index) => ({
|
|
56
162
|
id: `msg-${index}`,
|
|
@@ -68,9 +174,76 @@ test('splitStaticHistory keeps reasoning messages active while moving finalized
|
|
|
68
174
|
text: `tail ${index}`,
|
|
69
175
|
})),
|
|
70
176
|
];
|
|
71
|
-
const { history, active } = splitStaticHistory(messages
|
|
177
|
+
const { history, active } = splitStaticHistory(messages);
|
|
72
178
|
t.true(history.some((message) => message.id === 'msg-0'));
|
|
179
|
+
t.true(active.some((message) => message.id === 'tail-24'));
|
|
73
180
|
t.false(history.some((message) => message.id === 'reasoning-message'));
|
|
74
181
|
t.true(active.some((message) => message.id === 'reasoning-message'));
|
|
75
182
|
});
|
|
183
|
+
test('splitStaticHistory keeps streaming bot messages and following messages active', (t) => {
|
|
184
|
+
const messages = [
|
|
185
|
+
{ id: 'before', sender: 'bot', text: 'before', status: 'finalized' },
|
|
186
|
+
{ id: 'streaming-bot', sender: 'bot', text: 'partial', status: 'streaming' },
|
|
187
|
+
{ id: 'after', sender: 'bot', text: 'after', status: 'finalized' },
|
|
188
|
+
];
|
|
189
|
+
const { history, active } = splitStaticHistory(messages);
|
|
190
|
+
t.deepEqual(history.map((message) => message.id), ['before']);
|
|
191
|
+
t.deepEqual(active.map((message) => message.id), ['streaming-bot', 'after']);
|
|
192
|
+
});
|
|
193
|
+
test('splitStaticHistory moves finalized bot messages to static history', (t) => {
|
|
194
|
+
const messages = [
|
|
195
|
+
{ id: 'first', sender: 'bot', text: 'first', status: 'finalized' },
|
|
196
|
+
{ id: 'second', sender: 'bot', text: 'second', status: 'finalized' },
|
|
197
|
+
];
|
|
198
|
+
const { history, active } = splitStaticHistory(messages);
|
|
199
|
+
t.deepEqual(history.map((message) => message.id), ['first', 'second']);
|
|
200
|
+
t.deepEqual(active, []);
|
|
201
|
+
});
|
|
202
|
+
test('splitStaticHistory preserves chronological order after the first active message', (t) => {
|
|
203
|
+
const messages = [
|
|
204
|
+
{ id: 'before', sender: 'bot', text: 'before' },
|
|
205
|
+
{
|
|
206
|
+
id: 'running-command',
|
|
207
|
+
sender: 'command',
|
|
208
|
+
status: 'running',
|
|
209
|
+
command: 'npm test',
|
|
210
|
+
output: '',
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
id: 'completed-command',
|
|
214
|
+
sender: 'command',
|
|
215
|
+
status: 'completed',
|
|
216
|
+
command: 'pwd',
|
|
217
|
+
output: '/tmp',
|
|
218
|
+
},
|
|
219
|
+
{ id: 'after', sender: 'bot', text: 'after' },
|
|
220
|
+
];
|
|
221
|
+
const { history, active } = splitStaticHistory(messages);
|
|
222
|
+
t.deepEqual(history.map((message) => message.id), ['before']);
|
|
223
|
+
t.deepEqual(active.map((message) => message.id), ['running-command', 'completed-command', 'after']);
|
|
224
|
+
});
|
|
225
|
+
test('splitStaticHistory moves finalized reasoning messages to static history', (t) => {
|
|
226
|
+
const messages = [
|
|
227
|
+
...Array.from({ length: 25 }, (_, index) => ({
|
|
228
|
+
id: `msg-${index}`,
|
|
229
|
+
sender: 'bot',
|
|
230
|
+
text: `message ${index}`,
|
|
231
|
+
})),
|
|
232
|
+
{
|
|
233
|
+
id: 'finalized-reasoning',
|
|
234
|
+
sender: 'reasoning',
|
|
235
|
+
status: 'finalized',
|
|
236
|
+
text: 'stable paragraph',
|
|
237
|
+
},
|
|
238
|
+
...Array.from({ length: 25 }, (_, index) => ({
|
|
239
|
+
id: `tail-${index}`,
|
|
240
|
+
sender: 'bot',
|
|
241
|
+
text: `tail ${index}`,
|
|
242
|
+
})),
|
|
243
|
+
];
|
|
244
|
+
const { history, active } = splitStaticHistory(messages);
|
|
245
|
+
t.true(history.some((message) => message.id === 'finalized-reasoning'));
|
|
246
|
+
t.false(active.some((message) => message.id === 'finalized-reasoning'));
|
|
247
|
+
t.is(active.length, 0);
|
|
248
|
+
});
|
|
76
249
|
//# sourceMappingURL=MessageList.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageList.test.js","sourceRoot":"","sources":["../../source/components/MessageList.test.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageList.test.js","sourceRoot":"","sources":["../../source/components/MessageList.test.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,KAAK,CAAC;AACvB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,WAAW,EAAE,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAEjF,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3E,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAC7E,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CACxC,SAAS,CAAC,IAAI,CAAC;KACZ,KAAK,CAAC,IAAI,CAAC;KACX,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAC5D,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAE3E,IAAI,CAAC,2CAA2C,EAAE,CAAC,CAAC,EAAE,EAAE;IACtD,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;QACxC,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;KAC3C,CAAC;IACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;IACjC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4EAA4E,EAAE,CAAC,CAAC,EAAE,EAAE;IACvF,MAAM,QAAQ,GAAG;QACf;YACE,EAAE,EAAE,CAAC;YACL,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,0CAA0C;SACjD;KACF,CAAC;IAEF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;IAEjC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qDAAqD,EAAE,CAAC,CAAC,EAAE,EAAE;IAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAI,CAAC,CAAC;IAChG,QAAQ,CAAC,QAAQ,CACf,oBAAC,WAAW,IACV,QAAQ,EAAE;YACR,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;YACzC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;SAC1C,GACD,CACH,CAAC;IAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iFAAiF,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5F,MAAM,QAAQ,GAAG,MAAM,CACrB,oBAAC,WAAW,IAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,GAAI,CAClH,CAAC;IAEF,QAAQ,CAAC,QAAQ,CACf,oBAAC,WAAW,IAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,GAAI,CAClH,CAAC;IAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gFAAgF,EAAE,CAAC,CAAC,EAAE,EAAE;IAC3F,MAAM,eAAe,GAAG,yBAAyB,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,CACrB,oBAAC,WAAW,IACV,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EACrD,WAAW,EAAE,CAAC,kBAAkB,CAAC,EACjC,eAAe,EAAE,eAAe,GAChC,CACH,CAAC;IAEF,QAAQ,CAAC,QAAQ,CACf,oBAAC,WAAW,IACV,QAAQ,EAAE,EAAE,EACZ,WAAW,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,EACrD,eAAe,EAAE,eAAe,GAChC,CACH,CAAC;IAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,CAAC,CAAC,EAAE,EAAE;IACrF,MAAM,QAAQ,GAAG,MAAM,CACrB,oBAAC,WAAW,IACV,QAAQ,EAAE;YACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/C,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;SACjG,GACD,CACH,CAAC;IAEF,QAAQ,CAAC,QAAQ,CACf,oBAAC,WAAW,IACV,QAAQ,EAAE;YACR,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/C,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE;SACnG,GACD,CACH,CAAC;IAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+EAA+E,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1F,MAAM,QAAQ,GAAG;QACf;YACE,EAAE,EAAE,aAAa;YACjB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,wBAAwB;SAC/B;QACD;YACE,EAAE,EAAE,gBAAgB;YACpB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,mCAAmC;YAC5C,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE,EAAE,IAAI,EAAE,mCAAmC,EAAE;SACxD;KACF,CAAC;IAEF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kFAAkF,EAAE,CAAC,CAAC,EAAE,EAAE;IAC7F,MAAM,QAAQ,GAAG;;sOAEmN,CAAC;IAErO,MAAM,QAAQ,GAAG,MAAM,CACrB,oBAAC,WAAW,IAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAI,CACjG,CAAC;IACF,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElE,QAAQ,CAAC,QAAQ,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,GAAI,CAAC,CAAC;IACpH,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAElE,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8EAA8E,EAAE,CAAC,CAAC,EAAE,EAAE;IACzF,MAAM,IAAI,GACR,2KAA2K,CAAC;IAE9K,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAI,CAAC,CAAC;IACpH,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,QAAQ,CAAC,QAAQ,CAAC,oBAAC,WAAW,IAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,GAAI,CAAC,CAAC;IAC9G,MAAM,WAAW,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE9D,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iFAAiF,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5F,MAAM,QAAQ,GAAG;QACf,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,OAAO,KAAK,EAAE;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW,KAAK,EAAE;SACzB,CAAC,CAAC;QACH;YACE,EAAE,EAAE,iBAAiB;YACrB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,EAAE;SACX;QACD,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,QAAQ,KAAK,EAAE;YACnB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,QAAQ,KAAK,EAAE;SACtB,CAAC,CAAC;KACJ,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEzD,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,iBAAiB,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,iBAAiB,CAAC,CAAC,CAAC;IACnE,sFAAsF;IACtF,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mEAAmE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC9E,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;QAClE,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,WAAW,EAAE;QACzF;YACE,EAAE,EAAE,iBAAiB;YACrB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,+CAA+C;YACxD,MAAM,EAAE,EAAE;SACX;KACF,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEzD,CAAC,CAAC,SAAS,CACT,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACpC,CAAC,OAAO,CAAC,CACV,CAAC;IACF,CAAC,CAAC,SAAS,CACT,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACnC,CAAC,aAAa,EAAE,iBAAiB,CAAC,CACnC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uFAAuF,EAAE,CAAC,CAAC,EAAE,EAAE;IAClG,MAAM,QAAQ,GAAG;QACf,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,OAAO,KAAK,EAAE;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW,KAAK,EAAE;SACzB,CAAC,CAAC;QACH;YACE,EAAE,EAAE,mBAAmB;YACvB,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,UAAU;SACjB;QACD,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,QAAQ,KAAK,EAAE;YACnB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,QAAQ,KAAK,EAAE;SACtB,CAAC,CAAC;KACJ,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEzD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,mBAAmB,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,mBAAmB,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,+EAA+E,EAAE,CAAC,CAAC,EAAE,EAAE;IAC1F,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;QACpE,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE;QAC5E,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;KACnE,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEzD,CAAC,CAAC,SAAS,CACT,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACpC,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,CAAC,CAAC,SAAS,CACT,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACnC,CAAC,eAAe,EAAE,OAAO,CAAC,CAC3B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mEAAmE,EAAE,CAAC,CAAC,EAAE,EAAE;IAC9E,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE;QAClE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;KACrE,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEzD,CAAC,CAAC,SAAS,CACT,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACpC,CAAC,OAAO,EAAE,QAAQ,CAAC,CACpB,CAAC;IACF,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iFAAiF,EAAE,CAAC,CAAC,EAAE,EAAE;IAC5F,MAAM,QAAQ,GAAG;QACf,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/C;YACE,EAAE,EAAE,iBAAiB;YACrB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,EAAE;SACX;QACD;YACE,EAAE,EAAE,mBAAmB;YACvB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,MAAM;SACf;QACD,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;KAC9C,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEzD,CAAC,CAAC,SAAS,CACT,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACpC,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,CAAC,CAAC,SAAS,CACT,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EACnC,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAClD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yEAAyE,EAAE,CAAC,CAAC,EAAE,EAAE;IACpF,MAAM,QAAQ,GAAG;QACf,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,OAAO,KAAK,EAAE;YAClB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,WAAW,KAAK,EAAE;SACzB,CAAC,CAAC;QACH;YACE,EAAE,EAAE,qBAAqB;YACzB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,kBAAkB;SACzB;QACD,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3C,EAAE,EAAE,QAAQ,KAAK,EAAE;YACnB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,QAAQ,KAAK,EAAE;SACtB,CAAC,CAAC;KACJ,CAAC;IAEF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAEzD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,qBAAqB,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,qBAAqB,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/ModelSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAG9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;
|
|
1
|
+
{"version":3,"file":"ModelSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/ModelSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAG9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,eAAe,CAAC;CAClC,CAAC;AA8FF,QAAA,MAAM,kBAAkB,EAAE,EAAE,CAAC,KAAK,CAuFjC,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
|
@@ -8,20 +8,60 @@ const ProviderTabs = ({ activeProvider, canSwitch = true, settingsService }) =>
|
|
|
8
8
|
label: p.label,
|
|
9
9
|
hasCredentials: hasProviderCredentials(settingsService, p.id),
|
|
10
10
|
}));
|
|
11
|
+
const terminalWidth = process.stdout.columns || 80;
|
|
12
|
+
const labelLength = canSwitch ? 'Tab/←→ → switch provider'.length : 0;
|
|
13
|
+
const availableWidth = terminalWidth - labelLength - 2;
|
|
14
|
+
const getTabWidth = (p) => {
|
|
15
|
+
return 1 + p.label.length + (!p.hasCredentials ? 9 : 0) + 1; // " {label}{ (no key)} "
|
|
16
|
+
};
|
|
17
|
+
const activeIndex = providers.findIndex((p) => p.id === activeProvider);
|
|
18
|
+
const safeActiveIndex = activeIndex >= 0 ? activeIndex : 0;
|
|
19
|
+
let start = safeActiveIndex;
|
|
20
|
+
let end = safeActiveIndex;
|
|
21
|
+
let currentWidth = getTabWidth(providers[safeActiveIndex]) + 4; // +4 for "◀ " and " ▶"
|
|
22
|
+
while (true) {
|
|
23
|
+
let expanded = false;
|
|
24
|
+
// Try to expand right
|
|
25
|
+
if (end + 1 < providers.length) {
|
|
26
|
+
const rightWidth = getTabWidth(providers[end + 1]) + 3; // " │ "
|
|
27
|
+
if (currentWidth + rightWidth <= availableWidth) {
|
|
28
|
+
currentWidth += rightWidth;
|
|
29
|
+
end++;
|
|
30
|
+
expanded = true;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Try to expand left
|
|
34
|
+
if (start - 1 >= 0) {
|
|
35
|
+
const leftWidth = getTabWidth(providers[start - 1]) + 3; // " │ "
|
|
36
|
+
if (currentWidth + leftWidth <= availableWidth) {
|
|
37
|
+
currentWidth += leftWidth;
|
|
38
|
+
start--;
|
|
39
|
+
expanded = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
if (!expanded)
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
const visibleProviders = providers.slice(start, end + 1);
|
|
46
|
+
const hasLeftScroll = start > 0;
|
|
47
|
+
const hasRightScroll = end < providers.length - 1;
|
|
11
48
|
return (React.createElement(Box, { flexDirection: "column" },
|
|
12
49
|
React.createElement(Box, { justifyContent: "space-between" },
|
|
13
|
-
React.createElement(Box, null,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
50
|
+
React.createElement(Box, null,
|
|
51
|
+
hasLeftScroll && React.createElement(Text, { color: "#64748b" }, "\u25C0 "),
|
|
52
|
+
visibleProviders.map((provider, index) => {
|
|
53
|
+
const isActive = provider.id === activeProvider;
|
|
54
|
+
const isDisabled = !provider.hasCredentials;
|
|
55
|
+
return (React.createElement(Box, { key: provider.id },
|
|
56
|
+
React.createElement(Text, { inverse: isActive, color: isActive ? 'magenta' : isDisabled ? 'red' : '#64748b', bold: isActive, strikethrough: isDisabled },
|
|
57
|
+
' ',
|
|
58
|
+
provider.label,
|
|
59
|
+
isDisabled ? ' (no key)' : '',
|
|
60
|
+
' '),
|
|
61
|
+
index < visibleProviders.length - 1 && React.createElement(Text, { color: "#64748b" }, ' │ ')));
|
|
62
|
+
}),
|
|
63
|
+
hasRightScroll && React.createElement(Text, { color: "#64748b" }, " \u25B6")),
|
|
64
|
+
canSwitch && React.createElement(Text, { color: "#64748b" }, "Tab/\u2190\u2192 \u2192 switch provider")),
|
|
25
65
|
!canSwitch && (React.createElement(Box, { marginTop: 0 },
|
|
26
66
|
React.createElement(Text, { color: "yellow" }, "\u26A0 Provider can only be changed at the start of a new conversation (/clear to reset)")))));
|
|
27
67
|
};
|
|
@@ -43,7 +83,7 @@ const ModelSelectionMenu = ({ items, selectedIndex, query, provider, loading = f
|
|
|
43
83
|
React.createElement(Text, { color: "red" },
|
|
44
84
|
"Unable to load models: ",
|
|
45
85
|
error)),
|
|
46
|
-
React.createElement(Text, { color: "#64748b" }, "Tab \u2192 switch provider \u00B7 Esc \u2192 cancel")));
|
|
86
|
+
React.createElement(Text, { color: "#64748b" }, "Tab/\u2190\u2192 \u2192 switch provider \u00B7 Esc \u2192 cancel")));
|
|
47
87
|
}
|
|
48
88
|
if (items.length === 0) {
|
|
49
89
|
return (React.createElement(Box, { flexDirection: "column" },
|
|
@@ -53,7 +93,7 @@ const ModelSelectionMenu = ({ items, selectedIndex, query, provider, loading = f
|
|
|
53
93
|
"No models match \"",
|
|
54
94
|
query || '*',
|
|
55
95
|
"\"")),
|
|
56
|
-
React.createElement(Text, { color: "#64748b" }, "Tab \u2192 switch provider \u00B7 Esc \u2192 cancel")));
|
|
96
|
+
React.createElement(Text, { color: "#64748b" }, "Tab/\u2190\u2192 \u2192 switch provider \u00B7 Esc \u2192 cancel")));
|
|
57
97
|
}
|
|
58
98
|
const visibleItems = items.slice(scrollOffset, scrollOffset + maxHeight);
|
|
59
99
|
const hasScrollUp = scrollOffset > 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSelectionMenu.js","sourceRoot":"","sources":["../../source/components/ModelSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAgB1E,MAAM,YAAY,GAIb,CAAC,EAAE,cAAc,EAAE,SAAS,GAAG,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE;IAC7D,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,cAAc,EAAE,sBAAsB,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAC,CAAC,CAAC;IAEJ,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,GAAG,IAAC,cAAc,EAAC,eAAe;YACjC,oBAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"ModelSelectionMenu.js","sourceRoot":"","sources":["../../source/components/ModelSelectionMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"PathSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,iBAAiB,EAAE,EAAE,CAAC,KAAK,CAuEhC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
|
-
const PathSelectionMenu = ({ items, selectedIndex, query, loading = false, error = null }) => {
|
|
3
|
+
const PathSelectionMenu = ({ items, selectedIndex, query, loading = false, error = null, scrollOffset = 0, maxHeight = 10, }) => {
|
|
4
4
|
if (loading) {
|
|
5
5
|
return (React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, flexDirection: "column" },
|
|
6
6
|
React.createElement(Text, { color: "cyan" }, "Loading project paths\u2026")));
|
|
@@ -18,25 +18,44 @@ const PathSelectionMenu = ({ items, selectedIndex, query, loading = false, error
|
|
|
18
18
|
query,
|
|
19
19
|
"\"")));
|
|
20
20
|
}
|
|
21
|
+
const visibleItems = items.slice(scrollOffset, scrollOffset + maxHeight);
|
|
22
|
+
const hasScrollUp = scrollOffset > 0;
|
|
23
|
+
const hasScrollDown = scrollOffset + maxHeight < items.length;
|
|
21
24
|
return (React.createElement(Box, { flexDirection: "column" },
|
|
22
25
|
React.createElement(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, flexDirection: "column" },
|
|
23
|
-
React.createElement(
|
|
24
|
-
"
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
React.createElement(Box, { justifyContent: "space-between" },
|
|
27
|
+
React.createElement(Text, { color: "#64748b" },
|
|
28
|
+
"@",
|
|
29
|
+
query || '*',
|
|
30
|
+
" \u00B7 ",
|
|
31
|
+
items.length,
|
|
32
|
+
" suggestion",
|
|
33
|
+
items.length === 1 ? '' : 's'),
|
|
34
|
+
items.length > maxHeight && (React.createElement(Text, { color: "#64748b" },
|
|
35
|
+
scrollOffset + 1,
|
|
36
|
+
"-",
|
|
37
|
+
Math.min(scrollOffset + maxHeight, items.length),
|
|
38
|
+
"/",
|
|
39
|
+
items.length))),
|
|
40
|
+
hasScrollUp && React.createElement(Text, { color: "#64748b" },
|
|
41
|
+
"\u2191 ",
|
|
42
|
+
scrollOffset,
|
|
43
|
+
" more"),
|
|
44
|
+
visibleItems.map((item, visibleIndex) => {
|
|
45
|
+
const actualIndex = scrollOffset + visibleIndex;
|
|
46
|
+
const isSelected = actualIndex === selectedIndex;
|
|
32
47
|
const icon = item.type === 'directory' ? '📁' : '📄';
|
|
33
48
|
return (React.createElement(Box, { key: item.path },
|
|
34
49
|
React.createElement(Text, { color: isSelected ? 'cyan' : undefined, inverse: isSelected },
|
|
35
50
|
icon,
|
|
36
51
|
" ",
|
|
37
52
|
item.path)));
|
|
38
|
-
})
|
|
39
|
-
|
|
53
|
+
}),
|
|
54
|
+
hasScrollDown && React.createElement(Text, { color: "#64748b" },
|
|
55
|
+
"\u2193 ",
|
|
56
|
+
items.length - scrollOffset - maxHeight,
|
|
57
|
+
" more")),
|
|
58
|
+
React.createElement(Text, { color: "#64748b" }, "Enter \u2192 insert with space \u00B7 Tab \u2192 insert w/o trailing space \u00B7 Esc \u2192 cancel \u00B7 \u2191\u2193 \u2192 scroll")));
|
|
40
59
|
};
|
|
41
60
|
export default PathSelectionMenu;
|
|
42
61
|
//# sourceMappingURL=PathSelectionMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathSelectionMenu.js","sourceRoot":"","sources":["../../source/components/PathSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"PathSelectionMenu.js","sourceRoot":"","sources":["../../source/components/PathSelectionMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/SettingsSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SettingsSelectionMenu.d.ts","sourceRoot":"","sources":["../../source/components/SettingsSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAGlC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAIjF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AA0DF,QAAA,MAAM,qBAAqB,EAAE,EAAE,CAAC,KAAK,CA6HpC,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import fs from 'node:fs';
|
|
2
3
|
import { Box, Text } from 'ink';
|
|
4
|
+
import { SETTING_KEYS } from '../services/settings-service.js';
|
|
5
|
+
import { getRtkBinaryPath } from '../services/rtk-service.js';
|
|
3
6
|
function titleCaseCategory(category) {
|
|
4
7
|
if (!category || category === 'other')
|
|
5
8
|
return 'Other Settings';
|
|
@@ -37,10 +40,14 @@ function truncate(text, max) {
|
|
|
37
40
|
return text;
|
|
38
41
|
return text.slice(0, Math.max(0, max - 1)) + '…';
|
|
39
42
|
}
|
|
40
|
-
function formatValue(value) {
|
|
43
|
+
function formatValue(value, key) {
|
|
41
44
|
if (typeof value === 'boolean') {
|
|
45
|
+
let text = value ? 'ON' : 'OFF';
|
|
46
|
+
if (value && key === SETTING_KEYS.SHELL_USE_RTK_COMPRESSION && fs.existsSync(getRtkBinaryPath())) {
|
|
47
|
+
text += ' (installed)';
|
|
48
|
+
}
|
|
42
49
|
return {
|
|
43
|
-
text
|
|
50
|
+
text,
|
|
44
51
|
color: value ? 'green' : 'red',
|
|
45
52
|
};
|
|
46
53
|
}
|
|
@@ -49,9 +56,9 @@ function formatValue(value) {
|
|
|
49
56
|
}
|
|
50
57
|
return { text: truncate(value, 40), color: 'cyan' };
|
|
51
58
|
}
|
|
52
|
-
const VISIBLE_COUNT =
|
|
59
|
+
const VISIBLE_COUNT = 10;
|
|
53
60
|
const KEY_COL_WIDTH = 32;
|
|
54
|
-
const SettingsSelectionMenu = ({ items, selectedIndex, query }) => {
|
|
61
|
+
const SettingsSelectionMenu = ({ items, selectedIndex, scrollOffset = 0, query }) => {
|
|
55
62
|
if (items.length === 0) {
|
|
56
63
|
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "red", paddingX: 1 },
|
|
57
64
|
React.createElement(Text, { bold: true, color: "red" }, "No settings found"),
|
|
@@ -60,24 +67,10 @@ const SettingsSelectionMenu = ({ items, selectedIndex, query }) => {
|
|
|
60
67
|
query,
|
|
61
68
|
"\"")));
|
|
62
69
|
}
|
|
63
|
-
|
|
64
|
-
let viewportStart = 0;
|
|
65
|
-
if (items.length > VISIBLE_COUNT) {
|
|
66
|
-
const half = Math.floor(VISIBLE_COUNT / 2);
|
|
67
|
-
if (selectedIndex <= half) {
|
|
68
|
-
viewportStart = 0;
|
|
69
|
-
}
|
|
70
|
-
else if (selectedIndex >= items.length - half) {
|
|
71
|
-
viewportStart = items.length - VISIBLE_COUNT;
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
viewportStart = selectedIndex - half;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
// Ensure start is valid
|
|
78
|
-
viewportStart = Math.max(0, Math.min(viewportStart, items.length - VISIBLE_COUNT));
|
|
79
|
-
// If items < VISIBLE_COUNT, start is 0.
|
|
70
|
+
const viewportStart = Math.max(0, Math.min(scrollOffset, Math.max(0, items.length - VISIBLE_COUNT)));
|
|
80
71
|
const visibleItems = items.slice(viewportStart, viewportStart + VISIBLE_COUNT);
|
|
72
|
+
const hasScrollUp = viewportStart > 0;
|
|
73
|
+
const hasScrollDown = viewportStart + VISIBLE_COUNT < items.length;
|
|
81
74
|
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1 },
|
|
82
75
|
React.createElement(Box, { marginBottom: 1, borderStyle: "single", borderBottom: false, borderLeft: false, borderRight: false, borderTop: false },
|
|
83
76
|
React.createElement(Text, { bold: true, color: "cyan" }, "\u2699 Settings"),
|
|
@@ -89,7 +82,19 @@ const SettingsSelectionMenu = ({ items, selectedIndex, query }) => {
|
|
|
89
82
|
React.createElement(Text, { color: "gray" },
|
|
90
83
|
" \u00B7 ",
|
|
91
84
|
items.length,
|
|
92
|
-
" items")
|
|
85
|
+
" items"),
|
|
86
|
+
items.length > VISIBLE_COUNT && (React.createElement(React.Fragment, null,
|
|
87
|
+
React.createElement(Text, { color: "gray" }, " \u00B7 "),
|
|
88
|
+
React.createElement(Text, { color: "gray" },
|
|
89
|
+
viewportStart + 1,
|
|
90
|
+
"-",
|
|
91
|
+
Math.min(viewportStart + VISIBLE_COUNT, items.length),
|
|
92
|
+
"/",
|
|
93
|
+
items.length)))),
|
|
94
|
+
hasScrollUp && React.createElement(Text, { color: "#64748b" },
|
|
95
|
+
"\u2191 ",
|
|
96
|
+
viewportStart,
|
|
97
|
+
" more"),
|
|
93
98
|
visibleItems.map((item, index) => {
|
|
94
99
|
const realIndex = viewportStart + index;
|
|
95
100
|
const isSelected = realIndex === selectedIndex;
|
|
@@ -103,7 +108,7 @@ const SettingsSelectionMenu = ({ items, selectedIndex, query }) => {
|
|
|
103
108
|
// Users might get lost. Let's show header if index==0 in viewport.
|
|
104
109
|
const prevCategory = realIndex > 0 ? getCategoryForKey(items[realIndex - 1].key) : null;
|
|
105
110
|
const showHeader = index === 0 || category !== prevCategory;
|
|
106
|
-
const valueObj = item.currentValue !== undefined ? formatValue(item.currentValue) : null;
|
|
111
|
+
const valueObj = item.currentValue !== undefined ? formatValue(item.currentValue, item.key) : null;
|
|
107
112
|
const paddedKey = item.key.length > KEY_COL_WIDTH
|
|
108
113
|
? truncate(item.key, KEY_COL_WIDTH).padEnd(KEY_COL_WIDTH, ' ')
|
|
109
114
|
: item.key.padEnd(KEY_COL_WIDTH, ' ');
|
|
@@ -120,6 +125,10 @@ const SettingsSelectionMenu = ({ items, selectedIndex, query }) => {
|
|
|
120
125
|
"\u2514\u2500\u2500 ",
|
|
121
126
|
item.description))))));
|
|
122
127
|
}),
|
|
128
|
+
hasScrollDown && React.createElement(Text, { color: "#64748b" },
|
|
129
|
+
"\u2193 ",
|
|
130
|
+
items.length - viewportStart - VISIBLE_COUNT,
|
|
131
|
+
" more"),
|
|
123
132
|
React.createElement(Box, { marginTop: 1, borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, borderColor: "gray" },
|
|
124
133
|
React.createElement(Text, { color: "gray", dimColor: true },
|
|
125
134
|
"Use ",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsSelectionMenu.js","sourceRoot":"","sources":["../../source/components/SettingsSelectionMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAa,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"SettingsSelectionMenu.js","sourceRoot":"","sources":["../../source/components/SettingsSelectionMenu.tsx"],"names":[],"mappings":"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"}
|