@machina.ai/cell-cli 1.4.0-rc2 → 1.6.1-rc1
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/package.json +12 -8
- package/dist/src/commands/extensions/disable.d.ts +2 -3
- package/dist/src/commands/extensions/disable.js +20 -6
- package/dist/src/commands/extensions/disable.js.map +1 -1
- package/dist/src/commands/extensions/enable.d.ts +2 -3
- package/dist/src/commands/extensions/enable.js +20 -9
- package/dist/src/commands/extensions/enable.js.map +1 -1
- package/dist/src/commands/extensions/install.d.ts +2 -0
- package/dist/src/commands/extensions/install.js +20 -4
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/install.test.js +80 -3
- package/dist/src/commands/extensions/install.test.js.map +1 -1
- package/dist/src/commands/extensions/link.js +1 -1
- package/dist/src/commands/extensions/link.js.map +1 -1
- package/dist/src/commands/extensions/uninstall.js +1 -1
- package/dist/src/commands/extensions/uninstall.js.map +1 -1
- package/dist/src/commands/extensions/update.js +42 -11
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/config/config.d.ts +2 -1
- package/dist/src/config/config.js +33 -16
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +10 -14
- package/dist/src/config/extension.js +160 -145
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/extensions/extensionEnablement.d.ts +44 -0
- package/dist/src/config/extensions/extensionEnablement.js +161 -0
- package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
- package/dist/src/config/extensions/extensionEnablement.test.js +261 -0
- package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -0
- package/dist/src/config/extensions/github.d.ts +29 -0
- package/dist/src/config/extensions/github.js +306 -0
- package/dist/src/config/extensions/github.js.map +1 -0
- package/dist/src/config/extensions/github.test.d.ts +6 -0
- package/dist/src/config/extensions/github.test.js +267 -0
- package/dist/src/config/extensions/github.test.js.map +1 -0
- package/dist/src/config/extensions/update.d.ts +20 -0
- package/dist/src/config/extensions/update.js +94 -0
- package/dist/src/config/extensions/update.js.map +1 -0
- package/dist/src/config/extensions/update.test.d.ts +6 -0
- package/dist/src/config/extensions/update.test.js +324 -0
- package/dist/src/config/extensions/update.test.js.map +1 -0
- package/dist/src/config/extensions/variableSchema.d.ts +8 -0
- package/dist/src/config/extensions/variableSchema.js +4 -0
- package/dist/src/config/extensions/variableSchema.js.map +1 -1
- package/dist/src/config/keyBindings.d.ts +4 -1
- package/dist/src/config/keyBindings.js +8 -0
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/settings.d.ts +3 -0
- package/dist/src/config/settings.js +58 -18
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +121 -12
- package/dist/src/config/settingsSchema.js +112 -9
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +68 -55
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/config/trustedFolders.d.ts +1 -1
- package/dist/src/config/trustedFolders.js +9 -4
- package/dist/src/config/trustedFolders.js.map +1 -1
- package/dist/src/config/trustedFolders.test.js +41 -25
- package/dist/src/config/trustedFolders.test.js.map +1 -1
- package/dist/src/core/auth.d.ts +13 -0
- package/dist/src/core/auth.js +27 -0
- package/dist/src/core/auth.js.map +1 -0
- package/dist/src/core/initializer.d.ts +21 -0
- package/dist/src/core/initializer.js +33 -0
- package/dist/src/core/initializer.js.map +1 -0
- package/dist/src/core/theme.d.ts +12 -0
- package/dist/src/core/theme.js +20 -0
- package/dist/src/core/theme.js.map +1 -0
- package/dist/src/gemini.d.ts +2 -1
- package/dist/src/gemini.js +110 -69
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +124 -14
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/nonInteractiveCli.js +87 -71
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +16 -17
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
- package/dist/src/services/FeedbackService.d.ts +21 -0
- package/dist/src/services/FeedbackService.js +124 -0
- package/dist/src/services/FeedbackService.js.map +1 -0
- package/dist/src/services/McpPromptLoader.js +43 -8
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/services/McpPromptLoader.test.js +228 -1
- package/dist/src/services/McpPromptLoader.test.js.map +1 -1
- package/dist/src/services/prompt-processors/shellProcessor.js +8 -1
- package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
- package/dist/src/test-utils/createExtension.d.ts +15 -0
- package/dist/src/test-utils/createExtension.js +25 -0
- package/dist/src/test-utils/createExtension.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.js +2 -0
- package/dist/src/test-utils/mockCommandContext.js.map +1 -1
- package/dist/src/ui/App.d.ts +1 -10
- package/dist/src/ui/App.js +17 -729
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/AppContainer.d.ts +17 -0
- package/dist/src/ui/AppContainer.js +905 -0
- package/dist/src/ui/AppContainer.js.map +1 -0
- package/dist/src/ui/AppContainer.test.d.ts +6 -0
- package/dist/src/ui/AppContainer.test.js +422 -0
- package/dist/src/ui/AppContainer.test.js.map +1 -0
- package/dist/src/ui/IdeIntegrationNudge.js +2 -1
- package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.d.ts +18 -0
- package/dist/src/ui/auth/AuthDialog.js +81 -0
- package/dist/src/ui/auth/AuthDialog.js.map +1 -0
- package/dist/src/ui/auth/AuthDialog.test.d.ts +6 -0
- package/dist/src/ui/auth/AuthDialog.test.js +176 -0
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -0
- package/dist/src/ui/{components → auth}/AuthInProgress.js +2 -2
- package/dist/src/ui/auth/AuthInProgress.js.map +1 -0
- package/dist/src/ui/auth/useAuth.d.ts +15 -0
- package/dist/src/ui/auth/useAuth.js +73 -0
- package/dist/src/ui/auth/useAuth.js.map +1 -0
- package/dist/src/ui/commands/chatCommand.d.ts +2 -0
- package/dist/src/ui/commands/chatCommand.js +82 -3
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/corgiCommand.js +1 -0
- package/dist/src/ui/commands/corgiCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +86 -16
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +2 -2
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +1 -1
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +5 -1
- package/dist/src/ui/commands/types.js +0 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/AboutBox.js +2 -2
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/AnsiOutput.d.ts +13 -0
- package/dist/src/ui/components/AnsiOutput.js +12 -0
- package/dist/src/ui/components/AnsiOutput.js.map +1 -0
- package/dist/src/ui/components/AnsiOutput.test.d.ts +6 -0
- package/dist/src/ui/components/AnsiOutput.test.js +97 -0
- package/dist/src/ui/components/AnsiOutput.test.js.map +1 -0
- package/dist/src/ui/components/AppHeader.d.ts +10 -0
- package/dist/src/ui/components/AppHeader.js +22 -0
- package/dist/src/ui/components/AppHeader.js.map +1 -0
- package/dist/src/ui/components/AsciiArt.d.ts +3 -3
- package/dist/src/ui/components/AsciiArt.js +3 -3
- package/dist/src/ui/components/AutoAcceptIndicator.js +4 -4
- package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/components/Composer.d.ts +6 -0
- package/dist/src/ui/components/Composer.js +74 -0
- package/dist/src/ui/components/Composer.js.map +1 -0
- package/dist/src/ui/components/Composer.test.d.ts +6 -0
- package/dist/src/ui/components/Composer.test.js +340 -0
- package/dist/src/ui/components/Composer.test.js.map +1 -0
- package/dist/src/ui/components/ConfigInitDisplay.d.ts +6 -0
- package/dist/src/ui/components/ConfigInitDisplay.js +38 -0
- package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -0
- package/dist/src/ui/components/ConsoleSummaryDisplay.js +2 -2
- package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextSummaryDisplay.js +3 -3
- package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.js +2 -2
- package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.js +2 -2
- package/dist/src/ui/components/DebugProfiler.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.js +7 -7
- package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
- package/dist/src/ui/components/DialogManager.d.ts +6 -0
- package/dist/src/ui/components/DialogManager.js +85 -0
- package/dist/src/ui/components/DialogManager.js.map +1 -0
- package/dist/src/ui/components/EditorSettingsDialog.js +5 -5
- package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.js +16 -8
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +18 -8
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Footer.d.ts +1 -2
- package/dist/src/ui/components/Footer.js +6 -2
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +5 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.js +7 -2
- package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
- package/dist/src/ui/components/Header.js +2 -2
- package/dist/src/ui/components/Header.js.map +1 -1
- package/dist/src/ui/components/Help.d.ts +1 -1
- package/dist/src/ui/components/Help.js +9 -6
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/Help.test.d.ts +6 -0
- package/dist/src/ui/components/Help.test.js +57 -0
- package/dist/src/ui/components/Help.test.js.map +1 -0
- package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -2
- package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.d.ts +3 -0
- package/dist/src/ui/components/InputPrompt.js +122 -22
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +2 -2
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/LoopDetectionConfirmation.d.ts +13 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.js +35 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +6 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js +25 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -0
- package/dist/src/ui/components/MainContent.d.ts +6 -0
- package/dist/src/ui/components/MainContent.js +23 -0
- package/dist/src/ui/components/MainContent.js.map +1 -0
- package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
- package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.js +7 -7
- package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/Notifications.d.ts +6 -0
- package/dist/src/ui/components/Notifications.js +23 -0
- package/dist/src/ui/components/Notifications.js.map +1 -0
- package/dist/src/ui/components/PrepareLabel.d.ts +5 -5
- package/dist/src/ui/components/PrepareLabel.js +67 -11
- package/dist/src/ui/components/PrepareLabel.js.map +1 -1
- package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
- package/dist/src/ui/components/PrepareLabel.test.js +71 -0
- package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
- package/dist/src/ui/components/ProQuotaDialog.d.ts +2 -2
- package/dist/src/ui/components/ProQuotaDialog.js +3 -3
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.test.js +3 -3
- package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
- package/dist/src/ui/components/QuittingDisplay.d.ts +6 -0
- package/dist/src/ui/components/QuittingDisplay.js +20 -0
- package/dist/src/ui/components/QuittingDisplay.js.map +1 -0
- package/dist/src/ui/components/RatingWidget.d.ts +14 -0
- package/dist/src/ui/components/RatingWidget.js +56 -0
- package/dist/src/ui/components/RatingWidget.js.map +1 -0
- package/dist/src/ui/components/SessionSummaryDisplay.d.ts +4 -0
- package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
- package/dist/src/ui/components/SettingsDialog.js +93 -22
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +435 -79
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.js +2 -2
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/ShellInputPrompt.d.ts +11 -0
- package/dist/src/ui/components/ShellInputPrompt.js +36 -0
- package/dist/src/ui/components/ShellInputPrompt.js.map +1 -0
- package/dist/src/ui/components/ShellModeIndicator.js +2 -2
- package/dist/src/ui/components/ShellModeIndicator.js.map +1 -1
- package/dist/src/ui/components/ShowMoreLines.js +2 -2
- package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.d.ts +4 -0
- package/dist/src/ui/components/StatsDisplay.js +10 -7
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +7 -2
- package/dist/src/ui/components/SuggestionsDisplay.js +17 -17
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.js +12 -29
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ThemeDialog.test.js +75 -0
- package/dist/src/ui/components/ThemeDialog.test.js.map +1 -0
- package/dist/src/ui/components/Tips.js +2 -2
- package/dist/src/ui/components/Tips.js.map +1 -1
- package/dist/src/ui/components/ToolStatsDisplay.js +4 -4
- package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/UpdateNotification.js +2 -2
- package/dist/src/ui/components/UpdateNotification.js.map +1 -1
- package/dist/src/ui/components/WorkspaceMigrationDialog.js +4 -4
- package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.d.ts +1 -2
- package/dist/src/ui/components/messages/CompressionMessage.js +37 -8
- package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/CompressionMessage.test.js +160 -0
- package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/DiffRenderer.d.ts +2 -1
- package/dist/src/ui/components/messages/DiffRenderer.js +14 -22
- package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
- package/dist/src/ui/components/messages/ErrorMessage.js +2 -2
- package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiMessage.js +2 -2
- package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
- package/dist/src/ui/components/messages/InfoMessage.js +2 -2
- package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +31 -19
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -2
- package/dist/src/ui/components/messages/ToolGroupMessage.js +17 -9
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +17 -15
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.d.ts +4 -0
- package/dist/src/ui/components/messages/ToolMessage.js +24 -10
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +33 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/UserMessage.js +3 -3
- package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
- package/dist/src/ui/components/messages/UserShellMessage.js +2 -2
- package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
- package/dist/src/ui/components/shared/EnumSelector.d.ts +18 -0
- package/dist/src/ui/components/shared/EnumSelector.js +44 -0
- package/dist/src/ui/components/shared/EnumSelector.js.map +1 -0
- package/dist/src/ui/components/shared/EnumSelector.test.d.ts +6 -0
- package/dist/src/ui/components/shared/EnumSelector.test.js +70 -0
- package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -0
- package/dist/src/ui/components/shared/MaxSizedBox.js +2 -2
- package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.js +12 -12
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/ScopeSelector.d.ts +19 -0
- package/dist/src/ui/components/shared/ScopeSelector.js +11 -0
- package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -0
- package/dist/src/ui/components/shared/text-buffer.d.ts +19 -2
- package/dist/src/ui/components/shared/text-buffer.js +191 -133
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
- package/dist/src/ui/components/views/ExtensionsList.js +47 -0
- package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
- package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js +97 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
- package/dist/src/ui/constants.d.ts +1 -0
- package/dist/src/ui/constants.js +1 -0
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/AppContext.d.ts +11 -0
- package/dist/src/ui/contexts/AppContext.js +15 -0
- package/dist/src/ui/contexts/AppContext.js.map +1 -0
- package/dist/src/ui/contexts/ConfigContext.d.ts +9 -0
- package/dist/src/ui/contexts/ConfigContext.js +16 -0
- package/dist/src/ui/contexts/ConfigContext.js.map +1 -0
- package/dist/src/ui/contexts/KeypressContext.d.ts +3 -0
- package/dist/src/ui/contexts/KeypressContext.js +51 -2
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.test.js +173 -1
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +36 -0
- package/dist/src/ui/contexts/UIActionsContext.js +20 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -0
- package/dist/src/ui/contexts/UIStateContext.d.ts +103 -0
- package/dist/src/ui/contexts/UIStateContext.js +15 -0
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.js +7 -5
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/keyToAnsi.d.ts +15 -0
- package/dist/src/ui/hooks/keyToAnsi.js +67 -0
- package/dist/src/ui/hooks/keyToAnsi.js.map +1 -0
- package/dist/src/ui/hooks/shellCommandProcessor.d.ts +2 -1
- package/dist/src/ui/hooks/shellCommandProcessor.js +60 -15
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.test.js +196 -17
- package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +16 -2
- package/dist/src/ui/hooks/slashCommandProcessor.js +28 -70
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +3 -2
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js +9 -5
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +69 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useExtensionUpdates.d.ts +12 -0
- package/dist/src/ui/hooks/useExtensionUpdates.js +64 -0
- package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +6 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js +162 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
- package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -1
- package/dist/src/ui/hooks/useFolderTrust.js +12 -13
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +11 -1
- package/dist/src/ui/hooks/useGeminiStream.js +124 -59
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.js +15 -18
- package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.test.js +49 -53
- package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
- package/dist/src/ui/hooks/useIdeTrustListener.js +2 -2
- package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -1
- package/dist/src/ui/hooks/useMessageQueue.d.ts +2 -1
- package/dist/src/ui/hooks/useMessageQueue.js +5 -3
- package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
- package/dist/src/ui/hooks/useMessageQueue.test.js +9 -0
- package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +21 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.js +122 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.test.d.ts +6 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js +267 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -0
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
- package/dist/src/ui/hooks/useReactToolScheduler.js +23 -17
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +1 -1
- package/dist/src/ui/hooks/useReverseSearchCompletion.js +67 -20
- package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.js +16 -3
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +169 -270
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useThemeCommand.d.ts +1 -1
- package/dist/src/ui/hooks/useThemeCommand.js +3 -14
- package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +12 -5
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +8 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +8 -8
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +2 -2
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -1
- package/dist/src/ui/privacy/GeminiPrivacyNotice.js +2 -2
- package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -1
- package/dist/src/ui/state/extensions.d.ts +15 -0
- package/dist/src/ui/state/extensions.js +17 -0
- package/dist/src/ui/state/extensions.js.map +1 -0
- package/dist/src/ui/themes/ayu.js +1 -1
- package/dist/src/ui/themes/dracula.js +2 -2
- package/dist/src/ui/themes/github-dark.js +1 -1
- package/dist/src/ui/themes/theme.js +17 -17
- package/dist/src/ui/themes/theme.js.map +1 -1
- package/dist/src/ui/types.d.ts +29 -3
- package/dist/src/ui/types.js +11 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/CodeColorizer.js +3 -2
- package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +7 -7
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.js +10 -10
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +6 -2
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.js +4 -4
- package/dist/src/ui/utils/TableRenderer.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.js +5 -6
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
- package/dist/src/ui/utils/displayUtils.js +4 -4
- package/dist/src/ui/utils/displayUtils.js.map +1 -1
- package/dist/src/ui/utils/highlight.d.ts +1 -1
- package/dist/src/ui/utils/highlight.js +15 -6
- package/dist/src/ui/utils/highlight.js.map +1 -1
- package/dist/src/ui/utils/highlight.test.js +56 -29
- package/dist/src/ui/utils/highlight.test.js.map +1 -1
- package/dist/src/ui/utils/kittyProtocolDetector.js +39 -29
- package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
- package/dist/src/ui/utils/textUtils.d.ts +9 -0
- package/dist/src/ui/utils/textUtils.js +52 -3
- package/dist/src/ui/utils/textUtils.js.map +1 -1
- package/dist/src/utils/commands.d.ts +20 -0
- package/dist/src/utils/commands.js +53 -0
- package/dist/src/utils/commands.js.map +1 -0
- package/dist/src/utils/commands.test.d.ts +6 -0
- package/dist/src/utils/commands.test.js +115 -0
- package/dist/src/utils/commands.test.js.map +1 -0
- package/dist/src/utils/commentJson.d.ts +9 -0
- package/dist/src/utils/commentJson.js +48 -0
- package/dist/src/utils/commentJson.js.map +1 -0
- package/dist/src/utils/commentJson.test.d.ts +6 -0
- package/dist/src/utils/commentJson.test.js +146 -0
- package/dist/src/utils/commentJson.test.js.map +1 -0
- package/dist/src/utils/errors.d.ts +21 -0
- package/dist/src/utils/errors.js +93 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.d.ts +6 -0
- package/dist/src/utils/errors.test.js +303 -0
- package/dist/src/utils/errors.test.js.map +1 -0
- package/dist/src/utils/processUtils.d.ts +13 -0
- package/dist/src/utils/processUtils.js +18 -0
- package/dist/src/utils/processUtils.js.map +1 -0
- package/dist/src/utils/processUtils.test.d.ts +6 -0
- package/dist/src/utils/processUtils.test.js +20 -0
- package/dist/src/utils/processUtils.test.js.map +1 -0
- package/dist/src/utils/sandbox.d.ts +1 -1
- package/dist/src/utils/sandbox.js +19 -8
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/settingsUtils.d.ts +16 -6
- package/dist/src/utils/settingsUtils.js +35 -25
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/settingsUtils.test.js +455 -158
- package/dist/src/utils/settingsUtils.test.js.map +1 -1
- package/dist/src/zed-integration/schema.d.ts +596 -596
- package/dist/src/zed-integration/zedIntegration.js +10 -7
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -9
- package/dist/src/ui/components/AuthDialog.d.ts +0 -16
- package/dist/src/ui/components/AuthDialog.js +0 -62
- package/dist/src/ui/components/AuthDialog.js.map +0 -1
- package/dist/src/ui/components/AuthDialog.test.js +0 -175
- package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
- package/dist/src/ui/components/AuthInProgress.js.map +0 -1
- package/dist/src/ui/hooks/useAuthCommand.d.ts +0 -15
- package/dist/src/ui/hooks/useAuthCommand.js +0 -68
- package/dist/src/ui/hooks/useAuthCommand.js.map +0 -1
- /package/dist/src/{ui/components/AuthDialog.test.d.ts → config/extensions/extensionEnablement.test.d.ts} +0 -0
- /package/dist/src/ui/{components → auth}/AuthInProgress.d.ts +0 -0
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Box, Text } from 'ink';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
.
|
|
7
|
-
|
|
3
|
+
import { theme } from '../semantic-colors.js';
|
|
4
|
+
import { CommandKind } from '../commands/types.js';
|
|
5
|
+
export const Help = ({ commands }) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, borderColor: theme.border.default, borderStyle: "round", padding: 1, children: [_jsx(Text, { bold: true, color: theme.text.primary, children: "Basics:" }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Add context" }), ": Use", ' ', _jsx(Text, { bold: true, color: theme.text.accent, children: "@" }), ' ', "to specify files for context (e.g.,", ' ', _jsx(Text, { bold: true, color: theme.text.accent, children: "@src/myFile.ts" }), ") to target specific files or folders."] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Shell mode" }), ": Execute shell commands via", ' ', _jsx(Text, { bold: true, color: theme.text.accent, children: "!" }), ' ', "(e.g.,", ' ', _jsx(Text, { bold: true, color: theme.text.accent, children: "!npm run start" }), ") or use natural language (e.g.", ' ', _jsx(Text, { bold: true, color: theme.text.accent, children: "start server" }), ")."] }), _jsx(Box, { height: 1 }), _jsx(Text, { bold: true, color: theme.text.primary, children: "Commands:" }), commands
|
|
6
|
+
.filter((command) => command.description && !command.hidden)
|
|
7
|
+
.map((command) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: theme.text.primary, children: [_jsxs(Text, { bold: true, color: theme.text.accent, children: [' ', "/", command.name] }), command.kind === CommandKind.MCP_PROMPT && (_jsx(Text, { color: theme.text.secondary, children: " [MCP]" })), command.description && ' - ' + command.description] }), command.subCommands &&
|
|
8
|
+
command.subCommands
|
|
9
|
+
.filter((subCommand) => !subCommand.hidden)
|
|
10
|
+
.map((subCommand) => (_jsxs(Text, { color: theme.text.primary, children: [_jsxs(Text, { bold: true, color: theme.text.accent, children: [' ', subCommand.name] }), subCommand.description && ' - ' + subCommand.description] }, subCommand.name)))] }, command.name))), _jsxs(Text, { color: theme.text.primary, children: [_jsxs(Text, { bold: true, color: theme.text.accent, children: [' ', "!", ' '] }), "- shell command"] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { color: theme.text.secondary, children: "[MCP]" }), " - Model Context Protocol command (from external servers)"] }), _jsx(Box, { height: 1 }), _jsx(Text, { bold: true, color: theme.text.primary, children: "Keyboard Shortcuts:" }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Alt+Left/Right" }), ' ', "- Jump through words in the input"] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Ctrl+C" }), ' ', "- Quit application"] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: process.platform === 'win32' ? 'Ctrl+Enter' : 'Ctrl+J' }), ' ', process.platform === 'linux'
|
|
8
11
|
? '- New line (Alt+Enter works for certain linux distros)'
|
|
9
|
-
: '- New line'] }), _jsxs(Text, { color:
|
|
12
|
+
: '- New line'] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Ctrl+L" }), ' ', "- Clear the screen"] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: process.platform === 'darwin' ? 'Ctrl+X / Meta+Enter' : 'Ctrl+X' }), ' ', "- Open input in external editor"] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Ctrl+Y" }), ' ', "- Toggle YOLO mode"] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Enter" }), ' ', "- Send message"] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Esc" }), ' ', "- Cancel operation / Clear input (double press)"] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Shift+Tab" }), ' ', "- Toggle auto-accepting edits"] }), _jsxs(Text, { color: theme.text.primary, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Up/Down" }), ' ', "- Cycle through your prompt history"] }), _jsx(Box, { height: 1 }), _jsxs(Text, { color: theme.text.primary, children: ["For a full list of shortcuts, see", ' ', _jsx(Text, { bold: true, color: theme.text.accent, children: "docs/keyboard-shortcuts.md" })] })] }));
|
|
10
13
|
//# sourceMappingURL=Help.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Help.js","sourceRoot":"","sources":["../../../../src/ui/components/Help.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Help.js","sourceRoot":"","sources":["../../../../src/ui/components/Help.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2025 Google LLC
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
+
*/
|
|
7
|
+
/** @vitest-environment jsdom */
|
|
8
|
+
import { render } from 'ink-testing-library';
|
|
9
|
+
import { describe, it, expect } from 'vitest';
|
|
10
|
+
import { Help } from './Help.js';
|
|
11
|
+
import { CommandKind } from '../commands/types.js';
|
|
12
|
+
const mockCommands = [
|
|
13
|
+
{
|
|
14
|
+
name: 'test',
|
|
15
|
+
description: 'A test command',
|
|
16
|
+
kind: CommandKind.BUILT_IN,
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'hidden',
|
|
20
|
+
description: 'A hidden command',
|
|
21
|
+
hidden: true,
|
|
22
|
+
kind: CommandKind.BUILT_IN,
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'parent',
|
|
26
|
+
description: 'A parent command',
|
|
27
|
+
kind: CommandKind.BUILT_IN,
|
|
28
|
+
subCommands: [
|
|
29
|
+
{
|
|
30
|
+
name: 'visible-child',
|
|
31
|
+
description: 'A visible child command',
|
|
32
|
+
kind: CommandKind.BUILT_IN,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'hidden-child',
|
|
36
|
+
description: 'A hidden child command',
|
|
37
|
+
hidden: true,
|
|
38
|
+
kind: CommandKind.BUILT_IN,
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
describe('Help Component', () => {
|
|
44
|
+
it('should not render hidden commands', () => {
|
|
45
|
+
const { lastFrame } = render(_jsx(Help, { commands: mockCommands }));
|
|
46
|
+
const output = lastFrame();
|
|
47
|
+
expect(output).toContain('/test');
|
|
48
|
+
expect(output).not.toContain('/hidden');
|
|
49
|
+
});
|
|
50
|
+
it('should not render hidden subcommands', () => {
|
|
51
|
+
const { lastFrame } = render(_jsx(Help, { commands: mockCommands }));
|
|
52
|
+
const output = lastFrame();
|
|
53
|
+
expect(output).toContain('visible-child');
|
|
54
|
+
expect(output).not.toContain('hidden-child');
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=Help.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Help.test.js","sourceRoot":"","sources":["../../../../src/ui/components/Help.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,gCAAgC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,YAAY,GAA4B;IAC5C;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,gBAAgB;QAC7B,IAAI,EAAE,WAAW,CAAC,QAAQ;KAC3B;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,WAAW,CAAC,QAAQ;KAC3B;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,WAAW,CAAC,QAAQ;QAC1B,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,eAAe;gBACrB,WAAW,EAAE,yBAAyB;gBACtC,IAAI,EAAE,WAAW,CAAC,QAAQ;aAC3B;YACD;gBACE,IAAI,EAAE,cAAc;gBACpB,WAAW,EAAE,wBAAwB;gBACrC,MAAM,EAAE,IAAI;gBACZ,IAAI,EAAE,WAAW,CAAC,QAAQ;aAC3B;SACF;KACF;CACF,CAAC;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,IAAI,IAAC,QAAQ,EAAE,YAAY,GAAI,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,KAAC,IAAI,IAAC,QAAQ,EAAE,YAAY,GAAI,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type React from 'react';
|
|
7
7
|
import type { HistoryItem } from '../types.js';
|
|
8
|
-
import type { Config } from '@google/gemini-cli-core';
|
|
9
8
|
import type { SlashCommand } from '../commands/types.js';
|
|
10
9
|
interface HistoryItemDisplayProps {
|
|
11
10
|
item: HistoryItem;
|
|
12
11
|
availableTerminalHeight?: number;
|
|
13
12
|
terminalWidth: number;
|
|
14
13
|
isPending: boolean;
|
|
15
|
-
config: Config;
|
|
16
14
|
isFocused?: boolean;
|
|
17
15
|
commands?: readonly SlashCommand[];
|
|
16
|
+
activeShellPtyId?: number | null;
|
|
17
|
+
shellFocused?: boolean;
|
|
18
18
|
}
|
|
19
19
|
export declare const HistoryItemDisplay: React.FC<HistoryItemDisplayProps>;
|
|
20
20
|
export {};
|
|
@@ -14,5 +14,6 @@ import { ModelStatsDisplay } from './ModelStatsDisplay.js';
|
|
|
14
14
|
import { ToolStatsDisplay } from './ToolStatsDisplay.js';
|
|
15
15
|
import { SessionSummaryDisplay } from './SessionSummaryDisplay.js';
|
|
16
16
|
import { Help } from './Help.js';
|
|
17
|
-
|
|
17
|
+
import { ExtensionsList } from './views/ExtensionsList.js';
|
|
18
|
+
export const HistoryItemDisplay = ({ item, availableTerminalHeight, terminalWidth, isPending, commands, isFocused = true, activeShellPtyId, shellFocused, }) => (_jsxs(Box, { flexDirection: "column", children: [item.type === 'user' && _jsx(UserMessage, { text: item.text }), item.type === 'user_shell' && _jsx(UserShellMessage, { text: item.text }), item.type === 'gemini' && (_jsx(GeminiMessage, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'gemini_content' && (_jsx(GeminiMessageContent, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'info' && _jsx(InfoMessage, { text: item.text }), item.type === 'error' && _jsx(ErrorMessage, { text: item.text }), item.type === 'about' && (_jsx(AboutBox, { cliVersion: item.cliVersion, osVersion: item.osVersion, sandboxEnv: item.sandboxEnv, modelVersion: item.modelVersion, selectedAuthType: item.selectedAuthType, gcpProject: item.gcpProject, ideClient: item.ideClient })), item.type === 'help' && commands && _jsx(Help, { commands: commands }), item.type === 'stats' && _jsx(StatsDisplay, { duration: item.duration }), item.type === 'model_stats' && _jsx(ModelStatsDisplay, {}), item.type === 'tool_stats' && _jsx(ToolStatsDisplay, {}), item.type === 'quit' && _jsx(SessionSummaryDisplay, { duration: item.duration }), item.type === 'tool_group' && (_jsx(ToolGroupMessage, { toolCalls: item.tools, groupId: item.id, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth, isFocused: isFocused, activeShellPtyId: activeShellPtyId, shellFocused: shellFocused })), item.type === 'compression' && (_jsx(CompressionMessage, { compression: item.compression })), item.type === 'extensions_list' && _jsx(ExtensionsList, {})] }, item.id));
|
|
18
19
|
//# sourceMappingURL=HistoryItemDisplay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistoryItemDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"HistoryItemDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import type { TextBuffer } from './shared/text-buffer.js';
|
|
|
8
8
|
import type { Key } from '../hooks/useKeypress.js';
|
|
9
9
|
import type { CommandContext, SlashCommand } from '../commands/types.js';
|
|
10
10
|
import type { Config } from '@google/gemini-cli-core';
|
|
11
|
+
import { ApprovalMode } from '@google/gemini-cli-core';
|
|
11
12
|
export interface InputPromptProps {
|
|
12
13
|
buffer: TextBuffer;
|
|
13
14
|
onSubmit: (value: string) => void;
|
|
@@ -22,7 +23,9 @@ export interface InputPromptProps {
|
|
|
22
23
|
suggestionsWidth: number;
|
|
23
24
|
shellModeActive: boolean;
|
|
24
25
|
setShellModeActive: (value: boolean) => void;
|
|
26
|
+
approvalMode: ApprovalMode;
|
|
25
27
|
onEscapePromptChange?: (showPrompt: boolean) => void;
|
|
26
28
|
vimHandleInput?: (key: Key) => boolean;
|
|
29
|
+
isShellFocused?: boolean;
|
|
27
30
|
}
|
|
28
31
|
export declare const InputPrompt: React.FC<InputPromptProps>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useState, useRef } from 'react';
|
|
3
3
|
import { Box, Text } from 'ink';
|
|
4
|
+
import { SuggestionsDisplay, MAX_WIDTH } from './SuggestionsDisplay.js';
|
|
4
5
|
import { theme } from '../semantic-colors.js';
|
|
5
|
-
import { SuggestionsDisplay } from './SuggestionsDisplay.js';
|
|
6
6
|
import { useInputHistory } from '../hooks/useInputHistory.js';
|
|
7
7
|
import { logicalPosToOffset } from './shared/text-buffer.js';
|
|
8
8
|
import { cpSlice, cpLen, toCodePoints } from '../utils/textUtils.js';
|
|
@@ -13,15 +13,18 @@ import { useReverseSearchCompletion } from '../hooks/useReverseSearchCompletion.
|
|
|
13
13
|
import { useCommandCompletion } from '../hooks/useCommandCompletion.js';
|
|
14
14
|
import { useKeypress } from '../hooks/useKeypress.js';
|
|
15
15
|
import { keyMatchers, Command } from '../keyMatchers.js';
|
|
16
|
+
import { ApprovalMode } from '@google/gemini-cli-core';
|
|
16
17
|
import { parseInputForHighlighting } from '../utils/highlight.js';
|
|
17
18
|
import { clipboardHasImage, saveClipboardImage, cleanupOldClipboardImages, } from '../utils/clipboardUtils.js';
|
|
18
19
|
import * as path from 'node:path';
|
|
19
20
|
import { SCREEN_READER_USER_PREFIX } from '../textConstants.js';
|
|
20
|
-
export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, config, slashCommands, commandContext, placeholder = ' Type your message or @path/to/file', focus = true, inputWidth, suggestionsWidth, shellModeActive, setShellModeActive, onEscapePromptChange, vimHandleInput, }) => {
|
|
21
|
+
export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, config, slashCommands, commandContext, placeholder = ' Type your message or @path/to/file', focus = true, inputWidth, suggestionsWidth, shellModeActive, setShellModeActive, approvalMode, onEscapePromptChange, vimHandleInput, isShellFocused, }) => {
|
|
21
22
|
const [justNavigatedHistory, setJustNavigatedHistory] = useState(false);
|
|
22
23
|
const [escPressCount, setEscPressCount] = useState(0);
|
|
23
24
|
const [showEscapePrompt, setShowEscapePrompt] = useState(false);
|
|
24
25
|
const escapeTimerRef = useRef(null);
|
|
26
|
+
const [recentPasteTime, setRecentPasteTime] = useState(null);
|
|
27
|
+
const pasteTimeoutRef = useRef(null);
|
|
25
28
|
const [dirs, setDirs] = useState(config.getWorkspaceContext().getDirectories());
|
|
26
29
|
const dirsChanged = config.getWorkspaceContext().getDirectories();
|
|
27
30
|
useEffect(() => {
|
|
@@ -30,16 +33,20 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
30
33
|
}
|
|
31
34
|
}, [dirs.length, dirsChanged]);
|
|
32
35
|
const [reverseSearchActive, setReverseSearchActive] = useState(false);
|
|
36
|
+
const [commandSearchActive, setCommandSearchActive] = useState(false);
|
|
33
37
|
const [textBeforeReverseSearch, setTextBeforeReverseSearch] = useState('');
|
|
34
38
|
const [cursorPosition, setCursorPosition] = useState([
|
|
35
39
|
0, 0,
|
|
36
40
|
]);
|
|
37
|
-
const
|
|
38
|
-
const
|
|
41
|
+
const [expandedSuggestionIndex, setExpandedSuggestionIndex] = useState(-1);
|
|
42
|
+
const shellHistory = useShellHistory(config.getProjectRoot());
|
|
43
|
+
const shellHistoryData = shellHistory.history;
|
|
39
44
|
const completion = useCommandCompletion(buffer, dirs, config.getTargetDir(), slashCommands, commandContext, reverseSearchActive, config);
|
|
40
|
-
const reverseSearchCompletion = useReverseSearchCompletion(buffer,
|
|
45
|
+
const reverseSearchCompletion = useReverseSearchCompletion(buffer, shellHistoryData, reverseSearchActive);
|
|
46
|
+
const commandSearchCompletion = useReverseSearchCompletion(buffer, userMessages, commandSearchActive);
|
|
41
47
|
const resetCompletionState = completion.resetCompletionState;
|
|
42
48
|
const resetReverseSearchCompletionState = reverseSearchCompletion.resetCompletionState;
|
|
49
|
+
const resetCommandSearchCompletionState = commandSearchCompletion.resetCompletionState;
|
|
43
50
|
const resetEscapeState = useCallback(() => {
|
|
44
51
|
if (escapeTimerRef.current) {
|
|
45
52
|
clearTimeout(escapeTimerRef.current);
|
|
@@ -59,6 +66,9 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
59
66
|
if (escapeTimerRef.current) {
|
|
60
67
|
clearTimeout(escapeTimerRef.current);
|
|
61
68
|
}
|
|
69
|
+
if (pasteTimeoutRef.current) {
|
|
70
|
+
clearTimeout(pasteTimeoutRef.current);
|
|
71
|
+
}
|
|
62
72
|
}, []);
|
|
63
73
|
const handleSubmitAndClear = useCallback((submittedValue) => {
|
|
64
74
|
if (shellModeActive) {
|
|
@@ -95,6 +105,8 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
95
105
|
if (justNavigatedHistory) {
|
|
96
106
|
resetCompletionState();
|
|
97
107
|
resetReverseSearchCompletionState();
|
|
108
|
+
resetCommandSearchCompletionState();
|
|
109
|
+
setExpandedSuggestionIndex(-1);
|
|
98
110
|
setJustNavigatedHistory(false);
|
|
99
111
|
}
|
|
100
112
|
}, [
|
|
@@ -103,6 +115,7 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
103
115
|
resetCompletionState,
|
|
104
116
|
setJustNavigatedHistory,
|
|
105
117
|
resetReverseSearchCompletionState,
|
|
118
|
+
resetCommandSearchCompletionState,
|
|
106
119
|
]);
|
|
107
120
|
// Handle clipboard image pasting with Ctrl+V
|
|
108
121
|
const handleClipboardImage = useCallback(async () => {
|
|
@@ -151,6 +164,17 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
151
164
|
return;
|
|
152
165
|
}
|
|
153
166
|
if (key.paste) {
|
|
167
|
+
// Record paste time to prevent accidental auto-submission
|
|
168
|
+
setRecentPasteTime(Date.now());
|
|
169
|
+
// Clear any existing paste timeout
|
|
170
|
+
if (pasteTimeoutRef.current) {
|
|
171
|
+
clearTimeout(pasteTimeoutRef.current);
|
|
172
|
+
}
|
|
173
|
+
// Clear the paste protection after a safe delay
|
|
174
|
+
pasteTimeoutRef.current = setTimeout(() => {
|
|
175
|
+
setRecentPasteTime(null);
|
|
176
|
+
pasteTimeoutRef.current = null;
|
|
177
|
+
}, 500);
|
|
154
178
|
// Ensure we never accidentally interpret paste as regular input.
|
|
155
179
|
buffer.handleInput(key);
|
|
156
180
|
return;
|
|
@@ -172,12 +196,20 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
172
196
|
return;
|
|
173
197
|
}
|
|
174
198
|
if (keyMatchers[Command.ESCAPE](key)) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
199
|
+
const cancelSearch = (setActive, resetCompletion) => {
|
|
200
|
+
setActive(false);
|
|
201
|
+
resetCompletion();
|
|
178
202
|
buffer.setText(textBeforeReverseSearch);
|
|
179
203
|
const offset = logicalPosToOffset(buffer.lines, cursorPosition[0], cursorPosition[1]);
|
|
180
204
|
buffer.moveToOffset(offset);
|
|
205
|
+
setExpandedSuggestionIndex(-1);
|
|
206
|
+
};
|
|
207
|
+
if (reverseSearchActive) {
|
|
208
|
+
cancelSearch(setReverseSearchActive, reverseSearchCompletion.resetCompletionState);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
if (commandSearchActive) {
|
|
212
|
+
cancelSearch(setCommandSearchActive, commandSearchCompletion.resetCompletionState);
|
|
181
213
|
return;
|
|
182
214
|
}
|
|
183
215
|
if (shellModeActive) {
|
|
@@ -187,6 +219,7 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
187
219
|
}
|
|
188
220
|
if (completion.showSuggestions) {
|
|
189
221
|
completion.resetCompletionState();
|
|
222
|
+
setExpandedSuggestionIndex(-1);
|
|
190
223
|
resetEscapeState();
|
|
191
224
|
return;
|
|
192
225
|
}
|
|
@@ -222,8 +255,16 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
222
255
|
onClearScreen();
|
|
223
256
|
return;
|
|
224
257
|
}
|
|
225
|
-
if (reverseSearchActive) {
|
|
226
|
-
const
|
|
258
|
+
if (reverseSearchActive || commandSearchActive) {
|
|
259
|
+
const isCommandSearch = commandSearchActive;
|
|
260
|
+
const sc = isCommandSearch
|
|
261
|
+
? commandSearchCompletion
|
|
262
|
+
: reverseSearchCompletion;
|
|
263
|
+
const { activeSuggestionIndex, navigateUp, navigateDown, showSuggestions, suggestions, } = sc;
|
|
264
|
+
const setActive = isCommandSearch
|
|
265
|
+
? setCommandSearchActive
|
|
266
|
+
: setReverseSearchActive;
|
|
267
|
+
const resetState = sc.resetCompletionState;
|
|
227
268
|
if (showSuggestions) {
|
|
228
269
|
if (keyMatchers[Command.NAVIGATION_UP](key)) {
|
|
229
270
|
navigateUp();
|
|
@@ -233,10 +274,22 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
233
274
|
navigateDown();
|
|
234
275
|
return;
|
|
235
276
|
}
|
|
277
|
+
if (keyMatchers[Command.COLLAPSE_SUGGESTION](key)) {
|
|
278
|
+
if (suggestions[activeSuggestionIndex].value.length >= MAX_WIDTH) {
|
|
279
|
+
setExpandedSuggestionIndex(-1);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
if (keyMatchers[Command.EXPAND_SUGGESTION](key)) {
|
|
284
|
+
if (suggestions[activeSuggestionIndex].value.length >= MAX_WIDTH) {
|
|
285
|
+
setExpandedSuggestionIndex(activeSuggestionIndex);
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
236
289
|
if (keyMatchers[Command.ACCEPT_SUGGESTION_REVERSE_SEARCH](key)) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
290
|
+
sc.handleAutocomplete(activeSuggestionIndex);
|
|
291
|
+
resetState();
|
|
292
|
+
setActive(false);
|
|
240
293
|
return;
|
|
241
294
|
}
|
|
242
295
|
}
|
|
@@ -245,8 +298,8 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
245
298
|
? suggestions[activeSuggestionIndex].value
|
|
246
299
|
: buffer.text;
|
|
247
300
|
handleSubmitAndClear(textToSubmit);
|
|
248
|
-
|
|
249
|
-
|
|
301
|
+
resetState();
|
|
302
|
+
setActive(false);
|
|
250
303
|
return;
|
|
251
304
|
}
|
|
252
305
|
// Prevent up/down from falling through to regular history navigation
|
|
@@ -264,10 +317,12 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
264
317
|
if (completion.suggestions.length > 1) {
|
|
265
318
|
if (keyMatchers[Command.COMPLETION_UP](key)) {
|
|
266
319
|
completion.navigateUp();
|
|
320
|
+
setExpandedSuggestionIndex(-1); // Reset expansion when navigating
|
|
267
321
|
return;
|
|
268
322
|
}
|
|
269
323
|
if (keyMatchers[Command.COMPLETION_DOWN](key)) {
|
|
270
324
|
completion.navigateDown();
|
|
325
|
+
setExpandedSuggestionIndex(-1); // Reset expansion when navigating
|
|
271
326
|
return;
|
|
272
327
|
}
|
|
273
328
|
}
|
|
@@ -278,6 +333,7 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
278
333
|
: completion.activeSuggestionIndex;
|
|
279
334
|
if (targetIndex < completion.suggestions.length) {
|
|
280
335
|
completion.handleAutocomplete(targetIndex);
|
|
336
|
+
setExpandedSuggestionIndex(-1); // Reset expansion after selection
|
|
281
337
|
}
|
|
282
338
|
}
|
|
283
339
|
return;
|
|
@@ -291,6 +347,12 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
291
347
|
return;
|
|
292
348
|
}
|
|
293
349
|
if (!shellModeActive) {
|
|
350
|
+
if (keyMatchers[Command.REVERSE_SEARCH](key)) {
|
|
351
|
+
setCommandSearchActive(true);
|
|
352
|
+
setTextBeforeReverseSearch(buffer.text);
|
|
353
|
+
setCursorPosition(buffer.cursor);
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
294
356
|
if (keyMatchers[Command.HISTORY_UP](key)) {
|
|
295
357
|
inputHistory.navigateUp();
|
|
296
358
|
return;
|
|
@@ -330,6 +392,11 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
330
392
|
}
|
|
331
393
|
if (keyMatchers[Command.SUBMIT](key)) {
|
|
332
394
|
if (buffer.text.trim()) {
|
|
395
|
+
// Check if a paste operation occurred recently to prevent accidental auto-submission
|
|
396
|
+
if (recentPasteTime !== null) {
|
|
397
|
+
// Paste occurred recently, ignore this submit to prevent auto-execution
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
333
400
|
const [row, col] = buffer.cursor;
|
|
334
401
|
const line = buffer.lines[row];
|
|
335
402
|
const charBefore = col > 0 ? cpSlice(line, col - 1, col) : '';
|
|
@@ -397,6 +464,7 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
397
464
|
!key.ctrl &&
|
|
398
465
|
!key.meta) {
|
|
399
466
|
completion.promptCompletion.clear();
|
|
467
|
+
setExpandedSuggestionIndex(-1);
|
|
400
468
|
}
|
|
401
469
|
}, [
|
|
402
470
|
focus,
|
|
@@ -418,9 +486,12 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
418
486
|
reverseSearchActive,
|
|
419
487
|
textBeforeReverseSearch,
|
|
420
488
|
cursorPosition,
|
|
489
|
+
recentPasteTime,
|
|
490
|
+
commandSearchActive,
|
|
491
|
+
commandSearchCompletion,
|
|
421
492
|
]);
|
|
422
493
|
useKeypress(handleInput, {
|
|
423
|
-
isActive:
|
|
494
|
+
isActive: !isShellFocused,
|
|
424
495
|
});
|
|
425
496
|
const linesToRender = buffer.viewportVisualLines;
|
|
426
497
|
const [cursorVisualRowAbsolute, cursorVisualColAbsolute] = buffer.visualCursor;
|
|
@@ -522,9 +593,34 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
522
593
|
inputWidth,
|
|
523
594
|
]);
|
|
524
595
|
const { inlineGhost, additionalLines } = getGhostTextLines();
|
|
525
|
-
|
|
596
|
+
const getActiveCompletion = () => {
|
|
597
|
+
if (commandSearchActive)
|
|
598
|
+
return commandSearchCompletion;
|
|
599
|
+
if (reverseSearchActive)
|
|
600
|
+
return reverseSearchCompletion;
|
|
601
|
+
return completion;
|
|
602
|
+
};
|
|
603
|
+
const activeCompletion = getActiveCompletion();
|
|
604
|
+
const shouldShowSuggestions = activeCompletion.showSuggestions;
|
|
605
|
+
const showAutoAcceptStyling = !shellModeActive && approvalMode === ApprovalMode.AUTO_EDIT;
|
|
606
|
+
const showYoloStyling = !shellModeActive && approvalMode === ApprovalMode.YOLO;
|
|
607
|
+
let statusColor;
|
|
608
|
+
let statusText = '';
|
|
609
|
+
if (shellModeActive) {
|
|
610
|
+
statusColor = theme.ui.symbol;
|
|
611
|
+
statusText = 'Shell mode';
|
|
612
|
+
}
|
|
613
|
+
else if (showYoloStyling) {
|
|
614
|
+
statusColor = theme.status.error;
|
|
615
|
+
statusText = 'YOLO mode';
|
|
616
|
+
}
|
|
617
|
+
else if (showAutoAcceptStyling) {
|
|
618
|
+
statusColor = theme.status.warning;
|
|
619
|
+
statusText = 'Accepting edits';
|
|
620
|
+
}
|
|
621
|
+
return (_jsxs(_Fragment, { children: [_jsxs(Box, { borderStyle: "round", borderColor: statusColor ?? (focus ? theme.border.focused : theme.border.default), paddingX: 1, children: [_jsxs(Text, { color: statusColor ?? theme.text.accent, "aria-label": statusText || undefined, children: [shellModeActive ? (reverseSearchActive ? (_jsxs(Text, { color: theme.text.link, "aria-label": SCREEN_READER_USER_PREFIX, children: ["(r:)", ' '] })) : ('!')) : commandSearchActive ? (_jsx(Text, { color: theme.text.accent, children: "(r:) " })) : showYoloStyling ? ('*') : ('>'), ' '] }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: buffer.text.length === 0 && placeholder ? (focus ? (_jsxs(Text, { children: [chalk.inverse(placeholder.slice(0, 1)), _jsx(Text, { color: theme.text.secondary, children: placeholder.slice(1) })] })) : (_jsx(Text, { color: theme.text.secondary, children: placeholder }))) : (linesToRender
|
|
526
622
|
.map((lineText, visualIdxInRenderedSet) => {
|
|
527
|
-
const tokens = parseInputForHighlighting(lineText);
|
|
623
|
+
const tokens = parseInputForHighlighting(lineText, visualIdxInRenderedSet);
|
|
528
624
|
const cursorVisualRow = cursorVisualRowAbsolute - scrollVisualRow;
|
|
529
625
|
const isOnCursorLine = focus && visualIdxInRenderedSet === cursorVisualRow;
|
|
530
626
|
const renderedLine = [];
|
|
@@ -548,25 +644,29 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
|
|
|
548
644
|
}
|
|
549
645
|
const color = token.type === 'command' || token.type === 'file'
|
|
550
646
|
? theme.text.accent
|
|
551
|
-
:
|
|
647
|
+
: theme.text.primary;
|
|
552
648
|
renderedLine.push(_jsx(Text, { color: color, children: display }, `token-${tokenIdx}`));
|
|
553
649
|
});
|
|
554
650
|
const currentLineGhost = isOnCursorLine ? inlineGhost : '';
|
|
555
651
|
if (isOnCursorLine &&
|
|
556
652
|
cursorVisualColAbsolute === cpLen(lineText)) {
|
|
557
653
|
if (!currentLineGhost) {
|
|
558
|
-
renderedLine.push(_jsx(Text, { children: chalk.inverse(' ') },
|
|
654
|
+
renderedLine.push(_jsx(Text, { children: chalk.inverse(' ') }, `cursor-end-${cursorVisualColAbsolute}`));
|
|
559
655
|
}
|
|
560
656
|
}
|
|
561
657
|
const showCursorBeforeGhost = focus &&
|
|
562
658
|
isOnCursorLine &&
|
|
563
659
|
cursorVisualColAbsolute === cpLen(lineText) &&
|
|
564
660
|
currentLineGhost;
|
|
565
|
-
return (_jsxs(Text, { children: [renderedLine, showCursorBeforeGhost && chalk.inverse(' '), currentLineGhost && (_jsx(Text, { color: theme.text.secondary, children: currentLineGhost }))] }, `line-${visualIdxInRenderedSet}`));
|
|
661
|
+
return (_jsx(Box, { height: 1, children: _jsxs(Text, { children: [renderedLine, showCursorBeforeGhost && chalk.inverse(' '), currentLineGhost && (_jsx(Text, { color: theme.text.secondary, children: currentLineGhost }))] }) }, `line-${visualIdxInRenderedSet}`));
|
|
566
662
|
})
|
|
567
663
|
.concat(additionalLines.map((ghostLine, index) => {
|
|
568
664
|
const padding = Math.max(0, inputWidth - stringWidth(ghostLine));
|
|
569
665
|
return (_jsxs(Text, { color: theme.text.secondary, children: [ghostLine, ' '.repeat(padding)] }, `ghost-line-${index}`));
|
|
570
|
-
}))) })] }),
|
|
666
|
+
}))) })] }), shouldShowSuggestions && (_jsx(Box, { paddingRight: 2, children: _jsx(SuggestionsDisplay, { suggestions: activeCompletion.suggestions, activeIndex: activeCompletion.activeSuggestionIndex, isLoading: activeCompletion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: activeCompletion.visibleStartIndex, userInput: buffer.text, mode: buffer.text.startsWith('/') &&
|
|
667
|
+
!reverseSearchActive &&
|
|
668
|
+
!commandSearchActive
|
|
669
|
+
? 'slash'
|
|
670
|
+
: 'reverse', expandedIndex: expandedSuggestionIndex }) }))] }));
|
|
571
671
|
};
|
|
572
672
|
//# sourceMappingURL=InputPrompt.js.map
|