@google/gemini-cli 0.7.0-nightly.20250912.68035591 → 0.7.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/dist/package.json +5 -3
- 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 +1 -0
- package/dist/src/commands/extensions/install.js +13 -4
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/install.test.js +87 -4
- 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/new.test.js +2 -2
- package/dist/src/commands/extensions/new.test.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/uninstall.test.js +4 -1
- package/dist/src/commands/extensions/uninstall.test.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/commands/mcp/add.js +6 -1
- package/dist/src/commands/mcp/add.js.map +1 -1
- package/dist/src/config/config.d.ts +2 -1
- package/dist/src/config/config.js +95 -69
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +10 -26
- package/dist/src/config/extension.js +155 -226
- 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.d.ts +6 -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 +301 -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 +271 -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 +327 -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 +3 -1
- package/dist/src/config/keyBindings.js +6 -0
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/policy-engine.integration.test.d.ts +6 -0
- package/dist/src/config/policy-engine.integration.test.js +270 -0
- package/dist/src/config/policy-engine.integration.test.js.map +1 -0
- package/dist/src/config/policy.d.ts +8 -0
- package/dist/src/config/policy.js +150 -0
- package/dist/src/config/policy.js.map +1 -0
- package/dist/src/config/policy.test.d.ts +6 -0
- package/dist/src/config/policy.test.js +336 -0
- package/dist/src/config/policy.test.js.map +1 -0
- package/dist/src/config/settings.d.ts +3 -0
- package/dist/src/config/settings.js +71 -19
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +36 -9
- package/dist/src/config/settingsSchema.js +36 -9
- 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 +11 -2
- package/dist/src/config/trustedFolders.js +47 -16
- package/dist/src/config/trustedFolders.js.map +1 -1
- package/dist/src/config/trustedFolders.test.js +124 -21
- package/dist/src/config/trustedFolders.test.js.map +1 -1
- package/dist/src/gemini.js +111 -114
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +97 -7
- 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.d.ts +2 -1
- package/dist/src/nonInteractiveCli.js +29 -16
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCliCommands.d.ts +17 -0
- package/dist/src/nonInteractiveCliCommands.js +79 -0
- package/dist/src/nonInteractiveCliCommands.js.map +1 -0
- package/dist/src/services/BuiltinCommandLoader.js +4 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +50 -1
- package/dist/src/services/BuiltinCommandLoader.test.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/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/test-utils/render.d.ts +3 -1
- package/dist/src/test-utils/render.js +2 -1
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/App.js +3 -2
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/AppContainer.js +86 -60
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +166 -0
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/IdeIntegrationNudge.d.ts +2 -2
- package/dist/src/ui/IdeIntegrationNudge.js +1 -2
- package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.d.ts +2 -0
- package/dist/src/ui/commands/chatCommand.js +91 -1
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +1 -1
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +40 -34
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +1 -1
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +9 -2
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.d.ts +7 -0
- package/dist/src/ui/commands/modelCommand.js +16 -0
- package/dist/src/ui/commands/modelCommand.js.map +1 -0
- package/dist/src/ui/commands/modelCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/modelCommand.test.js +30 -0
- package/dist/src/ui/commands/modelCommand.test.js.map +1 -0
- package/dist/src/ui/commands/permissionsCommand.d.ts +7 -0
- package/dist/src/ui/commands/permissionsCommand.js +16 -0
- package/dist/src/ui/commands/permissionsCommand.js.map +1 -0
- package/dist/src/ui/commands/permissionsCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/permissionsCommand.test.js +30 -0
- package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -0
- package/dist/src/ui/commands/types.d.ts +5 -2
- package/dist/src/ui/commands/types.js +0 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/AppHeader.js +2 -5
- package/dist/src/ui/components/AppHeader.js.map +1 -1
- package/dist/src/ui/components/Composer.js +13 -11
- package/dist/src/ui/components/Composer.js.map +1 -1
- package/dist/src/ui/components/Composer.test.js +18 -21
- package/dist/src/ui/components/Composer.test.js.map +1 -1
- package/dist/src/ui/components/DialogManager.d.ts +6 -1
- package/dist/src/ui/components/DialogManager.js +11 -2
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.js +13 -6
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +12 -7
- 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/HistoryItemDisplay.d.ts +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +3 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.d.ts +7 -1
- package/dist/src/ui/components/InputPrompt.js +135 -37
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/MainContent.js +1 -1
- package/dist/src/ui/components/MainContent.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.d.ts +11 -0
- package/dist/src/ui/components/ModelDialog.js +53 -0
- package/dist/src/ui/components/ModelDialog.js.map +1 -0
- package/dist/src/ui/components/ModelDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ModelDialog.test.js +153 -0
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +13 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js +45 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.d.ts +6 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +158 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -0
- package/dist/src/ui/components/PrepareLabel.d.ts +5 -5
- package/dist/src/ui/components/PrepareLabel.js +66 -10
- 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/QueuedMessageDisplay.d.ts +9 -0
- package/dist/src/ui/components/QueuedMessageDisplay.js +20 -0
- package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.js +56 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -0
- package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
- package/dist/src/ui/components/SettingsDialog.js +68 -12
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +333 -8
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +5 -2
- package/dist/src/ui/components/SuggestionsDisplay.js +11 -5
- package/dist/src/ui/components/SuggestionsDisplay.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/messages/ToolGroupMessage.d.ts +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.js +11 -9
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.d.ts +1 -1
- package/dist/src/ui/components/messages/ToolMessage.js +13 -6
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/WarningMessage.d.ts +11 -0
- package/dist/src/ui/components/messages/WarningMessage.js +10 -0
- package/dist/src/ui/components/messages/WarningMessage.js.map +1 -0
- package/dist/src/ui/components/shared/BaseSelectionList.d.ts +43 -0
- package/dist/src/ui/components/shared/BaseSelectionList.js +72 -0
- package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +6 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.js +374 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +36 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +13 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +6 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +68 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.js +9 -104
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js +113 -92
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.d.ts +6 -0
- package/dist/src/ui/components/shared/text-buffer.js +86 -5
- 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/KeypressContext.js +3 -0
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
- package/dist/src/ui/contexts/SessionContext.js +107 -5
- package/dist/src/ui/contexts/SessionContext.js.map +1 -1
- package/dist/src/ui/contexts/ShellFocusContext.d.ts +7 -0
- package/dist/src/ui/contexts/ShellFocusContext.js +9 -0
- package/dist/src/ui/contexts/ShellFocusContext.js.map +1 -0
- package/dist/src/ui/contexts/UIActionsContext.d.ts +2 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +9 -4
- package/dist/src/ui/contexts/UIStateContext.js +1 -0
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.js +7 -5
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.test.js +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +21 -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/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 +165 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
- package/dist/src/ui/hooks/useFocus.js +10 -0
- package/dist/src/ui/hooks/useFocus.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -1
- package/dist/src/ui/hooks/useFolderTrust.js +2 -7
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +4 -0
- package/dist/src/ui/hooks/useGeminiStream.js +53 -23
- 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/useMemoryMonitor.d.ts +13 -0
- package/dist/src/ui/hooks/useMemoryMonitor.js +28 -0
- package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
- package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +6 -0
- package/dist/src/ui/hooks/useMemoryMonitor.test.js +57 -0
- package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -0
- package/dist/src/ui/hooks/useModelCommand.d.ts +12 -0
- package/dist/src/ui/hooks/useModelCommand.js +21 -0
- package/dist/src/ui/hooks/useModelCommand.js.map +1 -0
- package/dist/src/ui/hooks/useModelCommand.test.d.ts +6 -0
- package/dist/src/ui/hooks/useModelCommand.test.js +35 -0
- package/dist/src/ui/hooks/useModelCommand.test.js.map +1 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +17 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js +78 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.d.ts +6 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +182 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -0
- 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/useSelectionList.d.ts +33 -0
- package/dist/src/ui/hooks/useSelectionList.js +252 -0
- package/dist/src/ui/hooks/useSelectionList.js.map +1 -0
- package/dist/src/ui/hooks/useSelectionList.test.d.ts +6 -0
- package/dist/src/ui/hooks/useSelectionList.test.js +651 -0
- package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.js +19 -3
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +47 -2
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useStateAndRef.d.ts +1 -1
- package/dist/src/ui/hooks/useStateAndRef.js +2 -2
- package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +1 -0
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +2 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/noninteractive/nonInteractiveUi.d.ts +12 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.js +27 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -0
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +3 -3
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.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/types.d.ts +11 -2
- package/dist/src/ui/types.js +2 -0
- package/dist/src/ui/types.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/clipboardUtils.js +5 -6
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
- package/dist/src/ui/utils/highlight.d.ts +1 -0
- package/dist/src/ui/utils/highlight.js +28 -0
- package/dist/src/ui/utils/highlight.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/deepMerge.d.ts +2 -3
- package/dist/src/utils/events.d.ts +2 -1
- package/dist/src/utils/events.js +1 -0
- package/dist/src/utils/events.js.map +1 -1
- 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/relaunch.d.ts +7 -0
- package/dist/src/utils/relaunch.js +57 -0
- package/dist/src/utils/relaunch.js.map +1 -0
- package/dist/src/utils/relaunch.test.d.ts +6 -0
- package/dist/src/utils/relaunch.test.js +273 -0
- package/dist/src/utils/relaunch.test.js.map +1 -0
- package/dist/src/utils/sandbox.d.ts +1 -1
- package/dist/src/utils/sandbox.js +17 -8
- package/dist/src/utils/sandbox.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 +22 -22
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -4
- package/dist/google-gemini-cli-0.6.0-nightly.tgz +0 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Creates a UI context object with no-op functions.
|
|
8
|
+
* Useful for non-interactive environments where UI operations
|
|
9
|
+
* are not applicable.
|
|
10
|
+
*/
|
|
11
|
+
export function createNonInteractiveUI() {
|
|
12
|
+
return {
|
|
13
|
+
addItem: (_item, _timestamp) => 0,
|
|
14
|
+
clear: () => { },
|
|
15
|
+
setDebugMessage: (_message) => { },
|
|
16
|
+
loadHistory: (_newHistory) => { },
|
|
17
|
+
pendingItem: null,
|
|
18
|
+
setPendingItem: (_item) => { },
|
|
19
|
+
toggleCorgiMode: () => { },
|
|
20
|
+
toggleVimEnabled: async () => false,
|
|
21
|
+
setGeminiMdFileCount: (_count) => { },
|
|
22
|
+
reloadCommands: () => { },
|
|
23
|
+
extensionsUpdateState: new Map(),
|
|
24
|
+
setExtensionsUpdateState: (_updateState) => { },
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=nonInteractiveUi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nonInteractiveUi.js","sourceRoot":"","sources":["../../../../src/ui/noninteractive/nonInteractiveUi.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QACjC,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAE,CAAC;QACjC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE,GAAE,CAAC;QAChC,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,GAAE,CAAC;QAC7B,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;QACzB,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK;QACnC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE,GAAE,CAAC;QACpC,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC;QACxB,qBAAqB,EAAE,IAAI,GAAG,EAAE;QAChC,wBAAwB,EAAE,CAAC,YAAY,EAAE,EAAE,GAAE,CAAC;KAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -7,13 +7,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
import { Box, Newline, Text } from 'ink';
|
|
8
8
|
import { RadioButtonSelect } from '../components/shared/RadioButtonSelect.js';
|
|
9
9
|
import { usePrivacySettings } from '../hooks/usePrivacySettings.js';
|
|
10
|
-
import { CloudPaidPrivacyNotice } from './CloudPaidPrivacyNotice.js';
|
|
11
10
|
import { theme } from '../semantic-colors.js';
|
|
12
11
|
import { useKeypress } from '../hooks/useKeypress.js';
|
|
13
12
|
export const CloudFreePrivacyNotice = ({ config, onExit, }) => {
|
|
14
13
|
const { privacyState, updateDataCollectionOptIn } = usePrivacySettings(config);
|
|
15
14
|
useKeypress((key) => {
|
|
16
|
-
if (privacyState.error
|
|
15
|
+
if ((privacyState.error || privacyState.isFreeTier === false) &&
|
|
16
|
+
key.name === 'escape') {
|
|
17
17
|
onExit();
|
|
18
18
|
}
|
|
19
19
|
}, { isActive: true });
|
|
@@ -24,7 +24,7 @@ export const CloudFreePrivacyNotice = ({ config, onExit, }) => {
|
|
|
24
24
|
return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Text, { color: theme.status.error, children: ["Error loading Opt-in settings: ", privacyState.error] }), _jsx(Text, { color: theme.text.secondary, children: "Press Esc to exit." })] }));
|
|
25
25
|
}
|
|
26
26
|
if (privacyState.isFreeTier === false) {
|
|
27
|
-
return _jsx(
|
|
27
|
+
return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "Gemini Code Assist Privacy Notice" }), _jsx(Newline, {}), _jsx(Text, { children: "https://developers.google.com/gemini-code-assist/resources/privacy-notices" }), _jsx(Newline, {}), _jsx(Text, { color: theme.text.secondary, children: "Press Esc to exit." })] }));
|
|
28
28
|
}
|
|
29
29
|
const items = [
|
|
30
30
|
{ label: 'Yes', value: true },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CloudFreePrivacyNotice.js","sourceRoot":"","sources":["../../../../src/ui/privacy/CloudFreePrivacyNotice.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"CloudFreePrivacyNotice.js","sourceRoot":"","sources":["../../../../src/ui/privacy/CloudFreePrivacyNotice.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export declare enum ExtensionUpdateState {
|
|
7
|
+
CHECKING_FOR_UPDATES = "checking for updates",
|
|
8
|
+
UPDATED_NEEDS_RESTART = "updated, needs restart",
|
|
9
|
+
UPDATING = "updating",
|
|
10
|
+
UPDATE_AVAILABLE = "update available",
|
|
11
|
+
UP_TO_DATE = "up to date",
|
|
12
|
+
ERROR = "error checking for updates",
|
|
13
|
+
NOT_UPDATABLE = "not updatable",
|
|
14
|
+
UNKNOWN = "unknown"
|
|
15
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export var ExtensionUpdateState;
|
|
7
|
+
(function (ExtensionUpdateState) {
|
|
8
|
+
ExtensionUpdateState["CHECKING_FOR_UPDATES"] = "checking for updates";
|
|
9
|
+
ExtensionUpdateState["UPDATED_NEEDS_RESTART"] = "updated, needs restart";
|
|
10
|
+
ExtensionUpdateState["UPDATING"] = "updating";
|
|
11
|
+
ExtensionUpdateState["UPDATE_AVAILABLE"] = "update available";
|
|
12
|
+
ExtensionUpdateState["UP_TO_DATE"] = "up to date";
|
|
13
|
+
ExtensionUpdateState["ERROR"] = "error checking for updates";
|
|
14
|
+
ExtensionUpdateState["NOT_UPDATABLE"] = "not updatable";
|
|
15
|
+
ExtensionUpdateState["UNKNOWN"] = "unknown";
|
|
16
|
+
})(ExtensionUpdateState || (ExtensionUpdateState = {}));
|
|
17
|
+
//# sourceMappingURL=extensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../../src/ui/state/extensions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAN,IAAY,oBASX;AATD,WAAY,oBAAoB;IAC9B,qEAA6C,CAAA;IAC7C,wEAAgD,CAAA;IAChD,6CAAqB,CAAA;IACrB,6DAAqC,CAAA;IACrC,iDAAyB,CAAA;IACzB,4DAAoC,CAAA;IACpC,uDAA+B,CAAA;IAC/B,2CAAmB,CAAA;AACrB,CAAC,EATW,oBAAoB,KAApB,oBAAoB,QAS/B"}
|
|
@@ -7,13 +7,13 @@ import { Theme } from './theme.js';
|
|
|
7
7
|
const draculaColors = {
|
|
8
8
|
type: 'dark',
|
|
9
9
|
Background: '#282a36',
|
|
10
|
-
Foreground: '#
|
|
10
|
+
Foreground: '#a3afb7',
|
|
11
11
|
LightBlue: '#8be9fd',
|
|
12
12
|
AccentBlue: '#8be9fd',
|
|
13
13
|
AccentPurple: '#ff79c6',
|
|
14
14
|
AccentCyan: '#8be9fd',
|
|
15
15
|
AccentGreen: '#50fa7b',
|
|
16
|
-
AccentYellow: '#
|
|
16
|
+
AccentYellow: '#fff783',
|
|
17
17
|
AccentRed: '#ff5555',
|
|
18
18
|
DiffAdded: '#11431d',
|
|
19
19
|
DiffRemoved: '#6e1818',
|
package/dist/src/ui/types.d.ts
CHANGED
|
@@ -78,6 +78,10 @@ export type HistoryItemError = HistoryItemBase & {
|
|
|
78
78
|
type: 'error';
|
|
79
79
|
text: string;
|
|
80
80
|
};
|
|
81
|
+
export type HistoryItemWarning = HistoryItemBase & {
|
|
82
|
+
type: 'warning';
|
|
83
|
+
text: string;
|
|
84
|
+
};
|
|
81
85
|
export type HistoryItemAbout = HistoryItemBase & {
|
|
82
86
|
type: 'about';
|
|
83
87
|
cliVersion: string;
|
|
@@ -118,13 +122,17 @@ export type HistoryItemCompression = HistoryItemBase & {
|
|
|
118
122
|
type: 'compression';
|
|
119
123
|
compression: CompressionProps;
|
|
120
124
|
};
|
|
121
|
-
export type
|
|
125
|
+
export type HistoryItemExtensionsList = HistoryItemBase & {
|
|
126
|
+
type: 'extensions_list';
|
|
127
|
+
};
|
|
128
|
+
export type HistoryItemWithoutId = HistoryItemUser | HistoryItemUserShell | HistoryItemGemini | HistoryItemGeminiContent | HistoryItemInfo | HistoryItemError | HistoryItemWarning | HistoryItemAbout | HistoryItemHelp | HistoryItemToolGroup | HistoryItemStats | HistoryItemModelStats | HistoryItemToolStats | HistoryItemQuit | HistoryItemCompression | HistoryItemExtensionsList;
|
|
122
129
|
export type HistoryItem = HistoryItemWithoutId & {
|
|
123
130
|
id: number;
|
|
124
131
|
};
|
|
125
132
|
export declare enum MessageType {
|
|
126
133
|
INFO = "info",
|
|
127
134
|
ERROR = "error",
|
|
135
|
+
WARNING = "warning",
|
|
128
136
|
USER = "user",
|
|
129
137
|
ABOUT = "about",
|
|
130
138
|
HELP = "help",
|
|
@@ -133,7 +141,8 @@ export declare enum MessageType {
|
|
|
133
141
|
TOOL_STATS = "tool_stats",
|
|
134
142
|
QUIT = "quit",
|
|
135
143
|
GEMINI = "gemini",
|
|
136
|
-
COMPRESSION = "compression"
|
|
144
|
+
COMPRESSION = "compression",
|
|
145
|
+
EXTENSIONS_LIST = "extensions_list"
|
|
137
146
|
}
|
|
138
147
|
export type Message = {
|
|
139
148
|
type: MessageType.INFO | MessageType.ERROR | MessageType.USER;
|
package/dist/src/ui/types.js
CHANGED
|
@@ -41,6 +41,7 @@ export var MessageType;
|
|
|
41
41
|
(function (MessageType) {
|
|
42
42
|
MessageType["INFO"] = "info";
|
|
43
43
|
MessageType["ERROR"] = "error";
|
|
44
|
+
MessageType["WARNING"] = "warning";
|
|
44
45
|
MessageType["USER"] = "user";
|
|
45
46
|
MessageType["ABOUT"] = "about";
|
|
46
47
|
MessageType["HELP"] = "help";
|
|
@@ -50,5 +51,6 @@ export var MessageType;
|
|
|
50
51
|
MessageType["QUIT"] = "quit";
|
|
51
52
|
MessageType["GEMINI"] = "gemini";
|
|
52
53
|
MessageType["COMPRESSION"] = "compression";
|
|
54
|
+
MessageType["EXTENSIONS_LIST"] = "extensions_list";
|
|
53
55
|
})(MessageType || (MessageType = {}));
|
|
54
56
|
//# sourceMappingURL=types.js.map
|
package/dist/src/ui/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ui/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAkB,MAAM,OAAO,CAAC;AAIvC,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,gDAAgD;IAChD,gDAAmC,CAAA;IACnC,qDAAqD;IACrD,kCAAqB,CAAA;IACrB,6BAA6B;IAC7B,4CAA+B,CAAA;AACjC,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB;AAED,gDAAgD;AAChD,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,2CAAyB,CAAA;IACzB,qEAAmD,CAAA;AACrD,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,oDAAoD;AACpD,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,wDAAqC,CAAA;IACrC,4DAA4D;AAC9D,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;IACnB,iCAAe,CAAA;AACjB,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ui/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAkB,MAAM,OAAO,CAAC;AAIvC,MAAM,CAAN,IAAY,SAOX;AAPD,WAAY,SAAS;IACnB,gDAAgD;IAChD,gDAAmC,CAAA;IACnC,qDAAqD;IACrD,kCAAqB,CAAA;IACrB,6BAA6B;IAC7B,4CAA+B,CAAA;AACjC,CAAC,EAPW,SAAS,KAAT,SAAS,QAOpB;AAED,gDAAgD;AAChD,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,2CAAyB,CAAA;IACzB,qEAAmD,CAAA;AACrD,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,oDAAoD;AACpD,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,wDAAqC,CAAA;IACrC,4DAA4D;AAC9D,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,uCAAqB,CAAA;IACrB,2CAAyB,CAAA;IACzB,yCAAuB,CAAA;IACvB,qCAAmB,CAAA;IACnB,iCAAe,CAAA;AACjB,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB;AA8ID,gFAAgF;AAChF,MAAM,CAAN,IAAY,WAcX;AAdD,WAAY,WAAW;IACrB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,kCAAmB,CAAA;IACnB,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,4BAAa,CAAA;IACb,8BAAe,CAAA;IACf,0CAA2B,CAAA;IAC3B,wCAAyB,CAAA;IACzB,4BAAa,CAAA;IACb,gCAAiB,CAAA;IACjB,0CAA2B,CAAA;IAC3B,kDAAmC,CAAA;AACrC,CAAC,EAdW,WAAW,KAAX,WAAW,QActB"}
|
|
@@ -16,7 +16,7 @@ describe('<MarkdownDisplay />', () => {
|
|
|
16
16
|
terminalWidth: 80,
|
|
17
17
|
availableTerminalHeight: 40,
|
|
18
18
|
};
|
|
19
|
-
const mockSettings = new LoadedSettings({ path: '', settings: {} }, { path: '', settings: {} }, { path: '', settings: {} }, { path: '', settings: {} }, true, new Set());
|
|
19
|
+
const mockSettings = new LoadedSettings({ path: '', settings: {}, originalSettings: {} }, { path: '', settings: {}, originalSettings: {} }, { path: '', settings: {}, originalSettings: {} }, { path: '', settings: {}, originalSettings: {} }, true, new Set());
|
|
20
20
|
beforeEach(() => {
|
|
21
21
|
vi.clearAllMocks();
|
|
22
22
|
});
|
|
@@ -137,7 +137,11 @@ Another paragraph.
|
|
|
137
137
|
});
|
|
138
138
|
it('hides line numbers in code blocks when showLineNumbers is false', () => {
|
|
139
139
|
const text = '```javascript\nconst x = 1;\n```'.replace(/\n/g, EOL);
|
|
140
|
-
const settings = new LoadedSettings({ path: '', settings: {}
|
|
140
|
+
const settings = new LoadedSettings({ path: '', settings: {}, originalSettings: {} }, { path: '', settings: {}, originalSettings: {} }, {
|
|
141
|
+
path: '',
|
|
142
|
+
settings: { ui: { showLineNumbers: false } },
|
|
143
|
+
originalSettings: { ui: { showLineNumbers: false } },
|
|
144
|
+
}, { path: '', settings: {}, originalSettings: {} }, true, new Set());
|
|
141
145
|
const { lastFrame } = render(_jsx(SettingsContext.Provider, { value: settings, children: _jsx(MarkdownDisplay, { ...baseProps, text: text }) }));
|
|
142
146
|
expect(lastFrame()).toMatchSnapshot();
|
|
143
147
|
expect(lastFrame()).not.toContain(' 1 ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/MarkdownDisplay.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE9B,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,SAAS,GAAG;QAChB,SAAS,EAAE,KAAK;QAChB,aAAa,EAAE,EAAE;QACjB,uBAAuB,EAAE,EAAE;KAC5B,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,cAAc,CACrC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"MarkdownDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/MarkdownDisplay.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,9 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { exec } from 'node:child_process';
|
|
7
|
-
import { promisify } from 'node:util';
|
|
8
6
|
import * as fs from 'node:fs/promises';
|
|
9
7
|
import * as path from 'node:path';
|
|
10
|
-
|
|
8
|
+
import { spawnAsync } from '@google/gemini-cli-core';
|
|
11
9
|
/**
|
|
12
10
|
* Checks if the system clipboard contains an image (macOS only for now)
|
|
13
11
|
* @returns true if clipboard contains an image
|
|
@@ -18,8 +16,9 @@ export async function clipboardHasImage() {
|
|
|
18
16
|
}
|
|
19
17
|
try {
|
|
20
18
|
// Use osascript to check clipboard type
|
|
21
|
-
const { stdout } = await
|
|
22
|
-
|
|
19
|
+
const { stdout } = await spawnAsync('osascript', ['-e', 'clipboard info']);
|
|
20
|
+
const imageRegex = /«class PNGf»|TIFF picture|JPEG picture|GIF picture|«class JPEG»|«class TIFF»/;
|
|
21
|
+
return imageRegex.test(stdout);
|
|
23
22
|
}
|
|
24
23
|
catch {
|
|
25
24
|
return false;
|
|
@@ -66,7 +65,7 @@ export async function saveClipboardImage(targetDir) {
|
|
|
66
65
|
return "error"
|
|
67
66
|
end try
|
|
68
67
|
`;
|
|
69
|
-
const { stdout } = await
|
|
68
|
+
const { stdout } = await spawnAsync('osascript', ['-e', script]);
|
|
70
69
|
if (stdout.trim() === 'success') {
|
|
71
70
|
// Verify the file was created and has content
|
|
72
71
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboardUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/clipboardUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"clipboardUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/clipboardUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,3 +8,4 @@ export type HighlightToken = {
|
|
|
8
8
|
type: 'default' | 'command' | 'file';
|
|
9
9
|
};
|
|
10
10
|
export declare function parseInputForHighlighting(text: string, index: number): readonly HighlightToken[];
|
|
11
|
+
export declare function buildSegmentsForVisualSlice(tokens: readonly HighlightToken[], sliceStart: number, sliceEnd: number): readonly HighlightToken[];
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { cpLen, cpSlice } from './textUtils.js';
|
|
6
7
|
const HIGHLIGHT_REGEX = /(^\/[a-zA-Z0-9_-]+|@(?:\\ |[a-zA-Z0-9_./-])+)/g;
|
|
7
8
|
export function parseInputForHighlighting(text, index) {
|
|
8
9
|
if (!text) {
|
|
@@ -47,4 +48,31 @@ export function parseInputForHighlighting(text, index) {
|
|
|
47
48
|
}
|
|
48
49
|
return tokens;
|
|
49
50
|
}
|
|
51
|
+
export function buildSegmentsForVisualSlice(tokens, sliceStart, sliceEnd) {
|
|
52
|
+
if (sliceStart >= sliceEnd)
|
|
53
|
+
return [];
|
|
54
|
+
const segments = [];
|
|
55
|
+
let tokenCpStart = 0;
|
|
56
|
+
for (const token of tokens) {
|
|
57
|
+
const tokenLen = cpLen(token.text);
|
|
58
|
+
const tokenStart = tokenCpStart;
|
|
59
|
+
const tokenEnd = tokenStart + tokenLen;
|
|
60
|
+
const overlapStart = Math.max(tokenStart, sliceStart);
|
|
61
|
+
const overlapEnd = Math.min(tokenEnd, sliceEnd);
|
|
62
|
+
if (overlapStart < overlapEnd) {
|
|
63
|
+
const sliceStartInToken = overlapStart - tokenStart;
|
|
64
|
+
const sliceEndInToken = overlapEnd - tokenStart;
|
|
65
|
+
const rawSlice = cpSlice(token.text, sliceStartInToken, sliceEndInToken);
|
|
66
|
+
const last = segments[segments.length - 1];
|
|
67
|
+
if (last && last.type === token.type) {
|
|
68
|
+
last.text += rawSlice;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
segments.push({ type: token.type, text: rawSlice });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
tokenCpStart += tokenLen;
|
|
75
|
+
}
|
|
76
|
+
return segments;
|
|
77
|
+
}
|
|
50
78
|
//# sourceMappingURL=highlight.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../../../src/ui/utils/highlight.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../../../src/ui/utils/highlight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { type SlashCommand } from '../ui/commands/types.js';
|
|
7
|
+
export type ParsedSlashCommand = {
|
|
8
|
+
commandToExecute: SlashCommand | undefined;
|
|
9
|
+
args: string;
|
|
10
|
+
canonicalPath: string[];
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Parses a raw slash command string into its command, arguments, and canonical path.
|
|
14
|
+
* If no valid command is found, the `commandToExecute` property will be `undefined`.
|
|
15
|
+
*
|
|
16
|
+
* @param query The raw input string, e.g., "/memory add some data" or "/help".
|
|
17
|
+
* @param commands The list of available top-level slash commands.
|
|
18
|
+
* @returns An object containing the resolved command, its arguments, and its canonical path.
|
|
19
|
+
*/
|
|
20
|
+
export declare const parseSlashCommand: (query: string, commands: readonly SlashCommand[]) => ParsedSlashCommand;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import {} from '../ui/commands/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Parses a raw slash command string into its command, arguments, and canonical path.
|
|
9
|
+
* If no valid command is found, the `commandToExecute` property will be `undefined`.
|
|
10
|
+
*
|
|
11
|
+
* @param query The raw input string, e.g., "/memory add some data" or "/help".
|
|
12
|
+
* @param commands The list of available top-level slash commands.
|
|
13
|
+
* @returns An object containing the resolved command, its arguments, and its canonical path.
|
|
14
|
+
*/
|
|
15
|
+
export const parseSlashCommand = (query, commands) => {
|
|
16
|
+
const trimmed = query.trim();
|
|
17
|
+
const parts = trimmed.substring(1).trim().split(/\s+/);
|
|
18
|
+
const commandPath = parts.filter((p) => p); // The parts of the command, e.g., ['memory', 'add']
|
|
19
|
+
let currentCommands = commands;
|
|
20
|
+
let commandToExecute;
|
|
21
|
+
let pathIndex = 0;
|
|
22
|
+
const canonicalPath = [];
|
|
23
|
+
for (const part of commandPath) {
|
|
24
|
+
// TODO: For better performance and architectural clarity, this two-pass
|
|
25
|
+
// search could be replaced. A more optimal approach would be to
|
|
26
|
+
// pre-compute a single lookup map in `CommandService.ts` that resolves
|
|
27
|
+
// all name and alias conflicts during the initial loading phase. The
|
|
28
|
+
// processor would then perform a single, fast lookup on that map.
|
|
29
|
+
// First pass: check for an exact match on the primary command name.
|
|
30
|
+
let foundCommand = currentCommands.find((cmd) => cmd.name === part);
|
|
31
|
+
// Second pass: if no primary name matches, check for an alias.
|
|
32
|
+
if (!foundCommand) {
|
|
33
|
+
foundCommand = currentCommands.find((cmd) => cmd.altNames?.includes(part));
|
|
34
|
+
}
|
|
35
|
+
if (foundCommand) {
|
|
36
|
+
commandToExecute = foundCommand;
|
|
37
|
+
canonicalPath.push(foundCommand.name);
|
|
38
|
+
pathIndex++;
|
|
39
|
+
if (foundCommand.subCommands) {
|
|
40
|
+
currentCommands = foundCommand.subCommands;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const args = parts.slice(pathIndex).join(' ');
|
|
51
|
+
return { commandToExecute, args, canonicalPath };
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/utils/commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAqB,MAAM,yBAAyB,CAAC;AAQ5D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,KAAa,EACb,QAAiC,EACb,EAAE;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,oDAAoD;IAEhG,IAAI,eAAe,GAAG,QAAQ,CAAC;IAC/B,IAAI,gBAA0C,CAAC;IAC/C,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,wEAAwE;QACxE,gEAAgE;QAChE,uEAAuE;QACvE,qEAAqE;QACrE,kEAAkE;QAElE,oEAAoE;QACpE,IAAI,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAEpE,+DAA+D;QAC/D,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAC7B,CAAC;QACJ,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,gBAAgB,GAAG,YAAY,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACtC,SAAS,EAAE,CAAC;YACZ,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC7B,eAAe,GAAG,YAAY,CAAC,WAAW,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAE9C,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AACnD,CAAC,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect } from 'vitest';
|
|
7
|
+
import { parseSlashCommand } from './commands.js';
|
|
8
|
+
import { CommandKind } from '../ui/commands/types.js';
|
|
9
|
+
// Mock command structure for testing
|
|
10
|
+
const mockCommands = [
|
|
11
|
+
{
|
|
12
|
+
name: 'help',
|
|
13
|
+
description: 'Show help',
|
|
14
|
+
action: async () => { },
|
|
15
|
+
kind: CommandKind.BUILT_IN,
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'commit',
|
|
19
|
+
description: 'Commit changes',
|
|
20
|
+
action: async () => { },
|
|
21
|
+
kind: CommandKind.FILE,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'memory',
|
|
25
|
+
description: 'Manage memory',
|
|
26
|
+
altNames: ['mem'],
|
|
27
|
+
subCommands: [
|
|
28
|
+
{
|
|
29
|
+
name: 'add',
|
|
30
|
+
description: 'Add to memory',
|
|
31
|
+
action: async () => { },
|
|
32
|
+
kind: CommandKind.BUILT_IN,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'clear',
|
|
36
|
+
description: 'Clear memory',
|
|
37
|
+
altNames: ['c'],
|
|
38
|
+
action: async () => { },
|
|
39
|
+
kind: CommandKind.BUILT_IN,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
kind: CommandKind.BUILT_IN,
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
describe('parseSlashCommand', () => {
|
|
46
|
+
it('should parse a simple command without arguments', () => {
|
|
47
|
+
const result = parseSlashCommand('/help', mockCommands);
|
|
48
|
+
expect(result.commandToExecute?.name).toBe('help');
|
|
49
|
+
expect(result.args).toBe('');
|
|
50
|
+
expect(result.canonicalPath).toEqual(['help']);
|
|
51
|
+
});
|
|
52
|
+
it('should parse a simple command with arguments', () => {
|
|
53
|
+
const result = parseSlashCommand('/commit -m "Initial commit"', mockCommands);
|
|
54
|
+
expect(result.commandToExecute?.name).toBe('commit');
|
|
55
|
+
expect(result.args).toBe('-m "Initial commit"');
|
|
56
|
+
expect(result.canonicalPath).toEqual(['commit']);
|
|
57
|
+
});
|
|
58
|
+
it('should parse a subcommand', () => {
|
|
59
|
+
const result = parseSlashCommand('/memory add', mockCommands);
|
|
60
|
+
expect(result.commandToExecute?.name).toBe('add');
|
|
61
|
+
expect(result.args).toBe('');
|
|
62
|
+
expect(result.canonicalPath).toEqual(['memory', 'add']);
|
|
63
|
+
});
|
|
64
|
+
it('should parse a subcommand with arguments', () => {
|
|
65
|
+
const result = parseSlashCommand('/memory add some important data', mockCommands);
|
|
66
|
+
expect(result.commandToExecute?.name).toBe('add');
|
|
67
|
+
expect(result.args).toBe('some important data');
|
|
68
|
+
expect(result.canonicalPath).toEqual(['memory', 'add']);
|
|
69
|
+
});
|
|
70
|
+
it('should handle a command alias', () => {
|
|
71
|
+
const result = parseSlashCommand('/mem add some data', mockCommands);
|
|
72
|
+
expect(result.commandToExecute?.name).toBe('add');
|
|
73
|
+
expect(result.args).toBe('some data');
|
|
74
|
+
expect(result.canonicalPath).toEqual(['memory', 'add']);
|
|
75
|
+
});
|
|
76
|
+
it('should handle a subcommand alias', () => {
|
|
77
|
+
const result = parseSlashCommand('/memory c', mockCommands);
|
|
78
|
+
expect(result.commandToExecute?.name).toBe('clear');
|
|
79
|
+
expect(result.args).toBe('');
|
|
80
|
+
expect(result.canonicalPath).toEqual(['memory', 'clear']);
|
|
81
|
+
});
|
|
82
|
+
it('should return undefined for an unknown command', () => {
|
|
83
|
+
const result = parseSlashCommand('/unknown', mockCommands);
|
|
84
|
+
expect(result.commandToExecute).toBeUndefined();
|
|
85
|
+
expect(result.args).toBe('unknown');
|
|
86
|
+
expect(result.canonicalPath).toEqual([]);
|
|
87
|
+
});
|
|
88
|
+
it('should return the parent command if subcommand is unknown', () => {
|
|
89
|
+
const result = parseSlashCommand('/memory unknownsub some args', mockCommands);
|
|
90
|
+
expect(result.commandToExecute?.name).toBe('memory');
|
|
91
|
+
expect(result.args).toBe('unknownsub some args');
|
|
92
|
+
expect(result.canonicalPath).toEqual(['memory']);
|
|
93
|
+
});
|
|
94
|
+
it('should handle extra whitespace', () => {
|
|
95
|
+
const result = parseSlashCommand(' /memory add some data ', mockCommands);
|
|
96
|
+
expect(result.commandToExecute?.name).toBe('add');
|
|
97
|
+
expect(result.args).toBe('some data');
|
|
98
|
+
expect(result.canonicalPath).toEqual(['memory', 'add']);
|
|
99
|
+
});
|
|
100
|
+
it('should return undefined if query does not start with a slash', () => {
|
|
101
|
+
const result = parseSlashCommand('help', mockCommands);
|
|
102
|
+
expect(result.commandToExecute).toBeUndefined();
|
|
103
|
+
});
|
|
104
|
+
it('should handle an empty query', () => {
|
|
105
|
+
const result = parseSlashCommand('', mockCommands);
|
|
106
|
+
expect(result.commandToExecute).toBeUndefined();
|
|
107
|
+
});
|
|
108
|
+
it('should handle a query with only a slash', () => {
|
|
109
|
+
const result = parseSlashCommand('/', mockCommands);
|
|
110
|
+
expect(result.commandToExecute).toBeUndefined();
|
|
111
|
+
expect(result.args).toBe('');
|
|
112
|
+
expect(result.canonicalPath).toEqual([]);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
//# sourceMappingURL=commands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../../src/utils/commands.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Updates a JSON file while preserving comments and formatting.
|
|
8
|
+
*/
|
|
9
|
+
export declare function updateSettingsFilePreservingFormat(filePath: string, updates: Record<string, unknown>): void;
|