@google/gemini-cli 0.6.0-nightly.20250910.a31830a3 → 0.6.0-preview.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/LICENSE +2 -2
- package/README.md +12 -2
- package/dist/index.js +0 -0
- package/dist/package.json +3 -2
- package/dist/src/commands/extensions/disable.d.ts +1 -1
- package/dist/src/commands/extensions/disable.js +3 -3
- package/dist/src/commands/extensions/disable.js.map +1 -1
- package/dist/src/commands/extensions/enable.d.ts +1 -1
- package/dist/src/commands/extensions/enable.js +5 -7
- package/dist/src/commands/extensions/enable.js.map +1 -1
- package/dist/src/commands/extensions/install.d.ts +1 -0
- package/dist/src/commands/extensions/install.js +10 -2
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/install.test.js +75 -2
- package/dist/src/commands/extensions/install.test.js.map +1 -1
- package/dist/src/commands/extensions/update.js +14 -4
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/config/config.d.ts +1 -1
- package/dist/src/config/config.js +19 -5
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +17 -8
- package/dist/src/config/extension.js +192 -73
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/extensions/extensionEnablement.d.ts +30 -0
- package/dist/src/config/extensions/extensionEnablement.js +113 -0
- package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
- package/dist/src/config/extensions/extensionEnablement.test.d.ts +6 -0
- package/dist/src/config/extensions/extensionEnablement.test.js +116 -0
- package/dist/src/config/extensions/extensionEnablement.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 +54 -15
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +67 -1
- package/dist/src/config/settingsSchema.js +64 -1
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +6 -0
- 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/initializer.js +6 -1
- package/dist/src/core/initializer.js.map +1 -1
- package/dist/src/gemini.js +34 -24
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +11 -2
- 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 +23 -9
- package/dist/src/nonInteractiveCli.js.map +1 -1
- 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/ui/AppContainer.js +69 -32
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +36 -0
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/IdeIntegrationNudge.js +2 -1
- package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.js +2 -2
- package/dist/src/ui/auth/AuthDialog.js.map +1 -1
- package/dist/src/ui/auth/AuthInProgress.js +2 -2
- package/dist/src/ui/auth/AuthInProgress.js.map +1 -1
- 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/extensionsCommand.js +70 -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/types.d.ts +4 -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/AutoAcceptIndicator.js +4 -4
- package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/components/Composer.js +10 -5
- package/dist/src/ui/components/Composer.js.map +1 -1
- package/dist/src/ui/components/ConfigInitDisplay.js +2 -1
- package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -1
- 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.js +9 -5
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- 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 +4 -3
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +6 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Footer.d.ts +3 -0
- package/dist/src/ui/components/Footer.js +8 -3
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/GeminiRespondingSpinner.js +3 -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.js +5 -5
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -0
- 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 +97 -19
- 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.js +1 -1
- package/dist/src/ui/components/MainContent.js.map +1 -1
- 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.js +2 -2
- package/dist/src/ui/components/Notifications.js.map +1 -1
- 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.js +2 -2
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
- package/dist/src/ui/components/SettingsDialog.js +73 -17
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +291 -0
- 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.js +6 -6
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +5 -2
- package/dist/src/ui/components/SuggestionsDisplay.js +17 -11
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.js +4 -4
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.test.js +10 -0
- package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
- 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 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.js +10 -6
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.d.ts +4 -0
- package/dist/src/ui/components/messages/ToolMessage.js +17 -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/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/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/contexts/UIStateContext.d.ts +6 -1
- package/dist/src/ui/contexts/UIStateContext.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 +58 -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 +3 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +15 -45
- 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/useGeminiStream.d.ts +11 -1
- package/dist/src/ui/hooks/useGeminiStream.js +75 -18
- 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/useQuotaAndFallback.test.js +0 -2
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
- package/dist/src/ui/hooks/useReactToolScheduler.js +21 -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 +12 -1
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +14 -2
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +6 -4
- 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 +5 -5
- 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 +14 -0
- package/dist/src/ui/state/extensions.js +16 -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 +12 -2
- package/dist/src/ui/types.js +1 -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/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/sandbox.js +2 -0
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/settingsUtils.test.js +37 -2
- package/dist/src/utils/settingsUtils.test.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.js +30 -18
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/src/zed-integration/schema.d.ts +18 -18
- 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 +5 -4
|
@@ -4,9 +4,37 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { McpPromptLoader } from './McpPromptLoader.js';
|
|
7
|
-
import { describe, it, expect } from 'vitest';
|
|
7
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
8
|
+
import { CommandKind } from '../ui/commands/types.js';
|
|
9
|
+
import * as cliCore from '@google/gemini-cli-core';
|
|
10
|
+
// Define the mock prompt data at a higher scope
|
|
11
|
+
const mockPrompt = {
|
|
12
|
+
name: 'test-prompt',
|
|
13
|
+
description: 'A test prompt.',
|
|
14
|
+
serverName: 'test-server',
|
|
15
|
+
arguments: [
|
|
16
|
+
{ name: 'name', required: true, description: "The animal's name." },
|
|
17
|
+
{ name: 'age', required: true, description: "The animal's age." },
|
|
18
|
+
{ name: 'species', required: true, description: "The animal's species." },
|
|
19
|
+
{
|
|
20
|
+
name: 'enclosure',
|
|
21
|
+
required: false,
|
|
22
|
+
description: "The animal's enclosure.",
|
|
23
|
+
},
|
|
24
|
+
{ name: 'trail', required: false, description: "The animal's trail." },
|
|
25
|
+
],
|
|
26
|
+
invoke: vi.fn().mockResolvedValue({
|
|
27
|
+
messages: [{ content: { text: 'Hello, world!' } }],
|
|
28
|
+
}),
|
|
29
|
+
};
|
|
8
30
|
describe('McpPromptLoader', () => {
|
|
9
31
|
const mockConfig = {};
|
|
32
|
+
// Use a beforeEach to set up and clean a spy for each test
|
|
33
|
+
beforeEach(() => {
|
|
34
|
+
vi.clearAllMocks();
|
|
35
|
+
vi.spyOn(cliCore, 'getMCPServerPrompts').mockReturnValue([mockPrompt]);
|
|
36
|
+
});
|
|
37
|
+
// --- `parseArgs` tests remain the same ---
|
|
10
38
|
describe('parseArgs', () => {
|
|
11
39
|
it('should handle multi-word positional arguments', () => {
|
|
12
40
|
const loader = new McpPromptLoader(mockConfig);
|
|
@@ -110,5 +138,204 @@ describe('McpPromptLoader', () => {
|
|
|
110
138
|
});
|
|
111
139
|
});
|
|
112
140
|
});
|
|
141
|
+
describe('loadCommands', () => {
|
|
142
|
+
const mockConfigWithPrompts = {
|
|
143
|
+
getMcpServers: () => ({
|
|
144
|
+
'test-server': { httpUrl: 'https://test-server.com' },
|
|
145
|
+
}),
|
|
146
|
+
};
|
|
147
|
+
it('should load prompts as slash commands', async () => {
|
|
148
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
149
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
150
|
+
expect(commands).toHaveLength(1);
|
|
151
|
+
expect(commands[0].name).toBe('test-prompt');
|
|
152
|
+
expect(commands[0].description).toBe('A test prompt.');
|
|
153
|
+
expect(commands[0].kind).toBe(CommandKind.MCP_PROMPT);
|
|
154
|
+
});
|
|
155
|
+
it('should handle prompt invocation successfully', async () => {
|
|
156
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
157
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
158
|
+
const action = commands[0].action;
|
|
159
|
+
const context = {};
|
|
160
|
+
const result = await action(context, 'test-name 123 tiger');
|
|
161
|
+
expect(mockPrompt.invoke).toHaveBeenCalledWith({
|
|
162
|
+
name: 'test-name',
|
|
163
|
+
age: '123',
|
|
164
|
+
species: 'tiger',
|
|
165
|
+
});
|
|
166
|
+
expect(result).toEqual({
|
|
167
|
+
type: 'submit_prompt',
|
|
168
|
+
content: JSON.stringify('Hello, world!'),
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
it('should return an error for missing required arguments', async () => {
|
|
172
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
173
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
174
|
+
const action = commands[0].action;
|
|
175
|
+
const context = {};
|
|
176
|
+
const result = await action(context, 'test-name');
|
|
177
|
+
expect(result).toEqual({
|
|
178
|
+
type: 'message',
|
|
179
|
+
messageType: 'error',
|
|
180
|
+
content: 'Missing required argument(s): --age, --species',
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
it('should return an error message if prompt invocation fails', async () => {
|
|
184
|
+
vi.spyOn(mockPrompt, 'invoke').mockRejectedValue(new Error('Invocation failed!'));
|
|
185
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
186
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
187
|
+
const action = commands[0].action;
|
|
188
|
+
const context = {};
|
|
189
|
+
const result = await action(context, 'test-name 123 tiger');
|
|
190
|
+
expect(result).toEqual({
|
|
191
|
+
type: 'message',
|
|
192
|
+
messageType: 'error',
|
|
193
|
+
content: 'Error: Invocation failed!',
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
it('should return an empty array if config is not available', async () => {
|
|
197
|
+
const loader = new McpPromptLoader(null);
|
|
198
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
199
|
+
expect(commands).toEqual([]);
|
|
200
|
+
});
|
|
201
|
+
describe('completion', () => {
|
|
202
|
+
it('should suggest no arguments when using positional arguments', async () => {
|
|
203
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
204
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
205
|
+
const completion = commands[0].completion;
|
|
206
|
+
const context = {};
|
|
207
|
+
const suggestions = await completion(context, 'test-name 6 tiger');
|
|
208
|
+
expect(suggestions).toEqual([]);
|
|
209
|
+
});
|
|
210
|
+
it('should suggest all arguments when none are present', async () => {
|
|
211
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
212
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
213
|
+
const completion = commands[0].completion;
|
|
214
|
+
const context = {
|
|
215
|
+
invocation: {
|
|
216
|
+
raw: '/find ',
|
|
217
|
+
name: 'find',
|
|
218
|
+
args: '',
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
const suggestions = await completion(context, '');
|
|
222
|
+
expect(suggestions).toEqual([
|
|
223
|
+
'--name="',
|
|
224
|
+
'--age="',
|
|
225
|
+
'--species="',
|
|
226
|
+
'--enclosure="',
|
|
227
|
+
'--trail="',
|
|
228
|
+
]);
|
|
229
|
+
});
|
|
230
|
+
it('should suggest remaining arguments when some are present', async () => {
|
|
231
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
232
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
233
|
+
const completion = commands[0].completion;
|
|
234
|
+
const context = {
|
|
235
|
+
invocation: {
|
|
236
|
+
raw: '/find --name="test-name" --age="6" ',
|
|
237
|
+
name: 'find',
|
|
238
|
+
args: '--name="test-name" --age="6"',
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
const suggestions = await completion(context, '');
|
|
242
|
+
expect(suggestions).toEqual([
|
|
243
|
+
'--species="',
|
|
244
|
+
'--enclosure="',
|
|
245
|
+
'--trail="',
|
|
246
|
+
]);
|
|
247
|
+
});
|
|
248
|
+
it('should suggest no arguments when all are present', async () => {
|
|
249
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
250
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
251
|
+
const completion = commands[0].completion;
|
|
252
|
+
const context = {};
|
|
253
|
+
const suggestions = await completion(context, '--name="test-name" --age="6" --species="tiger" --enclosure="Tiger Den" --trail="Jungle"');
|
|
254
|
+
expect(suggestions).toEqual([]);
|
|
255
|
+
});
|
|
256
|
+
it('should suggest nothing for prompts with no arguments', async () => {
|
|
257
|
+
// Temporarily override the mock to return a prompt with no args
|
|
258
|
+
vi.spyOn(cliCore, 'getMCPServerPrompts').mockReturnValue([
|
|
259
|
+
{ ...mockPrompt, arguments: [] },
|
|
260
|
+
]);
|
|
261
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
262
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
263
|
+
const completion = commands[0].completion;
|
|
264
|
+
const context = {};
|
|
265
|
+
const suggestions = await completion(context, '');
|
|
266
|
+
expect(suggestions).toEqual([]);
|
|
267
|
+
});
|
|
268
|
+
it('should suggest arguments matching a partial argument', async () => {
|
|
269
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
270
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
271
|
+
const completion = commands[0].completion;
|
|
272
|
+
const context = {
|
|
273
|
+
invocation: {
|
|
274
|
+
raw: '/find --s',
|
|
275
|
+
name: 'find',
|
|
276
|
+
args: '--s',
|
|
277
|
+
},
|
|
278
|
+
};
|
|
279
|
+
const suggestions = await completion(context, '--s');
|
|
280
|
+
expect(suggestions).toEqual(['--species="']);
|
|
281
|
+
});
|
|
282
|
+
it('should suggest arguments even when a partial argument is parsed as a value', async () => {
|
|
283
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
284
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
285
|
+
const completion = commands[0].completion;
|
|
286
|
+
const context = {
|
|
287
|
+
invocation: {
|
|
288
|
+
raw: '/find --name="test" --a',
|
|
289
|
+
name: 'find',
|
|
290
|
+
args: '--name="test" --a',
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
const suggestions = await completion(context, '--a');
|
|
294
|
+
expect(suggestions).toEqual(['--age="']);
|
|
295
|
+
});
|
|
296
|
+
it('should auto-close the quote for a named argument value', async () => {
|
|
297
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
298
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
299
|
+
const completion = commands[0].completion;
|
|
300
|
+
const context = {
|
|
301
|
+
invocation: {
|
|
302
|
+
raw: '/find --name="test',
|
|
303
|
+
name: 'find',
|
|
304
|
+
args: '--name="test',
|
|
305
|
+
},
|
|
306
|
+
};
|
|
307
|
+
const suggestions = await completion(context, '--name="test');
|
|
308
|
+
expect(suggestions).toEqual(['--name="test"']);
|
|
309
|
+
});
|
|
310
|
+
it('should auto-close the quote for an empty named argument value', async () => {
|
|
311
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
312
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
313
|
+
const completion = commands[0].completion;
|
|
314
|
+
const context = {
|
|
315
|
+
invocation: {
|
|
316
|
+
raw: '/find --name="',
|
|
317
|
+
name: 'find',
|
|
318
|
+
args: '--name="',
|
|
319
|
+
},
|
|
320
|
+
};
|
|
321
|
+
const suggestions = await completion(context, '--name="');
|
|
322
|
+
expect(suggestions).toEqual(['--name=""']);
|
|
323
|
+
});
|
|
324
|
+
it('should not add a quote if already present', async () => {
|
|
325
|
+
const loader = new McpPromptLoader(mockConfigWithPrompts);
|
|
326
|
+
const commands = await loader.loadCommands(new AbortController().signal);
|
|
327
|
+
const completion = commands[0].completion;
|
|
328
|
+
const context = {
|
|
329
|
+
invocation: {
|
|
330
|
+
raw: '/find --name="test"',
|
|
331
|
+
name: 'find',
|
|
332
|
+
args: '--name="test"',
|
|
333
|
+
},
|
|
334
|
+
};
|
|
335
|
+
const suggestions = await completion(context, '--name="test"');
|
|
336
|
+
expect(suggestions).toEqual([]);
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
});
|
|
113
340
|
});
|
|
114
341
|
//# sourceMappingURL=McpPromptLoader.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpPromptLoader.test.js","sourceRoot":"","sources":["../../../src/services/McpPromptLoader.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"McpPromptLoader.test.js","sourceRoot":"","sources":["../../../src/services/McpPromptLoader.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { ApprovalMode, checkCommandPermissions, escapeShellArg, getShellConfiguration, ShellExecutionService, flatMapTextParts, } from '@google/gemini-cli-core';
|
|
7
7
|
import { SHELL_INJECTION_TRIGGER, SHORTHAND_ARGS_PLACEHOLDER, } from './types.js';
|
|
8
8
|
import { extractInjections } from './injectionParser.js';
|
|
9
|
+
import { themeManager } from '../../ui/themes/theme-manager.js';
|
|
9
10
|
export class ConfirmationRequiredError extends Error {
|
|
10
11
|
commandsToConfirm;
|
|
11
12
|
constructor(message, commandsToConfirm) {
|
|
@@ -90,7 +91,13 @@ export class ShellProcessor {
|
|
|
90
91
|
processedPrompt += segment.replaceAll(SHORTHAND_ARGS_PLACEHOLDER, userArgsRaw);
|
|
91
92
|
// Execute the resolved command (which already has ESCAPED input).
|
|
92
93
|
if (injection.resolvedCommand) {
|
|
93
|
-
const
|
|
94
|
+
const activeTheme = themeManager.getActiveTheme();
|
|
95
|
+
const shellExecutionConfig = {
|
|
96
|
+
...config.getShellExecutionConfig(),
|
|
97
|
+
defaultFg: activeTheme.colors.Foreground,
|
|
98
|
+
defaultBg: activeTheme.colors.Background,
|
|
99
|
+
};
|
|
100
|
+
const { result } = await ShellExecutionService.execute(injection.resolvedCommand, config.getTargetDir(), () => { }, new AbortController().signal, config.getShouldUseNodePtyShell(), shellExecutionConfig);
|
|
94
101
|
const executionResult = await result;
|
|
95
102
|
// Handle Spawn Errors
|
|
96
103
|
if (executionResult.error && !executionResult.aborted) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shellProcessor.js","sourceRoot":"","sources":["../../../../src/services/prompt-processors/shellProcessor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAkB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"shellProcessor.js","sourceRoot":"","sources":["../../../../src/services/prompt-processors/shellProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
* Copyright 2025 Google LLC
|
|
5
5
|
* SPDX-License-Identifier: Apache-2.0
|
|
6
6
|
*/
|
|
7
|
-
import { useMemo, useState, useCallback, useEffect, useRef } from 'react';
|
|
7
|
+
import { useMemo, useState, useCallback, useEffect, useRef, useLayoutEffect, } from 'react';
|
|
8
8
|
import { measureElement } from 'ink';
|
|
9
9
|
import { App } from './App.js';
|
|
10
10
|
import { AppContext } from './contexts/AppContext.js';
|
|
@@ -13,7 +13,7 @@ import { UIActionsContext, } from './contexts/UIActionsContext.js';
|
|
|
13
13
|
import { ConfigContext } from './contexts/ConfigContext.js';
|
|
14
14
|
import { ToolCallStatus, AuthState, } from './types.js';
|
|
15
15
|
import { MessageType, StreamingState } from './types.js';
|
|
16
|
-
import { DEFAULT_GEMINI_FLASH_MODEL, IdeClient,
|
|
16
|
+
import { DEFAULT_GEMINI_FLASH_MODEL, IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, ShellExecutionService, } from '@google/gemini-cli-core';
|
|
17
17
|
import { validateAuthMethod } from '../config/auth.js';
|
|
18
18
|
import { loadHierarchicalGeminiMemory } from '../config/config.js';
|
|
19
19
|
import process from 'node:process';
|
|
@@ -54,6 +54,7 @@ import { useAutoAcceptIndicator } from './hooks/useAutoAcceptIndicator.js';
|
|
|
54
54
|
import { useWorkspaceMigration } from './hooks/useWorkspaceMigration.js';
|
|
55
55
|
import { useSessionStats } from './contexts/SessionContext.js';
|
|
56
56
|
import { useGitBranchName } from './hooks/useGitBranchName.js';
|
|
57
|
+
import { checkForAllExtensionUpdates } from '../config/extension.js';
|
|
57
58
|
const CTRL_EXIT_PROMPT_DURATION_MS = 1000;
|
|
58
59
|
function isToolExecuting(pendingHistoryItems) {
|
|
59
60
|
return pendingHistoryItems.some((item) => {
|
|
@@ -63,6 +64,16 @@ function isToolExecuting(pendingHistoryItems) {
|
|
|
63
64
|
return false;
|
|
64
65
|
});
|
|
65
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* The fraction of the terminal width to allocate to the shell.
|
|
69
|
+
* This provides horizontal padding.
|
|
70
|
+
*/
|
|
71
|
+
const SHELL_WIDTH_FRACTION = 0.89;
|
|
72
|
+
/**
|
|
73
|
+
* The number of lines to subtract from the available terminal height
|
|
74
|
+
* for the shell. This provides vertical padding and space for other UI elements.
|
|
75
|
+
*/
|
|
76
|
+
const SHELL_HEIGHT_PADDING = 10;
|
|
66
77
|
export const AppContainer = (props) => {
|
|
67
78
|
const { settings, config, initializationResult } = props;
|
|
68
79
|
const historyManager = useHistory();
|
|
@@ -72,12 +83,14 @@ export const AppContainer = (props) => {
|
|
|
72
83
|
const [showPrivacyNotice, setShowPrivacyNotice] = useState(false);
|
|
73
84
|
const [themeError, setThemeError] = useState(initializationResult.themeError);
|
|
74
85
|
const [isProcessing, setIsProcessing] = useState(false);
|
|
86
|
+
const [shellFocused, setShellFocused] = useState(false);
|
|
75
87
|
const [geminiMdFileCount, setGeminiMdFileCount] = useState(initializationResult.geminiMdFileCount);
|
|
76
88
|
const [shellModeActive, setShellModeActive] = useState(false);
|
|
77
89
|
const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] = useState(false);
|
|
78
90
|
const [historyRemountKey, setHistoryRemountKey] = useState(0);
|
|
79
91
|
const [updateInfo, setUpdateInfo] = useState(null);
|
|
80
92
|
const [isTrustedFolder, setIsTrustedFolder] = useState(config.isTrustedFolder());
|
|
93
|
+
const [extensionsUpdateState, setExtensionsUpdateState] = useState(new Map());
|
|
81
94
|
// Helper to determine the effective model, considering the fallback state.
|
|
82
95
|
const getEffectiveModel = useCallback(() => {
|
|
83
96
|
if (config.isInFallbackMode()) {
|
|
@@ -88,11 +101,6 @@ export const AppContainer = (props) => {
|
|
|
88
101
|
const [currentModel, setCurrentModel] = useState(getEffectiveModel());
|
|
89
102
|
const [userTier, setUserTier] = useState(undefined);
|
|
90
103
|
const [isConfigInitialized, setConfigInitialized] = useState(false);
|
|
91
|
-
// Auto-accept indicator
|
|
92
|
-
const showAutoAcceptIndicator = useAutoAcceptIndicator({
|
|
93
|
-
config,
|
|
94
|
-
addItem: historyManager.addItem,
|
|
95
|
-
});
|
|
96
104
|
const logger = useLogger(config.storage);
|
|
97
105
|
const [userMessages, setUserMessages] = useState([]);
|
|
98
106
|
// Terminal and layout hooks
|
|
@@ -141,7 +149,7 @@ export const AppContainer = (props) => {
|
|
|
141
149
|
}, [handleNewMessage, config]);
|
|
142
150
|
const widthFraction = 0.9;
|
|
143
151
|
const inputWidth = Math.max(20, Math.floor(terminalWidth * widthFraction) - 3);
|
|
144
|
-
const suggestionsWidth = Math.max(20, Math.floor(terminalWidth * 0
|
|
152
|
+
const suggestionsWidth = Math.max(20, Math.floor(terminalWidth * 1.0));
|
|
145
153
|
const mainAreaWidth = Math.floor(terminalWidth * 0.9);
|
|
146
154
|
const staticAreaMaxItemHeight = Math.max(terminalHeight * 4, 100);
|
|
147
155
|
const isValidPath = useCallback((filePath) => {
|
|
@@ -276,6 +284,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
276
284
|
},
|
|
277
285
|
setDebugMessage,
|
|
278
286
|
toggleCorgiMode: () => setCorgiMode((prev) => !prev),
|
|
287
|
+
setExtensionsUpdateState,
|
|
279
288
|
}), [
|
|
280
289
|
setAuthState,
|
|
281
290
|
openThemeDialog,
|
|
@@ -285,8 +294,9 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
285
294
|
setDebugMessage,
|
|
286
295
|
setShowPrivacyNotice,
|
|
287
296
|
setCorgiMode,
|
|
297
|
+
setExtensionsUpdateState,
|
|
288
298
|
]);
|
|
289
|
-
const { handleSlashCommand, slashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, commandContext, shellConfirmationRequest, confirmationRequest, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, setGeminiMdFileCount, slashCommandActions);
|
|
299
|
+
const { handleSlashCommand, slashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, commandContext, shellConfirmationRequest, confirmationRequest, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, setGeminiMdFileCount, slashCommandActions, extensionsUpdateState, isConfigInitialized);
|
|
290
300
|
const performMemoryRefresh = useCallback(async () => {
|
|
291
301
|
historyManager.addItem({
|
|
292
302
|
type: MessageType.INFO,
|
|
@@ -320,7 +330,13 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
320
330
|
}
|
|
321
331
|
}, [config, historyManager, settings.merged]);
|
|
322
332
|
const cancelHandlerRef = useRef(() => { });
|
|
323
|
-
const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, () => settings.merged.general?.preferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, refreshStatic, () => cancelHandlerRef.current());
|
|
333
|
+
const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, () => settings.merged.general?.preferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, refreshStatic, () => cancelHandlerRef.current(), setShellFocused, terminalWidth, terminalHeight, shellFocused);
|
|
334
|
+
// Auto-accept indicator
|
|
335
|
+
const showAutoAcceptIndicator = useAutoAcceptIndicator({
|
|
336
|
+
config,
|
|
337
|
+
addItem: historyManager.addItem,
|
|
338
|
+
onApprovalModeChange: handleApprovalModeChange,
|
|
339
|
+
});
|
|
324
340
|
const { messageQueue, addMessage, clearQueue, getQueuedMessagesText } = useMessageQueue({
|
|
325
341
|
isConfigInitialized,
|
|
326
342
|
streamingState,
|
|
@@ -376,14 +392,23 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
376
392
|
(streamingState === StreamingState.Idle ||
|
|
377
393
|
streamingState === StreamingState.Responding) &&
|
|
378
394
|
!proQuotaRequest;
|
|
379
|
-
|
|
380
|
-
|
|
395
|
+
const [controlsHeight, setControlsHeight] = useState(0);
|
|
396
|
+
useLayoutEffect(() => {
|
|
381
397
|
if (mainControlsRef.current) {
|
|
382
398
|
const fullFooterMeasurement = measureElement(mainControlsRef.current);
|
|
383
|
-
|
|
399
|
+
if (fullFooterMeasurement.height > 0) {
|
|
400
|
+
setControlsHeight(fullFooterMeasurement.height);
|
|
401
|
+
}
|
|
384
402
|
}
|
|
385
|
-
|
|
386
|
-
|
|
403
|
+
}, [buffer, terminalWidth, terminalHeight]);
|
|
404
|
+
// Compute available terminal height based on controls measurement
|
|
405
|
+
const availableTerminalHeight = Math.max(0, terminalHeight - controlsHeight - staticExtraHeight - 2);
|
|
406
|
+
config.setShellExecutionConfig({
|
|
407
|
+
terminalWidth: Math.floor(terminalWidth * SHELL_WIDTH_FRACTION),
|
|
408
|
+
terminalHeight: Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1),
|
|
409
|
+
pager: settings.merged.tools?.shell?.pager,
|
|
410
|
+
showColor: settings.merged.tools?.shell?.showColor,
|
|
411
|
+
});
|
|
387
412
|
const isFocused = useFocus();
|
|
388
413
|
useBracketedPaste();
|
|
389
414
|
// Context file names computation
|
|
@@ -399,6 +424,11 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
399
424
|
const initialPrompt = useMemo(() => config.getQuestion(), [config]);
|
|
400
425
|
const initialPromptSubmitted = useRef(false);
|
|
401
426
|
const geminiClient = config.getGeminiClient();
|
|
427
|
+
useEffect(() => {
|
|
428
|
+
if (activePtyId) {
|
|
429
|
+
ShellExecutionService.resizePty(activePtyId, Math.floor(terminalWidth * SHELL_WIDTH_FRACTION), Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1));
|
|
430
|
+
}
|
|
431
|
+
}, [terminalWidth, availableTerminalHeight, activePtyId]);
|
|
402
432
|
useEffect(() => {
|
|
403
433
|
if (initialPrompt &&
|
|
404
434
|
isConfigInitialized &&
|
|
@@ -469,8 +499,8 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
469
499
|
};
|
|
470
500
|
}, [terminalWidth, refreshStatic]);
|
|
471
501
|
useEffect(() => {
|
|
472
|
-
const unsubscribe =
|
|
473
|
-
setIdeContextState(
|
|
502
|
+
const unsubscribe = ideContextStore.subscribe(setIdeContextState);
|
|
503
|
+
setIdeContextState(ideContextStore.get());
|
|
474
504
|
return unsubscribe;
|
|
475
505
|
}, []);
|
|
476
506
|
useEffect(() => {
|
|
@@ -572,6 +602,11 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
572
602
|
!enteringConstrainHeightMode) {
|
|
573
603
|
setConstrainHeight(false);
|
|
574
604
|
}
|
|
605
|
+
else if (keyMatchers[Command.TOGGLE_SHELL_INPUT_FOCUS](key)) {
|
|
606
|
+
if (activePtyId || shellFocused) {
|
|
607
|
+
setShellFocused((prev) => !prev);
|
|
608
|
+
}
|
|
609
|
+
}
|
|
575
610
|
}, [
|
|
576
611
|
constrainHeight,
|
|
577
612
|
setConstrainHeight,
|
|
@@ -596,6 +631,8 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
596
631
|
isSettingsDialogOpen,
|
|
597
632
|
isFolderTrustDialogOpen,
|
|
598
633
|
showPrivacyNotice,
|
|
634
|
+
activePtyId,
|
|
635
|
+
shellFocused,
|
|
599
636
|
settings.merged.general?.debugKeystrokeLogging,
|
|
600
637
|
]);
|
|
601
638
|
useKeypress(handleGlobalKeypress, { isActive: true });
|
|
@@ -615,31 +652,19 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
615
652
|
.filter((msg) => msg.type === 'error')
|
|
616
653
|
.reduce((total, msg) => total + msg.count, 0), [filteredConsoleMessages]);
|
|
617
654
|
const nightly = props.version.includes('nightly');
|
|
618
|
-
const dialogsVisible =
|
|
655
|
+
const dialogsVisible = showWorkspaceMigrationDialog ||
|
|
619
656
|
shouldShowIdePrompt ||
|
|
620
657
|
isFolderTrustDialogOpen ||
|
|
621
658
|
!!shellConfirmationRequest ||
|
|
622
659
|
!!confirmationRequest ||
|
|
660
|
+
!!loopDetectionConfirmationRequest ||
|
|
623
661
|
isThemeDialogOpen ||
|
|
624
662
|
isSettingsDialogOpen ||
|
|
625
663
|
isAuthenticating ||
|
|
626
664
|
isAuthDialogOpen ||
|
|
627
665
|
isEditorDialogOpen ||
|
|
628
666
|
showPrivacyNotice ||
|
|
629
|
-
!!proQuotaRequest
|
|
630
|
-
showWorkspaceMigrationDialog,
|
|
631
|
-
shouldShowIdePrompt,
|
|
632
|
-
isFolderTrustDialogOpen,
|
|
633
|
-
shellConfirmationRequest,
|
|
634
|
-
confirmationRequest,
|
|
635
|
-
isThemeDialogOpen,
|
|
636
|
-
isSettingsDialogOpen,
|
|
637
|
-
isAuthenticating,
|
|
638
|
-
isAuthDialogOpen,
|
|
639
|
-
isEditorDialogOpen,
|
|
640
|
-
showPrivacyNotice,
|
|
641
|
-
proQuotaRequest,
|
|
642
|
-
]);
|
|
667
|
+
!!proQuotaRequest;
|
|
643
668
|
const pendingHistoryItems = useMemo(() => [...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems], [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
|
|
644
669
|
const uiState = useMemo(() => ({
|
|
645
670
|
history: historyManager.history,
|
|
@@ -661,6 +686,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
661
686
|
commandContext,
|
|
662
687
|
shellConfirmationRequest,
|
|
663
688
|
confirmationRequest,
|
|
689
|
+
loopDetectionConfirmationRequest,
|
|
664
690
|
geminiMdFileCount,
|
|
665
691
|
streamingState,
|
|
666
692
|
initError,
|
|
@@ -712,6 +738,9 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
712
738
|
updateInfo,
|
|
713
739
|
showIdeRestartPrompt,
|
|
714
740
|
isRestarting,
|
|
741
|
+
extensionsUpdateState,
|
|
742
|
+
activePtyId,
|
|
743
|
+
shellFocused,
|
|
715
744
|
}), [
|
|
716
745
|
historyManager.history,
|
|
717
746
|
isThemeDialogOpen,
|
|
@@ -732,6 +761,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
732
761
|
commandContext,
|
|
733
762
|
shellConfirmationRequest,
|
|
734
763
|
confirmationRequest,
|
|
764
|
+
loopDetectionConfirmationRequest,
|
|
735
765
|
geminiMdFileCount,
|
|
736
766
|
streamingState,
|
|
737
767
|
initError,
|
|
@@ -783,6 +813,9 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
783
813
|
showIdeRestartPrompt,
|
|
784
814
|
isRestarting,
|
|
785
815
|
currentModel,
|
|
816
|
+
extensionsUpdateState,
|
|
817
|
+
activePtyId,
|
|
818
|
+
shellFocused,
|
|
786
819
|
]);
|
|
787
820
|
const uiActions = useMemo(() => ({
|
|
788
821
|
handleThemeSelect,
|
|
@@ -828,6 +861,10 @@ Logging in with Google... Please restart Gemini CLI to continue.
|
|
|
828
861
|
onWorkspaceMigrationDialogClose,
|
|
829
862
|
handleProQuotaChoice,
|
|
830
863
|
]);
|
|
864
|
+
const extensions = config.getExtensions();
|
|
865
|
+
useEffect(() => {
|
|
866
|
+
checkForAllExtensionUpdates(extensions, setExtensionsUpdateState);
|
|
867
|
+
}, [extensions, setExtensionsUpdateState]);
|
|
831
868
|
return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
|
|
832
869
|
version: props.version,
|
|
833
870
|
startupWarnings: props.startupWarnings || [],
|