@machina.ai/cell-cli 1.4.0-rc2 → 1.6.1-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/package.json +12 -8
- package/dist/src/commands/extensions/disable.d.ts +2 -3
- package/dist/src/commands/extensions/disable.js +20 -6
- package/dist/src/commands/extensions/disable.js.map +1 -1
- package/dist/src/commands/extensions/enable.d.ts +2 -3
- package/dist/src/commands/extensions/enable.js +20 -9
- package/dist/src/commands/extensions/enable.js.map +1 -1
- package/dist/src/commands/extensions/install.d.ts +2 -0
- package/dist/src/commands/extensions/install.js +20 -4
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/install.test.js +80 -3
- package/dist/src/commands/extensions/install.test.js.map +1 -1
- package/dist/src/commands/extensions/link.js +1 -1
- package/dist/src/commands/extensions/link.js.map +1 -1
- package/dist/src/commands/extensions/uninstall.js +1 -1
- package/dist/src/commands/extensions/uninstall.js.map +1 -1
- package/dist/src/commands/extensions/update.js +42 -11
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/config/config.d.ts +2 -1
- package/dist/src/config/config.js +33 -16
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +10 -14
- package/dist/src/config/extension.js +160 -145
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/extensions/extensionEnablement.d.ts +44 -0
- package/dist/src/config/extensions/extensionEnablement.js +161 -0
- package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
- package/dist/src/config/extensions/extensionEnablement.test.js +261 -0
- package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -0
- package/dist/src/config/extensions/github.d.ts +29 -0
- package/dist/src/config/extensions/github.js +306 -0
- package/dist/src/config/extensions/github.js.map +1 -0
- package/dist/src/config/extensions/github.test.d.ts +6 -0
- package/dist/src/config/extensions/github.test.js +267 -0
- package/dist/src/config/extensions/github.test.js.map +1 -0
- package/dist/src/config/extensions/update.d.ts +20 -0
- package/dist/src/config/extensions/update.js +94 -0
- package/dist/src/config/extensions/update.js.map +1 -0
- package/dist/src/config/extensions/update.test.d.ts +6 -0
- package/dist/src/config/extensions/update.test.js +324 -0
- package/dist/src/config/extensions/update.test.js.map +1 -0
- package/dist/src/config/extensions/variableSchema.d.ts +8 -0
- package/dist/src/config/extensions/variableSchema.js +4 -0
- package/dist/src/config/extensions/variableSchema.js.map +1 -1
- package/dist/src/config/keyBindings.d.ts +4 -1
- package/dist/src/config/keyBindings.js +8 -0
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/settings.d.ts +3 -0
- package/dist/src/config/settings.js +58 -18
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +121 -12
- package/dist/src/config/settingsSchema.js +112 -9
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +68 -55
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/config/trustedFolders.d.ts +1 -1
- package/dist/src/config/trustedFolders.js +9 -4
- package/dist/src/config/trustedFolders.js.map +1 -1
- package/dist/src/config/trustedFolders.test.js +41 -25
- package/dist/src/config/trustedFolders.test.js.map +1 -1
- package/dist/src/core/auth.d.ts +13 -0
- package/dist/src/core/auth.js +27 -0
- package/dist/src/core/auth.js.map +1 -0
- package/dist/src/core/initializer.d.ts +21 -0
- package/dist/src/core/initializer.js +33 -0
- package/dist/src/core/initializer.js.map +1 -0
- package/dist/src/core/theme.d.ts +12 -0
- package/dist/src/core/theme.js +20 -0
- package/dist/src/core/theme.js.map +1 -0
- package/dist/src/gemini.d.ts +2 -1
- package/dist/src/gemini.js +110 -69
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +124 -14
- 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 +87 -71
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +16 -17
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
- package/dist/src/services/FeedbackService.d.ts +21 -0
- package/dist/src/services/FeedbackService.js +124 -0
- package/dist/src/services/FeedbackService.js.map +1 -0
- package/dist/src/services/McpPromptLoader.js +43 -8
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/services/McpPromptLoader.test.js +228 -1
- package/dist/src/services/McpPromptLoader.test.js.map +1 -1
- package/dist/src/services/prompt-processors/shellProcessor.js +8 -1
- package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
- package/dist/src/test-utils/createExtension.d.ts +15 -0
- package/dist/src/test-utils/createExtension.js +25 -0
- package/dist/src/test-utils/createExtension.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.js +2 -0
- package/dist/src/test-utils/mockCommandContext.js.map +1 -1
- package/dist/src/ui/App.d.ts +1 -10
- package/dist/src/ui/App.js +17 -729
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/AppContainer.d.ts +17 -0
- package/dist/src/ui/AppContainer.js +905 -0
- package/dist/src/ui/AppContainer.js.map +1 -0
- package/dist/src/ui/AppContainer.test.d.ts +6 -0
- package/dist/src/ui/AppContainer.test.js +422 -0
- package/dist/src/ui/AppContainer.test.js.map +1 -0
- package/dist/src/ui/IdeIntegrationNudge.js +2 -1
- package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.d.ts +18 -0
- package/dist/src/ui/auth/AuthDialog.js +81 -0
- package/dist/src/ui/auth/AuthDialog.js.map +1 -0
- package/dist/src/ui/auth/AuthDialog.test.d.ts +6 -0
- package/dist/src/ui/auth/AuthDialog.test.js +176 -0
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -0
- package/dist/src/ui/{components → auth}/AuthInProgress.js +2 -2
- package/dist/src/ui/auth/AuthInProgress.js.map +1 -0
- package/dist/src/ui/auth/useAuth.d.ts +15 -0
- package/dist/src/ui/auth/useAuth.js +73 -0
- package/dist/src/ui/auth/useAuth.js.map +1 -0
- package/dist/src/ui/commands/chatCommand.d.ts +2 -0
- package/dist/src/ui/commands/chatCommand.js +82 -3
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/corgiCommand.js +1 -0
- package/dist/src/ui/commands/corgiCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +86 -16
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +2 -2
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +1 -1
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +5 -1
- package/dist/src/ui/commands/types.js +0 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/AboutBox.js +2 -2
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/AnsiOutput.d.ts +13 -0
- package/dist/src/ui/components/AnsiOutput.js +12 -0
- package/dist/src/ui/components/AnsiOutput.js.map +1 -0
- package/dist/src/ui/components/AnsiOutput.test.d.ts +6 -0
- package/dist/src/ui/components/AnsiOutput.test.js +97 -0
- package/dist/src/ui/components/AnsiOutput.test.js.map +1 -0
- package/dist/src/ui/components/AppHeader.d.ts +10 -0
- package/dist/src/ui/components/AppHeader.js +22 -0
- package/dist/src/ui/components/AppHeader.js.map +1 -0
- package/dist/src/ui/components/AsciiArt.d.ts +3 -3
- package/dist/src/ui/components/AsciiArt.js +3 -3
- package/dist/src/ui/components/AutoAcceptIndicator.js +4 -4
- package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/components/Composer.d.ts +6 -0
- package/dist/src/ui/components/Composer.js +74 -0
- package/dist/src/ui/components/Composer.js.map +1 -0
- package/dist/src/ui/components/Composer.test.d.ts +6 -0
- package/dist/src/ui/components/Composer.test.js +340 -0
- package/dist/src/ui/components/Composer.test.js.map +1 -0
- package/dist/src/ui/components/ConfigInitDisplay.d.ts +6 -0
- package/dist/src/ui/components/ConfigInitDisplay.js +38 -0
- package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -0
- package/dist/src/ui/components/ConsoleSummaryDisplay.js +2 -2
- package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextSummaryDisplay.js +3 -3
- package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.js +2 -2
- package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.js +2 -2
- package/dist/src/ui/components/DebugProfiler.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.js +7 -7
- package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
- package/dist/src/ui/components/DialogManager.d.ts +6 -0
- package/dist/src/ui/components/DialogManager.js +85 -0
- package/dist/src/ui/components/DialogManager.js.map +1 -0
- package/dist/src/ui/components/EditorSettingsDialog.js +5 -5
- package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.js +16 -8
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +18 -8
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Footer.d.ts +1 -2
- package/dist/src/ui/components/Footer.js +6 -2
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +5 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.js +7 -2
- package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
- package/dist/src/ui/components/Header.js +2 -2
- package/dist/src/ui/components/Header.js.map +1 -1
- package/dist/src/ui/components/Help.d.ts +1 -1
- package/dist/src/ui/components/Help.js +9 -6
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/Help.test.d.ts +6 -0
- package/dist/src/ui/components/Help.test.js +57 -0
- package/dist/src/ui/components/Help.test.js.map +1 -0
- package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -2
- package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.d.ts +3 -0
- package/dist/src/ui/components/InputPrompt.js +122 -22
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +2 -2
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/LoopDetectionConfirmation.d.ts +13 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.js +35 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +6 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js +25 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -0
- package/dist/src/ui/components/MainContent.d.ts +6 -0
- package/dist/src/ui/components/MainContent.js +23 -0
- package/dist/src/ui/components/MainContent.js.map +1 -0
- package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
- package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.js +7 -7
- package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/Notifications.d.ts +6 -0
- package/dist/src/ui/components/Notifications.js +23 -0
- package/dist/src/ui/components/Notifications.js.map +1 -0
- package/dist/src/ui/components/PrepareLabel.d.ts +5 -5
- package/dist/src/ui/components/PrepareLabel.js +67 -11
- package/dist/src/ui/components/PrepareLabel.js.map +1 -1
- package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
- package/dist/src/ui/components/PrepareLabel.test.js +71 -0
- package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
- package/dist/src/ui/components/ProQuotaDialog.d.ts +2 -2
- package/dist/src/ui/components/ProQuotaDialog.js +3 -3
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.test.js +3 -3
- package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
- package/dist/src/ui/components/QuittingDisplay.d.ts +6 -0
- package/dist/src/ui/components/QuittingDisplay.js +20 -0
- package/dist/src/ui/components/QuittingDisplay.js.map +1 -0
- package/dist/src/ui/components/RatingWidget.d.ts +14 -0
- package/dist/src/ui/components/RatingWidget.js +56 -0
- package/dist/src/ui/components/RatingWidget.js.map +1 -0
- package/dist/src/ui/components/SessionSummaryDisplay.d.ts +4 -0
- package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
- package/dist/src/ui/components/SettingsDialog.js +93 -22
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +435 -79
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.js +2 -2
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/ShellInputPrompt.d.ts +11 -0
- package/dist/src/ui/components/ShellInputPrompt.js +36 -0
- package/dist/src/ui/components/ShellInputPrompt.js.map +1 -0
- package/dist/src/ui/components/ShellModeIndicator.js +2 -2
- package/dist/src/ui/components/ShellModeIndicator.js.map +1 -1
- package/dist/src/ui/components/ShowMoreLines.js +2 -2
- package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.d.ts +4 -0
- package/dist/src/ui/components/StatsDisplay.js +10 -7
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +7 -2
- package/dist/src/ui/components/SuggestionsDisplay.js +17 -17
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.js +12 -29
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ThemeDialog.test.js +75 -0
- package/dist/src/ui/components/ThemeDialog.test.js.map +1 -0
- package/dist/src/ui/components/Tips.js +2 -2
- package/dist/src/ui/components/Tips.js.map +1 -1
- package/dist/src/ui/components/ToolStatsDisplay.js +4 -4
- package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/UpdateNotification.js +2 -2
- package/dist/src/ui/components/UpdateNotification.js.map +1 -1
- package/dist/src/ui/components/WorkspaceMigrationDialog.js +4 -4
- package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.d.ts +1 -2
- package/dist/src/ui/components/messages/CompressionMessage.js +37 -8
- package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/CompressionMessage.test.js +160 -0
- package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/DiffRenderer.d.ts +2 -1
- package/dist/src/ui/components/messages/DiffRenderer.js +14 -22
- package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
- package/dist/src/ui/components/messages/ErrorMessage.js +2 -2
- package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiMessage.js +2 -2
- package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
- package/dist/src/ui/components/messages/InfoMessage.js +2 -2
- package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +31 -19
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -2
- package/dist/src/ui/components/messages/ToolGroupMessage.js +17 -9
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +17 -15
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.d.ts +4 -0
- package/dist/src/ui/components/messages/ToolMessage.js +24 -10
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +33 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/UserMessage.js +3 -3
- package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
- package/dist/src/ui/components/messages/UserShellMessage.js +2 -2
- package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
- package/dist/src/ui/components/shared/EnumSelector.d.ts +18 -0
- package/dist/src/ui/components/shared/EnumSelector.js +44 -0
- package/dist/src/ui/components/shared/EnumSelector.js.map +1 -0
- package/dist/src/ui/components/shared/EnumSelector.test.d.ts +6 -0
- package/dist/src/ui/components/shared/EnumSelector.test.js +70 -0
- package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -0
- package/dist/src/ui/components/shared/MaxSizedBox.js +2 -2
- package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.js +12 -12
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/ScopeSelector.d.ts +19 -0
- package/dist/src/ui/components/shared/ScopeSelector.js +11 -0
- package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -0
- package/dist/src/ui/components/shared/text-buffer.d.ts +19 -2
- package/dist/src/ui/components/shared/text-buffer.js +191 -133
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
- package/dist/src/ui/components/views/ExtensionsList.js +47 -0
- package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
- package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js +97 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
- package/dist/src/ui/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/AppContext.d.ts +11 -0
- package/dist/src/ui/contexts/AppContext.js +15 -0
- package/dist/src/ui/contexts/AppContext.js.map +1 -0
- package/dist/src/ui/contexts/ConfigContext.d.ts +9 -0
- package/dist/src/ui/contexts/ConfigContext.js +16 -0
- package/dist/src/ui/contexts/ConfigContext.js.map +1 -0
- package/dist/src/ui/contexts/KeypressContext.d.ts +3 -0
- package/dist/src/ui/contexts/KeypressContext.js +51 -2
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.test.js +173 -1
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +36 -0
- package/dist/src/ui/contexts/UIActionsContext.js +20 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -0
- package/dist/src/ui/contexts/UIStateContext.d.ts +103 -0
- package/dist/src/ui/contexts/UIStateContext.js +15 -0
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.js +7 -5
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/keyToAnsi.d.ts +15 -0
- package/dist/src/ui/hooks/keyToAnsi.js +67 -0
- package/dist/src/ui/hooks/keyToAnsi.js.map +1 -0
- package/dist/src/ui/hooks/shellCommandProcessor.d.ts +2 -1
- package/dist/src/ui/hooks/shellCommandProcessor.js +60 -15
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.test.js +196 -17
- package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +16 -2
- package/dist/src/ui/hooks/slashCommandProcessor.js +28 -70
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +3 -2
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js +9 -5
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +69 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useExtensionUpdates.d.ts +12 -0
- package/dist/src/ui/hooks/useExtensionUpdates.js +64 -0
- package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +6 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js +162 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
- package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -1
- package/dist/src/ui/hooks/useFolderTrust.js +12 -13
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +11 -1
- package/dist/src/ui/hooks/useGeminiStream.js +124 -59
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.js +15 -18
- package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.test.js +49 -53
- package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
- package/dist/src/ui/hooks/useIdeTrustListener.js +2 -2
- package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -1
- package/dist/src/ui/hooks/useMessageQueue.d.ts +2 -1
- package/dist/src/ui/hooks/useMessageQueue.js +5 -3
- package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
- package/dist/src/ui/hooks/useMessageQueue.test.js +9 -0
- package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +21 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.js +122 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.test.d.ts +6 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js +267 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -0
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
- package/dist/src/ui/hooks/useReactToolScheduler.js +23 -17
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +1 -1
- package/dist/src/ui/hooks/useReverseSearchCompletion.js +67 -20
- package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.js +16 -3
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +169 -270
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useThemeCommand.d.ts +1 -1
- package/dist/src/ui/hooks/useThemeCommand.js +3 -14
- package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +12 -5
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +8 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +8 -8
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +2 -2
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -1
- package/dist/src/ui/privacy/GeminiPrivacyNotice.js +2 -2
- package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -1
- package/dist/src/ui/state/extensions.d.ts +15 -0
- package/dist/src/ui/state/extensions.js +17 -0
- package/dist/src/ui/state/extensions.js.map +1 -0
- package/dist/src/ui/themes/ayu.js +1 -1
- package/dist/src/ui/themes/dracula.js +2 -2
- package/dist/src/ui/themes/github-dark.js +1 -1
- package/dist/src/ui/themes/theme.js +17 -17
- package/dist/src/ui/themes/theme.js.map +1 -1
- package/dist/src/ui/types.d.ts +29 -3
- package/dist/src/ui/types.js +11 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/CodeColorizer.js +3 -2
- package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +7 -7
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.js +10 -10
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +6 -2
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.js +4 -4
- package/dist/src/ui/utils/TableRenderer.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.js +5 -6
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
- package/dist/src/ui/utils/displayUtils.js +4 -4
- package/dist/src/ui/utils/displayUtils.js.map +1 -1
- package/dist/src/ui/utils/highlight.d.ts +1 -1
- package/dist/src/ui/utils/highlight.js +15 -6
- package/dist/src/ui/utils/highlight.js.map +1 -1
- package/dist/src/ui/utils/highlight.test.js +56 -29
- package/dist/src/ui/utils/highlight.test.js.map +1 -1
- package/dist/src/ui/utils/kittyProtocolDetector.js +39 -29
- package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
- package/dist/src/ui/utils/textUtils.d.ts +9 -0
- package/dist/src/ui/utils/textUtils.js +52 -3
- package/dist/src/ui/utils/textUtils.js.map +1 -1
- package/dist/src/utils/commands.d.ts +20 -0
- package/dist/src/utils/commands.js +53 -0
- package/dist/src/utils/commands.js.map +1 -0
- package/dist/src/utils/commands.test.d.ts +6 -0
- package/dist/src/utils/commands.test.js +115 -0
- package/dist/src/utils/commands.test.js.map +1 -0
- package/dist/src/utils/commentJson.d.ts +9 -0
- package/dist/src/utils/commentJson.js +48 -0
- package/dist/src/utils/commentJson.js.map +1 -0
- package/dist/src/utils/commentJson.test.d.ts +6 -0
- package/dist/src/utils/commentJson.test.js +146 -0
- package/dist/src/utils/commentJson.test.js.map +1 -0
- package/dist/src/utils/errors.d.ts +21 -0
- package/dist/src/utils/errors.js +93 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.d.ts +6 -0
- package/dist/src/utils/errors.test.js +303 -0
- package/dist/src/utils/errors.test.js.map +1 -0
- package/dist/src/utils/processUtils.d.ts +13 -0
- package/dist/src/utils/processUtils.js +18 -0
- package/dist/src/utils/processUtils.js.map +1 -0
- package/dist/src/utils/processUtils.test.d.ts +6 -0
- package/dist/src/utils/processUtils.test.js +20 -0
- package/dist/src/utils/processUtils.test.js.map +1 -0
- package/dist/src/utils/sandbox.d.ts +1 -1
- package/dist/src/utils/sandbox.js +19 -8
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/settingsUtils.d.ts +16 -6
- package/dist/src/utils/settingsUtils.js +35 -25
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/settingsUtils.test.js +455 -158
- package/dist/src/utils/settingsUtils.test.js.map +1 -1
- package/dist/src/zed-integration/schema.d.ts +596 -596
- package/dist/src/zed-integration/zedIntegration.js +10 -7
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -9
- package/dist/src/ui/components/AuthDialog.d.ts +0 -16
- package/dist/src/ui/components/AuthDialog.js +0 -62
- package/dist/src/ui/components/AuthDialog.js.map +0 -1
- package/dist/src/ui/components/AuthDialog.test.js +0 -175
- package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
- package/dist/src/ui/components/AuthInProgress.js.map +0 -1
- package/dist/src/ui/hooks/useAuthCommand.d.ts +0 -15
- package/dist/src/ui/hooks/useAuthCommand.js +0 -68
- package/dist/src/ui/hooks/useAuthCommand.js.map +0 -1
- /package/dist/src/{ui/components/AuthDialog.test.d.ts → config/extensions/extensionEnablement.test.d.ts} +0 -0
- /package/dist/src/ui/{components → auth}/AuthInProgress.d.ts +0 -0
|
@@ -24,17 +24,36 @@ import { render } from 'ink-testing-library';
|
|
|
24
24
|
import { waitFor } from '@testing-library/react';
|
|
25
25
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
26
26
|
import { SettingsDialog } from './SettingsDialog.js';
|
|
27
|
-
import { LoadedSettings } from '../../config/settings.js';
|
|
27
|
+
import { LoadedSettings, SettingScope } from '../../config/settings.js';
|
|
28
28
|
import { VimModeProvider } from '../contexts/VimModeContext.js';
|
|
29
29
|
import { KeypressProvider } from '../contexts/KeypressContext.js';
|
|
30
|
+
import { act } from 'react';
|
|
31
|
+
import { saveModifiedSettings, TEST_ONLY } from '../../utils/settingsUtils.js';
|
|
32
|
+
import { getSettingsSchema, } from '../../config/settingsSchema.js';
|
|
30
33
|
// Mock the VimModeContext
|
|
31
34
|
const mockToggleVimEnabled = vi.fn();
|
|
32
35
|
const mockSetVimMode = vi.fn();
|
|
36
|
+
var TerminalKeys;
|
|
37
|
+
(function (TerminalKeys) {
|
|
38
|
+
TerminalKeys["ENTER"] = "\r";
|
|
39
|
+
TerminalKeys["TAB"] = "\t";
|
|
40
|
+
TerminalKeys["UP_ARROW"] = "\u001B[A";
|
|
41
|
+
TerminalKeys["DOWN_ARROW"] = "\u001B[B";
|
|
42
|
+
TerminalKeys["LEFT_ARROW"] = "\u001B[D";
|
|
43
|
+
TerminalKeys["RIGHT_ARROW"] = "\u001B[C";
|
|
44
|
+
TerminalKeys["ESCAPE"] = "\u001B";
|
|
45
|
+
})(TerminalKeys || (TerminalKeys = {}));
|
|
33
46
|
const createMockSettings = (userSettings = {}, systemSettings = {}, workspaceSettings = {}) => new LoadedSettings({
|
|
34
47
|
settings: { ui: { customThemes: {} }, mcpServers: {}, ...systemSettings },
|
|
48
|
+
originalSettings: {
|
|
49
|
+
ui: { customThemes: {} },
|
|
50
|
+
mcpServers: {},
|
|
51
|
+
...systemSettings,
|
|
52
|
+
},
|
|
35
53
|
path: '/system/settings.json',
|
|
36
54
|
}, {
|
|
37
55
|
settings: {},
|
|
56
|
+
originalSettings: {},
|
|
38
57
|
path: '/system/system-defaults.json',
|
|
39
58
|
}, {
|
|
40
59
|
settings: {
|
|
@@ -42,6 +61,11 @@ const createMockSettings = (userSettings = {}, systemSettings = {}, workspaceSet
|
|
|
42
61
|
mcpServers: {},
|
|
43
62
|
...userSettings,
|
|
44
63
|
},
|
|
64
|
+
originalSettings: {
|
|
65
|
+
ui: { customThemes: {} },
|
|
66
|
+
mcpServers: {},
|
|
67
|
+
...userSettings,
|
|
68
|
+
},
|
|
45
69
|
path: '/user/settings.json',
|
|
46
70
|
}, {
|
|
47
71
|
settings: {
|
|
@@ -49,28 +73,18 @@ const createMockSettings = (userSettings = {}, systemSettings = {}, workspaceSet
|
|
|
49
73
|
mcpServers: {},
|
|
50
74
|
...workspaceSettings,
|
|
51
75
|
},
|
|
76
|
+
originalSettings: {
|
|
77
|
+
ui: { customThemes: {} },
|
|
78
|
+
mcpServers: {},
|
|
79
|
+
...workspaceSettings,
|
|
80
|
+
},
|
|
52
81
|
path: '/workspace/settings.json',
|
|
53
82
|
}, true, new Set());
|
|
54
|
-
vi.mock('
|
|
55
|
-
const
|
|
56
|
-
let settings = createMockSettings({ 'a.string.setting': 'initial' });
|
|
83
|
+
vi.mock('../../config/settingsSchema.js', async (importOriginal) => {
|
|
84
|
+
const original = await importOriginal();
|
|
57
85
|
return {
|
|
58
|
-
...
|
|
59
|
-
|
|
60
|
-
settings,
|
|
61
|
-
setSetting: (key, value) => {
|
|
62
|
-
settings = createMockSettings({ [key]: value });
|
|
63
|
-
},
|
|
64
|
-
getSettingDefinition: (key) => {
|
|
65
|
-
if (key === 'a.string.setting') {
|
|
66
|
-
return {
|
|
67
|
-
type: 'string',
|
|
68
|
-
description: 'A string setting',
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
return undefined;
|
|
72
|
-
},
|
|
73
|
-
}),
|
|
86
|
+
...original,
|
|
87
|
+
getSettingsSchema: vi.fn(original.getSettingsSchema),
|
|
74
88
|
};
|
|
75
89
|
});
|
|
76
90
|
vi.mock('../contexts/VimModeContext.js', async () => {
|
|
@@ -114,7 +128,6 @@ vi.mock('../../utils/settingsUtils.js', async () => {
|
|
|
114
128
|
describe('SettingsDialog', () => {
|
|
115
129
|
const wait = (ms = 50) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
116
130
|
beforeEach(() => {
|
|
117
|
-
vi.clearAllMocks();
|
|
118
131
|
// Reset keypress mock state (variables are commented out)
|
|
119
132
|
// currentKeypressHandler = null;
|
|
120
133
|
// isKeypressActive = false;
|
|
@@ -123,37 +136,15 @@ describe('SettingsDialog', () => {
|
|
|
123
136
|
mockToggleVimEnabled.mockResolvedValue(true);
|
|
124
137
|
});
|
|
125
138
|
afterEach(() => {
|
|
139
|
+
TEST_ONLY.clearFlattenedSchema();
|
|
140
|
+
vi.clearAllMocks();
|
|
141
|
+
vi.resetAllMocks();
|
|
126
142
|
// Reset keypress mock state (variables are commented out)
|
|
127
143
|
// currentKeypressHandler = null;
|
|
128
144
|
// isKeypressActive = false;
|
|
129
145
|
// console.log = originalConsoleLog;
|
|
130
146
|
// console.error = originalConsoleError;
|
|
131
147
|
});
|
|
132
|
-
const createMockSettings = (userSettings = {}, systemSettings = {}, workspaceSettings = {}) => new LoadedSettings({
|
|
133
|
-
settings: {
|
|
134
|
-
ui: { customThemes: {} },
|
|
135
|
-
mcpServers: {},
|
|
136
|
-
...systemSettings,
|
|
137
|
-
},
|
|
138
|
-
path: '/system/settings.json',
|
|
139
|
-
}, {
|
|
140
|
-
settings: {},
|
|
141
|
-
path: '/system/system-defaults.json',
|
|
142
|
-
}, {
|
|
143
|
-
settings: {
|
|
144
|
-
ui: { customThemes: {} },
|
|
145
|
-
mcpServers: {},
|
|
146
|
-
...userSettings,
|
|
147
|
-
},
|
|
148
|
-
path: '/user/settings.json',
|
|
149
|
-
}, {
|
|
150
|
-
settings: {
|
|
151
|
-
ui: { customThemes: {} },
|
|
152
|
-
mcpServers: {},
|
|
153
|
-
...workspaceSettings,
|
|
154
|
-
},
|
|
155
|
-
path: '/workspace/settings.json',
|
|
156
|
-
}, true, new Set());
|
|
157
148
|
describe('Initial Rendering', () => {
|
|
158
149
|
it('should render the settings dialog with default state', () => {
|
|
159
150
|
const settings = createMockSettings();
|
|
@@ -164,6 +155,15 @@ describe('SettingsDialog', () => {
|
|
|
164
155
|
expect(output).toContain('Apply To');
|
|
165
156
|
expect(output).toContain('Use Enter to select, Tab to change focus');
|
|
166
157
|
});
|
|
158
|
+
it('should accept availableTerminalHeight prop without errors', () => {
|
|
159
|
+
const settings = createMockSettings();
|
|
160
|
+
const onSelect = vi.fn();
|
|
161
|
+
const { lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect, availableTerminalHeight: 20 }) }));
|
|
162
|
+
const output = lastFrame();
|
|
163
|
+
// Should still render properly with the height prop
|
|
164
|
+
expect(output).toContain('Settings');
|
|
165
|
+
expect(output).toContain('Use Enter to select');
|
|
166
|
+
});
|
|
167
167
|
it('should show settings list with default values', () => {
|
|
168
168
|
const settings = createMockSettings();
|
|
169
169
|
const onSelect = vi.fn();
|
|
@@ -185,10 +185,12 @@ describe('SettingsDialog', () => {
|
|
|
185
185
|
it('should navigate down with arrow key', async () => {
|
|
186
186
|
const settings = createMockSettings();
|
|
187
187
|
const onSelect = vi.fn();
|
|
188
|
-
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
188
|
+
const { stdin, unmount, lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
189
189
|
// Press down arrow
|
|
190
|
-
|
|
191
|
-
|
|
190
|
+
act(() => {
|
|
191
|
+
stdin.write(TerminalKeys.DOWN_ARROW); // Down arrow
|
|
192
|
+
});
|
|
193
|
+
expect(lastFrame()).toContain('● Disable Auto Update');
|
|
192
194
|
// The active index should have changed (tested indirectly through behavior)
|
|
193
195
|
unmount();
|
|
194
196
|
});
|
|
@@ -197,9 +199,9 @@ describe('SettingsDialog', () => {
|
|
|
197
199
|
const onSelect = vi.fn();
|
|
198
200
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
199
201
|
// First go down, then up
|
|
200
|
-
stdin.write(
|
|
202
|
+
stdin.write(TerminalKeys.DOWN_ARROW); // Down arrow
|
|
201
203
|
await wait();
|
|
202
|
-
stdin.write(
|
|
204
|
+
stdin.write(TerminalKeys.UP_ARROW);
|
|
203
205
|
await wait();
|
|
204
206
|
unmount();
|
|
205
207
|
});
|
|
@@ -214,27 +216,128 @@ describe('SettingsDialog', () => {
|
|
|
214
216
|
await wait();
|
|
215
217
|
unmount();
|
|
216
218
|
});
|
|
217
|
-
it('
|
|
219
|
+
it('wraps around when at the top of the list', async () => {
|
|
218
220
|
const settings = createMockSettings();
|
|
219
221
|
const onSelect = vi.fn();
|
|
220
|
-
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
222
|
+
const { stdin, unmount, lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
221
223
|
// Try to go up from first item
|
|
222
|
-
|
|
224
|
+
act(() => {
|
|
225
|
+
stdin.write(TerminalKeys.UP_ARROW);
|
|
226
|
+
});
|
|
223
227
|
await wait();
|
|
224
|
-
|
|
228
|
+
expect(lastFrame()).toContain('● Folder Trust');
|
|
225
229
|
unmount();
|
|
226
230
|
});
|
|
227
231
|
});
|
|
228
232
|
describe('Settings Toggling', () => {
|
|
229
233
|
it('should toggle setting with Enter key', async () => {
|
|
234
|
+
vi.mocked(saveModifiedSettings).mockClear();
|
|
230
235
|
const settings = createMockSettings();
|
|
231
236
|
const onSelect = vi.fn();
|
|
232
|
-
const
|
|
237
|
+
const component = (_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
238
|
+
const { stdin, unmount } = render(component);
|
|
233
239
|
// Press Enter to toggle current setting
|
|
234
|
-
stdin.write(
|
|
240
|
+
stdin.write(TerminalKeys.DOWN_ARROW);
|
|
235
241
|
await wait();
|
|
242
|
+
stdin.write(TerminalKeys.ENTER);
|
|
243
|
+
await wait();
|
|
244
|
+
// Wait for the mock to be called with more generous timeout for Windows
|
|
245
|
+
await waitFor(() => {
|
|
246
|
+
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalled();
|
|
247
|
+
}, { timeout: 1000 });
|
|
248
|
+
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalledWith(new Set(['general.disableAutoUpdate']), {
|
|
249
|
+
general: {
|
|
250
|
+
disableAutoUpdate: true,
|
|
251
|
+
},
|
|
252
|
+
}, expect.any(LoadedSettings), SettingScope.User);
|
|
236
253
|
unmount();
|
|
237
254
|
});
|
|
255
|
+
describe('enum values', () => {
|
|
256
|
+
let StringEnum;
|
|
257
|
+
(function (StringEnum) {
|
|
258
|
+
StringEnum["FOO"] = "foo";
|
|
259
|
+
StringEnum["BAR"] = "bar";
|
|
260
|
+
StringEnum["BAZ"] = "baz";
|
|
261
|
+
})(StringEnum || (StringEnum = {}));
|
|
262
|
+
const SETTING = {
|
|
263
|
+
type: 'enum',
|
|
264
|
+
label: 'Theme',
|
|
265
|
+
options: [
|
|
266
|
+
{
|
|
267
|
+
label: 'Foo',
|
|
268
|
+
value: StringEnum.FOO,
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
label: 'Bar',
|
|
272
|
+
value: StringEnum.BAR,
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
label: 'Baz',
|
|
276
|
+
value: StringEnum.BAZ,
|
|
277
|
+
},
|
|
278
|
+
],
|
|
279
|
+
category: 'UI',
|
|
280
|
+
requiresRestart: false,
|
|
281
|
+
default: StringEnum.BAR,
|
|
282
|
+
description: 'The color theme for the UI.',
|
|
283
|
+
showInDialog: true,
|
|
284
|
+
};
|
|
285
|
+
const FAKE_SCHEMA = {
|
|
286
|
+
ui: {
|
|
287
|
+
showInDialog: false,
|
|
288
|
+
properties: {
|
|
289
|
+
theme: {
|
|
290
|
+
...SETTING,
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
};
|
|
295
|
+
it('toggles enum values with the enter key', async () => {
|
|
296
|
+
vi.mocked(saveModifiedSettings).mockClear();
|
|
297
|
+
vi.mocked(getSettingsSchema).mockReturnValue(FAKE_SCHEMA);
|
|
298
|
+
const settings = createMockSettings();
|
|
299
|
+
const onSelect = vi.fn();
|
|
300
|
+
const component = (_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
301
|
+
const { stdin, unmount } = render(component);
|
|
302
|
+
// Press Enter to toggle current setting
|
|
303
|
+
stdin.write(TerminalKeys.DOWN_ARROW);
|
|
304
|
+
await wait();
|
|
305
|
+
stdin.write(TerminalKeys.ENTER);
|
|
306
|
+
await wait();
|
|
307
|
+
await waitFor(() => {
|
|
308
|
+
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalled();
|
|
309
|
+
}, { timeout: 1000 });
|
|
310
|
+
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalledWith(new Set(['ui.theme']), {
|
|
311
|
+
ui: {
|
|
312
|
+
theme: StringEnum.BAZ,
|
|
313
|
+
},
|
|
314
|
+
}, expect.any(LoadedSettings), SettingScope.User);
|
|
315
|
+
unmount();
|
|
316
|
+
});
|
|
317
|
+
it('loops back when reaching the end of an enum', async () => {
|
|
318
|
+
vi.mocked(saveModifiedSettings).mockClear();
|
|
319
|
+
vi.mocked(getSettingsSchema).mockReturnValue(FAKE_SCHEMA);
|
|
320
|
+
const settings = createMockSettings();
|
|
321
|
+
settings.setValue(SettingScope.User, 'ui.theme', StringEnum.BAZ);
|
|
322
|
+
const onSelect = vi.fn();
|
|
323
|
+
const component = (_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
324
|
+
const { stdin, unmount } = render(component);
|
|
325
|
+
// Press Enter to toggle current setting
|
|
326
|
+
stdin.write(TerminalKeys.DOWN_ARROW);
|
|
327
|
+
await wait();
|
|
328
|
+
stdin.write(TerminalKeys.ENTER);
|
|
329
|
+
await wait();
|
|
330
|
+
await waitFor(() => {
|
|
331
|
+
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalled();
|
|
332
|
+
}, { timeout: 1000 });
|
|
333
|
+
expect(vi.mocked(saveModifiedSettings)).toHaveBeenCalledWith(new Set(['ui.theme']), {
|
|
334
|
+
ui: {
|
|
335
|
+
theme: StringEnum.FOO,
|
|
336
|
+
},
|
|
337
|
+
}, expect.any(LoadedSettings), SettingScope.User);
|
|
338
|
+
unmount();
|
|
339
|
+
});
|
|
340
|
+
});
|
|
238
341
|
it('should toggle setting with Space key', async () => {
|
|
239
342
|
const settings = createMockSettings();
|
|
240
343
|
const onSelect = vi.fn();
|
|
@@ -250,7 +353,7 @@ describe('SettingsDialog', () => {
|
|
|
250
353
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
251
354
|
// Navigate to vim mode setting and toggle it
|
|
252
355
|
// This would require knowing the exact position, so we'll just test that the mock is called
|
|
253
|
-
stdin.write(
|
|
356
|
+
stdin.write(TerminalKeys.ENTER); // Enter key
|
|
254
357
|
await wait();
|
|
255
358
|
// The mock should potentially be called if vim mode was toggled
|
|
256
359
|
unmount();
|
|
@@ -262,7 +365,7 @@ describe('SettingsDialog', () => {
|
|
|
262
365
|
const onSelect = vi.fn();
|
|
263
366
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
264
367
|
// Switch to scope focus
|
|
265
|
-
stdin.write(
|
|
368
|
+
stdin.write(TerminalKeys.TAB); // Tab key
|
|
266
369
|
await wait();
|
|
267
370
|
// Select different scope (numbers 1-3 typically available)
|
|
268
371
|
stdin.write('2'); // Select second scope option
|
|
@@ -329,7 +432,7 @@ describe('SettingsDialog', () => {
|
|
|
329
432
|
const onSelect = vi.fn();
|
|
330
433
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
331
434
|
// Switch to scope selector
|
|
332
|
-
stdin.write(
|
|
435
|
+
stdin.write(TerminalKeys.TAB); // Tab
|
|
333
436
|
await wait();
|
|
334
437
|
// Change scope
|
|
335
438
|
stdin.write('2'); // Select workspace scope
|
|
@@ -355,7 +458,7 @@ describe('SettingsDialog', () => {
|
|
|
355
458
|
const onSelect = vi.fn();
|
|
356
459
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
357
460
|
// Try to toggle a setting (this might trigger vim mode toggle)
|
|
358
|
-
stdin.write(
|
|
461
|
+
stdin.write(TerminalKeys.ENTER); // Enter
|
|
359
462
|
await wait();
|
|
360
463
|
// Should not crash
|
|
361
464
|
unmount();
|
|
@@ -367,12 +470,12 @@ describe('SettingsDialog', () => {
|
|
|
367
470
|
const onSelect = vi.fn();
|
|
368
471
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
369
472
|
// Toggle a setting
|
|
370
|
-
stdin.write(
|
|
473
|
+
stdin.write(TerminalKeys.ENTER); // Enter
|
|
371
474
|
await wait();
|
|
372
475
|
// Toggle another setting
|
|
373
|
-
stdin.write(
|
|
476
|
+
stdin.write(TerminalKeys.DOWN_ARROW); // Down
|
|
374
477
|
await wait();
|
|
375
|
-
stdin.write(
|
|
478
|
+
stdin.write(TerminalKeys.ENTER); // Enter
|
|
376
479
|
await wait();
|
|
377
480
|
// Should track multiple modified settings
|
|
378
481
|
unmount();
|
|
@@ -383,7 +486,7 @@ describe('SettingsDialog', () => {
|
|
|
383
486
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
384
487
|
// Navigate down many times to test scrolling
|
|
385
488
|
for (let i = 0; i < 10; i++) {
|
|
386
|
-
stdin.write(
|
|
489
|
+
stdin.write(TerminalKeys.DOWN_ARROW); // Down arrow
|
|
387
490
|
await wait(10);
|
|
388
491
|
}
|
|
389
492
|
unmount();
|
|
@@ -396,7 +499,7 @@ describe('SettingsDialog', () => {
|
|
|
396
499
|
const { stdin, unmount } = render(_jsx(VimModeProvider, { settings: settings, children: _jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }) }));
|
|
397
500
|
// Navigate to and toggle vim mode setting
|
|
398
501
|
// This would require knowing the exact position of vim mode setting
|
|
399
|
-
stdin.write(
|
|
502
|
+
stdin.write(TerminalKeys.ENTER); // Enter
|
|
400
503
|
await wait();
|
|
401
504
|
unmount();
|
|
402
505
|
});
|
|
@@ -417,7 +520,7 @@ describe('SettingsDialog', () => {
|
|
|
417
520
|
const onSelect = vi.fn();
|
|
418
521
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
419
522
|
// Toggle a non-restart-required setting (like hideTips)
|
|
420
|
-
stdin.write(
|
|
523
|
+
stdin.write(TerminalKeys.ENTER); // Enter - toggle current setting
|
|
421
524
|
await wait();
|
|
422
525
|
// Should save immediately without showing restart prompt
|
|
423
526
|
unmount();
|
|
@@ -469,8 +572,8 @@ describe('SettingsDialog', () => {
|
|
|
469
572
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
470
573
|
// Rapid navigation
|
|
471
574
|
for (let i = 0; i < 5; i++) {
|
|
472
|
-
stdin.write(
|
|
473
|
-
stdin.write(
|
|
575
|
+
stdin.write(TerminalKeys.DOWN_ARROW);
|
|
576
|
+
stdin.write(TerminalKeys.UP_ARROW);
|
|
474
577
|
}
|
|
475
578
|
await wait(100);
|
|
476
579
|
// Should not crash
|
|
@@ -501,9 +604,9 @@ describe('SettingsDialog', () => {
|
|
|
501
604
|
const onSelect = vi.fn();
|
|
502
605
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
503
606
|
// Try to navigate when potentially at bounds
|
|
504
|
-
stdin.write(
|
|
607
|
+
stdin.write(TerminalKeys.DOWN_ARROW);
|
|
505
608
|
await wait();
|
|
506
|
-
stdin.write(
|
|
609
|
+
stdin.write(TerminalKeys.UP_ARROW);
|
|
507
610
|
await wait();
|
|
508
611
|
unmount();
|
|
509
612
|
});
|
|
@@ -565,17 +668,17 @@ describe('SettingsDialog', () => {
|
|
|
565
668
|
const onSelect = vi.fn();
|
|
566
669
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
567
670
|
// Toggle first setting (should require restart)
|
|
568
|
-
stdin.write(
|
|
671
|
+
stdin.write(TerminalKeys.ENTER); // Enter
|
|
569
672
|
await wait();
|
|
570
673
|
// Navigate to next setting and toggle it (should not require restart - e.g., vimMode)
|
|
571
|
-
stdin.write(
|
|
674
|
+
stdin.write(TerminalKeys.DOWN_ARROW); // Down
|
|
572
675
|
await wait();
|
|
573
|
-
stdin.write(
|
|
676
|
+
stdin.write(TerminalKeys.ENTER); // Enter
|
|
574
677
|
await wait();
|
|
575
678
|
// Navigate to another setting and toggle it (should also require restart)
|
|
576
|
-
stdin.write(
|
|
679
|
+
stdin.write(TerminalKeys.DOWN_ARROW); // Down
|
|
577
680
|
await wait();
|
|
578
|
-
stdin.write(
|
|
681
|
+
stdin.write(TerminalKeys.ENTER); // Enter
|
|
579
682
|
await wait();
|
|
580
683
|
// The test verifies that all changes are preserved and the dialog still works
|
|
581
684
|
// This tests the fix for the bug where changing one setting would reset all pending changes
|
|
@@ -586,13 +689,13 @@ describe('SettingsDialog', () => {
|
|
|
586
689
|
const onSelect = vi.fn();
|
|
587
690
|
const { stdin, unmount } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
588
691
|
// Multiple scope changes
|
|
589
|
-
stdin.write(
|
|
692
|
+
stdin.write(TerminalKeys.TAB); // Tab to scope
|
|
590
693
|
await wait();
|
|
591
694
|
stdin.write('2'); // Workspace
|
|
592
695
|
await wait();
|
|
593
|
-
stdin.write(
|
|
696
|
+
stdin.write(TerminalKeys.TAB); // Tab to settings
|
|
594
697
|
await wait();
|
|
595
|
-
stdin.write(
|
|
698
|
+
stdin.write(TerminalKeys.TAB); // Tab to scope
|
|
596
699
|
await wait();
|
|
597
700
|
stdin.write('1'); // User
|
|
598
701
|
await wait();
|
|
@@ -642,5 +745,258 @@ describe('SettingsDialog', () => {
|
|
|
642
745
|
unmount();
|
|
643
746
|
});
|
|
644
747
|
});
|
|
748
|
+
describe('Snapshot Tests', () => {
|
|
749
|
+
/**
|
|
750
|
+
* Snapshot tests for SettingsDialog component using ink-testing-library.
|
|
751
|
+
* These tests capture the visual output of the component in various states:
|
|
752
|
+
*
|
|
753
|
+
* - Default rendering with no custom settings
|
|
754
|
+
* - Various combinations of boolean settings (enabled/disabled)
|
|
755
|
+
* - Mixed boolean and number settings configurations
|
|
756
|
+
* - Different focus states (settings vs scope selector)
|
|
757
|
+
* - Different scope selections (User, System, Workspace)
|
|
758
|
+
* - Accessibility settings enabled
|
|
759
|
+
* - File filtering configurations
|
|
760
|
+
* - Tools and security settings
|
|
761
|
+
* - All settings disabled state
|
|
762
|
+
*
|
|
763
|
+
* The snapshots help ensure UI consistency and catch unintended visual changes.
|
|
764
|
+
*/
|
|
765
|
+
it('should render default state correctly', () => {
|
|
766
|
+
const settings = createMockSettings();
|
|
767
|
+
const onSelect = vi.fn();
|
|
768
|
+
const { lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
769
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
770
|
+
});
|
|
771
|
+
it('should render with various boolean settings enabled', () => {
|
|
772
|
+
const settings = createMockSettings({
|
|
773
|
+
general: {
|
|
774
|
+
vimMode: true,
|
|
775
|
+
disableAutoUpdate: true,
|
|
776
|
+
debugKeystrokeLogging: true,
|
|
777
|
+
enablePromptCompletion: true,
|
|
778
|
+
},
|
|
779
|
+
ui: {
|
|
780
|
+
hideWindowTitle: true,
|
|
781
|
+
hideTips: true,
|
|
782
|
+
showMemoryUsage: true,
|
|
783
|
+
showLineNumbers: true,
|
|
784
|
+
showCitations: true,
|
|
785
|
+
accessibility: {
|
|
786
|
+
disableLoadingPhrases: true,
|
|
787
|
+
screenReader: true,
|
|
788
|
+
},
|
|
789
|
+
},
|
|
790
|
+
ide: {
|
|
791
|
+
enabled: true,
|
|
792
|
+
},
|
|
793
|
+
context: {
|
|
794
|
+
loadMemoryFromIncludeDirectories: true,
|
|
795
|
+
fileFiltering: {
|
|
796
|
+
respectGitIgnore: true,
|
|
797
|
+
respectGeminiIgnore: true,
|
|
798
|
+
enableRecursiveFileSearch: true,
|
|
799
|
+
disableFuzzySearch: false,
|
|
800
|
+
},
|
|
801
|
+
},
|
|
802
|
+
tools: {
|
|
803
|
+
enableInteractiveShell: true,
|
|
804
|
+
autoAccept: true,
|
|
805
|
+
useRipgrep: true,
|
|
806
|
+
},
|
|
807
|
+
security: {
|
|
808
|
+
folderTrust: {
|
|
809
|
+
enabled: true,
|
|
810
|
+
},
|
|
811
|
+
},
|
|
812
|
+
});
|
|
813
|
+
const onSelect = vi.fn();
|
|
814
|
+
const { lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
815
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
816
|
+
});
|
|
817
|
+
it('should render with mixed boolean and number settings', () => {
|
|
818
|
+
const settings = createMockSettings({
|
|
819
|
+
general: {
|
|
820
|
+
vimMode: false,
|
|
821
|
+
disableAutoUpdate: true,
|
|
822
|
+
},
|
|
823
|
+
ui: {
|
|
824
|
+
showMemoryUsage: true,
|
|
825
|
+
hideWindowTitle: false,
|
|
826
|
+
},
|
|
827
|
+
tools: {
|
|
828
|
+
truncateToolOutputThreshold: 50000,
|
|
829
|
+
truncateToolOutputLines: 1000,
|
|
830
|
+
},
|
|
831
|
+
context: {
|
|
832
|
+
discoveryMaxDirs: 500,
|
|
833
|
+
},
|
|
834
|
+
model: {
|
|
835
|
+
maxSessionTurns: 100,
|
|
836
|
+
skipNextSpeakerCheck: false,
|
|
837
|
+
},
|
|
838
|
+
});
|
|
839
|
+
const onSelect = vi.fn();
|
|
840
|
+
const { lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
841
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
842
|
+
});
|
|
843
|
+
it('should render focused on scope selector', () => {
|
|
844
|
+
const settings = createMockSettings();
|
|
845
|
+
const onSelect = vi.fn();
|
|
846
|
+
const { lastFrame, stdin } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
847
|
+
// Switch focus to scope selector with Tab
|
|
848
|
+
stdin.write('\t');
|
|
849
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
850
|
+
});
|
|
851
|
+
it('should render with different scope selected (System)', () => {
|
|
852
|
+
const settings = createMockSettings({}, // userSettings
|
|
853
|
+
{
|
|
854
|
+
// systemSettings
|
|
855
|
+
general: {
|
|
856
|
+
vimMode: true,
|
|
857
|
+
disableAutoUpdate: false,
|
|
858
|
+
},
|
|
859
|
+
ui: {
|
|
860
|
+
showMemoryUsage: true,
|
|
861
|
+
},
|
|
862
|
+
});
|
|
863
|
+
const onSelect = vi.fn();
|
|
864
|
+
const { lastFrame, stdin } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
865
|
+
// Switch to scope selector
|
|
866
|
+
stdin.write('\t');
|
|
867
|
+
// Navigate to System scope
|
|
868
|
+
stdin.write('ArrowDown');
|
|
869
|
+
stdin.write('\r'); // Enter to select
|
|
870
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
871
|
+
});
|
|
872
|
+
it('should render with different scope selected (Workspace)', () => {
|
|
873
|
+
const settings = createMockSettings({}, // userSettings
|
|
874
|
+
{}, // systemSettings
|
|
875
|
+
{
|
|
876
|
+
// workspaceSettings
|
|
877
|
+
general: {
|
|
878
|
+
vimMode: false,
|
|
879
|
+
debugKeystrokeLogging: true,
|
|
880
|
+
},
|
|
881
|
+
tools: {
|
|
882
|
+
useRipgrep: true,
|
|
883
|
+
enableInteractiveShell: false,
|
|
884
|
+
},
|
|
885
|
+
});
|
|
886
|
+
const onSelect = vi.fn();
|
|
887
|
+
const { lastFrame, stdin } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
888
|
+
// Switch to scope selector
|
|
889
|
+
stdin.write('\t');
|
|
890
|
+
// Navigate to Workspace scope (down twice)
|
|
891
|
+
stdin.write('ArrowDown');
|
|
892
|
+
stdin.write('ArrowDown');
|
|
893
|
+
stdin.write('\r'); // Enter to select
|
|
894
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
895
|
+
});
|
|
896
|
+
it('should render with accessibility settings enabled', () => {
|
|
897
|
+
const settings = createMockSettings({
|
|
898
|
+
ui: {
|
|
899
|
+
accessibility: {
|
|
900
|
+
disableLoadingPhrases: true,
|
|
901
|
+
screenReader: true,
|
|
902
|
+
},
|
|
903
|
+
showMemoryUsage: true,
|
|
904
|
+
showLineNumbers: true,
|
|
905
|
+
},
|
|
906
|
+
general: {
|
|
907
|
+
vimMode: true,
|
|
908
|
+
},
|
|
909
|
+
});
|
|
910
|
+
const onSelect = vi.fn();
|
|
911
|
+
const { lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
912
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
913
|
+
});
|
|
914
|
+
it('should render with file filtering settings configured', () => {
|
|
915
|
+
const settings = createMockSettings({
|
|
916
|
+
context: {
|
|
917
|
+
fileFiltering: {
|
|
918
|
+
respectGitIgnore: false,
|
|
919
|
+
respectGeminiIgnore: true,
|
|
920
|
+
enableRecursiveFileSearch: false,
|
|
921
|
+
disableFuzzySearch: true,
|
|
922
|
+
},
|
|
923
|
+
loadMemoryFromIncludeDirectories: true,
|
|
924
|
+
discoveryMaxDirs: 100,
|
|
925
|
+
},
|
|
926
|
+
});
|
|
927
|
+
const onSelect = vi.fn();
|
|
928
|
+
const { lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
929
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
930
|
+
});
|
|
931
|
+
it('should render with tools and security settings', () => {
|
|
932
|
+
const settings = createMockSettings({
|
|
933
|
+
tools: {
|
|
934
|
+
enableInteractiveShell: true,
|
|
935
|
+
autoAccept: false,
|
|
936
|
+
useRipgrep: true,
|
|
937
|
+
truncateToolOutputThreshold: 25000,
|
|
938
|
+
truncateToolOutputLines: 500,
|
|
939
|
+
},
|
|
940
|
+
security: {
|
|
941
|
+
folderTrust: {
|
|
942
|
+
enabled: true,
|
|
943
|
+
},
|
|
944
|
+
},
|
|
945
|
+
model: {
|
|
946
|
+
maxSessionTurns: 50,
|
|
947
|
+
skipNextSpeakerCheck: true,
|
|
948
|
+
},
|
|
949
|
+
});
|
|
950
|
+
const onSelect = vi.fn();
|
|
951
|
+
const { lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
952
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
953
|
+
});
|
|
954
|
+
it('should render with all boolean settings disabled', () => {
|
|
955
|
+
const settings = createMockSettings({
|
|
956
|
+
general: {
|
|
957
|
+
vimMode: false,
|
|
958
|
+
disableAutoUpdate: false,
|
|
959
|
+
debugKeystrokeLogging: false,
|
|
960
|
+
enablePromptCompletion: false,
|
|
961
|
+
},
|
|
962
|
+
ui: {
|
|
963
|
+
hideWindowTitle: false,
|
|
964
|
+
hideTips: false,
|
|
965
|
+
showMemoryUsage: false,
|
|
966
|
+
showLineNumbers: false,
|
|
967
|
+
showCitations: false,
|
|
968
|
+
accessibility: {
|
|
969
|
+
disableLoadingPhrases: false,
|
|
970
|
+
screenReader: false,
|
|
971
|
+
},
|
|
972
|
+
},
|
|
973
|
+
ide: {
|
|
974
|
+
enabled: false,
|
|
975
|
+
},
|
|
976
|
+
context: {
|
|
977
|
+
loadMemoryFromIncludeDirectories: false,
|
|
978
|
+
fileFiltering: {
|
|
979
|
+
respectGitIgnore: false,
|
|
980
|
+
respectGeminiIgnore: false,
|
|
981
|
+
enableRecursiveFileSearch: false,
|
|
982
|
+
disableFuzzySearch: false,
|
|
983
|
+
},
|
|
984
|
+
},
|
|
985
|
+
tools: {
|
|
986
|
+
enableInteractiveShell: false,
|
|
987
|
+
autoAccept: false,
|
|
988
|
+
useRipgrep: false,
|
|
989
|
+
},
|
|
990
|
+
security: {
|
|
991
|
+
folderTrust: {
|
|
992
|
+
enabled: false,
|
|
993
|
+
},
|
|
994
|
+
},
|
|
995
|
+
});
|
|
996
|
+
const onSelect = vi.fn();
|
|
997
|
+
const { lastFrame } = render(_jsx(KeypressProvider, { kittyProtocolEnabled: false, children: _jsx(SettingsDialog, { settings: settings, onSelect: onSelect }) }));
|
|
998
|
+
expect(lastFrame()).toMatchSnapshot();
|
|
999
|
+
});
|
|
1000
|
+
});
|
|
645
1001
|
});
|
|
646
1002
|
//# sourceMappingURL=SettingsDialog.test.js.map
|