@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/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
[](https://github.com/google-gemini/gemini-cli/actions/workflows/chained_e2e.yml)
|
|
5
5
|
[](https://www.npmjs.com/package/@google/gemini-cli)
|
|
6
6
|
[](https://github.com/google-gemini/gemini-cli/blob/main/LICENSE)
|
|
7
|
-
[](https://codewiki.google/github.com/google-gemini/gemini-cli?utm_source=badge&utm_medium=github&utm_campaign=github.com/google-gemini/gemini-cli)
|
|
8
8
|
|
|
9
9
|

|
|
10
10
|
|
|
@@ -55,6 +55,23 @@ npm install -g @google/gemini-cli
|
|
|
55
55
|
brew install gemini-cli
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
#### Install globally with MacPorts (macOS)
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
sudo port install gemini-cli
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
#### Install with Anaconda (for restricted environments)
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Create and activate a new environment
|
|
68
|
+
conda create -y -n gemini_env -c conda-forge nodejs
|
|
69
|
+
conda activate gemini_env
|
|
70
|
+
|
|
71
|
+
# Install Gemini CLI globally via npm (inside the environment)
|
|
72
|
+
npm install -g @google/gemini-cli
|
|
73
|
+
```
|
|
74
|
+
|
|
58
75
|
## Release Cadence and Tags
|
|
59
76
|
|
|
60
77
|
See [Releases](./docs/releases.md) for more details.
|
|
Binary file
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@google/gemini-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0-nightly.20260126.cb772a5b7",
|
|
4
4
|
"description": "Gemini CLI",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"dist"
|
|
27
27
|
],
|
|
28
28
|
"config": {
|
|
29
|
-
"sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.
|
|
29
|
+
"sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.27.0-nightly.20260126.cb772a5b7"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@agentclientprotocol/sdk": "^0.12.0",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"color-convert": "^2.0.1",
|
|
41
41
|
"command-exists": "^1.2.9",
|
|
42
42
|
"comment-json": "^4.2.5",
|
|
43
|
-
"diff": "^
|
|
43
|
+
"diff": "^8.0.3",
|
|
44
44
|
"dotenv": "^17.1.0",
|
|
45
45
|
"extract-zip": "^2.0.1",
|
|
46
46
|
"fzf": "^0.5.2",
|
|
@@ -73,7 +73,6 @@
|
|
|
73
73
|
"@google/gemini-cli-test-utils": "file:../test-utils",
|
|
74
74
|
"@types/archiver": "^6.0.3",
|
|
75
75
|
"@types/command-exists": "^1.2.3",
|
|
76
|
-
"@types/diff": "^7.0.2",
|
|
77
76
|
"@types/dotenv": "^6.1.1",
|
|
78
77
|
"@types/node": "^20.11.24",
|
|
79
78
|
"@types/react": "^19.2.0",
|
|
@@ -20,7 +20,10 @@ export const extensionsCommand = {
|
|
|
20
20
|
aliases: ['extension'],
|
|
21
21
|
describe: 'Manage Gemini CLI extensions.',
|
|
22
22
|
builder: (yargs) => yargs
|
|
23
|
-
.middleware(() =>
|
|
23
|
+
.middleware((argv) => {
|
|
24
|
+
initializeOutputListenersAndFlush();
|
|
25
|
+
argv['isCommand'] = true;
|
|
26
|
+
})
|
|
24
27
|
.command(defer(installCommand, 'extensions'))
|
|
25
28
|
.command(defer(uninstallCommand, 'extensions'))
|
|
26
29
|
.command(defer(listCommand, 'extensions'))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../src/commands/extensions.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAkB;IAC9C,OAAO,EAAE,sBAAsB;IAC/B,OAAO,EAAE,CAAC,WAAW,CAAC;IACtB,QAAQ,EAAE,+BAA+B;IACzC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../src/commands/extensions.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAkB;IAC9C,OAAO,EAAE,sBAAsB;IAC/B,OAAO,EAAE,CAAC,WAAW,CAAC;IACtB,QAAQ,EAAE,+BAA+B;IACzC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,iCAAiC,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC;SACD,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;SAC5C,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;SAC9C,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SACzC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;SAC3C,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;SAC5C,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;SAC3C,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SACzC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;SACxC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;SAC7C,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;SAC9C,aAAa,CAAC,CAAC,EAAE,kDAAkD,CAAC;SACpE,OAAO,CAAC,KAAK,CAAC;IACnB,OAAO,EAAE,GAAG,EAAE;QACZ,4DAA4D;QAC5D,iCAAiC;IACnC,CAAC;CACF,CAAC"}
|
|
@@ -10,7 +10,10 @@ export const hooksCommand = {
|
|
|
10
10
|
aliases: ['hook'],
|
|
11
11
|
describe: 'Manage Gemini CLI hooks.',
|
|
12
12
|
builder: (yargs) => yargs
|
|
13
|
-
.middleware(() =>
|
|
13
|
+
.middleware((argv) => {
|
|
14
|
+
initializeOutputListenersAndFlush();
|
|
15
|
+
argv['isCommand'] = true;
|
|
16
|
+
})
|
|
14
17
|
.command(migrateCommand)
|
|
15
18
|
.demandCommand(1, 'You need at least one command before continuing.')
|
|
16
19
|
.version(false),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/commands/hooks.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,QAAQ,EAAE,0BAA0B;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/commands/hooks.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AAEjE,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,OAAO,EAAE,iBAAiB;IAC1B,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,QAAQ,EAAE,0BAA0B;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,iCAAiC,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC;SACD,OAAO,CAAC,cAAc,CAAC;SACvB,aAAa,CAAC,CAAC,EAAE,kDAAkD,CAAC;SACpE,OAAO,CAAC,KAAK,CAAC;IACnB,OAAO,EAAE,GAAG,EAAE;QACZ,4DAA4D;QAC5D,iCAAiC;IACnC,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandModule } from 'yargs';
|
|
7
|
+
interface Args {
|
|
8
|
+
name: string;
|
|
9
|
+
session?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const enableCommand: CommandModule<object, Args>;
|
|
12
|
+
export declare const disableCommand: CommandModule<object, Args>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { debugLogger } from '@google/gemini-cli-core';
|
|
7
|
+
import { McpServerEnablementManager, canLoadServer, normalizeServerId, } from '../../config/mcp/mcpServerEnablement.js';
|
|
8
|
+
import { loadSettings } from '../../config/settings.js';
|
|
9
|
+
import { exitCli } from '../utils.js';
|
|
10
|
+
import { getMcpServersFromConfig } from './list.js';
|
|
11
|
+
const GREEN = '\x1b[32m';
|
|
12
|
+
const YELLOW = '\x1b[33m';
|
|
13
|
+
const RED = '\x1b[31m';
|
|
14
|
+
const RESET = '\x1b[0m';
|
|
15
|
+
async function handleEnable(args) {
|
|
16
|
+
const manager = McpServerEnablementManager.getInstance();
|
|
17
|
+
const name = normalizeServerId(args.name);
|
|
18
|
+
// Check settings blocks
|
|
19
|
+
const settings = loadSettings();
|
|
20
|
+
// Get all servers including extensions
|
|
21
|
+
const servers = await getMcpServersFromConfig();
|
|
22
|
+
const normalizedServerNames = Object.keys(servers).map(normalizeServerId);
|
|
23
|
+
if (!normalizedServerNames.includes(name)) {
|
|
24
|
+
debugLogger.log(`${RED}Error:${RESET} Server '${args.name}' not found. Use 'gemini mcp' to see available servers.`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
// Check if server is from an extension
|
|
28
|
+
const serverKey = Object.keys(servers).find((key) => normalizeServerId(key) === name);
|
|
29
|
+
const server = serverKey ? servers[serverKey] : undefined;
|
|
30
|
+
if (server?.extension) {
|
|
31
|
+
debugLogger.log(`${RED}Error:${RESET} Server '${args.name}' is provided by extension '${server.extension.name}'.`);
|
|
32
|
+
debugLogger.log(`Use 'gemini extensions enable ${server.extension.name}' to manage this extension.`);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const result = await canLoadServer(name, {
|
|
36
|
+
adminMcpEnabled: settings.merged.admin?.mcp?.enabled ?? true,
|
|
37
|
+
allowedList: settings.merged.mcp?.allowed,
|
|
38
|
+
excludedList: settings.merged.mcp?.excluded,
|
|
39
|
+
});
|
|
40
|
+
if (!result.allowed &&
|
|
41
|
+
(result.blockType === 'allowlist' || result.blockType === 'excludelist')) {
|
|
42
|
+
debugLogger.log(`${RED}Error:${RESET} ${result.reason}`);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (args.session) {
|
|
46
|
+
manager.clearSessionDisable(name);
|
|
47
|
+
debugLogger.log(`${GREEN}✓${RESET} Session disable cleared for '${name}'.`);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
await manager.enable(name);
|
|
51
|
+
debugLogger.log(`${GREEN}✓${RESET} MCP server '${name}' enabled.`);
|
|
52
|
+
}
|
|
53
|
+
if (result.blockType === 'admin') {
|
|
54
|
+
debugLogger.log(`${YELLOW}Warning:${RESET} MCP servers are disabled by administrator.`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async function handleDisable(args) {
|
|
58
|
+
const manager = McpServerEnablementManager.getInstance();
|
|
59
|
+
const name = normalizeServerId(args.name);
|
|
60
|
+
// Get all servers including extensions
|
|
61
|
+
const servers = await getMcpServersFromConfig();
|
|
62
|
+
const normalizedServerNames = Object.keys(servers).map(normalizeServerId);
|
|
63
|
+
if (!normalizedServerNames.includes(name)) {
|
|
64
|
+
debugLogger.log(`${RED}Error:${RESET} Server '${args.name}' not found. Use 'gemini mcp' to see available servers.`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// Check if server is from an extension
|
|
68
|
+
const serverKey = Object.keys(servers).find((key) => normalizeServerId(key) === name);
|
|
69
|
+
const server = serverKey ? servers[serverKey] : undefined;
|
|
70
|
+
if (server?.extension) {
|
|
71
|
+
debugLogger.log(`${RED}Error:${RESET} Server '${args.name}' is provided by extension '${server.extension.name}'.`);
|
|
72
|
+
debugLogger.log(`Use 'gemini extensions disable ${server.extension.name}' to manage this extension.`);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (args.session) {
|
|
76
|
+
manager.disableForSession(name);
|
|
77
|
+
debugLogger.log(`${GREEN}✓${RESET} MCP server '${name}' disabled for this session.`);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
await manager.disable(name);
|
|
81
|
+
debugLogger.log(`${GREEN}✓${RESET} MCP server '${name}' disabled.`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
export const enableCommand = {
|
|
85
|
+
command: 'enable <name>',
|
|
86
|
+
describe: 'Enable an MCP server',
|
|
87
|
+
builder: (yargs) => yargs
|
|
88
|
+
.positional('name', {
|
|
89
|
+
describe: 'MCP server name to enable',
|
|
90
|
+
type: 'string',
|
|
91
|
+
demandOption: true,
|
|
92
|
+
})
|
|
93
|
+
.option('session', {
|
|
94
|
+
describe: 'Clear session-only disable',
|
|
95
|
+
type: 'boolean',
|
|
96
|
+
default: false,
|
|
97
|
+
}),
|
|
98
|
+
handler: async (argv) => {
|
|
99
|
+
await handleEnable(argv);
|
|
100
|
+
await exitCli();
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
export const disableCommand = {
|
|
104
|
+
command: 'disable <name>',
|
|
105
|
+
describe: 'Disable an MCP server',
|
|
106
|
+
builder: (yargs) => yargs
|
|
107
|
+
.positional('name', {
|
|
108
|
+
describe: 'MCP server name to disable',
|
|
109
|
+
type: 'string',
|
|
110
|
+
demandOption: true,
|
|
111
|
+
})
|
|
112
|
+
.option('session', {
|
|
113
|
+
describe: 'Disable for current session only',
|
|
114
|
+
type: 'boolean',
|
|
115
|
+
default: false,
|
|
116
|
+
}),
|
|
117
|
+
handler: async (argv) => {
|
|
118
|
+
await handleDisable(argv);
|
|
119
|
+
await exitCli();
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
//# sourceMappingURL=enableDisable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enableDisable.js","sourceRoot":"","sources":["../../../../src/commands/mcp/enableDisable.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,5 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import type { CommandModule } from 'yargs';
|
|
7
|
+
import type { MCPServerConfig } from '@google/gemini-cli-core';
|
|
8
|
+
export declare function getMcpServersFromConfig(): Promise<Record<string, MCPServerConfig>>;
|
|
7
9
|
export declare function listMcpServers(): Promise<void>;
|
|
8
10
|
export declare const listCommand: CommandModule;
|
|
@@ -14,7 +14,7 @@ const COLOR_GREEN = '\u001b[32m';
|
|
|
14
14
|
const COLOR_YELLOW = '\u001b[33m';
|
|
15
15
|
const COLOR_RED = '\u001b[31m';
|
|
16
16
|
const RESET_COLOR = '\u001b[0m';
|
|
17
|
-
async function getMcpServersFromConfig() {
|
|
17
|
+
export async function getMcpServersFromConfig() {
|
|
18
18
|
const settings = loadSettings();
|
|
19
19
|
const extensionManager = new ExtensionManager({
|
|
20
20
|
settings: settings.merged,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/mcp/list.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,WAAW,GAAG,YAAY,CAAC;AACjC,MAAM,YAAY,GAAG,YAAY,CAAC;AAClC,MAAM,SAAS,GAAG,YAAY,CAAC;AAC/B,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC,KAAK,UAAU,uBAAuB;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/mcp/list.ts"],"names":[],"mappings":"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"}
|
package/dist/src/commands/mcp.js
CHANGED
|
@@ -6,16 +6,22 @@
|
|
|
6
6
|
import { addCommand } from './mcp/add.js';
|
|
7
7
|
import { removeCommand } from './mcp/remove.js';
|
|
8
8
|
import { listCommand } from './mcp/list.js';
|
|
9
|
+
import { enableCommand, disableCommand } from './mcp/enableDisable.js';
|
|
9
10
|
import { initializeOutputListenersAndFlush } from '../gemini.js';
|
|
10
11
|
import { defer } from '../deferred.js';
|
|
11
12
|
export const mcpCommand = {
|
|
12
13
|
command: 'mcp',
|
|
13
14
|
describe: 'Manage MCP servers',
|
|
14
15
|
builder: (yargs) => yargs
|
|
15
|
-
.middleware(() =>
|
|
16
|
+
.middleware((argv) => {
|
|
17
|
+
initializeOutputListenersAndFlush();
|
|
18
|
+
argv['isCommand'] = true;
|
|
19
|
+
})
|
|
16
20
|
.command(defer(addCommand, 'mcp'))
|
|
17
21
|
.command(defer(removeCommand, 'mcp'))
|
|
18
22
|
.command(defer(listCommand, 'mcp'))
|
|
23
|
+
.command(defer(enableCommand, 'mcp'))
|
|
24
|
+
.command(defer(disableCommand, 'mcp'))
|
|
19
25
|
.demandCommand(1, 'You need at least one command before continuing.')
|
|
20
26
|
.version(false),
|
|
21
27
|
handler: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,oBAAoB;IAC9B,OAAO,EAAE,CAAC,KAAW,EAAE,EAAE,CACvB,KAAK;SACF,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,oBAAoB;IAC9B,OAAO,EAAE,CAAC,KAAW,EAAE,EAAE,CACvB,KAAK;SACF,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,iCAAiC,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC;SACD,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;SACjC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;SACpC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;SAClC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;SACpC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;SACrC,aAAa,CAAC,CAAC,EAAE,kDAAkD,CAAC;SACpE,OAAO,CAAC,KAAK,CAAC;IACnB,OAAO,EAAE,GAAG,EAAE;QACZ,kEAAkE;QAClE,6CAA6C;IAC/C,CAAC;CACF,CAAC"}
|
|
@@ -50,13 +50,15 @@ describe('mcp command', () => {
|
|
|
50
50
|
middleware: vi.fn().mockReturnThis(),
|
|
51
51
|
};
|
|
52
52
|
mcpCommand.builder(mockYargs);
|
|
53
|
-
expect(mockYargs.command).toHaveBeenCalledTimes(
|
|
53
|
+
expect(mockYargs.command).toHaveBeenCalledTimes(5);
|
|
54
54
|
// Verify that the specific subcommands are registered
|
|
55
55
|
const commandCalls = mockYargs.command.mock.calls;
|
|
56
56
|
const commandNames = commandCalls.map((call) => call[0].command);
|
|
57
57
|
expect(commandNames).toContain('add <name> <commandOrUrl> [args...]');
|
|
58
58
|
expect(commandNames).toContain('remove <name>');
|
|
59
59
|
expect(commandNames).toContain('list');
|
|
60
|
+
expect(commandNames).toContain('enable <name>');
|
|
61
|
+
expect(commandNames).toContain('disable <name>');
|
|
60
62
|
expect(mockYargs.demandCommand).toHaveBeenCalledWith(1, 'You need at least one command before continuing.');
|
|
61
63
|
});
|
|
62
64
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.test.js","sourceRoot":"","sources":["../../../src/commands/mcp.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAa,MAAM,OAAO,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,aAAa,GAAG,KAAK,EAAE,CAAC;QAC7B,UAAU,CAAC,OAA6B,CAAC,aAAa,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;QAExD,0DAA0D;QAC1D,MAAM,cAAc,GAAG,EAAE;aACtB,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;aACrB,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAChC,MAAM,gBAAgB,GAAG,EAAE;aACxB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;aACvB,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEhC,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,2DAA2D;QAC7D,CAAC;QAED,gCAAgC;QAChC,MAAM,UAAU,GACd,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACpC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAErC,cAAc,CAAC,WAAW,EAAE,CAAC;QAC7B,gBAAgB,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,SAAS,GAAG;YAChB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YACjC,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YACvC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;YACjC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;SACrC,CAAC;QAED,UAAU,CAAC,OAA6B,CAAC,SAA4B,CAAC,CAAC;QAExE,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAEnD,sDAAsD;QACtD,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAClD,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAEjE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;QACtE,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.test.js","sourceRoot":"","sources":["../../../src/commands/mcp.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,10 @@ export const skillsCommand = {
|
|
|
15
15
|
aliases: ['skill'],
|
|
16
16
|
describe: 'Manage agent skills.',
|
|
17
17
|
builder: (yargs) => yargs
|
|
18
|
-
.middleware(() =>
|
|
18
|
+
.middleware((argv) => {
|
|
19
|
+
initializeOutputListenersAndFlush();
|
|
20
|
+
argv['isCommand'] = true;
|
|
21
|
+
})
|
|
19
22
|
.command(defer(listCommand, 'skills'))
|
|
20
23
|
.command(defer(enableCommand, 'skills'))
|
|
21
24
|
.command(defer(disableCommand, 'skills'))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/commands/skills.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/commands/skills.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iCAAiC,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,OAAO,EAAE,kBAAkB;IAC3B,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE;QACnB,iCAAiC,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC3B,CAAC,CAAC;SACD,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;SACrC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;SACvC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;SACxC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;SACxC,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;SAC1C,aAAa,CAAC,CAAC,EAAE,kDAAkD,CAAC;SACpE,OAAO,CAAC,KAAK,CAAC;IACnB,OAAO,EAAE,GAAG,EAAE;QACZ,4DAA4D;QAC5D,iCAAiC;IACnC,CAAC;CACF,CAAC"}
|
|
@@ -29,6 +29,10 @@ export interface CliArgs {
|
|
|
29
29
|
outputFormat: string | undefined;
|
|
30
30
|
fakeResponses: string | undefined;
|
|
31
31
|
recordResponses: string | undefined;
|
|
32
|
+
startupMessages?: string[];
|
|
33
|
+
rawOutput: boolean | undefined;
|
|
34
|
+
acceptRawOutputRisk: boolean | undefined;
|
|
35
|
+
isCommand: boolean | undefined;
|
|
32
36
|
}
|
|
33
37
|
export declare function parseArguments(settings: MergedSettings): Promise<CliArgs>;
|
|
34
38
|
export declare function isDebugMode(argv: CliArgs): boolean;
|
|
@@ -10,7 +10,7 @@ import { mcpCommand } from '../commands/mcp.js';
|
|
|
10
10
|
import { extensionsCommand } from '../commands/extensions.js';
|
|
11
11
|
import { skillsCommand } from '../commands/skills.js';
|
|
12
12
|
import { hooksCommand } from '../commands/hooks.js';
|
|
13
|
-
import { Config, setGeminiMdFilename as setServerGeminiMdFilename, getCurrentGeminiMdFilename, ApprovalMode, DEFAULT_GEMINI_MODEL_AUTO, DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, FileDiscoveryService, WRITE_FILE_TOOL_NAME, SHELL_TOOL_NAMES, SHELL_TOOL_NAME, resolveTelemetrySettings, FatalConfigError, getPty, EDIT_TOOL_NAME, debugLogger, loadServerHierarchicalMemory, WEB_FETCH_TOOL_NAME, getVersion, PREVIEW_GEMINI_MODEL_AUTO,
|
|
13
|
+
import { Config, setGeminiMdFilename as setServerGeminiMdFilename, getCurrentGeminiMdFilename, ApprovalMode, DEFAULT_GEMINI_MODEL_AUTO, DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS, FileDiscoveryService, WRITE_FILE_TOOL_NAME, SHELL_TOOL_NAMES, SHELL_TOOL_NAME, resolveTelemetrySettings, FatalConfigError, getPty, EDIT_TOOL_NAME, debugLogger, loadServerHierarchicalMemory, WEB_FETCH_TOOL_NAME, getVersion, PREVIEW_GEMINI_MODEL_AUTO, coreEvents, GEMINI_MODEL_ALIAS_AUTO, } from '@google/gemini-cli-core';
|
|
14
14
|
import { saveModelChange, loadSettings, } from './settings.js';
|
|
15
15
|
import { loadSandboxConfig } from './sandboxConfig.js';
|
|
16
16
|
import { resolvePath } from '../utils/resolvePath.js';
|
|
@@ -18,15 +18,17 @@ import { RESUME_LATEST } from '../utils/sessionUtils.js';
|
|
|
18
18
|
import { isWorkspaceTrusted } from './trustedFolders.js';
|
|
19
19
|
import { createPolicyEngineConfig } from './policy.js';
|
|
20
20
|
import { ExtensionManager } from './extension-manager.js';
|
|
21
|
+
import { McpServerEnablementManager } from './mcp/mcpServerEnablement.js';
|
|
21
22
|
import { requestConsentNonInteractive } from './extensions/consent.js';
|
|
22
23
|
import { promptForSetting } from './extensions/extensionSettings.js';
|
|
23
24
|
import { runExitCleanup } from '../utils/cleanup.js';
|
|
24
25
|
export async function parseArguments(settings) {
|
|
25
26
|
const rawArgv = hideBin(process.argv);
|
|
27
|
+
const startupMessages = [];
|
|
26
28
|
const yargsInstance = yargs(rawArgv)
|
|
27
29
|
.locale('en')
|
|
28
30
|
.scriptName('gemini')
|
|
29
|
-
.usage('Usage: gemini [options] [command]\n\nGemini CLI -
|
|
31
|
+
.usage('Usage: gemini [options] [command]\n\nGemini CLI - Defaults to interactive mode. Use -p/--prompt for non-interactive (headless) mode.')
|
|
30
32
|
.option('debug', {
|
|
31
33
|
alias: 'd',
|
|
32
34
|
type: 'boolean',
|
|
@@ -35,7 +37,7 @@ export async function parseArguments(settings) {
|
|
|
35
37
|
})
|
|
36
38
|
.command('$0 [query..]', 'Launch Gemini CLI', (yargsInstance) => yargsInstance
|
|
37
39
|
.positional('query', {
|
|
38
|
-
description: '
|
|
40
|
+
description: 'Initial prompt. Runs in interactive mode by default; use -p/--prompt for non-interactive.',
|
|
39
41
|
})
|
|
40
42
|
.option('model', {
|
|
41
43
|
alias: 'm',
|
|
@@ -47,7 +49,7 @@ export async function parseArguments(settings) {
|
|
|
47
49
|
alias: 'p',
|
|
48
50
|
type: 'string',
|
|
49
51
|
nargs: 1,
|
|
50
|
-
description: '
|
|
52
|
+
description: 'Run in non-interactive (headless) mode with the given prompt. Appended to input on stdin (if any).',
|
|
51
53
|
})
|
|
52
54
|
.option('prompt-interactive', {
|
|
53
55
|
alias: 'i',
|
|
@@ -164,6 +166,14 @@ export async function parseArguments(settings) {
|
|
|
164
166
|
type: 'string',
|
|
165
167
|
description: 'Path to a file to record model responses for testing.',
|
|
166
168
|
hidden: true,
|
|
169
|
+
})
|
|
170
|
+
.option('raw-output', {
|
|
171
|
+
type: 'boolean',
|
|
172
|
+
description: 'Disable sanitization of model output (e.g. allow ANSI escape sequences). WARNING: This can be a security risk if the model output is untrusted.',
|
|
173
|
+
})
|
|
174
|
+
.option('accept-raw-output-risk', {
|
|
175
|
+
type: 'boolean',
|
|
176
|
+
description: 'Suppress the security warning when using --raw-output.',
|
|
167
177
|
}))
|
|
168
178
|
// Register MCP subcommands
|
|
169
179
|
.command(mcpCommand)
|
|
@@ -235,10 +245,10 @@ export async function parseArguments(settings) {
|
|
|
235
245
|
const q = Array.isArray(queryArg)
|
|
236
246
|
? queryArg.join(' ')
|
|
237
247
|
: queryArg;
|
|
238
|
-
//
|
|
248
|
+
// -p/--prompt forces non-interactive mode; positional args default to interactive in TTY
|
|
239
249
|
if (q && !result['prompt']) {
|
|
240
|
-
|
|
241
|
-
|
|
250
|
+
if (process.stdin.isTTY) {
|
|
251
|
+
startupMessages.push('Positional arguments now default to interactive mode. To run in non-interactive mode, use the --prompt (-p) flag.');
|
|
242
252
|
result['promptInteractive'] = q;
|
|
243
253
|
}
|
|
244
254
|
else {
|
|
@@ -247,6 +257,7 @@ export async function parseArguments(settings) {
|
|
|
247
257
|
}
|
|
248
258
|
// Keep CliArgs.query as a string for downstream typing
|
|
249
259
|
result['query'] = q || undefined;
|
|
260
|
+
result['startupMessages'] = startupMessages;
|
|
250
261
|
// The import format is now only controlled by settings.memoryImportFormat
|
|
251
262
|
// We no longer accept it as a CLI argument
|
|
252
263
|
return result;
|
|
@@ -329,7 +340,9 @@ export async function loadCliConfig(settings, sessionId, argv, options = {}) {
|
|
|
329
340
|
let filePaths = [];
|
|
330
341
|
if (!experimentalJitContext) {
|
|
331
342
|
// Call the (now wrapper) loadHierarchicalGeminiMemory which calls the server's version
|
|
332
|
-
const result = await loadServerHierarchicalMemory(cwd,
|
|
343
|
+
const result = await loadServerHierarchicalMemory(cwd, settings.context?.loadMemoryFromIncludeDirectories || false
|
|
344
|
+
? includeDirectories
|
|
345
|
+
: [], debugMode, fileService, extensionManager, trustedFolder, memoryImportFormat, memoryFileFiltering, settings.context?.discoveryMaxDirs);
|
|
333
346
|
memoryContent = result.memoryContent;
|
|
334
347
|
fileCount = result.fileCount;
|
|
335
348
|
filePaths = result.filePaths;
|
|
@@ -337,9 +350,13 @@ export async function loadCliConfig(settings, sessionId, argv, options = {}) {
|
|
|
337
350
|
const question = argv.promptInteractive || argv.prompt || '';
|
|
338
351
|
// Determine approval mode with backward compatibility
|
|
339
352
|
let approvalMode;
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
353
|
+
const rawApprovalMode = argv.approvalMode ||
|
|
354
|
+
(argv.yolo ? 'yolo' : undefined) ||
|
|
355
|
+
(settings.tools?.approvalMode !== 'yolo'
|
|
356
|
+
? settings.tools.approvalMode
|
|
357
|
+
: undefined);
|
|
358
|
+
if (rawApprovalMode) {
|
|
359
|
+
switch (rawApprovalMode) {
|
|
343
360
|
case 'yolo':
|
|
344
361
|
approvalMode = ApprovalMode.YOLO;
|
|
345
362
|
break;
|
|
@@ -356,13 +373,11 @@ export async function loadCliConfig(settings, sessionId, argv, options = {}) {
|
|
|
356
373
|
approvalMode = ApprovalMode.DEFAULT;
|
|
357
374
|
break;
|
|
358
375
|
default:
|
|
359
|
-
throw new Error(`Invalid approval mode: ${
|
|
376
|
+
throw new Error(`Invalid approval mode: ${rawApprovalMode}. Valid values are: yolo, auto_edit, plan, default`);
|
|
360
377
|
}
|
|
361
378
|
}
|
|
362
379
|
else {
|
|
363
|
-
|
|
364
|
-
approvalMode =
|
|
365
|
-
argv.yolo || false ? ApprovalMode.YOLO : ApprovalMode.DEFAULT;
|
|
380
|
+
approvalMode = ApprovalMode.DEFAULT;
|
|
366
381
|
}
|
|
367
382
|
// Override approval mode if disableYoloMode is set.
|
|
368
383
|
if (settings.security?.disableYoloMode || settings.admin?.secureModeEnabled) {
|
|
@@ -397,11 +412,11 @@ export async function loadCliConfig(settings, sessionId, argv, options = {}) {
|
|
|
397
412
|
}
|
|
398
413
|
throw err;
|
|
399
414
|
}
|
|
400
|
-
//
|
|
401
|
-
|
|
415
|
+
// -p/--prompt forces non-interactive (headless) mode
|
|
416
|
+
// -i/--prompt-interactive forces interactive mode with an initial prompt
|
|
402
417
|
const interactive = !!argv.promptInteractive ||
|
|
403
418
|
!!argv.experimentalAcp ||
|
|
404
|
-
(process.stdin.isTTY && !
|
|
419
|
+
(process.stdin.isTTY && !argv.query && !argv.prompt && !argv.isCommand);
|
|
405
420
|
const allowedTools = argv.allowedTools || settings.tools?.allowed || [];
|
|
406
421
|
const allowedToolsSet = new Set(allowedTools);
|
|
407
422
|
// In non-interactive mode, exclude tools that require a prompt.
|
|
@@ -468,6 +483,11 @@ export async function loadCliConfig(settings, sessionId, argv, options = {}) {
|
|
|
468
483
|
const mcpEnabled = settings.admin?.mcp?.enabled ?? true;
|
|
469
484
|
const extensionsEnabled = settings.admin?.extensions?.enabled ?? true;
|
|
470
485
|
const adminSkillsEnabled = settings.admin?.skills?.enabled ?? true;
|
|
486
|
+
// Create MCP enablement manager and callbacks
|
|
487
|
+
const mcpEnablementManager = McpServerEnablementManager.getInstance();
|
|
488
|
+
const mcpEnablementCallbacks = mcpEnabled
|
|
489
|
+
? mcpEnablementManager.getEnablementCallbacks()
|
|
490
|
+
: undefined;
|
|
471
491
|
return new Config({
|
|
472
492
|
sessionId,
|
|
473
493
|
clientVersion: await getVersion(),
|
|
@@ -487,6 +507,7 @@ export async function loadCliConfig(settings, sessionId, argv, options = {}) {
|
|
|
487
507
|
toolCallCommand: settings.tools?.callCommand,
|
|
488
508
|
mcpServerCommand: mcpEnabled ? settings.mcp?.serverCommand : undefined,
|
|
489
509
|
mcpServers: mcpEnabled ? settings.mcpServers : {},
|
|
510
|
+
mcpEnablementCallbacks,
|
|
490
511
|
mcpEnabled,
|
|
491
512
|
extensionsEnabled,
|
|
492
513
|
agents: settings.agents,
|
|
@@ -558,13 +579,13 @@ export async function loadCliConfig(settings, sessionId, argv, options = {}) {
|
|
|
558
579
|
output: {
|
|
559
580
|
format: (argv.outputFormat ?? settings.output?.format),
|
|
560
581
|
},
|
|
561
|
-
codebaseInvestigatorSettings: settings.experimental?.codebaseInvestigatorSettings,
|
|
562
|
-
cliHelpAgentSettings: settings.experimental?.cliHelpAgentSettings,
|
|
563
582
|
fakeResponses: argv.fakeResponses,
|
|
564
583
|
recordResponses: argv.recordResponses,
|
|
565
584
|
retryFetchErrors: settings.general?.retryFetchErrors,
|
|
566
585
|
ptyInfo: ptyInfo?.name,
|
|
567
586
|
disableLLMCorrection: settings.tools?.disableLLMCorrection,
|
|
587
|
+
rawOutput: argv.rawOutput,
|
|
588
|
+
acceptRawOutputRisk: argv.acceptRawOutputRisk,
|
|
568
589
|
modelConfigServiceConfig: settings.modelConfigs,
|
|
569
590
|
// TODO: loading of hooks based on workspace trust
|
|
570
591
|
enableHooks: (settings.tools?.enableHooks ?? true) &&
|