@machina.ai/cell-cli 1.16.0-rc1 → 1.18.4-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +8 -6
- package/dist/index.js.map +1 -1
- package/dist/package.json +8 -7
- package/dist/src/commands/extensions/disable.js +2 -0
- package/dist/src/commands/extensions/disable.js.map +1 -1
- package/dist/src/commands/extensions/disable.test.d.ts +6 -0
- package/dist/src/commands/extensions/disable.test.js +169 -0
- package/dist/src/commands/extensions/disable.test.js.map +1 -0
- package/dist/src/commands/extensions/enable.js +2 -0
- package/dist/src/commands/extensions/enable.js.map +1 -1
- package/dist/src/commands/extensions/enable.test.d.ts +6 -0
- package/dist/src/commands/extensions/enable.test.js +150 -0
- package/dist/src/commands/extensions/enable.test.js.map +1 -0
- package/dist/src/commands/extensions/examples/mcp-server/example.test.d.ts +6 -0
- package/dist/src/commands/extensions/examples/mcp-server/example.test.js +111 -0
- package/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +1 -0
- package/dist/src/commands/extensions/examples/mcp-server/example.test.ts +143 -0
- package/dist/src/commands/extensions/examples/mcp-server/package.json +1 -1
- package/dist/src/commands/extensions/install.js +2 -0
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/install.test.js +3 -0
- package/dist/src/commands/extensions/install.test.js.map +1 -1
- package/dist/src/commands/extensions/link.js +2 -0
- package/dist/src/commands/extensions/link.js.map +1 -1
- package/dist/src/commands/extensions/link.test.d.ts +6 -0
- package/dist/src/commands/extensions/link.test.js +131 -0
- package/dist/src/commands/extensions/link.test.js.map +1 -0
- package/dist/src/commands/extensions/list.js +2 -0
- package/dist/src/commands/extensions/list.js.map +1 -1
- package/dist/src/commands/extensions/list.test.d.ts +6 -0
- package/dist/src/commands/extensions/list.test.js +112 -0
- package/dist/src/commands/extensions/list.test.js.map +1 -0
- package/dist/src/commands/extensions/new.js +2 -0
- package/dist/src/commands/extensions/new.js.map +1 -1
- package/dist/src/commands/extensions/new.test.js +3 -0
- package/dist/src/commands/extensions/new.test.js.map +1 -1
- package/dist/src/commands/extensions/uninstall.d.ts +1 -1
- package/dist/src/commands/extensions/uninstall.js +26 -9
- package/dist/src/commands/extensions/uninstall.js.map +1 -1
- package/dist/src/commands/extensions/uninstall.test.js +190 -9
- package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
- package/dist/src/commands/extensions/update.js +2 -0
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/commands/extensions/update.test.d.ts +6 -0
- package/dist/src/commands/extensions/update.test.js +170 -0
- package/dist/src/commands/extensions/update.test.js.map +1 -0
- package/dist/src/commands/extensions/validate.js +2 -0
- package/dist/src/commands/extensions/validate.js.map +1 -1
- package/dist/src/commands/extensions/validate.test.js +3 -0
- package/dist/src/commands/extensions/validate.test.js.map +1 -1
- package/dist/src/commands/extensions.js +2 -0
- package/dist/src/commands/extensions.js.map +1 -1
- package/dist/src/commands/mcp/add.js +2 -0
- package/dist/src/commands/mcp/add.js.map +1 -1
- package/dist/src/commands/mcp/add.test.js +11 -3
- package/dist/src/commands/mcp/add.test.js.map +1 -1
- package/dist/src/commands/mcp/list.js +2 -0
- package/dist/src/commands/mcp/list.js.map +1 -1
- package/dist/src/commands/mcp/list.test.js +4 -6
- package/dist/src/commands/mcp/list.test.js.map +1 -1
- package/dist/src/commands/mcp/remove.js +2 -0
- package/dist/src/commands/mcp/remove.js.map +1 -1
- package/dist/src/commands/mcp/remove.test.js +26 -12
- package/dist/src/commands/mcp/remove.test.js.map +1 -1
- package/dist/src/commands/mcp.js +2 -0
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/mcp.test.js +1 -0
- package/dist/src/commands/mcp.test.js.map +1 -1
- package/dist/src/commands/utils.d.ts +6 -0
- package/dist/src/commands/utils.js +11 -0
- package/dist/src/commands/utils.js.map +1 -0
- package/dist/src/config/config.d.ts +2 -1
- package/dist/src/config/config.js +36 -23
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +69 -12
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/extension.test.js +131 -125
- package/dist/src/config/extension.test.js.map +1 -1
- package/dist/src/config/keyBindings.d.ts +1 -1
- package/dist/src/config/keyBindings.js +4 -4
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +12 -3
- package/dist/src/config/settingsSchema.js +13 -4
- 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/trustedFolders.d.ts +1 -1
- package/dist/src/config/trustedFolders.js +24 -17
- package/dist/src/config/trustedFolders.js.map +1 -1
- package/dist/src/gemini.d.ts +2 -1
- package/dist/src/gemini.js +73 -15
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +56 -15
- 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/nonInteractiveCli.js +4 -1
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCli.test.js +2 -2
- package/dist/src/nonInteractiveCli.test.js.map +1 -1
- package/dist/src/services/CommandService.test.js +3 -2
- package/dist/src/services/CommandService.test.js.map +1 -1
- package/dist/src/services/McpPromptLoader.js +5 -3
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/services/McpPromptLoader.test.js +29 -1
- package/dist/src/services/McpPromptLoader.test.js.map +1 -1
- package/dist/src/test-utils/render.d.ts +26 -2
- package/dist/src/test-utils/render.js +76 -3
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/AppContainer.js +112 -42
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +181 -103
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.js +17 -10
- package/dist/src/ui/auth/AuthDialog.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +7 -4
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +8 -1
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.test.js +4 -0
- package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +12 -0
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.test.js +5 -0
- package/dist/src/ui/commands/clearCommand.test.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.d.ts +0 -1
- package/dist/src/ui/commands/directoryCommand.js +104 -43
- package/dist/src/ui/commands/directoryCommand.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.test.js +91 -2
- package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +1 -0
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.test.js +3 -0
- package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
- package/dist/src/ui/commands/permissionsCommand.js +62 -5
- package/dist/src/ui/commands/permissionsCommand.js.map +1 -1
- package/dist/src/ui/commands/permissionsCommand.test.js +60 -4
- package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/setupGithubCommand.d.ts +1 -0
- package/dist/src/ui/commands/setupGithubCommand.js +82 -45
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
- package/dist/src/ui/commands/setupGithubCommand.test.js +35 -5
- package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +7 -1
- 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 +1 -1
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/AppHeader.js +3 -22
- package/dist/src/ui/components/AppHeader.js.map +1 -1
- package/dist/src/ui/components/AppHeader.test.js +10 -4
- package/dist/src/ui/components/AppHeader.test.js.map +1 -1
- package/dist/src/ui/components/AsciiArt.d.ts +6 -6
- package/dist/src/ui/components/AsciiArt.js +16 -15
- package/dist/src/ui/components/AsciiArt.js.map +1 -1
- package/dist/src/ui/components/Banner.d.ts +4 -2
- package/dist/src/ui/components/Banner.js +18 -4
- package/dist/src/ui/components/Banner.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.d.ts +1 -0
- package/dist/src/ui/components/DebugProfiler.js +23 -34
- package/dist/src/ui/components/DebugProfiler.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.test.js +1 -0
- package/dist/src/ui/components/DebugProfiler.test.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +7 -2
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/GradientRegression.test.js +22 -1
- package/dist/src/ui/components/GradientRegression.test.js.map +1 -1
- package/dist/src/ui/components/Header.test.js +27 -2
- package/dist/src/ui/components/Header.test.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +29 -35
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.js +104 -24
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +6 -1
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.js +2 -2
- package/dist/src/ui/components/ModelDialog.js.map +1 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.d.ts +23 -0
- package/dist/src/ui/components/MultiFolderTrustDialog.js +90 -0
- package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -0
- package/dist/src/ui/components/MultiFolderTrustDialog.test.d.ts +6 -0
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js +161 -0
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +5 -2
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js +12 -7
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +2 -2
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.js +2 -2
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
- package/dist/src/ui/components/SettingsDialog.js +4 -1
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/ThemedGradient.js +2 -1
- package/dist/src/ui/components/ThemedGradient.js.map +1 -1
- package/dist/src/ui/components/messages/ModelMessage.d.ts +11 -0
- package/dist/src/ui/components/messages/ModelMessage.js +5 -0
- package/dist/src/ui/components/messages/ModelMessage.js.map +1 -0
- package/dist/src/ui/components/messages/ShellToolMessage.d.ts +14 -0
- package/dist/src/ui/components/messages/ShellToolMessage.js +76 -0
- package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -0
- package/dist/src/ui/components/messages/ShellToolMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ShellToolMessage.test.js +123 -0
- package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolGroupMessage.js +19 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.d.ts +6 -4
- package/dist/src/ui/components/messages/ToolMessage.js +15 -102
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +13 -5
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.d.ts +13 -0
- package/dist/src/ui/components/messages/ToolResultDisplay.js +54 -0
- package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -0
- package/dist/src/ui/components/messages/ToolShared.d.ts +23 -0
- package/dist/src/ui/components/messages/ToolShared.js +40 -0
- package/dist/src/ui/components/messages/ToolShared.js.map +1 -0
- package/dist/src/ui/components/shared/text-buffer.d.ts +1 -0
- package/dist/src/ui/components/shared/text-buffer.js +7 -1
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/constants/tips.d.ts +6 -0
- package/dist/src/ui/constants/tips.js +168 -0
- package/dist/src/ui/constants/tips.js.map +1 -0
- package/dist/src/ui/constants/wittyPhrases.d.ts +6 -0
- package/dist/src/ui/constants/wittyPhrases.js +137 -0
- package/dist/src/ui/constants/wittyPhrases.js.map +1 -0
- package/dist/src/ui/constants.d.ts +1 -0
- package/dist/src/ui/constants.js +1 -0
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.js +21 -11
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.test.js +29 -10
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
- package/dist/src/ui/contexts/UIActionsContext.js +1 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +4 -0
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
- package/dist/src/ui/hooks/shellCommandProcessor.js +11 -5
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.test.js +4 -3
- package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +5 -3
- package/dist/src/ui/hooks/slashCommandProcessor.js +14 -5
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.test.js +1 -0
- package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/useAlternateBuffer.js +1 -1
- package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -1
- package/dist/src/ui/hooks/useBanner.d.ts +14 -0
- package/dist/src/ui/hooks/useBanner.js +48 -0
- package/dist/src/ui/hooks/useBanner.js.map +1 -0
- package/dist/src/ui/hooks/useBanner.test.d.ts +6 -0
- package/dist/src/ui/hooks/useBanner.test.js +92 -0
- package/dist/src/ui/hooks/useBanner.test.js.map +1 -0
- package/dist/src/ui/hooks/useBracketedPaste.js +3 -2
- package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -1
- package/dist/src/ui/hooks/useCommandCompletion.test.js +5 -5
- package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useConsoleMessages.d.ts +0 -1
- package/dist/src/ui/hooks/useConsoleMessages.js +26 -1
- package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
- package/dist/src/ui/hooks/useConsoleMessages.test.js +37 -5
- package/dist/src/ui/hooks/useConsoleMessages.test.js.map +1 -1
- package/dist/src/ui/hooks/useEditorSettings.d.ts +2 -2
- package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
- package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.js +11 -1
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.test.js +22 -0
- package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
- package/dist/src/ui/hooks/useGeminiStream.js +69 -12
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +20 -21
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/hooks/useHistoryManager.d.ts +5 -2
- package/dist/src/ui/hooks/useHistoryManager.js +39 -3
- package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
- package/dist/src/ui/hooks/useInactivityTimer.d.ts +14 -0
- package/dist/src/ui/hooks/useInactivityTimer.js +30 -0
- package/dist/src/ui/hooks/useInactivityTimer.js.map +1 -0
- package/dist/src/ui/hooks/useIncludeDirsTrust.d.ts +8 -0
- package/dist/src/ui/hooks/useIncludeDirsTrust.js +119 -0
- package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -0
- package/dist/src/ui/hooks/useIncludeDirsTrust.test.d.ts +6 -0
- package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +151 -0
- package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -0
- package/dist/src/ui/hooks/useInputHistoryStore.test.js +4 -1
- package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -1
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.d.ts +0 -1
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +1 -2
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +21 -9
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useMouseClick.d.ts +12 -0
- package/dist/src/ui/hooks/useMouseClick.js +28 -0
- package/dist/src/ui/hooks/useMouseClick.js.map +1 -0
- package/dist/src/ui/hooks/useMouseClick.test.d.ts +6 -0
- package/dist/src/ui/hooks/useMouseClick.test.js +59 -0
- package/dist/src/ui/hooks/useMouseClick.test.js.map +1 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +2 -2
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js +44 -7
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +191 -89
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.d.ts +4 -3
- package/dist/src/ui/hooks/usePhraseCycler.js +54 -305
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.test.js +109 -30
- package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.js +9 -3
- package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js +25 -3
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
- package/dist/src/ui/hooks/useReactToolScheduler.js +4 -8
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.test.js +1 -8
- package/dist/src/ui/hooks/useReactToolScheduler.test.js.map +1 -1
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +18 -12
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.js +13 -4
- package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.test.js +37 -0
- package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
- package/dist/src/ui/hooks/useSessionResume.js +1 -1
- package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
- package/dist/src/ui/hooks/useSessionResume.test.js +4 -4
- package/dist/src/ui/hooks/useSessionResume.test.js.map +1 -1
- package/dist/src/ui/hooks/useThemeCommand.d.ts +2 -2
- package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +2 -2
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +2 -2
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/layouts/DefaultAppLayout.js +1 -1
- 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/themes/theme-manager.test.js +2 -1
- package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
- package/dist/src/ui/types.d.ts +7 -1
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/ConsolePatcher.js +6 -9
- package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.js +3 -86
- package/dist/src/ui/utils/commandUtils.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.test.js +21 -273
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
- package/dist/src/ui/utils/directoryUtils.d.ts +6 -0
- package/dist/src/ui/utils/directoryUtils.js +21 -0
- package/dist/src/ui/utils/directoryUtils.js.map +1 -0
- package/dist/src/ui/utils/directoryUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/directoryUtils.test.js +52 -0
- package/dist/src/ui/utils/directoryUtils.test.js.map +1 -0
- package/dist/src/ui/utils/kittyProtocolDetector.d.ts +6 -2
- package/dist/src/ui/utils/kittyProtocolDetector.js +47 -43
- package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
- package/dist/src/ui/utils/mouse.d.ts +2 -2
- package/dist/src/ui/utils/mouse.js +2 -11
- package/dist/src/ui/utils/mouse.js.map +1 -1
- package/dist/src/utils/cleanup.d.ts +2 -0
- package/dist/src/utils/cleanup.js +16 -0
- package/dist/src/utils/cleanup.js.map +1 -1
- package/dist/src/utils/errors.js +10 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/events.d.ts +0 -2
- package/dist/src/utils/events.js +0 -1
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/installationInfo.test.js +8 -9
- package/dist/src/utils/installationInfo.test.js.map +1 -1
- package/dist/src/utils/persistentState.d.ts +1 -1
- package/dist/src/utils/sessionCleanup.test.js +4 -2
- package/dist/src/utils/sessionCleanup.test.js.map +1 -1
- package/dist/src/utils/sessionUtils.d.ts +5 -0
- package/dist/src/utils/sessionUtils.js +6 -1
- package/dist/src/utils/sessionUtils.js.map +1 -1
- package/dist/src/utils/sessions.test.d.ts +6 -0
- package/dist/src/utils/sessions.test.js +516 -0
- package/dist/src/utils/sessions.test.js.map +1 -0
- package/dist/src/validateNonInterActiveAuth.js +2 -0
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/src/zed-integration/acp.d.ts +2 -24
- package/dist/src/zed-integration/acp.js +2 -156
- package/dist/src/zed-integration/acp.js.map +1 -1
- package/dist/src/zed-integration/acp.test.d.ts +6 -0
- package/dist/src/zed-integration/acp.test.js +227 -0
- package/dist/src/zed-integration/acp.test.js.map +1 -0
- package/dist/src/zed-integration/connection.d.ts +28 -0
- package/dist/src/zed-integration/connection.js +163 -0
- package/dist/src/zed-integration/connection.js.map +1 -0
- package/dist/src/zed-integration/schema.d.ts +69 -13
- package/dist/src/zed-integration/schema.js +6 -5
- package/dist/src/zed-integration/schema.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.d.ts +0 -7
- package/dist/src/zed-integration/zedIntegration.js +9 -21
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -7
|
@@ -6,7 +6,8 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
|
6
6
|
*/
|
|
7
7
|
import { render as inkRender } from 'ink-testing-library';
|
|
8
8
|
import { Box } from 'ink';
|
|
9
|
-
import {
|
|
9
|
+
import { vi } from 'vitest';
|
|
10
|
+
import { act, useState } from 'react';
|
|
10
11
|
import { LoadedSettings } from '../config/settings.js';
|
|
11
12
|
import { KeypressProvider } from '../ui/contexts/KeypressContext.js';
|
|
12
13
|
import { SettingsContext } from '../ui/contexts/SettingsContext.js';
|
|
@@ -19,6 +20,7 @@ import { VimModeProvider } from '../ui/contexts/VimModeContext.js';
|
|
|
19
20
|
import { MouseProvider } from '../ui/contexts/MouseContext.js';
|
|
20
21
|
import { ScrollProvider } from '../ui/contexts/ScrollProvider.js';
|
|
21
22
|
import { StreamingContext } from '../ui/contexts/StreamingContext.js';
|
|
23
|
+
import { UIActionsContext, } from '../ui/contexts/UIActionsContext.js';
|
|
22
24
|
import {} from '@google/gemini-cli-core';
|
|
23
25
|
// Wrapper around ink-testing-library's render that ensures act() is called
|
|
24
26
|
export const render = (tree, terminalWidth) => {
|
|
@@ -53,6 +55,13 @@ export const render = (tree, terminalWidth) => {
|
|
|
53
55
|
},
|
|
54
56
|
};
|
|
55
57
|
};
|
|
58
|
+
export const simulateClick = async (stdin, col, row, button = 0) => {
|
|
59
|
+
// Terminal mouse events are 1-based, so convert if necessary.
|
|
60
|
+
const mouseEventString = `\x1b[<${button};${col};${row}M`;
|
|
61
|
+
await act(async () => {
|
|
62
|
+
stdin.write(mouseEventString);
|
|
63
|
+
});
|
|
64
|
+
};
|
|
56
65
|
const mockConfig = {
|
|
57
66
|
getModel: () => 'gemini-pro',
|
|
58
67
|
getTargetDir: () => '/Users/test/project/foo/bar/and/some/more/directories/to/make/it/long',
|
|
@@ -83,7 +92,38 @@ const baseMockUiState = {
|
|
|
83
92
|
terminalWidth: 120,
|
|
84
93
|
currentModel: 'gemini-pro',
|
|
85
94
|
};
|
|
86
|
-
|
|
95
|
+
const mockUIActions = {
|
|
96
|
+
handleThemeSelect: vi.fn(),
|
|
97
|
+
closeThemeDialog: vi.fn(),
|
|
98
|
+
handleThemeHighlight: vi.fn(),
|
|
99
|
+
handleAuthSelect: vi.fn(),
|
|
100
|
+
setAuthState: vi.fn(),
|
|
101
|
+
onAuthError: vi.fn(),
|
|
102
|
+
handleEditorSelect: vi.fn(),
|
|
103
|
+
exitEditorDialog: vi.fn(),
|
|
104
|
+
exitPrivacyNotice: vi.fn(),
|
|
105
|
+
closeSettingsDialog: vi.fn(),
|
|
106
|
+
closeModelDialog: vi.fn(),
|
|
107
|
+
openPermissionsDialog: vi.fn(),
|
|
108
|
+
closePermissionsDialog: vi.fn(),
|
|
109
|
+
setShellModeActive: vi.fn(),
|
|
110
|
+
vimHandleInput: vi.fn(),
|
|
111
|
+
handleIdePromptComplete: vi.fn(),
|
|
112
|
+
handleFolderTrustSelect: vi.fn(),
|
|
113
|
+
setConstrainHeight: vi.fn(),
|
|
114
|
+
onEscapePromptChange: vi.fn(),
|
|
115
|
+
refreshStatic: vi.fn(),
|
|
116
|
+
handleFinalSubmit: vi.fn(),
|
|
117
|
+
handleClearScreen: vi.fn(),
|
|
118
|
+
handleProQuotaChoice: vi.fn(),
|
|
119
|
+
setQueueErrorMessage: vi.fn(),
|
|
120
|
+
popAllMessages: vi.fn(),
|
|
121
|
+
handleApiKeySubmit: vi.fn(),
|
|
122
|
+
handleApiKeyCancel: vi.fn(),
|
|
123
|
+
setBannerVisible: vi.fn(),
|
|
124
|
+
setEmbeddedShellFocused: vi.fn(),
|
|
125
|
+
};
|
|
126
|
+
export const renderWithProviders = (component, { shellFocus = true, settings = mockSettings, uiState: providedUiState, width, mouseEventsEnabled = false, config = configProxy, useAlternateBuffer = true, uiActions, } = {}) => {
|
|
87
127
|
const baseState = new Proxy({ ...baseMockUiState, ...providedUiState }, {
|
|
88
128
|
get(target, prop) {
|
|
89
129
|
if (prop in target) {
|
|
@@ -115,7 +155,9 @@ export const renderWithProviders = (component, { shellFocus = true, settings = m
|
|
|
115
155
|
terminalWidth,
|
|
116
156
|
mainAreaWidth,
|
|
117
157
|
};
|
|
118
|
-
|
|
158
|
+
const finalUIActions = { ...mockUIActions, ...uiActions };
|
|
159
|
+
const renderResult = render(_jsx(ConfigContext.Provider, { value: config, children: _jsx(SettingsContext.Provider, { value: finalSettings, children: _jsx(UIStateContext.Provider, { value: finalUiState, children: _jsx(VimModeProvider, { settings: finalSettings, children: _jsx(ShellFocusContext.Provider, { value: shellFocus, children: _jsx(StreamingContext.Provider, { value: finalUiState.streamingState, children: _jsx(UIActionsContext.Provider, { value: finalUIActions, children: _jsx(KeypressProvider, { children: _jsx(MouseProvider, { mouseEventsEnabled: mouseEventsEnabled, children: _jsx(ScrollProvider, { children: _jsx(Box, { width: terminalWidth, flexShrink: 0, flexGrow: 0, flexDirection: "column", children: component }) }) }) }) }) }) }) }) }) }) }), terminalWidth);
|
|
160
|
+
return { ...renderResult, simulateClick };
|
|
119
161
|
};
|
|
120
162
|
export function renderHook(renderCallback, options) {
|
|
121
163
|
const result = { current: undefined };
|
|
@@ -142,4 +184,35 @@ export function renderHook(renderCallback, options) {
|
|
|
142
184
|
}
|
|
143
185
|
return { result, rerender, unmount };
|
|
144
186
|
}
|
|
187
|
+
export function renderHookWithProviders(renderCallback, options = {}) {
|
|
188
|
+
const result = { current: undefined };
|
|
189
|
+
let setPropsFn;
|
|
190
|
+
function TestComponent({ initialProps }) {
|
|
191
|
+
const [props, setProps] = useState(initialProps);
|
|
192
|
+
setPropsFn = setProps;
|
|
193
|
+
result.current = renderCallback(props);
|
|
194
|
+
return null;
|
|
195
|
+
}
|
|
196
|
+
const Wrapper = options.wrapper || (({ children }) => _jsx(_Fragment, { children: children }));
|
|
197
|
+
let renderResult;
|
|
198
|
+
act(() => {
|
|
199
|
+
renderResult = renderWithProviders(_jsx(Wrapper, { children: _jsx(TestComponent, { initialProps: options.initialProps }) }), options);
|
|
200
|
+
});
|
|
201
|
+
function rerender(newProps) {
|
|
202
|
+
act(() => {
|
|
203
|
+
if (setPropsFn && newProps) {
|
|
204
|
+
setPropsFn(newProps);
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
result,
|
|
210
|
+
rerender,
|
|
211
|
+
unmount: () => {
|
|
212
|
+
act(() => {
|
|
213
|
+
renderResult.unmount();
|
|
214
|
+
});
|
|
215
|
+
},
|
|
216
|
+
};
|
|
217
|
+
}
|
|
145
218
|
//# sourceMappingURL=render.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/test-utils/render.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/test-utils/render.tsx"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { UIActionsContext, } from './contexts/UIActionsContext.js';
|
|
|
13
13
|
import { ConfigContext } from './contexts/ConfigContext.js';
|
|
14
14
|
import { ToolCallStatus, AuthState, } from './types.js';
|
|
15
15
|
import { MessageType, StreamingState } from './types.js';
|
|
16
|
-
import { DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, PREVIEW_GEMINI_MODEL, resolveModel, IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, } from '@google/gemini-cli-core';
|
|
16
|
+
import { DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, PREVIEW_GEMINI_MODEL, resolveModel, IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, writeToStdout, disableMouseEvents, enterAlternateScreen, enableMouseEvents, disableLineWrapping, shouldEnterAlternateScreen, } from '@google/gemini-cli-core';
|
|
17
17
|
import { validateAuthMethod } from '../config/auth.js';
|
|
18
18
|
import process from 'node:process';
|
|
19
19
|
import { useHistory } from './hooks/useHistoryManager.js';
|
|
@@ -29,7 +29,7 @@ import { useVimMode } from './contexts/VimModeContext.js';
|
|
|
29
29
|
import { useConsoleMessages } from './hooks/useConsoleMessages.js';
|
|
30
30
|
import { useTerminalSize } from './hooks/useTerminalSize.js';
|
|
31
31
|
import { calculatePromptWidths } from './components/InputPrompt.js';
|
|
32
|
-
import { useStdout, useStdin } from 'ink';
|
|
32
|
+
import { useApp, useStdout, useStdin } from 'ink';
|
|
33
33
|
import { calculateMainAreaWidth } from './utils/ui-sizing.js';
|
|
34
34
|
import ansiEscapes from 'ansi-escapes';
|
|
35
35
|
import * as fs from 'node:fs';
|
|
@@ -52,8 +52,8 @@ import {} from './IdeIntegrationNudge.js';
|
|
|
52
52
|
import { appEvents, AppEvent } from '../utils/events.js';
|
|
53
53
|
import {} from './utils/updateCheck.js';
|
|
54
54
|
import { setUpdateHandler } from '../utils/handleAutoUpdate.js';
|
|
55
|
-
import { ConsolePatcher } from './utils/ConsolePatcher.js';
|
|
56
55
|
import { registerCleanup, runExitCleanup } from '../utils/cleanup.js';
|
|
56
|
+
import { RELAUNCH_EXIT_CODE } from '../utils/processUtils.js';
|
|
57
57
|
import { useMessageQueue } from './hooks/useMessageQueue.js';
|
|
58
58
|
import { useAutoAcceptIndicator } from './hooks/useAutoAcceptIndicator.js';
|
|
59
59
|
import { useSessionStats } from './contexts/SessionContext.js';
|
|
@@ -64,9 +64,11 @@ import { ShellFocusContext } from './contexts/ShellFocusContext.js';
|
|
|
64
64
|
import { useSessionResume } from './hooks/useSessionResume.js';
|
|
65
65
|
import {} from '../config/extension-manager.js';
|
|
66
66
|
import { requestConsentInteractive } from '../config/extensions/consent.js';
|
|
67
|
-
import {
|
|
67
|
+
import { useIncludeDirsTrust } from './hooks/useIncludeDirsTrust.js';
|
|
68
|
+
import { isWorkspaceTrusted } from '../config/trustedFolders.js';
|
|
68
69
|
import { useAlternateBuffer } from './hooks/useAlternateBuffer.js';
|
|
69
70
|
import { useSettings } from './contexts/SettingsContext.js';
|
|
71
|
+
import { enableSupportedProtocol } from './utils/kittyProtocolDetector.js';
|
|
70
72
|
const WARNING_PROMPT_DURATION_MS = 1000;
|
|
71
73
|
const QUEUE_ERROR_DISPLAY_DURATION_MS = 3000;
|
|
72
74
|
function isToolExecuting(pendingHistoryItems) {
|
|
@@ -89,7 +91,9 @@ const SHELL_WIDTH_FRACTION = 0.89;
|
|
|
89
91
|
const SHELL_HEIGHT_PADDING = 10;
|
|
90
92
|
export const AppContainer = (props) => {
|
|
91
93
|
const { config, initializationResult, resumedSessionData } = props;
|
|
92
|
-
const historyManager = useHistory(
|
|
94
|
+
const historyManager = useHistory({
|
|
95
|
+
chatRecordingService: config.getGeminiClient()?.getChatRecordingService(),
|
|
96
|
+
});
|
|
93
97
|
useMemoryMonitor(historyManager);
|
|
94
98
|
const settings = useSettings();
|
|
95
99
|
const isAlternateBuffer = useAlternateBuffer();
|
|
@@ -102,12 +106,14 @@ export const AppContainer = (props) => {
|
|
|
102
106
|
const [isProcessing, setIsProcessing] = useState(false);
|
|
103
107
|
const [embeddedShellFocused, setEmbeddedShellFocused] = useState(false);
|
|
104
108
|
const [showDebugProfiler, setShowDebugProfiler] = useState(false);
|
|
109
|
+
const [customDialog, setCustomDialog] = useState(null);
|
|
105
110
|
const [copyModeEnabled, setCopyModeEnabled] = useState(false);
|
|
111
|
+
const [pendingRestorePrompt, setPendingRestorePrompt] = useState(false);
|
|
106
112
|
const [shellModeActive, setShellModeActive] = useState(false);
|
|
107
113
|
const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] = useState(false);
|
|
108
114
|
const [historyRemountKey, setHistoryRemountKey] = useState(0);
|
|
109
115
|
const [updateInfo, setUpdateInfo] = useState(null);
|
|
110
|
-
const [isTrustedFolder, setIsTrustedFolder] = useState(
|
|
116
|
+
const [isTrustedFolder, setIsTrustedFolder] = useState(isWorkspaceTrusted(settings.merged).isTrusted);
|
|
111
117
|
const [queueErrorMessage, setQueueErrorMessage] = useState(null);
|
|
112
118
|
const [defaultBannerText, setDefaultBannerText] = useState('');
|
|
113
119
|
const [warningBannerText, setWarningBannerText] = useState('');
|
|
@@ -119,8 +125,15 @@ export const AppContainer = (props) => {
|
|
|
119
125
|
const { addConfirmUpdateExtensionRequest, confirmUpdateExtensionRequests } = useConfirmUpdateRequests();
|
|
120
126
|
const { extensionsUpdateState, extensionsUpdateStateInternal, dispatchExtensionStateUpdate, } = useExtensionUpdates(extensionManager, historyManager.addItem, config.getEnableExtensionReloading());
|
|
121
127
|
const [isPermissionsDialogOpen, setPermissionsDialogOpen] = useState(false);
|
|
122
|
-
const
|
|
123
|
-
const
|
|
128
|
+
const [permissionsDialogProps, setPermissionsDialogProps] = useState(null);
|
|
129
|
+
const openPermissionsDialog = useCallback((props) => {
|
|
130
|
+
setPermissionsDialogOpen(true);
|
|
131
|
+
setPermissionsDialogProps(props ?? null);
|
|
132
|
+
}, []);
|
|
133
|
+
const closePermissionsDialog = useCallback(() => {
|
|
134
|
+
setPermissionsDialogOpen(false);
|
|
135
|
+
setPermissionsDialogProps(null);
|
|
136
|
+
}, []);
|
|
124
137
|
const toggleDebugProfiler = useCallback(() => setShowDebugProfiler((prev) => !prev), []);
|
|
125
138
|
// Helper to determine the effective model, considering the fallback state.
|
|
126
139
|
const getEffectiveModel = useCallback(() => {
|
|
@@ -146,6 +159,7 @@ export const AppContainer = (props) => {
|
|
|
146
159
|
const { columns: terminalWidth, rows: terminalHeight } = useTerminalSize();
|
|
147
160
|
const { stdin, setRawMode } = useStdin();
|
|
148
161
|
const { stdout } = useStdout();
|
|
162
|
+
const app = useApp();
|
|
149
163
|
// Additional hooks moved from App.tsx
|
|
150
164
|
const { stats: sessionStats } = useSessionStats();
|
|
151
165
|
const branchName = useGitBranchName(config.getTargetDir());
|
|
@@ -189,15 +203,7 @@ export const AppContainer = (props) => {
|
|
|
189
203
|
coreEvents.off(CoreEvent.ModelChanged, handleModelChanged);
|
|
190
204
|
};
|
|
191
205
|
}, [getEffectiveModel]);
|
|
192
|
-
const { consoleMessages,
|
|
193
|
-
useEffect(() => {
|
|
194
|
-
const consolePatcher = new ConsolePatcher({
|
|
195
|
-
onNewMessage: handleNewMessage,
|
|
196
|
-
debugMode: config.getDebugMode(),
|
|
197
|
-
});
|
|
198
|
-
consolePatcher.patch();
|
|
199
|
-
registerCleanup(consolePatcher.cleanup);
|
|
200
|
-
}, [handleNewMessage, config]);
|
|
206
|
+
const { consoleMessages, clearConsoleMessages: clearConsoleMessagesState } = useConsoleMessages();
|
|
201
207
|
const mainAreaWidth = calculateMainAreaWidth(terminalWidth, settings);
|
|
202
208
|
// Derive widths for InputPrompt using shared helper
|
|
203
209
|
const { inputWidth, suggestionsWidth } = useMemo(() => {
|
|
@@ -252,7 +258,25 @@ export const AppContainer = (props) => {
|
|
|
252
258
|
stdout.write(ansiEscapes.clearTerminal);
|
|
253
259
|
}
|
|
254
260
|
setHistoryRemountKey((prev) => prev + 1);
|
|
255
|
-
}, [setHistoryRemountKey,
|
|
261
|
+
}, [setHistoryRemountKey, isAlternateBuffer, stdout]);
|
|
262
|
+
const handleEditorClose = useCallback(() => {
|
|
263
|
+
if (shouldEnterAlternateScreen(isAlternateBuffer, config.getScreenReader())) {
|
|
264
|
+
// The editor may have exited alternate buffer mode so we need to
|
|
265
|
+
// enter it again to be safe.
|
|
266
|
+
enterAlternateScreen();
|
|
267
|
+
enableMouseEvents();
|
|
268
|
+
disableLineWrapping();
|
|
269
|
+
app.rerender();
|
|
270
|
+
}
|
|
271
|
+
enableSupportedProtocol();
|
|
272
|
+
refreshStatic();
|
|
273
|
+
}, [refreshStatic, isAlternateBuffer, app, config]);
|
|
274
|
+
useEffect(() => {
|
|
275
|
+
coreEvents.on(CoreEvent.ExternalEditorClosed, handleEditorClose);
|
|
276
|
+
return () => {
|
|
277
|
+
coreEvents.off(CoreEvent.ExternalEditorClosed, handleEditorClose);
|
|
278
|
+
};
|
|
279
|
+
}, [handleEditorClose]);
|
|
256
280
|
const { isThemeDialogOpen, openThemeDialog, closeThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, historyManager.addItem, initializationResult.themeError);
|
|
257
281
|
const { authState, setAuthState, authError, onAuthError, apiKeyDefaultValue, reloadApiKey, } = useAuthCommand(settings, config);
|
|
258
282
|
const { proQuotaRequest, handleProQuotaChoice } = useQuotaAndFallback({
|
|
@@ -291,12 +315,12 @@ export const AppContainer = (props) => {
|
|
|
291
315
|
if (authType === AuthType.LOGIN_WITH_GOOGLE &&
|
|
292
316
|
config.isBrowserLaunchSuppressed()) {
|
|
293
317
|
await runExitCleanup();
|
|
294
|
-
|
|
318
|
+
writeToStdout(`
|
|
295
319
|
----------------------------------------------------------------
|
|
296
|
-
Logging in with Google...
|
|
320
|
+
Logging in with Google... Restarting Cell CLI to continue.
|
|
297
321
|
----------------------------------------------------------------
|
|
298
322
|
`);
|
|
299
|
-
process.exit(
|
|
323
|
+
process.exit(RELAUNCH_EXIT_CODE);
|
|
300
324
|
}
|
|
301
325
|
}
|
|
302
326
|
setAuthState(AuthState.Authenticated);
|
|
@@ -413,7 +437,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
413
437
|
feedbackService,
|
|
414
438
|
toggleDebugProfiler,
|
|
415
439
|
]);
|
|
416
|
-
const { handleSlashCommand, slashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, commandContext, shellConfirmationRequest, confirmationRequest, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, slashCommandActions, extensionsUpdateStateInternal, isConfigInitialized, setBannerVisible);
|
|
440
|
+
const { handleSlashCommand, slashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, commandContext, shellConfirmationRequest, confirmationRequest, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, slashCommandActions, extensionsUpdateStateInternal, isConfigInitialized, setBannerVisible, setCustomDialog);
|
|
417
441
|
const performMemoryRefresh = useCallback(async () => {
|
|
418
442
|
historyManager.addItem({
|
|
419
443
|
type: MessageType.INFO,
|
|
@@ -442,10 +466,28 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
442
466
|
}, [config, historyManager]);
|
|
443
467
|
const cancelHandlerRef = useRef(() => { });
|
|
444
468
|
const getPreferredEditor = useCallback(() => settings.merged.general?.preferredEditor, [settings.merged.general?.preferredEditor]);
|
|
445
|
-
const onCancelSubmit = useCallback(() => {
|
|
446
|
-
|
|
469
|
+
const onCancelSubmit = useCallback((shouldRestorePrompt) => {
|
|
470
|
+
if (shouldRestorePrompt) {
|
|
471
|
+
setPendingRestorePrompt(true);
|
|
472
|
+
}
|
|
473
|
+
else {
|
|
474
|
+
setPendingRestorePrompt(false);
|
|
475
|
+
cancelHandlerRef.current(false);
|
|
476
|
+
}
|
|
447
477
|
}, []);
|
|
448
|
-
|
|
478
|
+
useEffect(() => {
|
|
479
|
+
if (pendingRestorePrompt) {
|
|
480
|
+
const lastHistoryUserMsg = historyManager.history.findLast((h) => h.type === 'user');
|
|
481
|
+
const lastUserMsg = userMessages.at(-1);
|
|
482
|
+
if (!lastHistoryUserMsg ||
|
|
483
|
+
(typeof lastHistoryUserMsg.text === 'string' &&
|
|
484
|
+
lastHistoryUserMsg.text === lastUserMsg)) {
|
|
485
|
+
cancelHandlerRef.current(true);
|
|
486
|
+
setPendingRestorePrompt(false);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}, [pendingRestorePrompt, userMessages, historyManager.history]);
|
|
490
|
+
const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, lastOutputTime, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused);
|
|
449
491
|
// Auto-accept indicator
|
|
450
492
|
const showAutoAcceptIndicator = useAutoAcceptIndicator({
|
|
451
493
|
config,
|
|
@@ -457,7 +499,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
457
499
|
streamingState,
|
|
458
500
|
submitQuery,
|
|
459
501
|
});
|
|
460
|
-
cancelHandlerRef.current = useCallback(() => {
|
|
502
|
+
cancelHandlerRef.current = useCallback((shouldRestorePrompt = true) => {
|
|
461
503
|
const pendingHistoryItems = [
|
|
462
504
|
...pendingSlashCommandHistoryItems,
|
|
463
505
|
...pendingGeminiHistoryItems,
|
|
@@ -467,13 +509,13 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
467
509
|
return;
|
|
468
510
|
}
|
|
469
511
|
const lastUserMessage = userMessages.at(-1);
|
|
470
|
-
let textToSet = lastUserMessage || '';
|
|
512
|
+
let textToSet = shouldRestorePrompt ? lastUserMessage || '' : '';
|
|
471
513
|
const queuedText = getQueuedMessagesText();
|
|
472
514
|
if (queuedText) {
|
|
473
515
|
textToSet = textToSet ? `${textToSet}\n\n${queuedText}` : queuedText;
|
|
474
516
|
clearQueue();
|
|
475
517
|
}
|
|
476
|
-
if (textToSet) {
|
|
518
|
+
if (textToSet || !shouldRestorePrompt) {
|
|
477
519
|
buffer.setText(textToSet);
|
|
478
520
|
}
|
|
479
521
|
}, [
|
|
@@ -615,6 +657,34 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
615
657
|
const { isFolderTrustDialogOpen, handleFolderTrustSelect, isRestarting } = useFolderTrust(settings, setIsTrustedFolder, historyManager.addItem);
|
|
616
658
|
const { needsRestart: ideNeedsRestart, restartReason: ideTrustRestartReason, } = useIdeTrustListener();
|
|
617
659
|
const isInitialMount = useRef(true);
|
|
660
|
+
useIncludeDirsTrust(config, isTrustedFolder, historyManager, setCustomDialog);
|
|
661
|
+
useEffect(() => {
|
|
662
|
+
let timeoutId;
|
|
663
|
+
const handleWarning = (message) => {
|
|
664
|
+
setWarningMessage(message);
|
|
665
|
+
if (timeoutId) {
|
|
666
|
+
clearTimeout(timeoutId);
|
|
667
|
+
}
|
|
668
|
+
timeoutId = setTimeout(() => {
|
|
669
|
+
setWarningMessage(null);
|
|
670
|
+
}, WARNING_PROMPT_DURATION_MS);
|
|
671
|
+
};
|
|
672
|
+
const handleSelectionWarning = () => {
|
|
673
|
+
handleWarning('Press Ctrl-S to enter selection mode to copy text.');
|
|
674
|
+
};
|
|
675
|
+
const handlePasteTimeout = () => {
|
|
676
|
+
handleWarning('Paste Timed out. Possibly due to slow connection.');
|
|
677
|
+
};
|
|
678
|
+
appEvents.on(AppEvent.SelectionWarning, handleSelectionWarning);
|
|
679
|
+
appEvents.on(AppEvent.PasteTimeout, handlePasteTimeout);
|
|
680
|
+
return () => {
|
|
681
|
+
appEvents.off(AppEvent.SelectionWarning, handleSelectionWarning);
|
|
682
|
+
appEvents.off(AppEvent.PasteTimeout, handlePasteTimeout);
|
|
683
|
+
if (timeoutId) {
|
|
684
|
+
clearTimeout(timeoutId);
|
|
685
|
+
}
|
|
686
|
+
};
|
|
687
|
+
}, []);
|
|
618
688
|
useEffect(() => {
|
|
619
689
|
let timeoutId;
|
|
620
690
|
const handleWarning = (message) => {
|
|
@@ -680,19 +750,10 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
680
750
|
setConstrainHeight(false);
|
|
681
751
|
};
|
|
682
752
|
appEvents.on(AppEvent.OpenDebugConsole, openDebugConsole);
|
|
683
|
-
const logErrorHandler = (errorMessage) => {
|
|
684
|
-
handleNewMessage({
|
|
685
|
-
type: 'error',
|
|
686
|
-
content: String(errorMessage),
|
|
687
|
-
count: 1,
|
|
688
|
-
});
|
|
689
|
-
};
|
|
690
|
-
appEvents.on(AppEvent.LogError, logErrorHandler);
|
|
691
753
|
return () => {
|
|
692
754
|
appEvents.off(AppEvent.OpenDebugConsole, openDebugConsole);
|
|
693
|
-
appEvents.off(AppEvent.LogError, logErrorHandler);
|
|
694
755
|
};
|
|
695
|
-
}, [
|
|
756
|
+
}, [config]);
|
|
696
757
|
useEffect(() => {
|
|
697
758
|
if (ctrlCTimerRef.current) {
|
|
698
759
|
clearTimeout(ctrlCTimerRef.current);
|
|
@@ -702,7 +763,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
702
763
|
recordExitFail(config);
|
|
703
764
|
}
|
|
704
765
|
if (ctrlCPressCount > 1) {
|
|
705
|
-
handleSlashCommand('/quit');
|
|
766
|
+
handleSlashCommand('/quit', undefined, undefined, false);
|
|
706
767
|
}
|
|
707
768
|
else {
|
|
708
769
|
ctrlCTimerRef.current = setTimeout(() => {
|
|
@@ -720,7 +781,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
720
781
|
recordExitFail(config);
|
|
721
782
|
}
|
|
722
783
|
if (ctrlDPressCount > 1) {
|
|
723
|
-
handleSlashCommand('/quit');
|
|
784
|
+
handleSlashCommand('/quit', undefined, undefined, false);
|
|
724
785
|
}
|
|
725
786
|
else {
|
|
726
787
|
ctrlDTimerRef.current = setTimeout(() => {
|
|
@@ -742,7 +803,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
742
803
|
}
|
|
743
804
|
setIdePromptAnswered(true);
|
|
744
805
|
}, [handleSlashCommand, settings]);
|
|
745
|
-
const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases);
|
|
806
|
+
const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases, !!activePtyId && !embeddedShellFocused, lastOutputTime);
|
|
746
807
|
const handleGlobalKeypress = useCallback((key) => {
|
|
747
808
|
if (copyModeEnabled) {
|
|
748
809
|
setCopyModeEnabled(false);
|
|
@@ -885,7 +946,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
885
946
|
coreEvents.on(CoreEvent.UserFeedback, handleUserFeedback);
|
|
886
947
|
// Flush any messages that happened during startup before this component
|
|
887
948
|
// mounted.
|
|
888
|
-
coreEvents.
|
|
949
|
+
coreEvents.drainBacklogs();
|
|
889
950
|
return () => {
|
|
890
951
|
coreEvents.off(CoreEvent.UserFeedback, handleUserFeedback);
|
|
891
952
|
};
|
|
@@ -905,6 +966,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
905
966
|
isFolderTrustDialogOpen ||
|
|
906
967
|
!!shellConfirmationRequest ||
|
|
907
968
|
!!confirmationRequest ||
|
|
969
|
+
!!customDialog ||
|
|
908
970
|
confirmUpdateExtensionRequests.length > 0 ||
|
|
909
971
|
!!loopDetectionConfirmationRequest ||
|
|
910
972
|
isThemeDialogOpen ||
|
|
@@ -980,6 +1042,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
980
1042
|
isSettingsDialogOpen,
|
|
981
1043
|
isModelDialogOpen,
|
|
982
1044
|
isPermissionsDialogOpen,
|
|
1045
|
+
permissionsDialogProps,
|
|
983
1046
|
slashCommands,
|
|
984
1047
|
pendingSlashCommandHistoryItems,
|
|
985
1048
|
commandContext,
|
|
@@ -1044,6 +1107,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
1044
1107
|
activePtyId,
|
|
1045
1108
|
embeddedShellFocused,
|
|
1046
1109
|
showDebugProfiler,
|
|
1110
|
+
customDialog,
|
|
1047
1111
|
copyModeEnabled,
|
|
1048
1112
|
warningMessage,
|
|
1049
1113
|
bannerData: {
|
|
@@ -1067,6 +1131,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
1067
1131
|
isSettingsDialogOpen,
|
|
1068
1132
|
isModelDialogOpen,
|
|
1069
1133
|
isPermissionsDialogOpen,
|
|
1134
|
+
permissionsDialogProps,
|
|
1070
1135
|
slashCommands,
|
|
1071
1136
|
pendingSlashCommandHistoryItems,
|
|
1072
1137
|
commandContext,
|
|
@@ -1133,6 +1198,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
1133
1198
|
embeddedShellFocused,
|
|
1134
1199
|
awaitingFeedback,
|
|
1135
1200
|
showDebugProfiler,
|
|
1201
|
+
customDialog,
|
|
1136
1202
|
apiKeyDefaultValue,
|
|
1137
1203
|
authState,
|
|
1138
1204
|
copyModeEnabled,
|
|
@@ -1154,6 +1220,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
1154
1220
|
exitPrivacyNotice,
|
|
1155
1221
|
closeSettingsDialog,
|
|
1156
1222
|
closeModelDialog,
|
|
1223
|
+
openPermissionsDialog,
|
|
1157
1224
|
closePermissionsDialog,
|
|
1158
1225
|
setShellModeActive,
|
|
1159
1226
|
vimHandleInput,
|
|
@@ -1170,6 +1237,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
1170
1237
|
handleApiKeySubmit,
|
|
1171
1238
|
handleApiKeyCancel,
|
|
1172
1239
|
setBannerVisible,
|
|
1240
|
+
setEmbeddedShellFocused,
|
|
1173
1241
|
}), [
|
|
1174
1242
|
handleThemeSelect,
|
|
1175
1243
|
closeThemeDialog,
|
|
@@ -1182,6 +1250,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
1182
1250
|
exitPrivacyNotice,
|
|
1183
1251
|
closeSettingsDialog,
|
|
1184
1252
|
closeModelDialog,
|
|
1253
|
+
openPermissionsDialog,
|
|
1185
1254
|
closePermissionsDialog,
|
|
1186
1255
|
setShellModeActive,
|
|
1187
1256
|
vimHandleInput,
|
|
@@ -1198,6 +1267,7 @@ Logging in with Google... Please restart Cell CLI to continue.
|
|
|
1198
1267
|
handleApiKeySubmit,
|
|
1199
1268
|
handleApiKeyCancel,
|
|
1200
1269
|
setBannerVisible,
|
|
1270
|
+
setEmbeddedShellFocused,
|
|
1201
1271
|
]);
|
|
1202
1272
|
return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
|
|
1203
1273
|
version: props.version,
|