@google/gemini-cli 0.26.0-preview.4 → 0.27.0-nightly.20260126.cb772a5b7
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/README.md +18 -1
- package/dist/google-gemini-cli-0.27.0-nightly.20260121.97aac696f.tgz +0 -0
- package/dist/package.json +3 -4
- package/dist/src/commands/extensions.js +4 -1
- package/dist/src/commands/extensions.js.map +1 -1
- package/dist/src/commands/hooks.js +4 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/mcp/enableDisable.d.ts +13 -0
- package/dist/src/commands/mcp/enableDisable.js +122 -0
- package/dist/src/commands/mcp/enableDisable.js.map +1 -0
- package/dist/src/commands/mcp/list.d.ts +2 -0
- package/dist/src/commands/mcp/list.js +1 -1
- package/dist/src/commands/mcp/list.js.map +1 -1
- package/dist/src/commands/mcp.js +7 -1
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/mcp.test.js +3 -1
- package/dist/src/commands/mcp.test.js.map +1 -1
- package/dist/src/commands/skills.js +4 -1
- package/dist/src/commands/skills.js.map +1 -1
- package/dist/src/config/config.d.ts +4 -0
- package/dist/src/config/config.js +41 -20
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +181 -15
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/keyBindings.d.ts +8 -5
- package/dist/src/config/keyBindings.js +38 -32
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/keyBindings.test.js +8 -5
- package/dist/src/config/keyBindings.test.js.map +1 -1
- package/dist/src/config/mcp/index.d.ts +6 -0
- package/dist/src/config/mcp/index.js +7 -0
- package/dist/src/config/mcp/index.js.map +1 -0
- package/dist/src/config/mcp/mcpServerEnablement.d.ts +145 -0
- package/dist/src/config/mcp/mcpServerEnablement.js +254 -0
- package/dist/src/config/mcp/mcpServerEnablement.js.map +1 -0
- package/dist/src/config/mcp/mcpServerEnablement.test.js +147 -0
- package/dist/src/config/mcp/mcpServerEnablement.test.js.map +1 -0
- package/dist/src/config/sandboxConfig.test.js +11 -5
- package/dist/src/config/sandboxConfig.test.js.map +1 -1
- package/dist/src/config/settings.js +76 -0
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settings.test.js +44 -0
- package/dist/src/config/settings.test.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +21 -78
- package/dist/src/config/settingsSchema.js +21 -79
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +1 -1
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/config/settings_repro.test.js +6 -2
- package/dist/src/config/settings_repro.test.js.map +1 -1
- package/dist/src/gemini.js +12 -7
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +140 -10
- 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 +11 -3
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCli.test.js +193 -3
- package/dist/src/nonInteractiveCli.test.js.map +1 -1
- package/dist/src/nonInteractiveCliCommands.js +6 -1
- package/dist/src/nonInteractiveCliCommands.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +2 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/FileCommandLoader.js +12 -4
- package/dist/src/services/FileCommandLoader.js.map +1 -1
- package/dist/src/services/FileCommandLoader.test.js +56 -0
- package/dist/src/services/FileCommandLoader.test.js.map +1 -1
- package/dist/src/test-utils/mockCommandContext.js +2 -0
- package/dist/src/test-utils/mockCommandContext.js.map +1 -1
- package/dist/src/test-utils/persistentStateFake.d.ts +26 -0
- package/dist/src/test-utils/persistentStateFake.js +39 -0
- package/dist/src/test-utils/persistentStateFake.js.map +1 -0
- package/dist/src/test-utils/render.d.ts +10 -1
- package/dist/src/test-utils/render.js +45 -16
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/App.test.js +96 -38
- package/dist/src/ui/App.test.js.map +1 -1
- package/dist/src/ui/AppContainer.js +78 -18
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +185 -19
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/auth/ApiAuthDialog.test.js +5 -5
- package/dist/src/ui/auth/ApiAuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +13 -9
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js +6 -6
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +2 -0
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.test.js +12 -0
- package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
- package/dist/src/ui/commands/agentsCommand.js +75 -4
- package/dist/src/ui/commands/agentsCommand.js.map +1 -1
- package/dist/src/ui/commands/agentsCommand.test.js +114 -0
- package/dist/src/ui/commands/agentsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.js +53 -49
- package/dist/src/ui/commands/directoryCommand.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.test.js +79 -23
- package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
- package/dist/src/ui/commands/initCommand.test.js +8 -4
- package/dist/src/ui/commands/initCommand.test.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +136 -5
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/policiesCommand.js +33 -20
- package/dist/src/ui/commands/policiesCommand.js.map +1 -1
- package/dist/src/ui/commands/policiesCommand.test.js +7 -4
- package/dist/src/ui/commands/policiesCommand.test.js.map +1 -1
- package/dist/src/ui/commands/rewindCommand.d.ts +7 -0
- package/dist/src/ui/commands/rewindCommand.js +132 -0
- package/dist/src/ui/commands/rewindCommand.js.map +1 -0
- package/dist/src/ui/commands/rewindCommand.test.js +242 -0
- package/dist/src/ui/commands/rewindCommand.test.js.map +1 -0
- package/dist/src/ui/commands/skillsCommand.js +6 -4
- package/dist/src/ui/commands/skillsCommand.js.map +1 -1
- package/dist/src/ui/commands/skillsCommand.test.js +17 -3
- package/dist/src/ui/commands/skillsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +5 -3
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/AboutBox.d.ts +1 -0
- package/dist/src/ui/components/AboutBox.js +5 -1
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/AboutBox.test.js +8 -2
- package/dist/src/ui/components/AboutBox.test.js.map +1 -1
- package/dist/src/ui/components/AgentConfigDialog.d.ts +18 -0
- package/dist/src/ui/components/AgentConfigDialog.js +296 -0
- package/dist/src/ui/components/AgentConfigDialog.js.map +1 -0
- package/dist/src/ui/components/AgentConfigDialog.test.js +241 -0
- package/dist/src/ui/components/AgentConfigDialog.test.js.map +1 -0
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.js +9 -2
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.js.map +1 -1
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +54 -25
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +1 -1
- package/dist/src/ui/components/AppHeader.js +4 -1
- package/dist/src/ui/components/AppHeader.js.map +1 -1
- package/dist/src/ui/components/AppHeader.test.js +95 -22
- package/dist/src/ui/components/AppHeader.test.js.map +1 -1
- package/dist/src/ui/components/{AutoAcceptIndicator.d.ts → ApprovalModeIndicator.d.ts} +2 -2
- package/dist/src/ui/components/{AutoAcceptIndicator.js → ApprovalModeIndicator.js} +8 -3
- package/dist/src/ui/components/ApprovalModeIndicator.js.map +1 -0
- package/dist/src/ui/components/ApprovalModeIndicator.test.d.ts +6 -0
- package/dist/src/ui/components/{AutoAcceptIndicator.test.js → ApprovalModeIndicator.test.js} +13 -7
- package/dist/src/ui/components/ApprovalModeIndicator.test.js.map +1 -0
- package/dist/src/ui/components/AskUserDialog.d.ts +39 -0
- package/dist/src/ui/components/AskUserDialog.js +618 -0
- package/dist/src/ui/components/AskUserDialog.js.map +1 -0
- package/dist/src/ui/components/AskUserDialog.test.d.ts +6 -0
- package/dist/src/ui/components/AskUserDialog.test.js +598 -0
- package/dist/src/ui/components/AskUserDialog.test.js.map +1 -0
- package/dist/src/ui/components/Composer.d.ts +3 -1
- package/dist/src/ui/components/Composer.js +5 -5
- package/dist/src/ui/components/Composer.js.map +1 -1
- package/dist/src/ui/components/Composer.test.js +6 -6
- package/dist/src/ui/components/Composer.test.js.map +1 -1
- package/dist/src/ui/components/ConfigInitDisplay.js +3 -4
- package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -1
- package/dist/src/ui/components/ConfigInitDisplay.test.js +13 -29
- package/dist/src/ui/components/ConfigInitDisplay.test.js.map +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.test.js +7 -3
- package/dist/src/ui/components/ContextUsageDisplay.test.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +13 -0
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/DialogManager.test.js +24 -0
- package/dist/src/ui/components/DialogManager.test.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +3 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Footer.test.js +7 -0
- package/dist/src/ui/components/Footer.test.js.map +1 -1
- package/dist/src/ui/components/Help.js +5 -2
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +32 -20
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.js +75 -1
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.js +2 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js +12 -10
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Notifications.js +14 -20
- package/dist/src/ui/components/Notifications.js.map +1 -1
- package/dist/src/ui/components/Notifications.test.js +45 -35
- package/dist/src/ui/components/Notifications.test.js.map +1 -1
- package/dist/src/ui/components/RewindViewer.d.ts +1 -1
- package/dist/src/ui/components/RewindViewer.js +65 -17
- package/dist/src/ui/components/RewindViewer.js.map +1 -1
- package/dist/src/ui/components/RewindViewer.test.js +5 -3
- package/dist/src/ui/components/RewindViewer.test.js.map +1 -1
- package/dist/src/ui/components/SessionBrowser.js +3 -2
- package/dist/src/ui/components/SessionBrowser.js.map +1 -1
- package/dist/src/ui/components/SessionBrowser.test.js +10 -3
- package/dist/src/ui/components/SessionBrowser.test.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +1 -1
- package/dist/src/ui/components/SettingsDialog.js +266 -516
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +2 -2
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/ShellInputPrompt.test.js +17 -8
- package/dist/src/ui/components/ShellInputPrompt.test.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.js +4 -3
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/ToolConfirmationQueue.d.ts +12 -0
- package/dist/src/ui/components/ToolConfirmationQueue.js +30 -0
- package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -0
- package/dist/src/ui/components/ToolConfirmationQueue.test.d.ts +6 -0
- package/dist/src/ui/components/ToolConfirmationQueue.test.js +71 -0
- package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -0
- package/dist/src/ui/components/messages/RedirectionConfirmation.test.js +2 -4
- package/dist/src/ui/components/messages/RedirectionConfirmation.test.js.map +1 -1
- package/dist/src/ui/components/messages/ShellToolMessage.js +6 -41
- package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +3 -2
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +61 -76
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +20 -7
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.js +34 -18
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +209 -24
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.d.ts +1 -1
- package/dist/src/ui/components/messages/ToolMessage.js +7 -29
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessageFocusHint.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js +89 -0
- package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolShared.d.ts +26 -0
- package/dist/src/ui/components/messages/ToolShared.js +59 -6
- package/dist/src/ui/components/messages/ToolShared.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSelectionList.d.ts +3 -1
- package/dist/src/ui/components/shared/BaseSelectionList.js +4 -2
- package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSelectionList.test.js +1 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSettingsDialog.d.ts +72 -0
- package/dist/src/ui/components/shared/BaseSettingsDialog.js +293 -0
- package/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -0
- package/dist/src/ui/components/shared/BaseSettingsDialog.test.d.ts +6 -0
- package/dist/src/ui/components/shared/BaseSettingsDialog.test.js +434 -0
- package/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +1 -0
- package/dist/src/ui/components/shared/ExpandableText.d.ts +17 -0
- package/dist/src/ui/components/{PrepareLabel.js → shared/ExpandableText.js} +30 -15
- package/dist/src/ui/components/shared/ExpandableText.js.map +1 -0
- package/dist/src/ui/components/shared/ExpandableText.test.d.ts +6 -0
- package/dist/src/ui/components/{PrepareLabel.test.js → shared/ExpandableText.test.js} +22 -11
- package/dist/src/ui/components/shared/ExpandableText.test.js.map +1 -0
- package/dist/src/ui/components/shared/TabHeader.d.ts +51 -0
- package/dist/src/ui/components/shared/TabHeader.js +42 -0
- package/dist/src/ui/components/shared/TabHeader.js.map +1 -0
- package/dist/src/ui/components/shared/TabHeader.test.d.ts +6 -0
- package/dist/src/ui/components/shared/TabHeader.test.js +106 -0
- package/dist/src/ui/components/shared/TabHeader.test.js.map +1 -0
- package/dist/src/ui/components/shared/TextInput.test.js +32 -24
- package/dist/src/ui/components/shared/TextInput.test.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.d.ts +13 -0
- package/dist/src/ui/components/shared/text-buffer.js +173 -14
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.test.js +256 -44
- package/dist/src/ui/components/shared/text-buffer.test.js.map +1 -1
- package/dist/src/ui/components/shared/vim-buffer-actions.test.js +4 -1
- package/dist/src/ui/components/shared/vim-buffer-actions.test.js.map +1 -1
- package/dist/src/ui/components/views/McpStatus.d.ts +1 -0
- package/dist/src/ui/components/views/McpStatus.js +30 -18
- package/dist/src/ui/components/views/McpStatus.js.map +1 -1
- package/dist/src/ui/components/views/McpStatus.test.js +7 -0
- package/dist/src/ui/components/views/McpStatus.test.js.map +1 -1
- package/dist/src/ui/constants/tips.js +2 -2
- package/dist/src/ui/constants/tips.js.map +1 -1
- 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.d.ts +3 -2
- package/dist/src/ui/contexts/KeypressContext.js +33 -25
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.test.js +151 -41
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
- package/dist/src/ui/contexts/MouseContext.test.js +8 -8
- package/dist/src/ui/contexts/MouseContext.test.js.map +1 -1
- package/dist/src/ui/contexts/ToolActionsContext.d.ts +20 -0
- package/dist/src/ui/contexts/ToolActionsContext.js +74 -0
- package/dist/src/ui/contexts/ToolActionsContext.js.map +1 -0
- package/dist/src/ui/contexts/ToolActionsContext.test.d.ts +6 -0
- package/dist/src/ui/contexts/ToolActionsContext.test.js +135 -0
- package/dist/src/ui/contexts/ToolActionsContext.test.js.map +1 -0
- package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -1
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +6 -2
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +19 -4
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/keyToAnsi.js +1 -1
- package/dist/src/ui/hooks/keyToAnsi.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +3 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +24 -7
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.test.js +126 -30
- package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/toolMapping.js +8 -11
- package/dist/src/ui/hooks/toolMapping.js.map +1 -1
- package/dist/src/ui/hooks/toolMapping.test.js +27 -6
- package/dist/src/ui/hooks/toolMapping.test.js.map +1 -1
- package/dist/src/ui/hooks/{useAutoAcceptIndicator.d.ts → useApprovalModeIndicator.d.ts} +2 -2
- package/dist/src/ui/hooks/{useAutoAcceptIndicator.js → useApprovalModeIndicator.js} +25 -11
- package/dist/src/ui/hooks/useApprovalModeIndicator.js.map +1 -0
- package/dist/src/ui/hooks/useApprovalModeIndicator.test.d.ts +6 -0
- package/dist/src/ui/hooks/{useAutoAcceptIndicator.test.js → useApprovalModeIndicator.test.js} +56 -31
- package/dist/src/ui/hooks/useApprovalModeIndicator.test.js.map +1 -0
- package/dist/src/ui/hooks/useConfirmingTool.d.ts +16 -0
- package/dist/src/ui/hooks/useConfirmingTool.js +39 -0
- package/dist/src/ui/hooks/useConfirmingTool.js.map +1 -0
- package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +20 -8
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +79 -19
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/hooks/useIncludeDirsTrust.d.ts +1 -1
- package/dist/src/ui/hooks/useIncludeDirsTrust.js +9 -20
- package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -1
- package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +33 -12
- package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -1
- package/dist/src/ui/hooks/useKeypress.test.js +10 -3
- package/dist/src/ui/hooks/useKeypress.test.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +7 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js +3 -3
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +17 -9
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.d.ts +2 -2
- package/dist/src/ui/hooks/usePhraseCycler.js +4 -14
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.test.js +13 -42
- package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
- package/dist/src/ui/hooks/useSelectionList.d.ts +4 -1
- package/dist/src/ui/hooks/useSelectionList.js +51 -13
- package/dist/src/ui/hooks/useSelectionList.js.map +1 -1
- package/dist/src/ui/hooks/useSelectionList.test.js +35 -3
- package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -1
- package/dist/src/ui/hooks/useSessionResume.test.js +3 -2
- package/dist/src/ui/hooks/useSessionResume.test.js.map +1 -1
- package/dist/src/ui/hooks/useShellInactivityStatus.d.ts +26 -0
- package/dist/src/ui/hooks/useShellInactivityStatus.js +46 -0
- package/dist/src/ui/hooks/useShellInactivityStatus.js.map +1 -0
- package/dist/src/ui/hooks/useShellInactivityStatus.test.d.ts +6 -0
- package/dist/src/ui/hooks/useShellInactivityStatus.test.js +84 -0
- package/dist/src/ui/hooks/useShellInactivityStatus.test.js.map +1 -0
- package/dist/src/ui/hooks/useTabbedNavigation.d.ts +53 -0
- package/dist/src/ui/hooks/useTabbedNavigation.js +150 -0
- package/dist/src/ui/hooks/useTabbedNavigation.js.map +1 -0
- package/dist/src/ui/hooks/useTabbedNavigation.test.d.ts +6 -0
- package/dist/src/ui/hooks/useTabbedNavigation.test.js +187 -0
- package/dist/src/ui/hooks/useTabbedNavigation.test.js.map +1 -0
- package/dist/src/ui/hooks/useTips.d.ts +10 -0
- package/dist/src/ui/hooks/useTips.js +18 -0
- package/dist/src/ui/hooks/useTips.js.map +1 -0
- package/dist/src/ui/hooks/useTips.test.d.ts +6 -0
- package/dist/src/ui/hooks/useTips.test.js +33 -0
- package/dist/src/ui/hooks/useTips.test.js.map +1 -0
- package/dist/src/ui/hooks/useToolExecutionScheduler.d.ts +30 -0
- package/dist/src/ui/hooks/useToolExecutionScheduler.js +113 -0
- package/dist/src/ui/hooks/useToolExecutionScheduler.js.map +1 -0
- package/dist/src/ui/hooks/useToolExecutionScheduler.test.d.ts +6 -0
- package/dist/src/ui/hooks/useToolExecutionScheduler.test.js +296 -0
- package/dist/src/ui/hooks/useToolExecutionScheduler.test.js.map +1 -0
- package/dist/src/ui/hooks/useToolScheduler.d.ts +29 -0
- package/dist/src/ui/hooks/useToolScheduler.js +30 -0
- package/dist/src/ui/hooks/useToolScheduler.js.map +1 -0
- package/dist/src/ui/hooks/useToolScheduler.test.js +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolSchedulerFacade.test.d.ts +6 -0
- package/dist/src/ui/hooks/useToolSchedulerFacade.test.js +45 -0
- package/dist/src/ui/hooks/useToolSchedulerFacade.test.js.map +1 -0
- package/dist/src/ui/hooks/useTurnActivityMonitor.d.ts +16 -0
- package/dist/src/ui/hooks/useTurnActivityMonitor.js +49 -0
- package/dist/src/ui/hooks/useTurnActivityMonitor.js.map +1 -0
- package/dist/src/ui/hooks/useTurnActivityMonitor.test.d.ts +6 -0
- package/dist/src/ui/hooks/useTurnActivityMonitor.test.js +97 -0
- package/dist/src/ui/hooks/useTurnActivityMonitor.test.js.map +1 -0
- package/dist/src/ui/hooks/vim.js +5 -3
- package/dist/src/ui/hooks/vim.js.map +1 -1
- package/dist/src/ui/hooks/vim.test.js +4 -2
- package/dist/src/ui/hooks/vim.test.js.map +1 -1
- package/dist/src/ui/keyMatchers.js +5 -13
- package/dist/src/ui/keyMatchers.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +23 -20
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/layouts/DefaultAppLayout.js +10 -2
- package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
- package/dist/src/ui/noninteractive/nonInteractiveUi.js +1 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -1
- package/dist/src/ui/types.d.ts +11 -3
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.d.ts +4 -4
- package/dist/src/ui/utils/clipboardUtils.js +198 -12
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.test.js +219 -47
- package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.windows.test.js +3 -0
- package/dist/src/ui/utils/clipboardUtils.windows.test.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.test.js +11 -3
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
- package/dist/src/ui/utils/directoryUtils.d.ts +10 -0
- package/dist/src/ui/utils/directoryUtils.js +12 -0
- package/dist/src/ui/utils/directoryUtils.js.map +1 -1
- package/dist/src/ui/utils/directoryUtils.test.js +8 -4
- package/dist/src/ui/utils/directoryUtils.test.js.map +1 -1
- package/dist/src/ui/utils/formatters.d.ts +1 -1
- package/dist/src/ui/utils/formatters.js +2 -3
- package/dist/src/ui/utils/formatters.js.map +1 -1
- package/dist/src/ui/utils/highlight.d.ts +2 -2
- package/dist/src/ui/utils/highlight.js +9 -3
- package/dist/src/ui/utils/highlight.js.map +1 -1
- package/dist/src/ui/utils/highlight.test.js +3 -0
- package/dist/src/ui/utils/highlight.test.js.map +1 -1
- package/dist/src/ui/utils/terminalCapabilityManager.d.ts +1 -2
- package/dist/src/ui/utils/terminalCapabilityManager.js +2 -8
- package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
- package/dist/src/ui/utils/terminalCapabilityManager.test.js +2 -3
- package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -1
- package/dist/src/ui/utils/terminalSetup.test.js +5 -3
- package/dist/src/ui/utils/terminalSetup.test.js.map +1 -1
- package/dist/src/ui/utils/textUtils.d.ts +5 -0
- package/dist/src/ui/utils/textUtils.js +14 -0
- package/dist/src/ui/utils/textUtils.js.map +1 -1
- package/dist/src/ui/utils/textUtils.test.js +19 -1
- package/dist/src/ui/utils/textUtils.test.js.map +1 -1
- package/dist/src/utils/cleanup.js +15 -0
- package/dist/src/utils/cleanup.js.map +1 -1
- package/dist/src/utils/events.d.ts +1 -6
- package/dist/src/utils/events.js +0 -2
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/events.test.js +4 -4
- package/dist/src/utils/events.test.js.map +1 -1
- package/dist/src/utils/handleAutoUpdate.test.js +3 -0
- package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
- package/dist/src/utils/installationInfo.js +4 -2
- package/dist/src/utils/installationInfo.js.map +1 -1
- package/dist/src/utils/persistentState.d.ts +2 -0
- package/dist/src/utils/persistentState.js.map +1 -1
- package/dist/src/utils/windowTitle.d.ts +2 -1
- package/dist/src/utils/windowTitle.js +8 -1
- package/dist/src/utils/windowTitle.js.map +1 -1
- package/dist/src/utils/windowTitle.test.js +25 -1
- package/dist/src/utils/windowTitle.test.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.js +26 -5
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -5
- package/dist/google-gemini-cli-0.26.0-preview.3.tgz +0 -0
- package/dist/src/ui/components/AutoAcceptIndicator.js.map +0 -1
- package/dist/src/ui/components/AutoAcceptIndicator.test.js.map +0 -1
- package/dist/src/ui/components/PrepareLabel.d.ts +0 -15
- package/dist/src/ui/components/PrepareLabel.js.map +0 -1
- package/dist/src/ui/components/PrepareLabel.test.js.map +0 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +0 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +0 -1
- /package/dist/src/{ui/components/AutoAcceptIndicator.test.d.ts → config/mcp/mcpServerEnablement.test.d.ts} +0 -0
- /package/dist/src/ui/{components/PrepareLabel.test.d.ts → commands/rewindCommand.test.d.ts} +0 -0
- /package/dist/src/ui/{hooks/useAutoAcceptIndicator.test.d.ts → components/AgentConfigDialog.test.d.ts} +0 -0
package/dist/src/ui/App.test.js
CHANGED
|
@@ -4,17 +4,14 @@ 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 { describe, it, expect, vi } from 'vitest';
|
|
8
|
-
import {
|
|
7
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
8
|
+
import { renderWithProviders } from '../test-utils/render.js';
|
|
9
9
|
import { Text, useIsScreenReaderEnabled } from 'ink';
|
|
10
|
-
import {
|
|
10
|
+
import {} from '@google/gemini-cli-core';
|
|
11
11
|
import { App } from './App.js';
|
|
12
|
-
import {
|
|
13
|
-
import { StreamingState } from './types.js';
|
|
14
|
-
import {
|
|
15
|
-
import { AppContext } from './contexts/AppContext.js';
|
|
16
|
-
import { SettingsContext } from './contexts/SettingsContext.js';
|
|
17
|
-
import { LoadedSettings } from '../config/settings.js';
|
|
12
|
+
import {} from './contexts/UIStateContext.js';
|
|
13
|
+
import { StreamingState, ToolCallStatus } from './types.js';
|
|
14
|
+
import { makeFakeConfig } from '@google/gemini-cli-core';
|
|
18
15
|
vi.mock('ink', async (importOriginal) => {
|
|
19
16
|
const original = await importOriginal();
|
|
20
17
|
return {
|
|
@@ -44,12 +41,19 @@ vi.mock('./components/Footer.js', () => ({
|
|
|
44
41
|
Footer: () => _jsx(Text, { children: "Footer" }),
|
|
45
42
|
}));
|
|
46
43
|
describe('App', () => {
|
|
44
|
+
beforeEach(() => {
|
|
45
|
+
useIsScreenReaderEnabled.mockReturnValue(false);
|
|
46
|
+
});
|
|
47
47
|
const mockUIState = {
|
|
48
48
|
streamingState: StreamingState.Idle,
|
|
49
49
|
quittingMessages: null,
|
|
50
50
|
dialogsVisible: false,
|
|
51
|
-
mainControlsRef: {
|
|
52
|
-
|
|
51
|
+
mainControlsRef: {
|
|
52
|
+
current: null,
|
|
53
|
+
},
|
|
54
|
+
rootUiRef: {
|
|
55
|
+
current: null,
|
|
56
|
+
},
|
|
53
57
|
historyManager: {
|
|
54
58
|
addItem: vi.fn(),
|
|
55
59
|
history: [],
|
|
@@ -59,25 +63,17 @@ describe('App', () => {
|
|
|
59
63
|
},
|
|
60
64
|
history: [],
|
|
61
65
|
pendingHistoryItems: [],
|
|
66
|
+
pendingGeminiHistoryItems: [],
|
|
62
67
|
bannerData: {
|
|
63
68
|
defaultText: 'Mock Banner Text',
|
|
64
69
|
warningText: '',
|
|
65
70
|
},
|
|
66
71
|
};
|
|
67
|
-
const mockConfig = makeFakeConfig();
|
|
68
|
-
const mockSettingsFile = {
|
|
69
|
-
settings: {},
|
|
70
|
-
originalSettings: {},
|
|
71
|
-
path: '/mock/path',
|
|
72
|
-
};
|
|
73
|
-
const mockLoadedSettings = new LoadedSettings(mockSettingsFile, mockSettingsFile, mockSettingsFile, mockSettingsFile, true, []);
|
|
74
|
-
const mockAppState = {
|
|
75
|
-
version: '1.0.0',
|
|
76
|
-
startupWarnings: [],
|
|
77
|
-
};
|
|
78
|
-
const renderWithProviders = (ui, state) => render(_jsx(AppContext.Provider, { value: mockAppState, children: _jsx(ConfigContext.Provider, { value: mockConfig, children: _jsx(SettingsContext.Provider, { value: mockLoadedSettings, children: _jsx(UIStateContext.Provider, { value: state, children: ui }) }) }) }));
|
|
79
72
|
it('should render main content and composer when not quitting', () => {
|
|
80
|
-
const { lastFrame } = renderWithProviders(_jsx(App, {}),
|
|
73
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
74
|
+
uiState: mockUIState,
|
|
75
|
+
useAlternateBuffer: false,
|
|
76
|
+
});
|
|
81
77
|
expect(lastFrame()).toContain('MainContent');
|
|
82
78
|
expect(lastFrame()).toContain('Notifications');
|
|
83
79
|
expect(lastFrame()).toContain('Composer');
|
|
@@ -87,7 +83,10 @@ describe('App', () => {
|
|
|
87
83
|
...mockUIState,
|
|
88
84
|
quittingMessages: [{ id: 1, type: 'user', text: 'test' }],
|
|
89
85
|
};
|
|
90
|
-
const { lastFrame } = renderWithProviders(_jsx(App, {}),
|
|
86
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
87
|
+
uiState: quittingUIState,
|
|
88
|
+
useAlternateBuffer: false,
|
|
89
|
+
});
|
|
91
90
|
expect(lastFrame()).toContain('Quitting...');
|
|
92
91
|
});
|
|
93
92
|
it('should render full history in alternate buffer mode when quittingMessages is set', () => {
|
|
@@ -97,19 +96,21 @@ describe('App', () => {
|
|
|
97
96
|
history: [{ id: 1, type: 'user', text: 'history item' }],
|
|
98
97
|
pendingHistoryItems: [{ type: 'user', text: 'pending item' }],
|
|
99
98
|
};
|
|
100
|
-
|
|
101
|
-
|
|
99
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
100
|
+
uiState: quittingUIState,
|
|
101
|
+
useAlternateBuffer: true,
|
|
102
|
+
});
|
|
102
103
|
expect(lastFrame()).toContain('HistoryItemDisplay');
|
|
103
104
|
expect(lastFrame()).toContain('Quitting...');
|
|
104
|
-
// Reset settings
|
|
105
|
-
mockLoadedSettings.merged.ui.useAlternateBuffer = false;
|
|
106
105
|
});
|
|
107
106
|
it('should render dialog manager when dialogs are visible', () => {
|
|
108
107
|
const dialogUIState = {
|
|
109
108
|
...mockUIState,
|
|
110
109
|
dialogsVisible: true,
|
|
111
110
|
};
|
|
112
|
-
const { lastFrame } = renderWithProviders(_jsx(App, {}),
|
|
111
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
112
|
+
uiState: dialogUIState,
|
|
113
|
+
});
|
|
113
114
|
expect(lastFrame()).toContain('MainContent');
|
|
114
115
|
expect(lastFrame()).toContain('Notifications');
|
|
115
116
|
expect(lastFrame()).toContain('DialogManager');
|
|
@@ -123,28 +124,83 @@ describe('App', () => {
|
|
|
123
124
|
dialogsVisible: true,
|
|
124
125
|
[stateKey]: true,
|
|
125
126
|
};
|
|
126
|
-
const { lastFrame } = renderWithProviders(_jsx(App, {}),
|
|
127
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
128
|
+
uiState,
|
|
129
|
+
});
|
|
127
130
|
expect(lastFrame()).toContain(`Press Ctrl+${key} again to exit.`);
|
|
128
131
|
});
|
|
129
132
|
it('should render ScreenReaderAppLayout when screen reader is enabled', () => {
|
|
130
133
|
useIsScreenReaderEnabled.mockReturnValue(true);
|
|
131
|
-
const { lastFrame } = renderWithProviders(_jsx(App, {}),
|
|
132
|
-
|
|
134
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
135
|
+
uiState: mockUIState,
|
|
136
|
+
});
|
|
137
|
+
expect(lastFrame()).toContain(`Notifications
|
|
138
|
+
Footer
|
|
139
|
+
MainContent
|
|
140
|
+
Composer`);
|
|
133
141
|
});
|
|
134
142
|
it('should render DefaultAppLayout when screen reader is not enabled', () => {
|
|
135
143
|
useIsScreenReaderEnabled.mockReturnValue(false);
|
|
136
|
-
const { lastFrame } = renderWithProviders(_jsx(App, {}),
|
|
137
|
-
|
|
144
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
145
|
+
uiState: mockUIState,
|
|
146
|
+
});
|
|
147
|
+
expect(lastFrame()).toContain(`MainContent
|
|
148
|
+
Notifications
|
|
149
|
+
Composer`);
|
|
150
|
+
});
|
|
151
|
+
it('should render ToolConfirmationQueue along with Composer when tool is confirming and experiment is on', () => {
|
|
152
|
+
useIsScreenReaderEnabled.mockReturnValue(false);
|
|
153
|
+
const toolCalls = [
|
|
154
|
+
{
|
|
155
|
+
callId: 'call-1',
|
|
156
|
+
name: 'ls',
|
|
157
|
+
description: 'list directory',
|
|
158
|
+
status: ToolCallStatus.Confirming,
|
|
159
|
+
resultDisplay: '',
|
|
160
|
+
confirmationDetails: {
|
|
161
|
+
type: 'exec',
|
|
162
|
+
title: 'Confirm execution',
|
|
163
|
+
command: 'ls',
|
|
164
|
+
rootCommand: 'ls',
|
|
165
|
+
rootCommands: ['ls'],
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
const stateWithConfirmingTool = {
|
|
170
|
+
...mockUIState,
|
|
171
|
+
pendingHistoryItems: [{ type: 'tool_group', tools: toolCalls }],
|
|
172
|
+
pendingGeminiHistoryItems: [{ type: 'tool_group', tools: toolCalls }],
|
|
173
|
+
};
|
|
174
|
+
const configWithExperiment = {
|
|
175
|
+
...makeFakeConfig(),
|
|
176
|
+
isEventDrivenSchedulerEnabled: () => true,
|
|
177
|
+
isTrustedFolder: () => true,
|
|
178
|
+
getIdeMode: () => false,
|
|
179
|
+
};
|
|
180
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
181
|
+
uiState: stateWithConfirmingTool,
|
|
182
|
+
config: configWithExperiment,
|
|
183
|
+
});
|
|
184
|
+
expect(lastFrame()).toContain('MainContent');
|
|
185
|
+
expect(lastFrame()).toContain('Notifications');
|
|
186
|
+
expect(lastFrame()).toContain('Action Required'); // From ToolConfirmationQueue
|
|
187
|
+
expect(lastFrame()).toContain('1 of 1');
|
|
188
|
+
expect(lastFrame()).toContain('Composer');
|
|
189
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
138
190
|
});
|
|
139
191
|
describe('Snapshots', () => {
|
|
140
192
|
it('renders default layout correctly', () => {
|
|
141
193
|
useIsScreenReaderEnabled.mockReturnValue(false);
|
|
142
|
-
const { lastFrame } = renderWithProviders(_jsx(App, {}),
|
|
194
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
195
|
+
uiState: mockUIState,
|
|
196
|
+
});
|
|
143
197
|
expect(lastFrame()).toMatchSnapshot();
|
|
144
198
|
});
|
|
145
199
|
it('renders screen reader layout correctly', () => {
|
|
146
200
|
useIsScreenReaderEnabled.mockReturnValue(true);
|
|
147
|
-
const { lastFrame } = renderWithProviders(_jsx(App, {}),
|
|
201
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
202
|
+
uiState: mockUIState,
|
|
203
|
+
});
|
|
148
204
|
expect(lastFrame()).toMatchSnapshot();
|
|
149
205
|
});
|
|
150
206
|
it('renders with dialogs visible', () => {
|
|
@@ -152,7 +208,9 @@ describe('App', () => {
|
|
|
152
208
|
...mockUIState,
|
|
153
209
|
dialogsVisible: true,
|
|
154
210
|
};
|
|
155
|
-
const { lastFrame } = renderWithProviders(_jsx(App, {}),
|
|
211
|
+
const { lastFrame } = renderWithProviders(_jsx(App, {}), {
|
|
212
|
+
uiState: dialogUIState,
|
|
213
|
+
});
|
|
156
214
|
expect(lastFrame()).toMatchSnapshot();
|
|
157
215
|
});
|
|
158
216
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.test.js","sourceRoot":"","sources":["../../../src/ui/App.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAa,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"App.test.js","sourceRoot":"","sources":["../../../src/ui/App.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +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 { ToolActionsProvider } from './contexts/ToolActionsContext.js';
|
|
16
17
|
import { IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, writeToStdout, disableMouseEvents, enterAlternateScreen, enableMouseEvents, disableLineWrapping, shouldEnterAlternateScreen, startupProfiler, SessionStartSource, SessionEndReason, generateSummary, } from '@google/gemini-cli-core';
|
|
17
18
|
import { validateAuthMethod } from '../config/auth.js';
|
|
18
19
|
import process from 'node:process';
|
|
@@ -45,6 +46,7 @@ import { useFocus } from './hooks/useFocus.js';
|
|
|
45
46
|
import { useKeypress } from './hooks/useKeypress.js';
|
|
46
47
|
import { keyMatchers, Command } from './keyMatchers.js';
|
|
47
48
|
import { useLoadingIndicator } from './hooks/useLoadingIndicator.js';
|
|
49
|
+
import { useShellInactivityStatus } from './hooks/useShellInactivityStatus.js';
|
|
48
50
|
import { useFolderTrust } from './hooks/useFolderTrust.js';
|
|
49
51
|
import { useIdeTrustListener } from './hooks/useIdeTrustListener.js';
|
|
50
52
|
import {} from './IdeIntegrationNudge.js';
|
|
@@ -54,8 +56,8 @@ import { setUpdateHandler } from '../utils/handleAutoUpdate.js';
|
|
|
54
56
|
import { registerCleanup, runExitCleanup } from '../utils/cleanup.js';
|
|
55
57
|
import { RELAUNCH_EXIT_CODE } from '../utils/processUtils.js';
|
|
56
58
|
import { useMessageQueue } from './hooks/useMessageQueue.js';
|
|
57
|
-
import { useAutoAcceptIndicator } from './hooks/useAutoAcceptIndicator.js';
|
|
58
59
|
import { useMcpStatus } from './hooks/useMcpStatus.js';
|
|
60
|
+
import { useApprovalModeIndicator } from './hooks/useApprovalModeIndicator.js';
|
|
59
61
|
import { useSessionStats } from './contexts/SessionContext.js';
|
|
60
62
|
import { useGitBranchName } from './hooks/useGitBranchName.js';
|
|
61
63
|
import { useConfirmUpdateRequests, useExtensionUpdates, } from './hooks/useExtensionUpdates.js';
|
|
@@ -72,9 +74,8 @@ import { terminalCapabilityManager } from './utils/terminalCapabilityManager.js'
|
|
|
72
74
|
import { useInputHistoryStore } from './hooks/useInputHistoryStore.js';
|
|
73
75
|
import { useBanner } from './hooks/useBanner.js';
|
|
74
76
|
import { useHookDisplayState } from './hooks/useHookDisplayState.js';
|
|
75
|
-
import { WARNING_PROMPT_DURATION_MS, QUEUE_ERROR_DISPLAY_DURATION_MS,
|
|
77
|
+
import { WARNING_PROMPT_DURATION_MS, QUEUE_ERROR_DISPLAY_DURATION_MS, } from './constants.js';
|
|
76
78
|
import { LoginWithGoogleRestartDialog } from './auth/LoginWithGoogleRestartDialog.js';
|
|
77
|
-
import { useInactivityTimer } from './hooks/useInactivityTimer.js';
|
|
78
79
|
import { isSlashCommand } from './utils/commandUtils.js';
|
|
79
80
|
function isToolExecuting(pendingHistoryItems) {
|
|
80
81
|
return pendingHistoryItems.some((item) => {
|
|
@@ -84,6 +85,11 @@ function isToolExecuting(pendingHistoryItems) {
|
|
|
84
85
|
return false;
|
|
85
86
|
});
|
|
86
87
|
}
|
|
88
|
+
function isToolAwaitingConfirmation(pendingHistoryItems) {
|
|
89
|
+
return pendingHistoryItems
|
|
90
|
+
.filter((item) => item.type === 'tool_group')
|
|
91
|
+
.some((item) => item.tools.some((tool) => ToolCallStatus.Confirming === tool.status));
|
|
92
|
+
}
|
|
87
93
|
/**
|
|
88
94
|
* The fraction of the terminal width to allocate to the shell.
|
|
89
95
|
* This provides horizontal padding.
|
|
@@ -146,6 +152,22 @@ export const AppContainer = (props) => {
|
|
|
146
152
|
setPermissionsDialogOpen(false);
|
|
147
153
|
setPermissionsDialogProps(null);
|
|
148
154
|
}, []);
|
|
155
|
+
const [isAgentConfigDialogOpen, setIsAgentConfigDialogOpen] = useState(false);
|
|
156
|
+
const [selectedAgentName, setSelectedAgentName] = useState();
|
|
157
|
+
const [selectedAgentDisplayName, setSelectedAgentDisplayName] = useState();
|
|
158
|
+
const [selectedAgentDefinition, setSelectedAgentDefinition] = useState();
|
|
159
|
+
const openAgentConfigDialog = useCallback((name, displayName, definition) => {
|
|
160
|
+
setSelectedAgentName(name);
|
|
161
|
+
setSelectedAgentDisplayName(displayName);
|
|
162
|
+
setSelectedAgentDefinition(definition);
|
|
163
|
+
setIsAgentConfigDialogOpen(true);
|
|
164
|
+
}, []);
|
|
165
|
+
const closeAgentConfigDialog = useCallback(() => {
|
|
166
|
+
setIsAgentConfigDialogOpen(false);
|
|
167
|
+
setSelectedAgentName(undefined);
|
|
168
|
+
setSelectedAgentDisplayName(undefined);
|
|
169
|
+
setSelectedAgentDefinition(undefined);
|
|
170
|
+
}, []);
|
|
149
171
|
const toggleDebugProfiler = useCallback(() => setShowDebugProfiler((prev) => !prev), []);
|
|
150
172
|
const [currentModel, setCurrentModel] = useState(config.getModel());
|
|
151
173
|
const [userTier, setUserTier] = useState(undefined);
|
|
@@ -192,7 +214,9 @@ export const AppContainer = (props) => {
|
|
|
192
214
|
if (additionalContext && geminiClient) {
|
|
193
215
|
await geminiClient.addHistory({
|
|
194
216
|
role: 'user',
|
|
195
|
-
parts: [
|
|
217
|
+
parts: [
|
|
218
|
+
{ text: `<hook_context>${additionalContext}</hook_context>` },
|
|
219
|
+
],
|
|
196
220
|
});
|
|
197
221
|
}
|
|
198
222
|
}
|
|
@@ -438,6 +462,7 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
438
462
|
openSettingsDialog,
|
|
439
463
|
openSessionBrowser,
|
|
440
464
|
openModelDialog,
|
|
465
|
+
openAgentConfigDialog,
|
|
441
466
|
openPermissionsDialog,
|
|
442
467
|
quit: (messages) => {
|
|
443
468
|
setQuittingMessages(messages);
|
|
@@ -451,6 +476,7 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
451
476
|
toggleDebugProfiler,
|
|
452
477
|
dispatchExtensionStateUpdate,
|
|
453
478
|
addConfirmUpdateExtensionRequest,
|
|
479
|
+
setText: (text) => buffer.setText(text),
|
|
454
480
|
}), [
|
|
455
481
|
setAuthState,
|
|
456
482
|
openThemeDialog,
|
|
@@ -458,6 +484,7 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
458
484
|
openSettingsDialog,
|
|
459
485
|
openSessionBrowser,
|
|
460
486
|
openModelDialog,
|
|
487
|
+
openAgentConfigDialog,
|
|
461
488
|
setQuittingMessages,
|
|
462
489
|
setDebugMessage,
|
|
463
490
|
setShowPrivacyNotice,
|
|
@@ -466,6 +493,7 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
466
493
|
openPermissionsDialog,
|
|
467
494
|
addConfirmUpdateExtensionRequest,
|
|
468
495
|
toggleDebugProfiler,
|
|
496
|
+
buffer,
|
|
469
497
|
]);
|
|
470
498
|
const { handleSlashCommand, slashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, commandContext, confirmationRequest, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, slashCommandActions, extensionsUpdateStateInternal, isConfigInitialized, setBannerVisible, setCustomDialog);
|
|
471
499
|
const performMemoryRefresh = useCallback(async () => {
|
|
@@ -516,17 +544,23 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
516
544
|
}
|
|
517
545
|
}
|
|
518
546
|
}, [pendingRestorePrompt, inputHistory, historyManager.history]);
|
|
519
|
-
const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, lastOutputTime, retryStatus, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused);
|
|
547
|
+
const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, pendingToolCalls, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, lastOutputTime, retryStatus, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused);
|
|
520
548
|
const lastOutputTimeRef = useRef(0);
|
|
521
549
|
useEffect(() => {
|
|
522
550
|
lastOutputTimeRef.current = lastOutputTime;
|
|
523
551
|
}, [lastOutputTime]);
|
|
524
|
-
const
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
552
|
+
const { shouldShowFocusHint, inactivityStatus } = useShellInactivityStatus({
|
|
553
|
+
activePtyId,
|
|
554
|
+
lastOutputTime,
|
|
555
|
+
streamingState,
|
|
556
|
+
pendingToolCalls,
|
|
557
|
+
embeddedShellFocused,
|
|
558
|
+
isInteractiveShellEnabled: config.isInteractiveShellEnabled(),
|
|
559
|
+
});
|
|
560
|
+
const shouldShowActionRequiredTitle = inactivityStatus === 'action_required';
|
|
561
|
+
const shouldShowSilentWorkingTitle = inactivityStatus === 'silent_working';
|
|
528
562
|
// Auto-accept indicator
|
|
529
|
-
const
|
|
563
|
+
const showApprovalModeIndicator = useApprovalModeIndicator({
|
|
530
564
|
config,
|
|
531
565
|
addItem: historyManager.addItem,
|
|
532
566
|
onApprovalModeChange: handleApprovalModeChange,
|
|
@@ -544,8 +578,11 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
544
578
|
...pendingSlashCommandHistoryItems,
|
|
545
579
|
...pendingGeminiHistoryItems,
|
|
546
580
|
];
|
|
581
|
+
if (isToolAwaitingConfirmation(pendingHistoryItems)) {
|
|
582
|
+
return; // Don't clear - user may be composing a follow-up message
|
|
583
|
+
}
|
|
547
584
|
if (isToolExecuting(pendingHistoryItems)) {
|
|
548
|
-
buffer.setText(''); //
|
|
585
|
+
buffer.setText(''); // Clear for Ctrl+C cancellation
|
|
549
586
|
return;
|
|
550
587
|
}
|
|
551
588
|
const lastUserMessage = inputHistory.at(-1);
|
|
@@ -602,7 +639,8 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
602
639
|
* - Tool confirmations (WaitingForConfirmation state)
|
|
603
640
|
* - Any future streaming states not explicitly allowed
|
|
604
641
|
*/
|
|
605
|
-
const isInputActive =
|
|
642
|
+
const isInputActive = isConfigInitialized &&
|
|
643
|
+
!initError &&
|
|
606
644
|
!isProcessing &&
|
|
607
645
|
!!slashCommands &&
|
|
608
646
|
(streamingState === StreamingState.Idle ||
|
|
@@ -836,7 +874,11 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
836
874
|
}
|
|
837
875
|
setIdePromptAnswered(true);
|
|
838
876
|
}, [handleSlashCommand, settings]);
|
|
839
|
-
const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(
|
|
877
|
+
const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator({
|
|
878
|
+
streamingState,
|
|
879
|
+
shouldShowFocusHint,
|
|
880
|
+
retryStatus,
|
|
881
|
+
});
|
|
840
882
|
const handleGlobalKeypress = useCallback((key) => {
|
|
841
883
|
if (copyModeEnabled) {
|
|
842
884
|
setCopyModeEnabled(false);
|
|
@@ -953,7 +995,8 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
953
995
|
const paddedTitle = computeTerminalTitle({
|
|
954
996
|
streamingState,
|
|
955
997
|
thoughtSubject: thought?.subject,
|
|
956
|
-
isConfirming: !!confirmationRequest ||
|
|
998
|
+
isConfirming: !!confirmationRequest || shouldShowActionRequiredTitle,
|
|
999
|
+
isSilentWorking: shouldShowSilentWorkingTitle,
|
|
957
1000
|
folderName: basename(config.getTargetDir()),
|
|
958
1001
|
showThoughts: !!settings.merged.ui.showStatusInTitle,
|
|
959
1002
|
useDynamicTitle: settings.merged.ui.dynamicWindowTitle,
|
|
@@ -968,7 +1011,8 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
968
1011
|
streamingState,
|
|
969
1012
|
thought,
|
|
970
1013
|
confirmationRequest,
|
|
971
|
-
|
|
1014
|
+
shouldShowActionRequiredTitle,
|
|
1015
|
+
shouldShowSilentWorkingTitle,
|
|
972
1016
|
settings.merged.ui.showStatusInTitle,
|
|
973
1017
|
settings.merged.ui.dynamicWindowTitle,
|
|
974
1018
|
settings.merged.ui.hideWindowTitle,
|
|
@@ -1029,6 +1073,7 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
1029
1073
|
isThemeDialogOpen ||
|
|
1030
1074
|
isSettingsDialogOpen ||
|
|
1031
1075
|
isModelDialogOpen ||
|
|
1076
|
+
isAgentConfigDialogOpen ||
|
|
1032
1077
|
isPermissionsDialogOpen ||
|
|
1033
1078
|
isAuthenticating ||
|
|
1034
1079
|
isAuthDialogOpen ||
|
|
@@ -1041,6 +1086,9 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
1041
1086
|
isAuthDialogOpen ||
|
|
1042
1087
|
authState === AuthState.AwaitingApiKeyInput;
|
|
1043
1088
|
const pendingHistoryItems = useMemo(() => [...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems], [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
|
|
1089
|
+
const allToolCalls = useMemo(() => pendingHistoryItems
|
|
1090
|
+
.filter((item) => item.type === 'tool_group')
|
|
1091
|
+
.flatMap((item) => item.tools), [pendingHistoryItems]);
|
|
1044
1092
|
const [geminiMdFileCount, setGeminiMdFileCount] = useState(config.getGeminiMdFileCount());
|
|
1045
1093
|
useEffect(() => {
|
|
1046
1094
|
const handleMemoryChanged = (result) => {
|
|
@@ -1095,6 +1143,10 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
1095
1143
|
isSettingsDialogOpen,
|
|
1096
1144
|
isSessionBrowserOpen,
|
|
1097
1145
|
isModelDialogOpen,
|
|
1146
|
+
isAgentConfigDialogOpen,
|
|
1147
|
+
selectedAgentName,
|
|
1148
|
+
selectedAgentDisplayName,
|
|
1149
|
+
selectedAgentDefinition,
|
|
1098
1150
|
isPermissionsDialogOpen,
|
|
1099
1151
|
permissionsDialogProps,
|
|
1100
1152
|
slashCommands,
|
|
@@ -1133,7 +1185,7 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
1133
1185
|
activeHooks,
|
|
1134
1186
|
messageQueue,
|
|
1135
1187
|
queueErrorMessage,
|
|
1136
|
-
|
|
1188
|
+
showApprovalModeIndicator,
|
|
1137
1189
|
currentModel,
|
|
1138
1190
|
userTier,
|
|
1139
1191
|
proQuotaRequest,
|
|
@@ -1186,6 +1238,10 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
1186
1238
|
isSettingsDialogOpen,
|
|
1187
1239
|
isSessionBrowserOpen,
|
|
1188
1240
|
isModelDialogOpen,
|
|
1241
|
+
isAgentConfigDialogOpen,
|
|
1242
|
+
selectedAgentName,
|
|
1243
|
+
selectedAgentDisplayName,
|
|
1244
|
+
selectedAgentDefinition,
|
|
1189
1245
|
isPermissionsDialogOpen,
|
|
1190
1246
|
permissionsDialogProps,
|
|
1191
1247
|
slashCommands,
|
|
@@ -1224,7 +1280,7 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
1224
1280
|
activeHooks,
|
|
1225
1281
|
messageQueue,
|
|
1226
1282
|
queueErrorMessage,
|
|
1227
|
-
|
|
1283
|
+
showApprovalModeIndicator,
|
|
1228
1284
|
userTier,
|
|
1229
1285
|
proQuotaRequest,
|
|
1230
1286
|
validationRequest,
|
|
@@ -1278,6 +1334,8 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
1278
1334
|
exitPrivacyNotice,
|
|
1279
1335
|
closeSettingsDialog,
|
|
1280
1336
|
closeModelDialog,
|
|
1337
|
+
openAgentConfigDialog,
|
|
1338
|
+
closeAgentConfigDialog,
|
|
1281
1339
|
openPermissionsDialog,
|
|
1282
1340
|
closePermissionsDialog,
|
|
1283
1341
|
setShellModeActive,
|
|
@@ -1318,6 +1376,8 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
1318
1376
|
exitPrivacyNotice,
|
|
1319
1377
|
closeSettingsDialog,
|
|
1320
1378
|
closeModelDialog,
|
|
1379
|
+
openAgentConfigDialog,
|
|
1380
|
+
closeAgentConfigDialog,
|
|
1321
1381
|
openPermissionsDialog,
|
|
1322
1382
|
closePermissionsDialog,
|
|
1323
1383
|
setShellModeActive,
|
|
@@ -1352,6 +1412,6 @@ Logging in with Google... Restarting Gemini CLI to continue.
|
|
|
1352
1412
|
return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
|
|
1353
1413
|
version: props.version,
|
|
1354
1414
|
startupWarnings: props.startupWarnings || [],
|
|
1355
|
-
}, children: _jsx(ShellFocusContext.Provider, { value: isFocused, children: _jsx(App, {}) }) }) }) }) }));
|
|
1415
|
+
}, children: _jsx(ToolActionsProvider, { config: config, toolCalls: allToolCalls, children: _jsx(ShellFocusContext.Provider, { value: isFocused, children: _jsx(App, {}) }) }) }) }) }) }));
|
|
1356
1416
|
};
|
|
1357
1417
|
//# sourceMappingURL=AppContainer.js.map
|