@google/gemini-cli 0.30.1 → 0.31.0-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/google-gemini-cli-0.31.0-preview.0.tgz +0 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/package.json +7 -6
- package/dist/src/commands/extensions/install.js +72 -4
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/install.test.js +153 -20
- package/dist/src/commands/extensions/install.test.js.map +1 -1
- package/dist/src/commands/extensions/utils.js +1 -0
- package/dist/src/commands/extensions/utils.js.map +1 -1
- package/dist/src/config/config.js +17 -5
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +79 -4
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/extension-manager-hydration.test.js +2 -2
- package/dist/src/config/extension-manager-hydration.test.js.map +1 -1
- package/dist/src/config/extension-manager.js +10 -6
- package/dist/src/config/extension-manager.js.map +1 -1
- package/dist/src/config/extension.test.js +20 -20
- package/dist/src/config/extension.test.js.map +1 -1
- package/dist/src/config/extensionRegistryClient.js +3 -2
- package/dist/src/config/extensionRegistryClient.js.map +1 -1
- package/dist/src/config/extensionRegistryClient.test.js +52 -0
- package/dist/src/config/extensionRegistryClient.test.js.map +1 -1
- package/dist/src/config/extensions/consent.d.ts +10 -0
- package/dist/src/config/extensions/consent.js +10 -3
- package/dist/src/config/extensions/consent.js.map +1 -1
- package/dist/src/config/extensions/consent.test.js +1 -1
- package/dist/src/config/extensions/consent.test.js.map +1 -1
- package/dist/src/config/extensions/extensionEnablement.js +1 -0
- package/dist/src/config/extensions/extensionEnablement.js.map +1 -1
- package/dist/src/config/extensions/extensionSettings.js +20 -3
- package/dist/src/config/extensions/extensionSettings.js.map +1 -1
- package/dist/src/config/extensions/extensionSettings.test.js +16 -0
- package/dist/src/config/extensions/extensionSettings.test.js.map +1 -1
- package/dist/src/config/extensions/github.test.js +1 -1
- package/dist/src/config/extensions/github.test.js.map +1 -1
- package/dist/src/config/extensions/variables.js +3 -1
- package/dist/src/config/extensions/variables.js.map +1 -1
- package/dist/src/config/keyBindings.js +6 -2
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/policy-engine.integration.test.js +51 -13
- package/dist/src/config/policy-engine.integration.test.js.map +1 -1
- package/dist/src/config/policy.d.ts +15 -3
- package/dist/src/config/policy.js +49 -4
- package/dist/src/config/policy.js.map +1 -1
- package/dist/src/config/policy.test.d.ts +6 -0
- package/dist/src/config/policy.test.js +152 -0
- package/dist/src/config/policy.test.js.map +1 -0
- package/dist/src/config/settings-validation.js +1 -1
- package/dist/src/config/settings-validation.js.map +1 -1
- package/dist/src/config/settings-validation.test.js +2 -3
- package/dist/src/config/settings-validation.test.js.map +1 -1
- package/dist/src/config/settings.d.ts +2 -0
- package/dist/src/config/settings.js +18 -20
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settings.test.js +118 -18
- package/dist/src/config/settings.test.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +171 -9
- package/dist/src/config/settingsSchema.js +159 -9
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +26 -0
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/config/settings_repro.test.js +0 -1
- package/dist/src/config/settings_repro.test.js.map +1 -1
- package/dist/src/config/trustedFolders.test.js +3 -1
- package/dist/src/config/trustedFolders.test.js.map +1 -1
- package/dist/src/config/workspace-policy-cli.test.d.ts +6 -0
- package/dist/src/config/workspace-policy-cli.test.js +180 -0
- package/dist/src/config/workspace-policy-cli.test.js.map +1 -0
- package/dist/src/gemini.d.ts +2 -2
- package/dist/src/gemini.js +15 -5
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +18 -2
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/gemini_cleanup.test.js +27 -24
- package/dist/src/gemini_cleanup.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/integration-tests/modelSteering.test.d.ts +6 -0
- package/dist/src/integration-tests/modelSteering.test.js +65 -0
- package/dist/src/integration-tests/modelSteering.test.js.map +1 -0
- package/dist/src/nonInteractiveCli.js +2 -3
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/test-utils/AppRig.d.ts +1 -1
- package/dist/src/test-utils/AppRig.js +16 -7
- package/dist/src/test-utils/AppRig.js.map +1 -1
- package/dist/src/test-utils/AppRig.test.js +37 -2
- package/dist/src/test-utils/AppRig.test.js.map +1 -1
- package/dist/src/test-utils/async.d.ts +1 -1
- package/dist/src/test-utils/async.js +1 -1
- package/dist/src/test-utils/async.js.map +1 -1
- package/dist/src/test-utils/customMatchers.js +1 -1
- package/dist/src/test-utils/customMatchers.js.map +1 -1
- package/dist/src/test-utils/mockCommandContext.js +8 -2
- package/dist/src/test-utils/mockCommandContext.js.map +1 -1
- package/dist/src/test-utils/mockConfig.js +2 -1
- package/dist/src/test-utils/mockConfig.js.map +1 -1
- package/dist/src/test-utils/render.d.ts +81 -5
- package/dist/src/test-utils/render.js +299 -29
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/test-utils/render.test.js +49 -23
- package/dist/src/test-utils/render.test.js.map +1 -1
- package/dist/src/test-utils/settings.js +4 -2
- package/dist/src/test-utils/settings.js.map +1 -1
- package/dist/src/ui/App.test.js +56 -24
- package/dist/src/ui/App.test.js.map +1 -1
- package/dist/src/ui/AppContainer.d.ts +2 -2
- package/dist/src/ui/AppContainer.js +231 -11
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +561 -7
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/IdeIntegrationNudge.test.js +29 -33
- package/dist/src/ui/IdeIntegrationNudge.test.js.map +1 -1
- package/dist/src/ui/auth/ApiAuthDialog.test.js +19 -9
- package/dist/src/ui/auth/ApiAuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.js +1 -1
- package/dist/src/ui/auth/AuthDialog.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +61 -27
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/AuthInProgress.test.js +35 -14
- package/dist/src/ui/auth/AuthInProgress.test.js.map +1 -1
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js +11 -5
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +1 -1
- package/dist/src/ui/colors.js +6 -0
- package/dist/src/ui/colors.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +2 -0
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.test.js +7 -1
- package/dist/src/ui/commands/clearCommand.test.js.map +1 -1
- package/dist/src/ui/commands/copyCommand.js +2 -1
- package/dist/src/ui/commands/copyCommand.js.map +1 -1
- package/dist/src/ui/commands/copyCommand.test.js +6 -4
- package/dist/src/ui/commands/copyCommand.test.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +18 -0
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.test.js +4 -4
- package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/planCommand.js +1 -1
- package/dist/src/ui/commands/planCommand.js.map +1 -1
- package/dist/src/ui/commands/planCommand.test.js +1 -1
- package/dist/src/ui/commands/planCommand.test.js.map +1 -1
- package/dist/src/ui/commands/policiesCommand.js +5 -0
- package/dist/src/ui/commands/policiesCommand.js.map +1 -1
- package/dist/src/ui/commands/policiesCommand.test.js +38 -1
- package/dist/src/ui/commands/policiesCommand.test.js.map +1 -1
- package/dist/src/ui/commands/rewindCommand.js +3 -2
- package/dist/src/ui/commands/rewindCommand.js.map +1 -1
- package/dist/src/ui/components/AboutBox.test.js +16 -8
- package/dist/src/ui/components/AboutBox.test.js.map +1 -1
- package/dist/src/ui/components/AdminSettingsChangedDialog.test.js +7 -4
- package/dist/src/ui/components/AdminSettingsChangedDialog.test.js.map +1 -1
- package/dist/src/ui/components/AgentConfigDialog.test.js +41 -19
- package/dist/src/ui/components/AgentConfigDialog.test.js.map +1 -1
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.js +1 -1
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.js.map +1 -1
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +24 -12
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +1 -1
- package/dist/src/ui/components/AnsiOutput.test.js +35 -19
- package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
- package/dist/src/ui/components/AppHeader.test.js +27 -17
- package/dist/src/ui/components/AppHeader.test.js.map +1 -1
- package/dist/src/ui/components/ApprovalModeIndicator.test.js +18 -12
- package/dist/src/ui/components/ApprovalModeIndicator.test.js.map +1 -1
- package/dist/src/ui/components/AskUserDialog.test.js +147 -85
- package/dist/src/ui/components/AskUserDialog.test.js.map +1 -1
- package/dist/src/ui/components/BackgroundShellDisplay.test.js +50 -48
- package/dist/src/ui/components/BackgroundShellDisplay.test.js.map +1 -1
- package/dist/src/ui/components/Banner.test.js +8 -4
- package/dist/src/ui/components/Banner.test.js.map +1 -1
- package/dist/src/ui/components/Checklist.test.js +17 -12
- package/dist/src/ui/components/Checklist.test.js.map +1 -1
- package/dist/src/ui/components/ChecklistItem.test.js +9 -6
- package/dist/src/ui/components/ChecklistItem.test.js.map +1 -1
- package/dist/src/ui/components/CliSpinner.test.js +8 -5
- package/dist/src/ui/components/CliSpinner.test.js.map +1 -1
- package/dist/src/ui/components/Composer.js +5 -5
- package/dist/src/ui/components/Composer.js.map +1 -1
- package/dist/src/ui/components/Composer.test.js +104 -100
- package/dist/src/ui/components/Composer.test.js.map +1 -1
- package/dist/src/ui/components/ConfigInitDisplay.test.js +3 -2
- package/dist/src/ui/components/ConfigInitDisplay.test.js.map +1 -1
- package/dist/src/ui/components/ConsentPrompt.test.js +15 -8
- package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -1
- package/dist/src/ui/components/ConsoleSummaryDisplay.test.js +9 -5
- package/dist/src/ui/components/ConsoleSummaryDisplay.test.js.map +1 -1
- package/dist/src/ui/components/ContextSummaryDisplay.test.js +16 -14
- package/dist/src/ui/components/ContextSummaryDisplay.test.js.map +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.test.js +12 -6
- package/dist/src/ui/components/ContextUsageDisplay.test.js.map +1 -1
- package/dist/src/ui/components/CopyModeWarning.test.js +9 -5
- package/dist/src/ui/components/CopyModeWarning.test.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.test.js +17 -14
- package/dist/src/ui/components/DebugProfiler.test.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.test.js +13 -7
- package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +5 -1
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/DialogManager.test.js +9 -5
- package/dist/src/ui/components/DialogManager.test.js.map +1 -1
- package/dist/src/ui/components/EditorSettingsDialog.test.js +16 -8
- package/dist/src/ui/components/EditorSettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/ExitPlanModeDialog.js +2 -2
- package/dist/src/ui/components/ExitPlanModeDialog.js.map +1 -1
- package/dist/src/ui/components/ExitPlanModeDialog.test.js +2 -2
- package/dist/src/ui/components/ExitPlanModeDialog.test.js.map +1 -1
- package/dist/src/ui/components/ExitWarning.test.js +18 -10
- package/dist/src/ui/components/ExitWarning.test.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.d.ts +2 -0
- package/dist/src/ui/components/FolderTrustDialog.js +49 -3
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +249 -18
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Footer.test.js +101 -50
- package/dist/src/ui/components/Footer.test.js.map +1 -1
- package/dist/src/ui/components/GeminiRespondingSpinner.test.js +23 -13
- package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +1 -1
- package/dist/src/ui/components/GradientRegression.test.js +20 -10
- package/dist/src/ui/components/GradientRegression.test.js.map +1 -1
- package/dist/src/ui/components/Header.test.js +2 -0
- package/dist/src/ui/components/Header.test.js.map +1 -1
- package/dist/src/ui/components/Help.test.js +9 -6
- package/dist/src/ui/components/Help.test.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.d.ts +1 -2
- package/dist/src/ui/components/HistoryItemDisplay.js +4 -3
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.js +80 -35
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
- package/dist/src/ui/components/HookStatusDisplay.test.js +13 -9
- package/dist/src/ui/components/HookStatusDisplay.test.js.map +1 -1
- package/dist/src/ui/components/IdeTrustChangeDialog.test.js +36 -16
- package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +10 -12
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.js +127 -13
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.test.js +97 -47
- package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/components/LogoutConfirmationDialog.test.js +25 -9
- package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +1 -1
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js +9 -5
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -1
- package/dist/src/ui/components/MainContent.js +35 -14
- package/dist/src/ui/components/MainContent.js.map +1 -1
- package/dist/src/ui/components/MainContent.test.js +224 -10
- package/dist/src/ui/components/MainContent.test.js.map +1 -1
- package/dist/src/ui/components/MemoryUsageDisplay.test.js +8 -3
- package/dist/src/ui/components/MemoryUsageDisplay.test.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.js +6 -6
- package/dist/src/ui/components/ModelDialog.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.test.js +142 -16
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.test.js +38 -24
- package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js +32 -9
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/NewAgentsNotification.test.js +6 -4
- package/dist/src/ui/components/NewAgentsNotification.test.js.map +1 -1
- package/dist/src/ui/components/Notifications.js +50 -4
- package/dist/src/ui/components/Notifications.js.map +1 -1
- package/dist/src/ui/components/Notifications.test.js +162 -30
- package/dist/src/ui/components/Notifications.test.js.map +1 -1
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +36 -10
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/PolicyUpdateDialog.d.ts +18 -0
- package/dist/src/ui/components/PolicyUpdateDialog.js +59 -0
- package/dist/src/ui/components/PolicyUpdateDialog.js.map +1 -0
- package/dist/src/ui/components/PolicyUpdateDialog.test.d.ts +6 -0
- package/dist/src/ui/components/PolicyUpdateDialog.test.js +93 -0
- package/dist/src/ui/components/PolicyUpdateDialog.test.js.map +1 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.js +16 -11
- package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -1
- package/dist/src/ui/components/QuittingDisplay.test.js +9 -5
- package/dist/src/ui/components/QuittingDisplay.test.js.map +1 -1
- package/dist/src/ui/components/QuotaDisplay.test.js +40 -22
- package/dist/src/ui/components/QuotaDisplay.test.js.map +1 -1
- package/dist/src/ui/components/RawMarkdownIndicator.test.js +8 -4
- package/dist/src/ui/components/RawMarkdownIndicator.test.js.map +1 -1
- package/dist/src/ui/components/RewindConfirmation.test.js +15 -7
- package/dist/src/ui/components/RewindConfirmation.test.js.map +1 -1
- package/dist/src/ui/components/RewindViewer.js +9 -7
- package/dist/src/ui/components/RewindViewer.js.map +1 -1
- package/dist/src/ui/components/RewindViewer.test.js +54 -17
- package/dist/src/ui/components/RewindViewer.test.js.map +1 -1
- package/dist/src/ui/components/SessionBrowser.test.js +24 -11
- package/dist/src/ui/components/SessionBrowser.test.js.map +1 -1
- package/dist/src/ui/components/SessionRetentionWarningDialog.test.js +12 -7
- package/dist/src/ui/components/SessionRetentionWarningDialog.test.js.map +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/SessionSummaryDisplay.test.js +7 -4
- package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.js +76 -7
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +252 -109
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/ShellInputPrompt.test.js +120 -67
- package/dist/src/ui/components/ShellInputPrompt.test.js.map +1 -1
- package/dist/src/ui/components/ShellModeIndicator.test.js +4 -2
- package/dist/src/ui/components/ShellModeIndicator.test.js.map +1 -1
- package/dist/src/ui/components/ShortcutsHelp.js +1 -1
- package/dist/src/ui/components/ShortcutsHelp.js.map +1 -1
- package/dist/src/ui/components/ShortcutsHelp.test.js +6 -3
- package/dist/src/ui/components/ShortcutsHelp.test.js.map +1 -1
- package/dist/src/ui/components/ShowMoreLines.d.ts +2 -1
- package/dist/src/ui/components/ShowMoreLines.js +10 -5
- package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
- package/dist/src/ui/components/ShowMoreLines.test.js +47 -7
- package/dist/src/ui/components/ShowMoreLines.test.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.d.ts +1 -0
- package/dist/src/ui/components/StatsDisplay.js +9 -3
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.test.js +51 -34
- package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
- package/dist/src/ui/components/StatusDisplay.test.js +30 -17
- package/dist/src/ui/components/StatusDisplay.test.js.map +1 -1
- package/dist/src/ui/components/StickyHeader.test.js +4 -2
- package/dist/src/ui/components/StickyHeader.test.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.test.js +19 -13
- package/dist/src/ui/components/SuggestionsDisplay.test.js.map +1 -1
- package/dist/src/ui/components/Table.test.js +9 -6
- package/dist/src/ui/components/Table.test.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.test.js +42 -19
- package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
- package/dist/src/ui/components/ThemedGradient.test.js +4 -2
- package/dist/src/ui/components/ThemedGradient.test.js.map +1 -1
- package/dist/src/ui/components/Tips.test.js +4 -2
- package/dist/src/ui/components/Tips.test.js.map +1 -1
- package/dist/src/ui/components/ToastDisplay.js +6 -1
- package/dist/src/ui/components/ToastDisplay.js.map +1 -1
- package/dist/src/ui/components/ToastDisplay.test.js +48 -17
- package/dist/src/ui/components/ToastDisplay.test.js.map +1 -1
- package/dist/src/ui/components/ToolConfirmationQueue.js +11 -8
- package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
- package/dist/src/ui/components/ToolConfirmationQueue.test.js +75 -17
- package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
- package/dist/src/ui/components/ToolStatsDisplay.test.js +19 -12
- package/dist/src/ui/components/ToolStatsDisplay.test.js.map +1 -1
- package/dist/src/ui/components/UpdateNotification.test.js +4 -2
- package/dist/src/ui/components/UpdateNotification.test.js.map +1 -1
- package/dist/src/ui/components/UserIdentity.test.js +16 -11
- package/dist/src/ui/components/UserIdentity.test.js.map +1 -1
- package/dist/src/ui/components/ValidationDialog.test.js +33 -16
- package/dist/src/ui/components/ValidationDialog.test.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.test.js +99 -101
- package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ErrorMessage.test.js +8 -4
- package/dist/src/ui/components/messages/ErrorMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiMessage.js +5 -1
- package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiMessage.test.js +12 -6
- package/dist/src/ui/components/messages/GeminiMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/HintMessage.d.ts +11 -0
- package/dist/src/ui/components/messages/HintMessage.js +14 -0
- package/dist/src/ui/components/messages/HintMessage.js.map +1 -0
- package/dist/src/ui/components/messages/InfoMessage.d.ts +1 -0
- 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/InfoMessage.test.js +12 -6
- package/dist/src/ui/components/messages/InfoMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/RedirectionConfirmation.test.js +4 -2
- package/dist/src/ui/components/messages/RedirectionConfirmation.test.js.map +1 -1
- package/dist/src/ui/components/messages/ShellToolMessage.d.ts +1 -2
- package/dist/src/ui/components/messages/ShellToolMessage.js +15 -29
- package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ShellToolMessage.test.js +91 -22
- package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ThinkingMessage.test.js +25 -13
- package/dist/src/ui/components/messages/ThinkingMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/Todo.test.js +34 -19
- package/dist/src/ui/components/messages/Todo.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +128 -13
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +175 -20
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -4
- package/dist/src/ui/components/messages/ToolGroupMessage.js +91 -35
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +286 -63
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.js +4 -4
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +118 -39
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js +15 -6
- package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js +4 -2
- package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js +79 -0
- package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolResultDisplay.js +25 -14
- package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.test.js +81 -31
- package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js +5 -5
- package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolShared.d.ts +8 -0
- package/dist/src/ui/components/messages/ToolShared.js +27 -9
- package/dist/src/ui/components/messages/ToolShared.js.map +1 -1
- package/dist/src/ui/components/messages/ToolShared.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolShared.test.js +52 -0
- package/dist/src/ui/components/messages/ToolShared.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +11 -4
- package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +1 -1
- package/dist/src/ui/components/messages/UserMessage.js +1 -2
- package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
- package/dist/src/ui/components/messages/UserMessage.test.js +16 -8
- package/dist/src/ui/components/messages/UserMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/UserShellMessage.js +1 -2
- package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
- package/dist/src/ui/components/messages/WarningMessage.test.js +8 -4
- package/dist/src/ui/components/messages/WarningMessage.test.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSelectionList.test.js +118 -106
- package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSettingsDialog.js +22 -24
- package/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/shared/BaseSettingsDialog.test.js +139 -40
- package/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +10 -6
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -1
- package/dist/src/ui/components/shared/EnumSelector.test.js +42 -20
- package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -1
- package/dist/src/ui/components/shared/ExpandableText.test.js +21 -14
- package/dist/src/ui/components/shared/ExpandableText.test.js.map +1 -1
- package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js +8 -4
- package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js.map +1 -1
- package/dist/src/ui/components/shared/MaxSizedBox.test.js +41 -30
- package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
- package/dist/src/ui/components/shared/Scrollable.js +2 -3
- package/dist/src/ui/components/shared/Scrollable.js.map +1 -1
- package/dist/src/ui/components/shared/Scrollable.test.js +33 -17
- package/dist/src/ui/components/shared/Scrollable.test.js.map +1 -1
- package/dist/src/ui/components/shared/ScrollableList.js +1 -1
- package/dist/src/ui/components/shared/ScrollableList.js.map +1 -1
- package/dist/src/ui/components/shared/ScrollableList.test.js +36 -6
- package/dist/src/ui/components/shared/ScrollableList.test.js.map +1 -1
- package/dist/src/ui/components/shared/SearchableList.d.ts +46 -14
- package/dist/src/ui/components/shared/SearchableList.js +69 -57
- package/dist/src/ui/components/shared/SearchableList.js.map +1 -1
- package/dist/src/ui/components/shared/SearchableList.test.js +67 -14
- package/dist/src/ui/components/shared/SearchableList.test.js.map +1 -1
- package/dist/src/ui/components/shared/SectionHeader.d.ts +1 -0
- package/dist/src/ui/components/shared/SectionHeader.js +1 -1
- package/dist/src/ui/components/shared/SectionHeader.js.map +1 -1
- package/dist/src/ui/components/shared/SectionHeader.test.js +9 -2
- package/dist/src/ui/components/shared/SectionHeader.test.js.map +1 -1
- package/dist/src/ui/components/shared/TabHeader.js +1 -1
- package/dist/src/ui/components/shared/TabHeader.js.map +1 -1
- package/dist/src/ui/components/shared/TabHeader.test.js +65 -25
- package/dist/src/ui/components/shared/TabHeader.test.js.map +1 -1
- package/dist/src/ui/components/shared/TextInput.test.js +111 -65
- package/dist/src/ui/components/shared/TextInput.test.js.map +1 -1
- package/dist/src/ui/components/shared/VirtualizedList.test.js +27 -35
- package/dist/src/ui/components/shared/VirtualizedList.test.js.map +1 -1
- package/dist/src/ui/components/triage/TriageDuplicates.js +1 -0
- package/dist/src/ui/components/triage/TriageDuplicates.js.map +1 -1
- package/dist/src/ui/components/triage/TriageIssues.js +1 -0
- package/dist/src/ui/components/triage/TriageIssues.js.map +1 -1
- package/dist/src/ui/components/views/ChatList.test.js +9 -6
- package/dist/src/ui/components/views/ChatList.test.js.map +1 -1
- package/dist/src/ui/components/views/ExtensionRegistryView.d.ts +15 -0
- package/dist/src/ui/components/views/ExtensionRegistryView.js +60 -0
- package/dist/src/ui/components/views/ExtensionRegistryView.js.map +1 -0
- package/dist/src/ui/components/views/ExtensionRegistryView.test.d.ts +6 -0
- package/dist/src/ui/components/views/ExtensionRegistryView.test.js +168 -0
- package/dist/src/ui/components/views/ExtensionRegistryView.test.js.map +1 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js +21 -19
- package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -1
- package/dist/src/ui/components/views/McpStatus.test.js +38 -25
- package/dist/src/ui/components/views/McpStatus.test.js.map +1 -1
- package/dist/src/ui/components/views/SkillsList.test.js +18 -12
- package/dist/src/ui/components/views/SkillsList.test.js.map +1 -1
- package/dist/src/ui/components/views/ToolsList.test.js +9 -6
- package/dist/src/ui/components/views/ToolsList.test.js.map +1 -1
- package/dist/src/ui/constants/tips.js +1 -1
- package/dist/src/ui/constants/tips.js.map +1 -1
- package/dist/src/ui/constants.d.ts +2 -1
- package/dist/src/ui/constants.js +2 -1
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/AppContext.d.ts +2 -1
- package/dist/src/ui/contexts/AppContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.js +37 -8
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.test.js +68 -0
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
- package/dist/src/ui/contexts/OverflowContext.d.ts +3 -3
- package/dist/src/ui/contexts/OverflowContext.js +5 -1
- package/dist/src/ui/contexts/OverflowContext.js.map +1 -1
- package/dist/src/ui/contexts/TerminalContext.test.js +26 -15
- package/dist/src/ui/contexts/TerminalContext.test.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +6 -1
- package/dist/src/ui/contexts/UIActionsContext.js +1 -1
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +7 -1
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.test.js +6 -2
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +23 -11
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.test.js +30 -14
- package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/toolMapping.d.ts +2 -0
- package/dist/src/ui/hooks/toolMapping.js +13 -1
- package/dist/src/ui/hooks/toolMapping.js.map +1 -1
- package/dist/src/ui/hooks/toolMapping.test.js +42 -0
- package/dist/src/ui/hooks/toolMapping.test.js.map +1 -1
- package/dist/src/ui/hooks/useAnimatedScrollbar.js +13 -3
- package/dist/src/ui/hooks/useAnimatedScrollbar.js.map +1 -1
- package/dist/src/ui/hooks/useAtCompletion.js +74 -22
- package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useAtCompletion.test.js +88 -0
- package/dist/src/ui/hooks/useAtCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useCommandCompletion.js +2 -3
- package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useCommandCompletion.test.js +0 -4
- package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useConfirmingTool.d.ts +2 -6
- package/dist/src/ui/hooks/useConfirmingTool.js +2 -23
- package/dist/src/ui/hooks/useConfirmingTool.js.map +1 -1
- package/dist/src/ui/hooks/useConsoleMessages.js +18 -6
- package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
- package/dist/src/ui/hooks/useConsoleMessages.test.js +4 -4
- package/dist/src/ui/hooks/useExtensionRegistry.d.ts +13 -0
- package/dist/src/ui/hooks/useExtensionRegistry.js +70 -0
- package/dist/src/ui/hooks/useExtensionRegistry.js.map +1 -0
- package/dist/src/ui/hooks/useFocus.d.ts +4 -1
- package/dist/src/ui/hooks/useFocus.js +7 -1
- package/dist/src/ui/hooks/useFocus.js.map +1 -1
- package/dist/src/ui/hooks/useFocus.test.js +20 -11
- package/dist/src/ui/hooks/useFocus.test.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.d.ts +2 -0
- package/dist/src/ui/hooks/useFolderTrust.js +15 -3
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.test.js +3 -0
- package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +86 -20
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +150 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +3 -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 +9 -4
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useMouseClick.test.js +15 -7
- package/dist/src/ui/hooks/useMouseClick.test.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.d.ts +4 -2
- package/dist/src/ui/hooks/usePhraseCycler.js +38 -26
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.test.js +123 -73
- package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
- package/dist/src/ui/hooks/usePromptCompletion.d.ts +1 -2
- package/dist/src/ui/hooks/usePromptCompletion.js +2 -2
- package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useRegistrySearch.d.ts +19 -0
- package/dist/src/ui/hooks/useRegistrySearch.js +35 -0
- package/dist/src/ui/hooks/useRegistrySearch.js.map +1 -0
- package/dist/src/ui/hooks/useRunEventNotifications.d.ts +22 -0
- package/dist/src/ui/hooks/useRunEventNotifications.js +93 -0
- package/dist/src/ui/hooks/useRunEventNotifications.js.map +1 -0
- package/dist/src/ui/hooks/useSearchBuffer.d.ts +11 -0
- package/dist/src/ui/hooks/useSearchBuffer.js +24 -0
- package/dist/src/ui/hooks/useSearchBuffer.js.map +1 -0
- package/dist/src/ui/hooks/useSelectionList.test.js +111 -45
- package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.js +3 -2
- package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.test.js +15 -12
- package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
- package/dist/src/ui/hooks/useSessionResume.js +2 -2
- package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.js +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useStateAndRef.js +1 -0
- package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
- package/dist/src/ui/hooks/useTerminalTheme.test.js +29 -18
- package/dist/src/ui/hooks/useTerminalTheme.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.js +19 -2
- package/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +44 -0
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +1 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/layouts/DefaultAppLayout.test.js +12 -6
- package/dist/src/ui/layouts/DefaultAppLayout.test.js.map +1 -1
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js +24 -8
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js.map +1 -1
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js +16 -5
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js.map +1 -1
- package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js +16 -5
- package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js.map +1 -1
- package/dist/src/ui/privacy/PrivacyNotice.test.js +4 -2
- package/dist/src/ui/privacy/PrivacyNotice.test.js.map +1 -1
- package/dist/src/ui/themes/no-color.js +4 -0
- package/dist/src/ui/themes/no-color.js.map +1 -1
- package/dist/src/ui/themes/semantic-tokens.d.ts +2 -0
- package/dist/src/ui/themes/semantic-tokens.js +6 -2
- package/dist/src/ui/themes/semantic-tokens.js.map +1 -1
- package/dist/src/ui/themes/solarized-dark.js +2 -0
- package/dist/src/ui/themes/solarized-dark.js.map +1 -1
- package/dist/src/ui/themes/solarized-light.js +2 -0
- package/dist/src/ui/themes/solarized-light.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.js +9 -4
- package/dist/src/ui/themes/theme-manager.js.map +1 -1
- package/dist/src/ui/themes/theme.d.ts +2 -0
- package/dist/src/ui/themes/theme.js +20 -7
- package/dist/src/ui/themes/theme.js.map +1 -1
- package/dist/src/ui/themes/theme.test.js +7 -7
- package/dist/src/ui/themes/theme.test.js.map +1 -1
- package/dist/src/ui/types.d.ts +14 -2
- package/dist/src/ui/types.js +1 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/CodeColorizer.js +3 -5
- package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
- package/dist/src/ui/utils/CodeColorizer.test.js +4 -2
- package/dist/src/ui/utils/CodeColorizer.test.js.map +1 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +3 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.js +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +65 -33
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.js +7 -3
- package/dist/src/ui/utils/TableRenderer.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.test.js +43 -22
- package/dist/src/ui/utils/TableRenderer.test.js.map +1 -1
- package/dist/src/ui/utils/borderStyles.d.ts +18 -0
- package/dist/src/ui/utils/borderStyles.js +78 -0
- package/dist/src/ui/utils/borderStyles.js.map +1 -0
- package/dist/src/ui/utils/commandUtils.d.ts +2 -1
- package/dist/src/ui/utils/commandUtils.js +8 -3
- package/dist/src/ui/utils/commandUtils.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.test.js +18 -0
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
- package/dist/src/ui/utils/confirmingTool.d.ts +15 -0
- package/dist/src/ui/utils/confirmingTool.js +27 -0
- package/dist/src/ui/utils/confirmingTool.js.map +1 -0
- package/dist/src/ui/utils/pendingAttentionNotification.d.ts +12 -0
- package/dist/src/ui/utils/pendingAttentionNotification.js +101 -0
- package/dist/src/ui/utils/pendingAttentionNotification.js.map +1 -0
- package/dist/src/ui/utils/pendingAttentionNotification.test.d.ts +6 -0
- package/dist/src/ui/utils/pendingAttentionNotification.test.js +79 -0
- package/dist/src/ui/utils/pendingAttentionNotification.test.js.map +1 -0
- package/dist/src/ui/utils/terminalCapabilityManager.d.ts +2 -0
- package/dist/src/ui/utils/terminalCapabilityManager.js +18 -0
- package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
- package/dist/src/ui/utils/terminalCapabilityManager.test.js +68 -0
- package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -1
- package/dist/src/ui/utils/terminalSetup.d.ts +24 -0
- package/dist/src/ui/utils/terminalSetup.js +130 -34
- package/dist/src/ui/utils/terminalSetup.js.map +1 -1
- package/dist/src/ui/utils/terminalSetup.test.js +35 -1
- package/dist/src/ui/utils/terminalSetup.test.js.map +1 -1
- package/dist/src/ui/utils/textUtils.d.ts +4 -0
- package/dist/src/ui/utils/textUtils.js +10 -1
- package/dist/src/ui/utils/textUtils.js.map +1 -1
- package/dist/src/ui/utils/textUtils.test.js +25 -2
- package/dist/src/ui/utils/textUtils.test.js.map +1 -1
- package/dist/src/ui/utils/toolLayoutUtils.d.ts +44 -0
- package/dist/src/ui/utils/toolLayoutUtils.js +73 -0
- package/dist/src/ui/utils/toolLayoutUtils.js.map +1 -0
- package/dist/src/ui/utils/urlSecurityUtils.d.ts +32 -0
- package/dist/src/ui/utils/urlSecurityUtils.js +71 -0
- package/dist/src/ui/utils/urlSecurityUtils.js.map +1 -0
- package/dist/src/ui/utils/urlSecurityUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/urlSecurityUtils.test.js +49 -0
- package/dist/src/ui/utils/urlSecurityUtils.test.js.map +1 -0
- package/dist/src/utils/activityLogger.js +95 -24
- package/dist/src/utils/activityLogger.js.map +1 -1
- package/dist/src/utils/devtoolsService.js +1 -2
- package/dist/src/utils/devtoolsService.js.map +1 -1
- package/dist/src/utils/devtoolsService.test.js +1 -1
- package/dist/src/utils/devtoolsService.test.js.map +1 -1
- package/dist/src/utils/envVarResolver.js +4 -1
- package/dist/src/utils/envVarResolver.js.map +1 -1
- package/dist/src/utils/gitUtils.js +2 -0
- package/dist/src/utils/gitUtils.js.map +1 -1
- package/dist/src/utils/jsonoutput.js +2 -0
- package/dist/src/utils/jsonoutput.js.map +1 -1
- package/dist/src/utils/persistentState.d.ts +2 -0
- package/dist/src/utils/persistentState.js +1 -0
- package/dist/src/utils/persistentState.js.map +1 -1
- package/dist/src/utils/readStdin.js +1 -0
- package/dist/src/utils/readStdin.js.map +1 -1
- package/dist/src/utils/sessionUtils.d.ts +1 -6
- package/dist/src/utils/sessionUtils.js +8 -101
- package/dist/src/utils/sessionUtils.js.map +1 -1
- package/dist/src/utils/sessionUtils.test.js +47 -0
- package/dist/src/utils/sessionUtils.test.js.map +1 -1
- package/dist/src/utils/settingsUtils.js +2 -0
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/skillUtils.test.js +7 -5
- package/dist/src/utils/skillUtils.test.js.map +1 -1
- package/dist/src/utils/terminalNotifications.d.ts +25 -0
- package/dist/src/utils/terminalNotifications.js +77 -0
- package/dist/src/utils/terminalNotifications.js.map +1 -0
- package/dist/src/utils/terminalNotifications.test.d.ts +6 -0
- package/dist/src/utils/terminalNotifications.test.js +123 -0
- package/dist/src/utils/terminalNotifications.test.js.map +1 -0
- package/dist/src/utils/userStartupWarnings.d.ts +4 -1
- package/dist/src/utils/userStartupWarnings.js +22 -4
- package/dist/src/utils/userStartupWarnings.js.map +1 -1
- package/dist/src/utils/userStartupWarnings.test.js +53 -11
- package/dist/src/utils/userStartupWarnings.test.js.map +1 -1
- package/dist/src/zed-integration/acpErrors.js +2 -0
- package/dist/src/zed-integration/acpErrors.js.map +1 -1
- package/dist/src/zed-integration/acpResume.test.js +53 -3
- package/dist/src/zed-integration/acpResume.test.js.map +1 -1
- package/dist/src/zed-integration/fileSystemService.js +2 -0
- package/dist/src/zed-integration/fileSystemService.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.d.ts +2 -0
- package/dist/src/zed-integration/zedIntegration.js +77 -6
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.test.js +176 -2
- package/dist/src/zed-integration/zedIntegration.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -7
- package/dist/google-gemini-cli-0.30.0.tgz +0 -0
- package/dist/src/ui/hooks/useFuzzyList.d.ts +0 -25
- package/dist/src/ui/hooks/useFuzzyList.js +0 -100
- package/dist/src/ui/hooks/useFuzzyList.js.map +0 -1
|
@@ -190,7 +190,11 @@ const createMockConfig = (overrides = {}) => ({
|
|
|
190
190
|
}),
|
|
191
191
|
...overrides,
|
|
192
192
|
});
|
|
193
|
-
const renderComposer = (uiState, settings = createMockSettings(), config = createMockConfig(), uiActions = createMockUIActions()) =>
|
|
193
|
+
const renderComposer = async (uiState, settings = createMockSettings(), config = createMockConfig(), uiActions = createMockUIActions()) => {
|
|
194
|
+
const result = render(_jsx(ConfigContext.Provider, { value: config, children: _jsx(SettingsContext.Provider, { value: settings, children: _jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(Composer, {}) }) }) }) }));
|
|
195
|
+
await result.waitUntilReady();
|
|
196
|
+
return result;
|
|
197
|
+
};
|
|
194
198
|
describe('Composer', () => {
|
|
195
199
|
beforeEach(() => {
|
|
196
200
|
composerTestControls.suggestionsVisible = false;
|
|
@@ -200,16 +204,16 @@ describe('Composer', () => {
|
|
|
200
204
|
vi.restoreAllMocks();
|
|
201
205
|
});
|
|
202
206
|
describe('Footer Display Settings', () => {
|
|
203
|
-
it('renders Footer by default when hideFooter is false', () => {
|
|
207
|
+
it('renders Footer by default when hideFooter is false', async () => {
|
|
204
208
|
const uiState = createMockUIState();
|
|
205
209
|
const settings = createMockSettings({ ui: { hideFooter: false } });
|
|
206
|
-
const { lastFrame } = renderComposer(uiState, settings);
|
|
210
|
+
const { lastFrame } = await renderComposer(uiState, settings);
|
|
207
211
|
expect(lastFrame()).toContain('Footer');
|
|
208
212
|
});
|
|
209
|
-
it('does NOT render Footer when hideFooter is true', () => {
|
|
213
|
+
it('does NOT render Footer when hideFooter is true', async () => {
|
|
210
214
|
const uiState = createMockUIState();
|
|
211
215
|
const settings = createMockSettings({ ui: { hideFooter: true } });
|
|
212
|
-
const { lastFrame } = renderComposer(uiState, settings);
|
|
216
|
+
const { lastFrame } = await renderComposer(uiState, settings);
|
|
213
217
|
// Check for content that only appears IN the Footer component itself
|
|
214
218
|
expect(lastFrame()).not.toContain('[NORMAL]'); // Vim mode indicator
|
|
215
219
|
expect(lastFrame()).not.toContain('(main'); // Branch name with parentheses
|
|
@@ -250,13 +254,13 @@ describe('Composer', () => {
|
|
|
250
254
|
toggleVimEnabled: vi.fn(),
|
|
251
255
|
setVimMode: vi.fn(),
|
|
252
256
|
});
|
|
253
|
-
const { lastFrame } = renderComposer(uiState, settings, config);
|
|
257
|
+
const { lastFrame } = await renderComposer(uiState, settings, config);
|
|
254
258
|
expect(lastFrame()).toContain('Footer');
|
|
255
259
|
// Footer should be rendered with all the state passed through
|
|
256
260
|
});
|
|
257
261
|
});
|
|
258
262
|
describe('Loading Indicator', () => {
|
|
259
|
-
it('renders LoadingIndicator with thought when streaming', () => {
|
|
263
|
+
it('renders LoadingIndicator with thought when streaming', async () => {
|
|
260
264
|
const uiState = createMockUIState({
|
|
261
265
|
streamingState: StreamingState.Responding,
|
|
262
266
|
thought: {
|
|
@@ -266,11 +270,11 @@ describe('Composer', () => {
|
|
|
266
270
|
currentLoadingPhrase: 'Analyzing',
|
|
267
271
|
elapsedTime: 1500,
|
|
268
272
|
});
|
|
269
|
-
const { lastFrame } = renderComposer(uiState);
|
|
273
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
270
274
|
const output = lastFrame();
|
|
271
275
|
expect(output).toContain('LoadingIndicator: Processing');
|
|
272
276
|
});
|
|
273
|
-
it('renders generic thinking text in loading indicator when full inline thinking is enabled', () => {
|
|
277
|
+
it('renders generic thinking text in loading indicator when full inline thinking is enabled', async () => {
|
|
274
278
|
const uiState = createMockUIState({
|
|
275
279
|
streamingState: StreamingState.Responding,
|
|
276
280
|
thought: {
|
|
@@ -281,35 +285,35 @@ describe('Composer', () => {
|
|
|
281
285
|
const settings = createMockSettings({
|
|
282
286
|
ui: { inlineThinkingMode: 'full' },
|
|
283
287
|
});
|
|
284
|
-
const { lastFrame } = renderComposer(uiState, settings);
|
|
288
|
+
const { lastFrame } = await renderComposer(uiState, settings);
|
|
285
289
|
const output = lastFrame();
|
|
286
290
|
expect(output).toContain('LoadingIndicator: Thinking ...');
|
|
287
291
|
});
|
|
288
|
-
it('hides shortcuts hint while loading', () => {
|
|
292
|
+
it('hides shortcuts hint while loading', async () => {
|
|
289
293
|
const uiState = createMockUIState({
|
|
290
294
|
streamingState: StreamingState.Responding,
|
|
291
295
|
elapsedTime: 1,
|
|
292
296
|
cleanUiDetailsVisible: false,
|
|
293
297
|
});
|
|
294
|
-
const { lastFrame } = renderComposer(uiState);
|
|
298
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
295
299
|
const output = lastFrame();
|
|
296
300
|
expect(output).toContain('LoadingIndicator');
|
|
297
301
|
expect(output).not.toContain('ShortcutsHint');
|
|
298
302
|
});
|
|
299
|
-
it('renders LoadingIndicator without thought when
|
|
303
|
+
it('renders LoadingIndicator without thought when loadingPhrases is off', async () => {
|
|
300
304
|
const uiState = createMockUIState({
|
|
301
305
|
streamingState: StreamingState.Responding,
|
|
302
306
|
thought: { subject: 'Hidden', description: 'Should not show' },
|
|
303
307
|
});
|
|
304
|
-
const
|
|
305
|
-
|
|
308
|
+
const settings = createMockSettings({
|
|
309
|
+
merged: { ui: { loadingPhrases: 'off' } },
|
|
306
310
|
});
|
|
307
|
-
const { lastFrame } = renderComposer(uiState,
|
|
311
|
+
const { lastFrame } = await renderComposer(uiState, settings);
|
|
308
312
|
const output = lastFrame();
|
|
309
313
|
expect(output).toContain('LoadingIndicator');
|
|
310
314
|
expect(output).not.toContain('Should not show');
|
|
311
315
|
});
|
|
312
|
-
it('does not render LoadingIndicator when waiting for confirmation', () => {
|
|
316
|
+
it('does not render LoadingIndicator when waiting for confirmation', async () => {
|
|
313
317
|
const uiState = createMockUIState({
|
|
314
318
|
streamingState: StreamingState.WaitingForConfirmation,
|
|
315
319
|
thought: {
|
|
@@ -317,11 +321,11 @@ describe('Composer', () => {
|
|
|
317
321
|
description: 'Should not show during confirmation',
|
|
318
322
|
},
|
|
319
323
|
});
|
|
320
|
-
const { lastFrame } = renderComposer(uiState);
|
|
324
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
321
325
|
const output = lastFrame();
|
|
322
326
|
expect(output).not.toContain('LoadingIndicator');
|
|
323
327
|
});
|
|
324
|
-
it('does not render LoadingIndicator when a tool confirmation is pending', () => {
|
|
328
|
+
it('does not render LoadingIndicator when a tool confirmation is pending', async () => {
|
|
325
329
|
const uiState = createMockUIState({
|
|
326
330
|
streamingState: StreamingState.Responding,
|
|
327
331
|
pendingHistoryItems: [
|
|
@@ -340,22 +344,22 @@ describe('Composer', () => {
|
|
|
340
344
|
},
|
|
341
345
|
],
|
|
342
346
|
});
|
|
343
|
-
const { lastFrame } = renderComposer(uiState);
|
|
347
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
344
348
|
const output = lastFrame();
|
|
345
349
|
expect(output).not.toContain('LoadingIndicator');
|
|
346
350
|
expect(output).not.toContain('esc to cancel');
|
|
347
351
|
});
|
|
348
|
-
it('renders LoadingIndicator when embedded shell is focused but background shell is visible', () => {
|
|
352
|
+
it('renders LoadingIndicator when embedded shell is focused but background shell is visible', async () => {
|
|
349
353
|
const uiState = createMockUIState({
|
|
350
354
|
streamingState: StreamingState.Responding,
|
|
351
355
|
embeddedShellFocused: true,
|
|
352
356
|
isBackgroundShellVisible: true,
|
|
353
357
|
});
|
|
354
|
-
const { lastFrame } = renderComposer(uiState);
|
|
358
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
355
359
|
const output = lastFrame();
|
|
356
360
|
expect(output).toContain('LoadingIndicator');
|
|
357
361
|
});
|
|
358
|
-
it('renders both LoadingIndicator and ApprovalModeIndicator when streaming in full UI mode', () => {
|
|
362
|
+
it('renders both LoadingIndicator and ApprovalModeIndicator when streaming in full UI mode', async () => {
|
|
359
363
|
const uiState = createMockUIState({
|
|
360
364
|
streamingState: StreamingState.Responding,
|
|
361
365
|
thought: {
|
|
@@ -364,24 +368,24 @@ describe('Composer', () => {
|
|
|
364
368
|
},
|
|
365
369
|
showApprovalModeIndicator: ApprovalMode.PLAN,
|
|
366
370
|
});
|
|
367
|
-
const { lastFrame } = renderComposer(uiState);
|
|
371
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
368
372
|
const output = lastFrame();
|
|
369
373
|
expect(output).toContain('LoadingIndicator: Thinking');
|
|
370
374
|
expect(output).toContain('ApprovalModeIndicator');
|
|
371
375
|
});
|
|
372
|
-
it('does NOT render LoadingIndicator when embedded shell is focused and background shell is NOT visible', () => {
|
|
376
|
+
it('does NOT render LoadingIndicator when embedded shell is focused and background shell is NOT visible', async () => {
|
|
373
377
|
const uiState = createMockUIState({
|
|
374
378
|
streamingState: StreamingState.Responding,
|
|
375
379
|
embeddedShellFocused: true,
|
|
376
380
|
isBackgroundShellVisible: false,
|
|
377
381
|
});
|
|
378
|
-
const { lastFrame } = renderComposer(uiState);
|
|
382
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
379
383
|
const output = lastFrame();
|
|
380
384
|
expect(output).not.toContain('LoadingIndicator');
|
|
381
385
|
});
|
|
382
386
|
});
|
|
383
387
|
describe('Message Queue Display', () => {
|
|
384
|
-
it('displays queued messages when present', () => {
|
|
388
|
+
it('displays queued messages when present', async () => {
|
|
385
389
|
const uiState = createMockUIState({
|
|
386
390
|
messageQueue: [
|
|
387
391
|
'First queued message',
|
|
@@ -389,17 +393,17 @@ describe('Composer', () => {
|
|
|
389
393
|
'Third queued message',
|
|
390
394
|
],
|
|
391
395
|
});
|
|
392
|
-
const { lastFrame } = renderComposer(uiState);
|
|
396
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
393
397
|
const output = lastFrame();
|
|
394
398
|
expect(output).toContain('First queued message');
|
|
395
399
|
expect(output).toContain('Second queued message');
|
|
396
400
|
expect(output).toContain('Third queued message');
|
|
397
401
|
});
|
|
398
|
-
it('renders QueuedMessageDisplay with empty message queue', () => {
|
|
402
|
+
it('renders QueuedMessageDisplay with empty message queue', async () => {
|
|
399
403
|
const uiState = createMockUIState({
|
|
400
404
|
messageQueue: [],
|
|
401
405
|
});
|
|
402
|
-
const { lastFrame } = renderComposer(uiState);
|
|
406
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
403
407
|
// The component should render but return null for empty queue
|
|
404
408
|
// This test verifies that the component receives the correct prop
|
|
405
409
|
const output = lastFrame();
|
|
@@ -407,47 +411,47 @@ describe('Composer', () => {
|
|
|
407
411
|
});
|
|
408
412
|
});
|
|
409
413
|
describe('Context and Status Display', () => {
|
|
410
|
-
it('shows StatusDisplay and ApprovalModeIndicator in normal state', () => {
|
|
414
|
+
it('shows StatusDisplay and ApprovalModeIndicator in normal state', async () => {
|
|
411
415
|
const uiState = createMockUIState({
|
|
412
416
|
ctrlCPressedOnce: false,
|
|
413
417
|
ctrlDPressedOnce: false,
|
|
414
418
|
showEscapePrompt: false,
|
|
415
419
|
});
|
|
416
|
-
const { lastFrame } = renderComposer(uiState);
|
|
420
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
417
421
|
const output = lastFrame();
|
|
418
422
|
expect(output).toContain('StatusDisplay');
|
|
419
423
|
expect(output).toContain('ApprovalModeIndicator');
|
|
420
424
|
expect(output).not.toContain('ToastDisplay');
|
|
421
425
|
});
|
|
422
|
-
it('shows ToastDisplay and hides ApprovalModeIndicator when a toast is present', () => {
|
|
426
|
+
it('shows ToastDisplay and hides ApprovalModeIndicator when a toast is present', async () => {
|
|
423
427
|
const uiState = createMockUIState({
|
|
424
428
|
ctrlCPressedOnce: true,
|
|
425
429
|
});
|
|
426
|
-
const { lastFrame } = renderComposer(uiState);
|
|
430
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
427
431
|
const output = lastFrame();
|
|
428
432
|
expect(output).toContain('ToastDisplay');
|
|
429
433
|
expect(output).not.toContain('ApprovalModeIndicator');
|
|
430
434
|
expect(output).toContain('StatusDisplay');
|
|
431
435
|
});
|
|
432
|
-
it('shows ToastDisplay for other toast types', () => {
|
|
436
|
+
it('shows ToastDisplay for other toast types', async () => {
|
|
433
437
|
const uiState = createMockUIState({
|
|
434
438
|
transientMessage: {
|
|
435
439
|
text: 'Warning',
|
|
436
440
|
type: TransientMessageType.Warning,
|
|
437
441
|
},
|
|
438
442
|
});
|
|
439
|
-
const { lastFrame } = renderComposer(uiState);
|
|
443
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
440
444
|
const output = lastFrame();
|
|
441
445
|
expect(output).toContain('ToastDisplay');
|
|
442
446
|
expect(output).not.toContain('ApprovalModeIndicator');
|
|
443
447
|
});
|
|
444
448
|
});
|
|
445
449
|
describe('Input and Indicators', () => {
|
|
446
|
-
it('hides non-essential UI details in clean mode', () => {
|
|
450
|
+
it('hides non-essential UI details in clean mode', async () => {
|
|
447
451
|
const uiState = createMockUIState({
|
|
448
452
|
cleanUiDetailsVisible: false,
|
|
449
453
|
});
|
|
450
|
-
const { lastFrame } = renderComposer(uiState);
|
|
454
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
451
455
|
const output = lastFrame();
|
|
452
456
|
expect(output).toContain('ShortcutsHint');
|
|
453
457
|
expect(output).toContain('InputPrompt');
|
|
@@ -455,18 +459,18 @@ describe('Composer', () => {
|
|
|
455
459
|
expect(output).not.toContain('ApprovalModeIndicator');
|
|
456
460
|
expect(output).not.toContain('ContextSummaryDisplay');
|
|
457
461
|
});
|
|
458
|
-
it('renders InputPrompt when input is active', () => {
|
|
462
|
+
it('renders InputPrompt when input is active', async () => {
|
|
459
463
|
const uiState = createMockUIState({
|
|
460
464
|
isInputActive: true,
|
|
461
465
|
});
|
|
462
|
-
const { lastFrame } = renderComposer(uiState);
|
|
466
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
463
467
|
expect(lastFrame()).toContain('InputPrompt');
|
|
464
468
|
});
|
|
465
|
-
it('does not render InputPrompt when input is inactive', () => {
|
|
469
|
+
it('does not render InputPrompt when input is inactive', async () => {
|
|
466
470
|
const uiState = createMockUIState({
|
|
467
471
|
isInputActive: false,
|
|
468
472
|
});
|
|
469
|
-
const { lastFrame } = renderComposer(uiState);
|
|
473
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
470
474
|
expect(lastFrame()).not.toContain('InputPrompt');
|
|
471
475
|
});
|
|
472
476
|
it.each([
|
|
@@ -474,83 +478,83 @@ describe('Composer', () => {
|
|
|
474
478
|
[ApprovalMode.AUTO_EDIT],
|
|
475
479
|
[ApprovalMode.PLAN],
|
|
476
480
|
[ApprovalMode.YOLO],
|
|
477
|
-
])('shows ApprovalModeIndicator when approval mode is %s and shell mode is inactive', (mode) => {
|
|
481
|
+
])('shows ApprovalModeIndicator when approval mode is %s and shell mode is inactive', async (mode) => {
|
|
478
482
|
const uiState = createMockUIState({
|
|
479
483
|
showApprovalModeIndicator: mode,
|
|
480
484
|
shellModeActive: false,
|
|
481
485
|
});
|
|
482
|
-
const { lastFrame } = renderComposer(uiState);
|
|
486
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
483
487
|
expect(lastFrame()).toMatch(/ApprovalModeIndic[\s\S]*ator/);
|
|
484
488
|
});
|
|
485
|
-
it('shows ShellModeIndicator when shell mode is active', () => {
|
|
489
|
+
it('shows ShellModeIndicator when shell mode is active', async () => {
|
|
486
490
|
const uiState = createMockUIState({
|
|
487
491
|
shellModeActive: true,
|
|
488
492
|
});
|
|
489
|
-
const { lastFrame } = renderComposer(uiState);
|
|
493
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
490
494
|
expect(lastFrame()).toMatch(/ShellModeIndic[\s\S]*tor/);
|
|
491
495
|
});
|
|
492
|
-
it('shows RawMarkdownIndicator when renderMarkdown is false', () => {
|
|
496
|
+
it('shows RawMarkdownIndicator when renderMarkdown is false', async () => {
|
|
493
497
|
const uiState = createMockUIState({
|
|
494
498
|
renderMarkdown: false,
|
|
495
499
|
});
|
|
496
|
-
const { lastFrame } = renderComposer(uiState);
|
|
500
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
497
501
|
expect(lastFrame()).toContain('raw markdown mode');
|
|
498
502
|
});
|
|
499
|
-
it('does not show RawMarkdownIndicator when renderMarkdown is true', () => {
|
|
503
|
+
it('does not show RawMarkdownIndicator when renderMarkdown is true', async () => {
|
|
500
504
|
const uiState = createMockUIState({
|
|
501
505
|
renderMarkdown: true,
|
|
502
506
|
});
|
|
503
|
-
const { lastFrame } = renderComposer(uiState);
|
|
507
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
504
508
|
expect(lastFrame()).not.toContain('raw markdown mode');
|
|
505
509
|
});
|
|
506
510
|
it.each([
|
|
507
511
|
[ApprovalMode.YOLO, 'YOLO'],
|
|
508
512
|
[ApprovalMode.PLAN, 'plan'],
|
|
509
513
|
[ApprovalMode.AUTO_EDIT, 'auto edit'],
|
|
510
|
-
])('shows minimal mode badge "%s" when clean UI details are hidden', (mode, label) => {
|
|
514
|
+
])('shows minimal mode badge "%s" when clean UI details are hidden', async (mode, label) => {
|
|
511
515
|
const uiState = createMockUIState({
|
|
512
516
|
cleanUiDetailsVisible: false,
|
|
513
517
|
showApprovalModeIndicator: mode,
|
|
514
518
|
});
|
|
515
|
-
const { lastFrame } = renderComposer(uiState);
|
|
519
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
516
520
|
expect(lastFrame()).toContain(label);
|
|
517
521
|
});
|
|
518
|
-
it('hides minimal mode badge while loading in clean mode', () => {
|
|
522
|
+
it('hides minimal mode badge while loading in clean mode', async () => {
|
|
519
523
|
const uiState = createMockUIState({
|
|
520
524
|
cleanUiDetailsVisible: false,
|
|
521
525
|
streamingState: StreamingState.Responding,
|
|
522
526
|
elapsedTime: 1,
|
|
523
527
|
showApprovalModeIndicator: ApprovalMode.PLAN,
|
|
524
528
|
});
|
|
525
|
-
const { lastFrame } = renderComposer(uiState);
|
|
529
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
526
530
|
const output = lastFrame();
|
|
527
531
|
expect(output).toContain('LoadingIndicator');
|
|
528
532
|
expect(output).not.toContain('plan');
|
|
529
533
|
expect(output).not.toContain('ShortcutsHint');
|
|
530
534
|
});
|
|
531
|
-
it('hides minimal mode badge while action-required state is active', () => {
|
|
535
|
+
it('hides minimal mode badge while action-required state is active', async () => {
|
|
532
536
|
const uiState = createMockUIState({
|
|
533
537
|
cleanUiDetailsVisible: false,
|
|
534
538
|
showApprovalModeIndicator: ApprovalMode.PLAN,
|
|
535
539
|
customDialog: (_jsx(Box, { children: _jsx(Text, { children: "Prompt" }) })),
|
|
536
540
|
});
|
|
537
|
-
const { lastFrame } = renderComposer(uiState);
|
|
541
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
538
542
|
const output = lastFrame();
|
|
539
543
|
expect(output).not.toContain('plan');
|
|
540
544
|
expect(output).not.toContain('ShortcutsHint');
|
|
541
545
|
});
|
|
542
|
-
it('shows Esc rewind prompt in minimal mode without showing full UI', () => {
|
|
546
|
+
it('shows Esc rewind prompt in minimal mode without showing full UI', async () => {
|
|
543
547
|
const uiState = createMockUIState({
|
|
544
548
|
cleanUiDetailsVisible: false,
|
|
545
549
|
showEscapePrompt: true,
|
|
546
550
|
history: [{ id: 1, type: 'user', text: 'msg' }],
|
|
547
551
|
});
|
|
548
|
-
const { lastFrame } = renderComposer(uiState);
|
|
552
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
549
553
|
const output = lastFrame();
|
|
550
554
|
expect(output).toContain('ToastDisplay');
|
|
551
555
|
expect(output).not.toContain('ContextSummaryDisplay');
|
|
552
556
|
});
|
|
553
|
-
it('shows context usage bleed-through when over 60%', () => {
|
|
557
|
+
it('shows context usage bleed-through when over 60%', async () => {
|
|
554
558
|
const model = 'gemini-2.5-pro';
|
|
555
559
|
const uiState = createMockUIState({
|
|
556
560
|
cleanUiDetailsVisible: false,
|
|
@@ -569,12 +573,12 @@ describe('Composer', () => {
|
|
|
569
573
|
footer: { hideContextPercentage: false },
|
|
570
574
|
},
|
|
571
575
|
});
|
|
572
|
-
const { lastFrame } = renderComposer(uiState, settings);
|
|
576
|
+
const { lastFrame } = await renderComposer(uiState, settings);
|
|
573
577
|
expect(lastFrame()).toContain('%');
|
|
574
578
|
});
|
|
575
579
|
});
|
|
576
580
|
describe('Error Details Display', () => {
|
|
577
|
-
it('shows DetailedMessagesDisplay when showErrorDetails is true', () => {
|
|
581
|
+
it('shows DetailedMessagesDisplay when showErrorDetails is true', async () => {
|
|
578
582
|
const uiState = createMockUIState({
|
|
579
583
|
showErrorDetails: true,
|
|
580
584
|
filteredConsoleMessages: [
|
|
@@ -585,15 +589,15 @@ describe('Composer', () => {
|
|
|
585
589
|
},
|
|
586
590
|
],
|
|
587
591
|
});
|
|
588
|
-
const { lastFrame } = renderComposer(uiState);
|
|
592
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
589
593
|
expect(lastFrame()).toContain('DetailedMessagesDisplay');
|
|
590
594
|
expect(lastFrame()).toContain('ShowMoreLines');
|
|
591
595
|
});
|
|
592
|
-
it('does not show error details when showErrorDetails is false', () => {
|
|
596
|
+
it('does not show error details when showErrorDetails is false', async () => {
|
|
593
597
|
const uiState = createMockUIState({
|
|
594
598
|
showErrorDetails: false,
|
|
595
599
|
});
|
|
596
|
-
const { lastFrame } = renderComposer(uiState);
|
|
600
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
597
601
|
expect(lastFrame()).not.toContain('DetailedMessagesDisplay');
|
|
598
602
|
});
|
|
599
603
|
});
|
|
@@ -607,7 +611,7 @@ describe('Composer', () => {
|
|
|
607
611
|
toggleVimEnabled: vi.fn(),
|
|
608
612
|
setVimMode: vi.fn(),
|
|
609
613
|
});
|
|
610
|
-
const { lastFrame } = renderComposer(uiState);
|
|
614
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
611
615
|
expect(lastFrame()).toContain("InputPrompt: Press 'Esc' for NORMAL mode.");
|
|
612
616
|
});
|
|
613
617
|
it('shows correct placeholder in NORMAL mode', async () => {
|
|
@@ -619,123 +623,123 @@ describe('Composer', () => {
|
|
|
619
623
|
toggleVimEnabled: vi.fn(),
|
|
620
624
|
setVimMode: vi.fn(),
|
|
621
625
|
});
|
|
622
|
-
const { lastFrame } = renderComposer(uiState);
|
|
626
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
623
627
|
expect(lastFrame()).toContain("InputPrompt: Press 'i' for INSERT mode.");
|
|
624
628
|
});
|
|
625
629
|
});
|
|
626
630
|
describe('Shortcuts Hint', () => {
|
|
627
|
-
it('hides shortcuts hint when showShortcutsHint setting is false', () => {
|
|
631
|
+
it('hides shortcuts hint when showShortcutsHint setting is false', async () => {
|
|
628
632
|
const uiState = createMockUIState();
|
|
629
633
|
const settings = createMockSettings({
|
|
630
634
|
ui: {
|
|
631
635
|
showShortcutsHint: false,
|
|
632
636
|
},
|
|
633
637
|
});
|
|
634
|
-
const { lastFrame } = renderComposer(uiState, settings);
|
|
638
|
+
const { lastFrame } = await renderComposer(uiState, settings);
|
|
635
639
|
expect(lastFrame()).not.toContain('ShortcutsHint');
|
|
636
640
|
});
|
|
637
|
-
it('hides shortcuts hint when a action is required (e.g. dialog is open)', () => {
|
|
641
|
+
it('hides shortcuts hint when a action is required (e.g. dialog is open)', async () => {
|
|
638
642
|
const uiState = createMockUIState({
|
|
639
643
|
customDialog: (_jsxs(Box, { children: [_jsx(Text, { children: "Test Dialog" }), _jsx(Text, { children: "Test Content" })] })),
|
|
640
644
|
});
|
|
641
|
-
const { lastFrame } = renderComposer(uiState);
|
|
645
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
642
646
|
expect(lastFrame()).not.toContain('ShortcutsHint');
|
|
643
647
|
});
|
|
644
|
-
it('keeps shortcuts hint visible when no action is required', () => {
|
|
648
|
+
it('keeps shortcuts hint visible when no action is required', async () => {
|
|
645
649
|
const uiState = createMockUIState({
|
|
646
650
|
cleanUiDetailsVisible: false,
|
|
647
651
|
});
|
|
648
|
-
const { lastFrame } = renderComposer(uiState);
|
|
652
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
649
653
|
expect(lastFrame()).toContain('ShortcutsHint');
|
|
650
654
|
});
|
|
651
|
-
it('shows shortcuts hint when full UI details are visible', () => {
|
|
655
|
+
it('shows shortcuts hint when full UI details are visible', async () => {
|
|
652
656
|
const uiState = createMockUIState({
|
|
653
657
|
cleanUiDetailsVisible: true,
|
|
654
658
|
});
|
|
655
|
-
const { lastFrame } = renderComposer(uiState);
|
|
659
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
656
660
|
expect(lastFrame()).toContain('ShortcutsHint');
|
|
657
661
|
});
|
|
658
|
-
it('hides shortcuts hint while loading in minimal mode', () => {
|
|
662
|
+
it('hides shortcuts hint while loading in minimal mode', async () => {
|
|
659
663
|
const uiState = createMockUIState({
|
|
660
664
|
cleanUiDetailsVisible: false,
|
|
661
665
|
streamingState: StreamingState.Responding,
|
|
662
666
|
elapsedTime: 1,
|
|
663
667
|
});
|
|
664
|
-
const { lastFrame } = renderComposer(uiState);
|
|
668
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
665
669
|
expect(lastFrame()).not.toContain('ShortcutsHint');
|
|
666
670
|
});
|
|
667
|
-
it('shows shortcuts help in minimal mode when toggled on', () => {
|
|
671
|
+
it('shows shortcuts help in minimal mode when toggled on', async () => {
|
|
668
672
|
const uiState = createMockUIState({
|
|
669
673
|
cleanUiDetailsVisible: false,
|
|
670
674
|
shortcutsHelpVisible: true,
|
|
671
675
|
});
|
|
672
|
-
const { lastFrame } = renderComposer(uiState);
|
|
676
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
673
677
|
expect(lastFrame()).toContain('ShortcutsHelp');
|
|
674
678
|
});
|
|
675
|
-
it('hides shortcuts hint when suggestions are visible above input in alternate buffer', () => {
|
|
679
|
+
it('hides shortcuts hint when suggestions are visible above input in alternate buffer', async () => {
|
|
676
680
|
composerTestControls.isAlternateBuffer = true;
|
|
677
681
|
composerTestControls.suggestionsVisible = true;
|
|
678
682
|
const uiState = createMockUIState({
|
|
679
683
|
cleanUiDetailsVisible: false,
|
|
680
684
|
showApprovalModeIndicator: ApprovalMode.PLAN,
|
|
681
685
|
});
|
|
682
|
-
const { lastFrame } = renderComposer(uiState);
|
|
686
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
683
687
|
expect(lastFrame()).not.toContain('ShortcutsHint');
|
|
684
688
|
expect(lastFrame()).not.toContain('plan');
|
|
685
689
|
});
|
|
686
|
-
it('hides approval mode indicator when suggestions are visible above input in alternate buffer', () => {
|
|
690
|
+
it('hides approval mode indicator when suggestions are visible above input in alternate buffer', async () => {
|
|
687
691
|
composerTestControls.isAlternateBuffer = true;
|
|
688
692
|
composerTestControls.suggestionsVisible = true;
|
|
689
693
|
const uiState = createMockUIState({
|
|
690
694
|
cleanUiDetailsVisible: true,
|
|
691
695
|
showApprovalModeIndicator: ApprovalMode.YOLO,
|
|
692
696
|
});
|
|
693
|
-
const { lastFrame } = renderComposer(uiState);
|
|
697
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
694
698
|
expect(lastFrame()).not.toContain('ApprovalModeIndicator');
|
|
695
699
|
});
|
|
696
|
-
it('keeps shortcuts hint when suggestions are visible below input in regular buffer', () => {
|
|
700
|
+
it('keeps shortcuts hint when suggestions are visible below input in regular buffer', async () => {
|
|
697
701
|
composerTestControls.isAlternateBuffer = false;
|
|
698
702
|
composerTestControls.suggestionsVisible = true;
|
|
699
703
|
const uiState = createMockUIState({
|
|
700
704
|
cleanUiDetailsVisible: false,
|
|
701
705
|
});
|
|
702
|
-
const { lastFrame } = renderComposer(uiState);
|
|
706
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
703
707
|
expect(lastFrame()).toContain('ShortcutsHint');
|
|
704
708
|
});
|
|
705
709
|
});
|
|
706
710
|
describe('Shortcuts Help', () => {
|
|
707
|
-
it('shows shortcuts help in passive state', () => {
|
|
711
|
+
it('shows shortcuts help in passive state', async () => {
|
|
708
712
|
const uiState = createMockUIState({
|
|
709
713
|
shortcutsHelpVisible: true,
|
|
710
714
|
streamingState: StreamingState.Idle,
|
|
711
715
|
});
|
|
712
|
-
const { lastFrame } = renderComposer(uiState);
|
|
716
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
713
717
|
expect(lastFrame()).toContain('ShortcutsHelp');
|
|
714
718
|
});
|
|
715
|
-
it('hides shortcuts help while streaming', () => {
|
|
719
|
+
it('hides shortcuts help while streaming', async () => {
|
|
716
720
|
const uiState = createMockUIState({
|
|
717
721
|
shortcutsHelpVisible: true,
|
|
718
722
|
streamingState: StreamingState.Responding,
|
|
719
723
|
});
|
|
720
|
-
const { lastFrame } = renderComposer(uiState);
|
|
724
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
721
725
|
expect(lastFrame()).not.toContain('ShortcutsHelp');
|
|
722
726
|
});
|
|
723
|
-
it('hides shortcuts help when action is required', () => {
|
|
727
|
+
it('hides shortcuts help when action is required', async () => {
|
|
724
728
|
const uiState = createMockUIState({
|
|
725
729
|
shortcutsHelpVisible: true,
|
|
726
730
|
customDialog: (_jsx(Box, { children: _jsx(Text, { children: "Dialog content" }) })),
|
|
727
731
|
});
|
|
728
|
-
const { lastFrame } = renderComposer(uiState);
|
|
732
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
729
733
|
expect(lastFrame()).not.toContain('ShortcutsHelp');
|
|
730
734
|
});
|
|
731
735
|
});
|
|
732
736
|
describe('Snapshots', () => {
|
|
733
|
-
it('matches snapshot in idle state', () => {
|
|
737
|
+
it('matches snapshot in idle state', async () => {
|
|
734
738
|
const uiState = createMockUIState();
|
|
735
|
-
const { lastFrame } = renderComposer(uiState);
|
|
739
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
736
740
|
expect(lastFrame()).toMatchSnapshot();
|
|
737
741
|
});
|
|
738
|
-
it('matches snapshot while streaming', () => {
|
|
742
|
+
it('matches snapshot while streaming', async () => {
|
|
739
743
|
const uiState = createMockUIState({
|
|
740
744
|
streamingState: StreamingState.Responding,
|
|
741
745
|
thought: {
|
|
@@ -743,30 +747,30 @@ describe('Composer', () => {
|
|
|
743
747
|
description: 'Thinking about the meaning of life...',
|
|
744
748
|
},
|
|
745
749
|
});
|
|
746
|
-
const { lastFrame } = renderComposer(uiState);
|
|
750
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
747
751
|
expect(lastFrame()).toMatchSnapshot();
|
|
748
752
|
});
|
|
749
|
-
it('matches snapshot in narrow view', () => {
|
|
753
|
+
it('matches snapshot in narrow view', async () => {
|
|
750
754
|
const uiState = createMockUIState({
|
|
751
755
|
terminalWidth: 40,
|
|
752
756
|
});
|
|
753
|
-
const { lastFrame } = renderComposer(uiState);
|
|
757
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
754
758
|
expect(lastFrame()).toMatchSnapshot();
|
|
755
759
|
});
|
|
756
|
-
it('matches snapshot in minimal UI mode', () => {
|
|
760
|
+
it('matches snapshot in minimal UI mode', async () => {
|
|
757
761
|
const uiState = createMockUIState({
|
|
758
762
|
cleanUiDetailsVisible: false,
|
|
759
763
|
});
|
|
760
|
-
const { lastFrame } = renderComposer(uiState);
|
|
764
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
761
765
|
expect(lastFrame()).toMatchSnapshot();
|
|
762
766
|
});
|
|
763
|
-
it('matches snapshot in minimal UI mode while loading', () => {
|
|
767
|
+
it('matches snapshot in minimal UI mode while loading', async () => {
|
|
764
768
|
const uiState = createMockUIState({
|
|
765
769
|
cleanUiDetailsVisible: false,
|
|
766
770
|
streamingState: StreamingState.Responding,
|
|
767
771
|
elapsedTime: 1000,
|
|
768
772
|
});
|
|
769
|
-
const { lastFrame } = renderComposer(uiState);
|
|
773
|
+
const { lastFrame } = await renderComposer(uiState);
|
|
770
774
|
expect(lastFrame()).toMatchSnapshot();
|
|
771
775
|
});
|
|
772
776
|
});
|