@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
|
@@ -41,8 +41,9 @@ describe('AskUserDialog', () => {
|
|
|
41
41
|
multiSelect: false,
|
|
42
42
|
},
|
|
43
43
|
];
|
|
44
|
-
it('renders question and options', () => {
|
|
45
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
44
|
+
it('renders question and options', async () => {
|
|
45
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
46
|
+
await waitUntilReady();
|
|
46
47
|
expect(lastFrame()).toMatchSnapshot();
|
|
47
48
|
});
|
|
48
49
|
describe.each([
|
|
@@ -100,30 +101,32 @@ describe('AskUserDialog', () => {
|
|
|
100
101
|
const onSubmit = vi.fn();
|
|
101
102
|
const { stdin } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
102
103
|
actions(stdin);
|
|
103
|
-
await waitFor(() => {
|
|
104
|
+
await waitFor(async () => {
|
|
104
105
|
expect(onSubmit).toHaveBeenCalledWith(expectedSubmit);
|
|
105
106
|
});
|
|
106
107
|
});
|
|
107
108
|
});
|
|
108
109
|
it('handles custom option in single select with inline typing', async () => {
|
|
109
110
|
const onSubmit = vi.fn();
|
|
110
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
111
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
111
112
|
// Move down to custom option
|
|
112
113
|
writeKey(stdin, '\x1b[B');
|
|
113
114
|
writeKey(stdin, '\x1b[B');
|
|
114
|
-
await waitFor(() => {
|
|
115
|
+
await waitFor(async () => {
|
|
116
|
+
await waitUntilReady();
|
|
115
117
|
expect(lastFrame()).toContain('Enter a custom value');
|
|
116
118
|
});
|
|
117
119
|
// Type directly (inline)
|
|
118
120
|
for (const char of 'API Key') {
|
|
119
121
|
writeKey(stdin, char);
|
|
120
122
|
}
|
|
121
|
-
await waitFor(() => {
|
|
123
|
+
await waitFor(async () => {
|
|
124
|
+
await waitUntilReady();
|
|
122
125
|
expect(lastFrame()).toContain('API Key');
|
|
123
126
|
});
|
|
124
127
|
// Press Enter to submit the custom value
|
|
125
128
|
writeKey(stdin, '\r');
|
|
126
|
-
await waitFor(() => {
|
|
129
|
+
await waitFor(async () => {
|
|
127
130
|
expect(onSubmit).toHaveBeenCalledWith({ '0': 'API Key' });
|
|
128
131
|
});
|
|
129
132
|
});
|
|
@@ -138,7 +141,7 @@ describe('AskUserDialog', () => {
|
|
|
138
141
|
},
|
|
139
142
|
];
|
|
140
143
|
const onSubmit = vi.fn();
|
|
141
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestionWithOther, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
144
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestionWithOther, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
142
145
|
// Navigate to "Other" option
|
|
143
146
|
writeKey(stdin, '\x1b[B'); // Down to "Other"
|
|
144
147
|
// Type first line
|
|
@@ -152,13 +155,15 @@ describe('AskUserDialog', () => {
|
|
|
152
155
|
for (const char of 'Line 2') {
|
|
153
156
|
writeKey(stdin, char);
|
|
154
157
|
}
|
|
155
|
-
await waitFor(() => {
|
|
158
|
+
await waitFor(async () => {
|
|
159
|
+
await waitUntilReady();
|
|
156
160
|
expect(lastFrame()).toContain('Line 1');
|
|
161
|
+
await waitUntilReady();
|
|
157
162
|
expect(lastFrame()).toContain('Line 2');
|
|
158
163
|
});
|
|
159
164
|
// Press Enter to submit
|
|
160
165
|
writeKey(stdin, '\r');
|
|
161
|
-
await waitFor(() => {
|
|
166
|
+
await waitFor(async () => {
|
|
162
167
|
expect(onSubmit).toHaveBeenCalledWith({ '0': 'Line 1\nLine 2' });
|
|
163
168
|
});
|
|
164
169
|
});
|
|
@@ -179,38 +184,46 @@ describe('AskUserDialog', () => {
|
|
|
179
184
|
multiSelect: false,
|
|
180
185
|
},
|
|
181
186
|
];
|
|
182
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 80, availableHeight: 10 }), { useAlternateBuffer });
|
|
183
|
-
await waitFor(() => {
|
|
187
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 80, availableHeight: 10 }), { useAlternateBuffer });
|
|
188
|
+
await waitFor(async () => {
|
|
184
189
|
if (expectedArrows) {
|
|
190
|
+
await waitUntilReady();
|
|
185
191
|
expect(lastFrame()).toContain('▲');
|
|
192
|
+
await waitUntilReady();
|
|
186
193
|
expect(lastFrame()).toContain('▼');
|
|
187
194
|
}
|
|
188
195
|
else {
|
|
196
|
+
await waitUntilReady();
|
|
189
197
|
expect(lastFrame()).not.toContain('▲');
|
|
198
|
+
await waitUntilReady();
|
|
190
199
|
expect(lastFrame()).not.toContain('▼');
|
|
191
200
|
}
|
|
201
|
+
await waitUntilReady();
|
|
192
202
|
expect(lastFrame()).toMatchSnapshot();
|
|
193
203
|
});
|
|
194
204
|
});
|
|
195
205
|
});
|
|
196
206
|
it('navigates to custom option when typing unbound characters (Type-to-Jump)', async () => {
|
|
197
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
207
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
198
208
|
// Type a character without navigating down
|
|
199
209
|
writeKey(stdin, 'A');
|
|
200
|
-
await waitFor(() => {
|
|
210
|
+
await waitFor(async () => {
|
|
201
211
|
// Should show the custom input with 'A'
|
|
202
212
|
// Placeholder is hidden when text is present
|
|
213
|
+
await waitUntilReady();
|
|
203
214
|
expect(lastFrame()).toContain('A');
|
|
215
|
+
await waitUntilReady();
|
|
204
216
|
expect(lastFrame()).toContain('3. A');
|
|
205
217
|
});
|
|
206
218
|
// Continue typing
|
|
207
219
|
writeKey(stdin, 'P');
|
|
208
220
|
writeKey(stdin, 'I');
|
|
209
|
-
await waitFor(() => {
|
|
221
|
+
await waitFor(async () => {
|
|
222
|
+
await waitUntilReady();
|
|
210
223
|
expect(lastFrame()).toContain('API');
|
|
211
224
|
});
|
|
212
225
|
});
|
|
213
|
-
it('shows progress header for multiple questions', () => {
|
|
226
|
+
it('shows progress header for multiple questions', async () => {
|
|
214
227
|
const multiQuestions = [
|
|
215
228
|
{
|
|
216
229
|
question: 'Which database should we use?',
|
|
@@ -233,15 +246,18 @@ describe('AskUserDialog', () => {
|
|
|
233
246
|
multiSelect: false,
|
|
234
247
|
},
|
|
235
248
|
];
|
|
236
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
249
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
250
|
+
await waitUntilReady();
|
|
237
251
|
expect(lastFrame()).toMatchSnapshot();
|
|
238
252
|
});
|
|
239
|
-
it('hides progress header for single question', () => {
|
|
240
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
253
|
+
it('hides progress header for single question', async () => {
|
|
254
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
255
|
+
await waitUntilReady();
|
|
241
256
|
expect(lastFrame()).toMatchSnapshot();
|
|
242
257
|
});
|
|
243
|
-
it('shows keyboard hints', () => {
|
|
244
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
258
|
+
it('shows keyboard hints', async () => {
|
|
259
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: authQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
260
|
+
await waitUntilReady();
|
|
245
261
|
expect(lastFrame()).toMatchSnapshot();
|
|
246
262
|
});
|
|
247
263
|
it('navigates between questions with arrow keys', async () => {
|
|
@@ -263,14 +279,17 @@ describe('AskUserDialog', () => {
|
|
|
263
279
|
multiSelect: false,
|
|
264
280
|
},
|
|
265
281
|
];
|
|
266
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
282
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
283
|
+
await waitUntilReady();
|
|
267
284
|
expect(lastFrame()).toContain('Which testing framework?');
|
|
268
285
|
writeKey(stdin, '\x1b[C'); // Right arrow
|
|
269
|
-
await waitFor(() => {
|
|
286
|
+
await waitFor(async () => {
|
|
287
|
+
await waitUntilReady();
|
|
270
288
|
expect(lastFrame()).toContain('Which CI provider?');
|
|
271
289
|
});
|
|
272
290
|
writeKey(stdin, '\x1b[D'); // Left arrow
|
|
273
|
-
await waitFor(() => {
|
|
291
|
+
await waitFor(async () => {
|
|
292
|
+
await waitUntilReady();
|
|
274
293
|
expect(lastFrame()).toContain('Which testing framework?');
|
|
275
294
|
});
|
|
276
295
|
});
|
|
@@ -292,34 +311,38 @@ describe('AskUserDialog', () => {
|
|
|
292
311
|
},
|
|
293
312
|
];
|
|
294
313
|
const onSubmit = vi.fn();
|
|
295
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
314
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
296
315
|
// Answer first question (should auto-advance)
|
|
297
316
|
writeKey(stdin, '\r');
|
|
298
|
-
await waitFor(() => {
|
|
317
|
+
await waitFor(async () => {
|
|
318
|
+
await waitUntilReady();
|
|
299
319
|
expect(lastFrame()).toContain('Which bundler?');
|
|
300
320
|
});
|
|
301
321
|
// Navigate back
|
|
302
322
|
writeKey(stdin, '\x1b[D');
|
|
303
|
-
await waitFor(() => {
|
|
323
|
+
await waitFor(async () => {
|
|
324
|
+
await waitUntilReady();
|
|
304
325
|
expect(lastFrame()).toContain('Which package manager?');
|
|
305
326
|
});
|
|
306
327
|
// Navigate forward
|
|
307
328
|
writeKey(stdin, '\x1b[C');
|
|
308
|
-
await waitFor(() => {
|
|
329
|
+
await waitFor(async () => {
|
|
330
|
+
await waitUntilReady();
|
|
309
331
|
expect(lastFrame()).toContain('Which bundler?');
|
|
310
332
|
});
|
|
311
333
|
// Answer second question
|
|
312
334
|
writeKey(stdin, '\r');
|
|
313
|
-
await waitFor(() => {
|
|
335
|
+
await waitFor(async () => {
|
|
336
|
+
await waitUntilReady();
|
|
314
337
|
expect(lastFrame()).toContain('Review your answers:');
|
|
315
338
|
});
|
|
316
339
|
// Submit from Review
|
|
317
340
|
writeKey(stdin, '\r');
|
|
318
|
-
await waitFor(() => {
|
|
341
|
+
await waitFor(async () => {
|
|
319
342
|
expect(onSubmit).toHaveBeenCalledWith({ '0': 'pnpm', '1': 'Vite' });
|
|
320
343
|
});
|
|
321
344
|
});
|
|
322
|
-
it('shows Review tab in progress header for multiple questions', () => {
|
|
345
|
+
it('shows Review tab in progress header for multiple questions', async () => {
|
|
323
346
|
const multiQuestions = [
|
|
324
347
|
{
|
|
325
348
|
question: 'Which framework?',
|
|
@@ -342,7 +365,8 @@ describe('AskUserDialog', () => {
|
|
|
342
365
|
multiSelect: false,
|
|
343
366
|
},
|
|
344
367
|
];
|
|
345
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
368
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
369
|
+
await waitUntilReady();
|
|
346
370
|
expect(lastFrame()).toMatchSnapshot();
|
|
347
371
|
});
|
|
348
372
|
it('allows navigating to Review tab and back', async () => {
|
|
@@ -362,17 +386,20 @@ describe('AskUserDialog', () => {
|
|
|
362
386
|
multiSelect: false,
|
|
363
387
|
},
|
|
364
388
|
];
|
|
365
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
389
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
366
390
|
writeKey(stdin, '\x1b[C'); // Right arrow
|
|
367
|
-
await waitFor(() => {
|
|
391
|
+
await waitFor(async () => {
|
|
392
|
+
await waitUntilReady();
|
|
368
393
|
expect(lastFrame()).toContain('Add documentation?');
|
|
369
394
|
});
|
|
370
395
|
writeKey(stdin, '\x1b[C'); // Right arrow to Review
|
|
371
|
-
await waitFor(() => {
|
|
396
|
+
await waitFor(async () => {
|
|
397
|
+
await waitUntilReady();
|
|
372
398
|
expect(lastFrame()).toMatchSnapshot();
|
|
373
399
|
});
|
|
374
400
|
writeKey(stdin, '\x1b[D'); // Left arrow back
|
|
375
|
-
await waitFor(() => {
|
|
401
|
+
await waitFor(async () => {
|
|
402
|
+
await waitUntilReady();
|
|
376
403
|
expect(lastFrame()).toContain('Add documentation?');
|
|
377
404
|
});
|
|
378
405
|
});
|
|
@@ -393,11 +420,12 @@ describe('AskUserDialog', () => {
|
|
|
393
420
|
multiSelect: false,
|
|
394
421
|
},
|
|
395
422
|
];
|
|
396
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
423
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
397
424
|
// Navigate directly to Review tab without answering
|
|
398
425
|
writeKey(stdin, '\x1b[C');
|
|
399
426
|
writeKey(stdin, '\x1b[C');
|
|
400
|
-
await waitFor(() => {
|
|
427
|
+
await waitFor(async () => {
|
|
428
|
+
await waitUntilReady();
|
|
401
429
|
expect(lastFrame()).toMatchSnapshot();
|
|
402
430
|
});
|
|
403
431
|
});
|
|
@@ -426,12 +454,12 @@ describe('AskUserDialog', () => {
|
|
|
426
454
|
writeKey(stdin, '\x1b[C');
|
|
427
455
|
// Submit
|
|
428
456
|
writeKey(stdin, '\r');
|
|
429
|
-
await waitFor(() => {
|
|
457
|
+
await waitFor(async () => {
|
|
430
458
|
expect(onSubmit).toHaveBeenCalledWith({ '0': 'Node 20' });
|
|
431
459
|
});
|
|
432
460
|
});
|
|
433
461
|
describe('Text type questions', () => {
|
|
434
|
-
it('renders text input for type: "text"', () => {
|
|
462
|
+
it('renders text input for type: "text"', async () => {
|
|
435
463
|
const textQuestion = [
|
|
436
464
|
{
|
|
437
465
|
question: 'What should we name this component?',
|
|
@@ -440,10 +468,11 @@ describe('AskUserDialog', () => {
|
|
|
440
468
|
placeholder: 'e.g., UserProfileCard',
|
|
441
469
|
},
|
|
442
470
|
];
|
|
443
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
471
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
472
|
+
await waitUntilReady();
|
|
444
473
|
expect(lastFrame()).toMatchSnapshot();
|
|
445
474
|
});
|
|
446
|
-
it('shows default placeholder when none provided', () => {
|
|
475
|
+
it('shows default placeholder when none provided', async () => {
|
|
447
476
|
const textQuestion = [
|
|
448
477
|
{
|
|
449
478
|
question: 'Enter the database connection string:',
|
|
@@ -451,7 +480,8 @@ describe('AskUserDialog', () => {
|
|
|
451
480
|
type: QuestionType.TEXT,
|
|
452
481
|
},
|
|
453
482
|
];
|
|
454
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
483
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
484
|
+
await waitUntilReady();
|
|
455
485
|
expect(lastFrame()).toMatchSnapshot();
|
|
456
486
|
});
|
|
457
487
|
it('supports backspace in text mode', async () => {
|
|
@@ -462,20 +492,23 @@ describe('AskUserDialog', () => {
|
|
|
462
492
|
type: QuestionType.TEXT,
|
|
463
493
|
},
|
|
464
494
|
];
|
|
465
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
495
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
466
496
|
for (const char of 'abc') {
|
|
467
497
|
writeKey(stdin, char);
|
|
468
498
|
}
|
|
469
|
-
await waitFor(() => {
|
|
499
|
+
await waitFor(async () => {
|
|
500
|
+
await waitUntilReady();
|
|
470
501
|
expect(lastFrame()).toContain('abc');
|
|
471
502
|
});
|
|
472
503
|
writeKey(stdin, '\x7f'); // Backspace
|
|
473
|
-
await waitFor(() => {
|
|
504
|
+
await waitFor(async () => {
|
|
505
|
+
await waitUntilReady();
|
|
474
506
|
expect(lastFrame()).toContain('ab');
|
|
507
|
+
await waitUntilReady();
|
|
475
508
|
expect(lastFrame()).not.toContain('abc');
|
|
476
509
|
});
|
|
477
510
|
});
|
|
478
|
-
it('shows correct keyboard hints for text type', () => {
|
|
511
|
+
it('shows correct keyboard hints for text type', async () => {
|
|
479
512
|
const textQuestion = [
|
|
480
513
|
{
|
|
481
514
|
question: 'Enter the variable name:',
|
|
@@ -483,7 +516,8 @@ describe('AskUserDialog', () => {
|
|
|
483
516
|
type: QuestionType.TEXT,
|
|
484
517
|
},
|
|
485
518
|
];
|
|
486
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
519
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
520
|
+
await waitUntilReady();
|
|
487
521
|
expect(lastFrame()).toMatchSnapshot();
|
|
488
522
|
});
|
|
489
523
|
it('preserves text answer when navigating between questions', async () => {
|
|
@@ -504,16 +538,18 @@ describe('AskUserDialog', () => {
|
|
|
504
538
|
multiSelect: false,
|
|
505
539
|
},
|
|
506
540
|
];
|
|
507
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: mixedQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
541
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: mixedQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
508
542
|
for (const char of 'useAuth') {
|
|
509
543
|
writeKey(stdin, char);
|
|
510
544
|
}
|
|
511
545
|
writeKey(stdin, '\t'); // Use Tab instead of Right arrow when text input is active
|
|
512
|
-
await waitFor(() => {
|
|
546
|
+
await waitFor(async () => {
|
|
547
|
+
await waitUntilReady();
|
|
513
548
|
expect(lastFrame()).toContain('Should it be async?');
|
|
514
549
|
});
|
|
515
550
|
writeKey(stdin, '\x1b[D'); // Left arrow should work when NOT focusing a text input
|
|
516
|
-
await waitFor(() => {
|
|
551
|
+
await waitFor(async () => {
|
|
552
|
+
await waitUntilReady();
|
|
517
553
|
expect(lastFrame()).toContain('useAuth');
|
|
518
554
|
});
|
|
519
555
|
});
|
|
@@ -537,24 +573,30 @@ describe('AskUserDialog', () => {
|
|
|
537
573
|
},
|
|
538
574
|
];
|
|
539
575
|
const onSubmit = vi.fn();
|
|
540
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: mixedQuestions, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
576
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: mixedQuestions, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
541
577
|
for (const char of 'DataTable') {
|
|
542
578
|
writeKey(stdin, char);
|
|
543
579
|
}
|
|
544
580
|
writeKey(stdin, '\r');
|
|
545
|
-
await waitFor(() => {
|
|
581
|
+
await waitFor(async () => {
|
|
582
|
+
await waitUntilReady();
|
|
546
583
|
expect(lastFrame()).toContain('Which styling approach?');
|
|
547
584
|
});
|
|
548
585
|
writeKey(stdin, '\r');
|
|
549
|
-
await waitFor(() => {
|
|
586
|
+
await waitFor(async () => {
|
|
587
|
+
await waitUntilReady();
|
|
550
588
|
expect(lastFrame()).toContain('Review your answers:');
|
|
589
|
+
await waitUntilReady();
|
|
551
590
|
expect(lastFrame()).toContain('Name');
|
|
591
|
+
await waitUntilReady();
|
|
552
592
|
expect(lastFrame()).toContain('DataTable');
|
|
593
|
+
await waitUntilReady();
|
|
553
594
|
expect(lastFrame()).toContain('Style');
|
|
595
|
+
await waitUntilReady();
|
|
554
596
|
expect(lastFrame()).toContain('CSS Modules');
|
|
555
597
|
});
|
|
556
598
|
writeKey(stdin, '\r');
|
|
557
|
-
await waitFor(() => {
|
|
599
|
+
await waitFor(async () => {
|
|
558
600
|
expect(onSubmit).toHaveBeenCalledWith({
|
|
559
601
|
'0': 'DataTable',
|
|
560
602
|
'1': 'CSS Modules',
|
|
@@ -572,7 +614,7 @@ describe('AskUserDialog', () => {
|
|
|
572
614
|
const onSubmit = vi.fn();
|
|
573
615
|
const { stdin } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
574
616
|
writeKey(stdin, '\r');
|
|
575
|
-
await waitFor(() => {
|
|
617
|
+
await waitFor(async () => {
|
|
576
618
|
expect(onSubmit).toHaveBeenCalledWith({});
|
|
577
619
|
});
|
|
578
620
|
});
|
|
@@ -585,18 +627,21 @@ describe('AskUserDialog', () => {
|
|
|
585
627
|
},
|
|
586
628
|
];
|
|
587
629
|
const onCancel = vi.fn();
|
|
588
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: onCancel, width: 120 }), { width: 120 });
|
|
630
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: textQuestion, onSubmit: vi.fn(), onCancel: onCancel, width: 120 }), { width: 120 });
|
|
589
631
|
for (const char of 'SomeText') {
|
|
590
632
|
writeKey(stdin, char);
|
|
591
633
|
}
|
|
592
|
-
await waitFor(() => {
|
|
634
|
+
await waitFor(async () => {
|
|
635
|
+
await waitUntilReady();
|
|
593
636
|
expect(lastFrame()).toContain('SomeText');
|
|
594
637
|
});
|
|
595
638
|
// Send Ctrl+C
|
|
596
639
|
writeKey(stdin, '\x03'); // Ctrl+C
|
|
597
|
-
await waitFor(() => {
|
|
640
|
+
await waitFor(async () => {
|
|
598
641
|
// Text should be cleared
|
|
642
|
+
await waitUntilReady();
|
|
599
643
|
expect(lastFrame()).not.toContain('SomeText');
|
|
644
|
+
await waitUntilReady();
|
|
600
645
|
expect(lastFrame()).toContain('>');
|
|
601
646
|
});
|
|
602
647
|
// Should NOT call onCancel (dialog should stay open)
|
|
@@ -617,31 +662,36 @@ describe('AskUserDialog', () => {
|
|
|
617
662
|
type: QuestionType.TEXT,
|
|
618
663
|
},
|
|
619
664
|
];
|
|
620
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
665
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
621
666
|
// 1. Move to Text Q (Right arrow works for Choice Q)
|
|
622
667
|
writeKey(stdin, '\x1b[C');
|
|
623
|
-
await waitFor(() => {
|
|
668
|
+
await waitFor(async () => {
|
|
669
|
+
await waitUntilReady();
|
|
624
670
|
expect(lastFrame()).toContain('Text Q?');
|
|
625
671
|
});
|
|
626
672
|
// 2. Type something in Text Q to make isEditingCustomOption true
|
|
627
673
|
writeKey(stdin, 'a');
|
|
628
|
-
await waitFor(() => {
|
|
674
|
+
await waitFor(async () => {
|
|
675
|
+
await waitUntilReady();
|
|
629
676
|
expect(lastFrame()).toContain('a');
|
|
630
677
|
});
|
|
631
678
|
// 3. Move back to Choice Q (Left arrow works because cursor is at left edge)
|
|
632
679
|
// When typing 'a', cursor is at index 1.
|
|
633
680
|
// We need to move cursor to index 0 first for Left arrow to work for navigation.
|
|
634
681
|
writeKey(stdin, '\x1b[D'); // Left arrow moves cursor to index 0
|
|
635
|
-
await waitFor(() => {
|
|
682
|
+
await waitFor(async () => {
|
|
683
|
+
await waitUntilReady();
|
|
636
684
|
expect(lastFrame()).toContain('Text Q?');
|
|
637
685
|
});
|
|
638
686
|
writeKey(stdin, '\x1b[D'); // Second Left arrow should now trigger navigation
|
|
639
|
-
await waitFor(() => {
|
|
687
|
+
await waitFor(async () => {
|
|
688
|
+
await waitUntilReady();
|
|
640
689
|
expect(lastFrame()).toContain('Choice Q?');
|
|
641
690
|
});
|
|
642
691
|
// 4. Immediately try Right arrow to go back to Text Q
|
|
643
692
|
writeKey(stdin, '\x1b[C');
|
|
644
|
-
await waitFor(() => {
|
|
693
|
+
await waitFor(async () => {
|
|
694
|
+
await waitUntilReady();
|
|
645
695
|
expect(lastFrame()).toContain('Text Q?');
|
|
646
696
|
});
|
|
647
697
|
});
|
|
@@ -663,24 +713,26 @@ describe('AskUserDialog', () => {
|
|
|
663
713
|
},
|
|
664
714
|
];
|
|
665
715
|
const onSubmit = vi.fn();
|
|
666
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
716
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: multiQuestions, onSubmit: onSubmit, onCancel: vi.fn(), width: 120 }), { width: 120 });
|
|
667
717
|
// Answer Q1 and Q2 sequentialy
|
|
668
718
|
act(() => {
|
|
669
719
|
stdin.write('\r'); // Select A1 for Q1 -> triggers autoAdvance
|
|
670
720
|
});
|
|
671
|
-
await waitFor(() => {
|
|
721
|
+
await waitFor(async () => {
|
|
722
|
+
await waitUntilReady();
|
|
672
723
|
expect(lastFrame()).toContain('Question 2?');
|
|
673
724
|
});
|
|
674
725
|
act(() => {
|
|
675
726
|
stdin.write('\r'); // Select A2 for Q2 -> triggers autoAdvance to Review
|
|
676
727
|
});
|
|
677
|
-
await waitFor(() => {
|
|
728
|
+
await waitFor(async () => {
|
|
729
|
+
await waitUntilReady();
|
|
678
730
|
expect(lastFrame()).toContain('Review your answers:');
|
|
679
731
|
});
|
|
680
732
|
act(() => {
|
|
681
733
|
stdin.write('\r'); // Submit from Review
|
|
682
734
|
});
|
|
683
|
-
await waitFor(() => {
|
|
735
|
+
await waitFor(async () => {
|
|
684
736
|
expect(onSubmit).toHaveBeenCalledWith({
|
|
685
737
|
'0': 'A1',
|
|
686
738
|
'1': 'A2',
|
|
@@ -699,8 +751,9 @@ describe('AskUserDialog', () => {
|
|
|
699
751
|
multiSelect: false,
|
|
700
752
|
},
|
|
701
753
|
];
|
|
702
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120, availableHeight: 40 }), { width: 120 });
|
|
703
|
-
await waitFor(() => {
|
|
754
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120, availableHeight: 40 }), { width: 120 });
|
|
755
|
+
await waitFor(async () => {
|
|
756
|
+
await waitUntilReady();
|
|
704
757
|
const frame = lastFrame();
|
|
705
758
|
// Plain text should be rendered as bold
|
|
706
759
|
expect(frame).toContain(chalk.bold('Which option do you prefer?'));
|
|
@@ -716,8 +769,9 @@ describe('AskUserDialog', () => {
|
|
|
716
769
|
multiSelect: false,
|
|
717
770
|
},
|
|
718
771
|
];
|
|
719
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120, availableHeight: 40 }), { width: 120 });
|
|
720
|
-
await waitFor(() => {
|
|
772
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120, availableHeight: 40 }), { width: 120 });
|
|
773
|
+
await waitFor(async () => {
|
|
774
|
+
await waitUntilReady();
|
|
721
775
|
const frame = lastFrame();
|
|
722
776
|
// Should NOT have double-bold (the whole question bolded AND "this" bolded)
|
|
723
777
|
// "Is " should not be bold, only "this" should be bold
|
|
@@ -736,8 +790,9 @@ describe('AskUserDialog', () => {
|
|
|
736
790
|
multiSelect: false,
|
|
737
791
|
},
|
|
738
792
|
];
|
|
739
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120, availableHeight: 40 }), { width: 120 });
|
|
740
|
-
await waitFor(() => {
|
|
793
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120, availableHeight: 40 }), { width: 120 });
|
|
794
|
+
await waitFor(async () => {
|
|
795
|
+
await waitUntilReady();
|
|
741
796
|
const frame = lastFrame();
|
|
742
797
|
// Check for chalk.bold('this') - asterisks should be gone, text should be bold
|
|
743
798
|
expect(frame).toContain(chalk.bold('this'));
|
|
@@ -754,8 +809,9 @@ describe('AskUserDialog', () => {
|
|
|
754
809
|
multiSelect: false,
|
|
755
810
|
},
|
|
756
811
|
];
|
|
757
|
-
const { lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120, availableHeight: 40 }), { width: 120 });
|
|
758
|
-
await waitFor(() => {
|
|
812
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 120, availableHeight: 40 }), { width: 120 });
|
|
813
|
+
await waitFor(async () => {
|
|
814
|
+
await waitUntilReady();
|
|
759
815
|
const frame = lastFrame();
|
|
760
816
|
// Backticks should be removed
|
|
761
817
|
expect(frame).toContain('npm start');
|
|
@@ -763,7 +819,7 @@ describe('AskUserDialog', () => {
|
|
|
763
819
|
});
|
|
764
820
|
});
|
|
765
821
|
});
|
|
766
|
-
it('uses availableTerminalHeight from UIStateContext if availableHeight prop is missing', () => {
|
|
822
|
+
it('uses availableTerminalHeight from UIStateContext if availableHeight prop is missing', async () => {
|
|
767
823
|
const questions = [
|
|
768
824
|
{
|
|
769
825
|
question: 'Choose an option',
|
|
@@ -779,12 +835,14 @@ describe('AskUserDialog', () => {
|
|
|
779
835
|
const mockUIState = {
|
|
780
836
|
availableTerminalHeight: 5, // Small height to force scroll arrows
|
|
781
837
|
};
|
|
782
|
-
const { lastFrame } = renderWithProviders(_jsx(UIStateContext.Provider, { value: mockUIState, children: _jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 80 }) }), { useAlternateBuffer: false });
|
|
838
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(UIStateContext.Provider, { value: mockUIState, children: _jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 80 }) }), { useAlternateBuffer: false });
|
|
783
839
|
// With height 5 and alternate buffer disabled, it should show scroll arrows (▲)
|
|
840
|
+
await waitUntilReady();
|
|
784
841
|
expect(lastFrame()).toContain('▲');
|
|
842
|
+
await waitUntilReady();
|
|
785
843
|
expect(lastFrame()).toContain('▼');
|
|
786
844
|
});
|
|
787
|
-
it('does NOT truncate the question when in alternate buffer mode even with small height', () => {
|
|
845
|
+
it('does NOT truncate the question when in alternate buffer mode even with small height', async () => {
|
|
788
846
|
const longQuestion = 'This is a very long question ' + 'with many words '.repeat(10);
|
|
789
847
|
const questions = [
|
|
790
848
|
{
|
|
@@ -798,10 +856,12 @@ describe('AskUserDialog', () => {
|
|
|
798
856
|
const mockUIState = {
|
|
799
857
|
availableTerminalHeight: 5,
|
|
800
858
|
};
|
|
801
|
-
const { lastFrame } = renderWithProviders(_jsx(UIStateContext.Provider, { value: mockUIState, children: _jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 40 }) }), { useAlternateBuffer: true });
|
|
859
|
+
const { lastFrame, waitUntilReady } = renderWithProviders(_jsx(UIStateContext.Provider, { value: mockUIState, children: _jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 40 }) }), { useAlternateBuffer: true });
|
|
802
860
|
// Should NOT contain the truncation message
|
|
861
|
+
await waitUntilReady();
|
|
803
862
|
expect(lastFrame()).not.toContain('hidden ...');
|
|
804
863
|
// Should contain the full long question (or at least its parts)
|
|
864
|
+
await waitUntilReady();
|
|
805
865
|
expect(lastFrame()).toContain('This is a very long question');
|
|
806
866
|
});
|
|
807
867
|
describe('Choice question placeholder', () => {
|
|
@@ -819,11 +879,12 @@ describe('AskUserDialog', () => {
|
|
|
819
879
|
multiSelect: false,
|
|
820
880
|
},
|
|
821
881
|
];
|
|
822
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 80 }), { width: 80 });
|
|
882
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 80 }), { width: 80 });
|
|
823
883
|
// Navigate to the "Other" option
|
|
824
884
|
writeKey(stdin, '\x1b[B'); // Down
|
|
825
885
|
writeKey(stdin, '\x1b[B'); // Down to Other
|
|
826
|
-
await waitFor(() => {
|
|
886
|
+
await waitFor(async () => {
|
|
887
|
+
await waitUntilReady();
|
|
827
888
|
expect(lastFrame()).toMatchSnapshot();
|
|
828
889
|
});
|
|
829
890
|
});
|
|
@@ -840,11 +901,12 @@ describe('AskUserDialog', () => {
|
|
|
840
901
|
multiSelect: false,
|
|
841
902
|
},
|
|
842
903
|
];
|
|
843
|
-
const { stdin, lastFrame } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 80 }), { width: 80 });
|
|
904
|
+
const { stdin, lastFrame, waitUntilReady } = renderWithProviders(_jsx(AskUserDialog, { questions: questions, onSubmit: vi.fn(), onCancel: vi.fn(), width: 80 }), { width: 80 });
|
|
844
905
|
// Navigate to the "Other" option
|
|
845
906
|
writeKey(stdin, '\x1b[B'); // Down
|
|
846
907
|
writeKey(stdin, '\x1b[B'); // Down to Other
|
|
847
|
-
await waitFor(() => {
|
|
908
|
+
await waitFor(async () => {
|
|
909
|
+
await waitUntilReady();
|
|
848
910
|
expect(lastFrame()).toMatchSnapshot();
|
|
849
911
|
});
|
|
850
912
|
});
|