@machina.ai/cell-cli 1.22.5-rc1 → 1.25.0-rc3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +5 -4
- package/dist/src/commands/extensions/configure.d.ts +13 -0
- package/dist/src/commands/extensions/configure.js +131 -0
- package/dist/src/commands/extensions/configure.js.map +1 -0
- package/dist/src/commands/extensions/configure.test.d.ts +1 -0
- package/dist/src/commands/extensions/configure.test.js +197 -0
- package/dist/src/commands/extensions/configure.test.js.map +1 -0
- package/dist/src/commands/extensions/disable.test.js.map +1 -1
- package/dist/src/commands/extensions/enable.test.js.map +1 -1
- package/dist/src/commands/extensions/install.js +7 -31
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/install.test.js +21 -3
- package/dist/src/commands/extensions/install.test.js.map +1 -1
- package/dist/src/commands/extensions/link.test.js.map +1 -1
- package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
- package/dist/src/commands/extensions/utils.d.ts +2 -1
- package/dist/src/commands/extensions/utils.js +5 -1
- package/dist/src/commands/extensions/utils.js.map +1 -1
- package/dist/src/commands/extensions/validate.js +1 -1
- package/dist/src/commands/extensions/validate.js.map +1 -1
- package/dist/src/commands/extensions/validate.test.js +1 -1
- package/dist/src/commands/extensions/validate.test.js.map +1 -1
- package/dist/src/commands/extensions.js +2 -2
- package/dist/src/commands/extensions.js.map +1 -1
- package/dist/src/commands/hooks/migrate.js +1 -1
- package/dist/src/commands/hooks/migrate.js.map +1 -1
- package/dist/src/commands/hooks/migrate.test.js +1 -1
- package/dist/src/commands/hooks/migrate.test.js.map +1 -1
- package/dist/src/commands/mcp/add.test.js +1 -1
- package/dist/src/commands/mcp/add.test.js.map +1 -1
- package/dist/src/commands/mcp/list.js +7 -1
- package/dist/src/commands/mcp/list.js.map +1 -1
- package/dist/src/commands/skills/disable.d.ts +14 -0
- package/dist/src/commands/skills/disable.js +45 -0
- package/dist/src/commands/skills/disable.js.map +1 -0
- package/dist/src/commands/skills/disable.test.d.ts +6 -0
- package/dist/src/commands/skills/disable.test.js +80 -0
- package/dist/src/commands/skills/disable.test.js.map +1 -0
- package/dist/src/commands/skills/enable.d.ts +12 -0
- package/dist/src/commands/skills/enable.js +35 -0
- package/dist/src/commands/skills/enable.js.map +1 -0
- package/dist/src/commands/skills/enable.test.d.ts +6 -0
- package/dist/src/commands/skills/enable.test.js +107 -0
- package/dist/src/commands/skills/enable.test.js.map +1 -0
- package/dist/src/commands/skills/install.d.ts +14 -0
- package/dist/src/commands/skills/install.js +61 -0
- package/dist/src/commands/skills/install.js.map +1 -0
- package/dist/src/commands/skills/install.test.d.ts +6 -0
- package/dist/src/commands/skills/install.test.js +57 -0
- package/dist/src/commands/skills/install.test.js.map +1 -0
- package/dist/src/commands/skills/list.d.ts +10 -0
- package/dist/src/commands/skills/list.js +60 -0
- package/dist/src/commands/skills/list.js.map +1 -0
- package/dist/src/commands/skills/list.test.d.ts +6 -0
- package/dist/src/commands/skills/list.test.js +136 -0
- package/dist/src/commands/skills/list.test.js.map +1 -0
- package/dist/src/commands/skills/uninstall.d.ts +13 -0
- package/dist/src/commands/skills/uninstall.js +56 -0
- package/dist/src/commands/skills/uninstall.js.map +1 -0
- package/dist/src/commands/skills/uninstall.test.d.ts +6 -0
- package/dist/src/commands/skills/uninstall.test.js +61 -0
- package/dist/src/commands/skills/uninstall.test.js.map +1 -0
- package/dist/src/commands/{extensions/settings.d.ts → skills.d.ts} +2 -2
- package/dist/src/commands/skills.js +30 -0
- package/dist/src/commands/skills.js.map +1 -0
- package/dist/src/commands/skills.test.d.ts +6 -0
- package/dist/src/commands/skills.test.js +49 -0
- package/dist/src/commands/skills.test.js.map +1 -0
- package/dist/src/config/config.d.ts +10 -3
- package/dist/src/config/config.js +91 -31
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +224 -13
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/extension-manager-agents.test.d.ts +6 -0
- package/dist/src/config/extension-manager-agents.test.js +115 -0
- package/dist/src/config/extension-manager-agents.test.js.map +1 -0
- package/dist/src/config/extension-manager-scope.test.js +164 -0
- package/dist/src/config/extension-manager-scope.test.js.map +1 -0
- package/dist/src/config/extension-manager-skills.test.js +150 -0
- package/dist/src/config/extension-manager-skills.test.js.map +1 -0
- package/dist/src/config/extension-manager.d.ts +6 -1
- package/dist/src/config/extension-manager.js +157 -34
- package/dist/src/config/extension-manager.js.map +1 -1
- package/dist/src/config/extension.test.js +98 -16
- package/dist/src/config/extension.test.js.map +1 -1
- package/dist/src/config/extensions/consent.d.ts +5 -3
- package/dist/src/config/extensions/consent.js +30 -7
- package/dist/src/config/extensions/consent.js.map +1 -1
- package/dist/src/config/extensions/consent.test.js +97 -3
- package/dist/src/config/extensions/consent.test.js.map +1 -1
- package/dist/src/config/extensions/extensionSettings.d.ts +5 -3
- package/dist/src/config/extensions/extensionSettings.js +32 -12
- package/dist/src/config/extensions/extensionSettings.js.map +1 -1
- package/dist/src/config/extensions/extensionSettings.test.js +8 -8
- package/dist/src/config/extensions/extensionSettings.test.js.map +1 -1
- package/dist/src/config/extensions/extensionUpdates.test.js +231 -0
- package/dist/src/config/extensions/extensionUpdates.test.js.map +1 -0
- package/dist/src/config/extensions/github.js +1 -1
- package/dist/src/config/extensions/github.js.map +1 -1
- package/dist/src/config/extensions/github.test.js +2 -2
- package/dist/src/config/extensions/github.test.js.map +1 -1
- package/dist/src/config/extensions/storage.js +2 -2
- package/dist/src/config/extensions/storage.js.map +1 -1
- package/dist/src/config/extensions/update.js +1 -1
- package/dist/src/config/extensions/update.js.map +1 -1
- package/dist/src/config/extensions/update.test.js +8 -8
- package/dist/src/config/extensions/update.test.js.map +1 -1
- package/dist/src/config/keyBindings.d.ts +14 -2
- package/dist/src/config/keyBindings.js +89 -11
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/policy-engine.integration.test.js +13 -1
- package/dist/src/config/policy-engine.integration.test.js.map +1 -1
- 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 +49 -1
- package/dist/src/config/settings-validation.test.js.map +1 -1
- package/dist/src/config/settings.d.ts +9 -7
- package/dist/src/config/settings.js +127 -250
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settings.test.js +245 -594
- package/dist/src/config/settings.test.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +284 -33
- package/dist/src/config/settingsSchema.js +328 -31
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +17 -9
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/config/settings_repro.test.js +1 -1
- package/dist/src/config/settings_repro.test.js.map +1 -1
- package/dist/src/config/settings_validation_warning.test.d.ts +6 -0
- package/dist/src/config/settings_validation_warning.test.js +123 -0
- package/dist/src/config/settings_validation_warning.test.js.map +1 -0
- package/dist/src/config/trustedFolders.d.ts +1 -0
- package/dist/src/config/trustedFolders.js +18 -4
- package/dist/src/config/trustedFolders.js.map +1 -1
- package/dist/src/config/trustedFolders.test.js +45 -0
- package/dist/src/config/trustedFolders.test.js.map +1 -1
- package/dist/src/gemini.js +117 -85
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +72 -95
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/gemini_cleanup.test.js +6 -0
- package/dist/src/gemini_cleanup.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +3 -3
- package/dist/src/generated/git-commit.js +3 -3
- package/dist/src/nonInteractiveCli.js +54 -1
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCli.test.js +94 -11
- package/dist/src/nonInteractiveCli.test.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.d.ts +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +65 -9
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +67 -13
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
- package/dist/src/services/FileCommandLoader.js +6 -6
- package/dist/src/services/FileCommandLoader.js.map +1 -1
- package/dist/src/services/prompt-processors/shellProcessor.js +13 -11
- package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
- package/dist/src/services/prompt-processors/shellProcessor.test.js +93 -61
- package/dist/src/services/prompt-processors/shellProcessor.test.js.map +1 -1
- package/dist/src/test-utils/render.js +4 -2
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/App.test.js +2 -2
- package/dist/src/ui/App.test.js.map +1 -1
- package/dist/src/ui/AppContainer.js +158 -77
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +230 -41
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/IdeIntegrationNudge.test.js +18 -7
- package/dist/src/ui/IdeIntegrationNudge.test.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.d.ts +4 -1
- package/dist/src/ui/auth/AuthDialog.js +8 -2
- package/dist/src/ui/auth/AuthDialog.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +17 -0
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/AuthInProgress.test.js +16 -6
- package/dist/src/ui/auth/AuthInProgress.test.js.map +1 -1
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.d.ts +10 -0
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js +27 -0
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js.map +1 -0
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.d.ts +6 -0
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js +68 -0
- package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +1 -0
- package/dist/src/ui/commands/aboutCommand.js +1 -1
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.test.js +4 -4
- package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
- package/dist/src/ui/commands/agentsCommand.d.ts +7 -0
- package/dist/src/ui/commands/agentsCommand.js +79 -0
- package/dist/src/ui/commands/agentsCommand.js.map +1 -0
- package/dist/src/ui/commands/agentsCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/agentsCommand.test.js +91 -0
- package/dist/src/ui/commands/agentsCommand.test.js.map +1 -0
- package/dist/src/ui/commands/authCommand.js +30 -3
- package/dist/src/ui/commands/authCommand.js.map +1 -1
- package/dist/src/ui/commands/authCommand.test.js +72 -4
- package/dist/src/ui/commands/authCommand.test.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.js +36 -4
- package/dist/src/ui/commands/bugCommand.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.test.js +83 -2
- package/dist/src/ui/commands/bugCommand.test.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.d.ts +1 -2
- package/dist/src/ui/commands/chatCommand.js +50 -50
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.test.js +84 -58
- package/dist/src/ui/commands/chatCommand.test.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +12 -8
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.test.js +4 -0
- package/dist/src/ui/commands/clearCommand.test.js.map +1 -1
- package/dist/src/ui/commands/copyCommand.js +1 -1
- package/dist/src/ui/commands/copyCommand.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.js +27 -10
- package/dist/src/ui/commands/directoryCommand.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.test.js +47 -11
- package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +193 -24
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.test.js +217 -27
- package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/helpCommand.js +1 -1
- package/dist/src/ui/commands/helpCommand.js.map +1 -1
- package/dist/src/ui/commands/helpCommand.test.js +1 -1
- package/dist/src/ui/commands/helpCommand.test.js.map +1 -1
- package/dist/src/ui/commands/hooksCommand.js +155 -20
- package/dist/src/ui/commands/hooksCommand.js.map +1 -1
- package/dist/src/ui/commands/hooksCommand.test.js +196 -17
- package/dist/src/ui/commands/hooksCommand.test.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +7 -7
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.test.js +14 -6
- package/dist/src/ui/commands/mcpCommand.test.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +19 -33
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.test.js +112 -16
- package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
- package/dist/src/ui/commands/restoreCommand.js +1 -1
- package/dist/src/ui/commands/restoreCommand.js.map +1 -1
- package/dist/src/ui/commands/skillsCommand.d.ts +7 -0
- package/dist/src/ui/commands/skillsCommand.js +235 -0
- package/dist/src/ui/commands/skillsCommand.js.map +1 -0
- package/dist/src/ui/commands/skillsCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/skillsCommand.test.js +405 -0
- package/dist/src/ui/commands/skillsCommand.test.js.map +1 -0
- package/dist/src/ui/commands/statsCommand.js +4 -4
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/statsCommand.test.js +4 -4
- package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/toolsCommand.js +2 -2
- package/dist/src/ui/commands/toolsCommand.js.map +1 -1
- package/dist/src/ui/commands/toolsCommand.test.js +2 -2
- package/dist/src/ui/commands/toolsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +15 -2
- package/dist/src/ui/commands/types.js +1 -0
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/AsciiArt.d.ts +6 -6
- package/dist/src/ui/components/AsciiArt.js +6 -6
- package/dist/src/ui/components/Composer.js +7 -7
- package/dist/src/ui/components/Composer.js.map +1 -1
- package/dist/src/ui/components/Composer.test.js +23 -4
- package/dist/src/ui/components/Composer.test.js.map +1 -1
- package/dist/src/ui/components/ContextSummaryDisplay.d.ts +1 -0
- package/dist/src/ui/components/ContextSummaryDisplay.js +12 -5
- package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextSummaryDisplay.test.js +56 -25
- package/dist/src/ui/components/ContextSummaryDisplay.test.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +2 -2
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/EditorSettingsDialog.js +2 -1
- package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/EditorSettingsDialog.test.js +3 -2
- package/dist/src/ui/components/EditorSettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.js +20 -15
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +12 -2
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Footer.js +4 -4
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/Help.js +1 -1
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js +3 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.js +21 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
- package/dist/src/ui/components/HookStatusDisplay.d.ts +12 -0
- package/dist/src/ui/components/HookStatusDisplay.js +20 -0
- package/dist/src/ui/components/HookStatusDisplay.js.map +1 -0
- package/dist/src/ui/components/HookStatusDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/HookStatusDisplay.test.js +51 -0
- package/dist/src/ui/components/HookStatusDisplay.test.js.map +1 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.js +2 -1
- package/dist/src/ui/components/IdeTrustChangeDialog.js.map +1 -1
- package/dist/src/ui/components/IdeTrustChangeDialog.test.js +4 -3
- package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +54 -24
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.js +172 -7
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/dist/src/ui/components/LogoutConfirmationDialog.d.ts +15 -0
- package/dist/src/ui/components/LogoutConfirmationDialog.js +37 -0
- package/dist/src/ui/components/LogoutConfirmationDialog.js.map +1 -0
- package/dist/src/ui/components/LogoutConfirmationDialog.test.d.ts +6 -0
- package/dist/src/ui/components/LogoutConfirmationDialog.test.js +59 -0
- package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +1 -0
- package/dist/src/ui/components/MainContent.js +12 -10
- package/dist/src/ui/components/MainContent.js.map +1 -1
- package/dist/src/ui/components/MainContent.test.js +19 -9
- package/dist/src/ui/components/MainContent.test.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.js +7 -3
- package/dist/src/ui/components/ModelDialog.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.test.js +16 -2
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.js +68 -14
- package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.test.js +53 -2
- package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.d.ts +2 -2
- package/dist/src/ui/components/MultiFolderTrustDialog.js +2 -2
- package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js +9 -9
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Notifications.js +3 -4
- package/dist/src/ui/components/Notifications.js.map +1 -1
- package/dist/src/ui/components/Notifications.test.js +1 -0
- package/dist/src/ui/components/Notifications.test.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.d.ts +1 -3
- package/dist/src/ui/components/ProQuotaDialog.js +3 -21
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.test.js +25 -10
- package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.js +36 -16
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +20 -3
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/StatusDisplay.d.ts +11 -0
- package/dist/src/ui/components/StatusDisplay.js +40 -0
- package/dist/src/ui/components/StatusDisplay.js.map +1 -0
- package/dist/src/ui/components/StatusDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/StatusDisplay.test.js +144 -0
- package/dist/src/ui/components/StatusDisplay.test.js.map +1 -0
- package/dist/src/ui/components/StickyHeader.d.ts +2 -0
- package/dist/src/ui/components/StickyHeader.js +1 -1
- package/dist/src/ui/components/StickyHeader.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.js +7 -2
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/Table.d.ts +21 -0
- package/dist/src/ui/components/Table.js +7 -0
- package/dist/src/ui/components/Table.js.map +1 -0
- package/dist/src/ui/components/Table.test.d.ts +6 -0
- package/dist/src/ui/components/Table.test.js +53 -0
- package/dist/src/ui/components/Table.test.js.map +1 -0
- package/dist/src/ui/components/ThemeDialog.js +63 -17
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.test.js +66 -1
- package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
- package/dist/src/ui/components/messages/DiffRenderer.js +5 -13
- package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
- package/dist/src/ui/components/messages/DiffRenderer.test.js +26 -17
- package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
- package/dist/src/ui/components/messages/ShellToolMessage.js +8 -5
- package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +1 -5
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.js +6 -2
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +1 -0
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.js +22 -16
- package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.test.js +36 -18
- package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +134 -0
- package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +1 -0
- package/dist/src/ui/components/shared/MaxSizedBox.d.ts +2 -38
- package/dist/src/ui/components/shared/MaxSizedBox.js +34 -418
- package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
- package/dist/src/ui/components/shared/MaxSizedBox.test.js +48 -133
- package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +4 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.js +11 -10
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.d.ts +40 -4
- package/dist/src/ui/components/shared/text-buffer.js +234 -64
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.test.js +147 -1
- package/dist/src/ui/components/shared/text-buffer.test.js.map +1 -1
- package/dist/src/ui/components/shared/vim-buffer-actions.test.js +3 -0
- package/dist/src/ui/components/shared/vim-buffer-actions.test.js.map +1 -1
- package/dist/src/ui/components/views/AgentsStatus.d.ts +13 -0
- package/dist/src/ui/components/views/AgentsStatus.js +23 -0
- package/dist/src/ui/components/views/AgentsStatus.js.map +1 -0
- package/dist/src/ui/components/views/ExtensionsList.js +3 -2
- package/dist/src/ui/components/views/ExtensionsList.js.map +1 -1
- package/dist/src/ui/components/views/ExtensionsList.test.js +37 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -1
- package/dist/src/ui/components/views/HooksList.d.ts +2 -0
- package/dist/src/ui/components/views/HooksList.js +12 -7
- package/dist/src/ui/components/views/HooksList.js.map +1 -1
- package/dist/src/ui/components/views/McpStatus.js +7 -2
- package/dist/src/ui/components/views/McpStatus.js.map +1 -1
- package/dist/src/ui/components/views/McpStatus.test.js +10 -0
- package/dist/src/ui/components/views/McpStatus.test.js.map +1 -1
- package/dist/src/ui/components/views/SkillsList.d.ts +13 -0
- package/dist/src/ui/components/views/SkillsList.js +17 -0
- package/dist/src/ui/components/views/SkillsList.js.map +1 -0
- package/dist/src/ui/components/views/SkillsList.test.d.ts +6 -0
- package/dist/src/ui/components/views/SkillsList.test.js +97 -0
- package/dist/src/ui/components/views/SkillsList.test.js.map +1 -0
- package/dist/src/ui/constants/tips.js +1 -4
- package/dist/src/ui/constants/tips.js.map +1 -1
- package/dist/src/ui/constants.d.ts +4 -3
- package/dist/src/ui/constants.js +5 -6
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.d.ts +1 -0
- package/dist/src/ui/contexts/KeypressContext.js +84 -6
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.test.js +130 -9
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +5 -1
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/contexts/VimModeContext.js +1 -1
- package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +17 -3
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.test.js +9 -3
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor_agents.test.d.ts +6 -0
- package/dist/src/ui/hooks/atCommandProcessor_agents.test.js +183 -0
- package/dist/src/ui/hooks/atCommandProcessor_agents.test.js.map +1 -0
- package/dist/src/ui/hooks/slashCommandProcessor.js +18 -7
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.test.js +2 -3
- package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/useAtCompletion.js +31 -0
- package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useAtCompletion_agents.test.d.ts +6 -0
- package/dist/src/ui/hooks/useAtCompletion_agents.test.js +85 -0
- package/dist/src/ui/hooks/useAtCompletion_agents.test.js.map +1 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +2 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js +5 -4
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -0
- package/dist/src/ui/hooks/useCommandCompletion.js +13 -8
- package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useCommandCompletion.test.js +88 -2
- package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useExtensionUpdates.js +5 -7
- package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -1
- package/dist/src/ui/hooks/useExtensionUpdates.test.js +20 -4
- package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.js +14 -19
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.test.js +31 -23
- package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
- package/dist/src/ui/hooks/useGeminiStream.js +84 -16
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +290 -10
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/hooks/useHistoryManager.d.ts +1 -1
- package/dist/src/ui/hooks/useHistoryManager.js +1 -1
- package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
- package/dist/src/ui/hooks/useHistoryManager.test.js +16 -0
- package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -1
- package/dist/src/ui/hooks/useHookDisplayState.d.ts +7 -0
- package/dist/src/ui/hooks/useHookDisplayState.js +83 -0
- package/dist/src/ui/hooks/useHookDisplayState.js.map +1 -0
- package/dist/src/ui/hooks/useHookDisplayState.test.d.ts +6 -0
- package/dist/src/ui/hooks/useHookDisplayState.test.js +180 -0
- package/dist/src/ui/hooks/useHookDisplayState.test.js.map +1 -0
- package/dist/src/ui/hooks/useIncludeDirsTrust.js +4 -4
- package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -1
- package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +2 -2
- package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -1
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +2 -2
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +2 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js +7 -3
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +14 -4
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +10 -3
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.d.ts +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.js +2 -2
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/usePromptCompletion.js +0 -2
- package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.js +11 -9
- package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js +22 -16
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useRewind.d.ts +14 -0
- package/dist/src/ui/hooks/useRewind.js +31 -0
- package/dist/src/ui/hooks/useRewind.js.map +1 -0
- package/dist/src/ui/hooks/useRewind.test.d.ts +6 -0
- package/dist/src/ui/hooks/useRewind.test.js +100 -0
- package/dist/src/ui/hooks/useRewind.test.js.map +1 -0
- package/dist/src/ui/hooks/useSelectionList.js +2 -1
- package/dist/src/ui/hooks/useSelectionList.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.js +3 -3
- package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.test.js +4 -10
- package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
- package/dist/src/ui/hooks/useShellHistory.js +3 -3
- package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.js +26 -11
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +115 -5
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +73 -50
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/hooks/vim.test.js +7 -0
- package/dist/src/ui/hooks/vim.test.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +79 -53
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/themes/ansi-light.js +1 -1
- package/dist/src/ui/themes/ansi-light.js.map +1 -1
- package/dist/src/ui/themes/ansi.js +1 -1
- package/dist/src/ui/themes/ansi.js.map +1 -1
- package/dist/src/ui/themes/color-utils.d.ts +1 -0
- package/dist/src/ui/themes/color-utils.js +13 -0
- package/dist/src/ui/themes/color-utils.js.map +1 -1
- package/dist/src/ui/themes/color-utils.test.js +20 -1
- package/dist/src/ui/themes/color-utils.test.js.map +1 -1
- package/dist/src/ui/themes/shades-of-purple.js +1 -1
- package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.d.ts +5 -0
- package/dist/src/ui/themes/theme-manager.js +9 -3
- package/dist/src/ui/themes/theme-manager.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.test.js +7 -0
- package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
- package/dist/src/ui/themes/theme.d.ts +12 -0
- package/dist/src/ui/themes/theme.js +34 -4
- package/dist/src/ui/themes/theme.js.map +1 -1
- package/dist/src/ui/themes/theme.test.js +23 -0
- package/dist/src/ui/themes/theme.test.js.map +1 -1
- package/dist/src/ui/types.d.ts +23 -4
- package/dist/src/ui/types.js +4 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/CodeColorizer.js +2 -2
- package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
- package/dist/src/ui/utils/CodeColorizer.test.js +1 -1
- package/dist/src/ui/utils/CodeColorizer.test.js.map +1 -1
- package/dist/src/ui/utils/ConsolePatcher.js +1 -0
- package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +2 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.d.ts +2 -2
- package/dist/src/ui/utils/clipboardUtils.js +50 -4
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.test.js +12 -12
- package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.windows.test.d.ts +6 -0
- package/dist/src/ui/utils/clipboardUtils.windows.test.js +52 -0
- package/dist/src/ui/utils/clipboardUtils.windows.test.js.map +1 -0
- package/dist/src/ui/utils/commandUtils.js +13 -10
- package/dist/src/ui/utils/commandUtils.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.test.js +39 -2
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
- package/dist/src/ui/utils/directoryUtils.d.ts +8 -0
- package/dist/src/ui/utils/directoryUtils.js +95 -3
- package/dist/src/ui/utils/directoryUtils.js.map +1 -1
- package/dist/src/ui/utils/directoryUtils.test.js +193 -3
- package/dist/src/ui/utils/directoryUtils.test.js.map +1 -1
- package/dist/src/ui/utils/highlight.d.ts +3 -2
- package/dist/src/ui/utils/highlight.js +46 -36
- package/dist/src/ui/utils/highlight.js.map +1 -1
- package/dist/src/ui/utils/highlight.test.js +75 -0
- package/dist/src/ui/utils/highlight.test.js.map +1 -1
- package/dist/src/ui/utils/historyExportUtils.d.ts +21 -0
- package/dist/src/ui/utils/historyExportUtils.js +59 -0
- package/dist/src/ui/utils/historyExportUtils.js.map +1 -0
- package/dist/src/ui/utils/rewindFileOps.d.ts +47 -0
- package/dist/src/ui/utils/rewindFileOps.js +190 -0
- package/dist/src/ui/utils/rewindFileOps.js.map +1 -0
- package/dist/src/ui/utils/rewindFileOps.test.d.ts +6 -0
- package/dist/src/ui/utils/rewindFileOps.test.js +375 -0
- package/dist/src/ui/utils/rewindFileOps.test.js.map +1 -0
- package/dist/src/ui/utils/terminalCapabilityManager.d.ts +41 -0
- package/dist/src/ui/utils/terminalCapabilityManager.js +209 -0
- package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -0
- package/dist/src/ui/utils/terminalCapabilityManager.test.d.ts +6 -0
- package/dist/src/ui/utils/terminalCapabilityManager.test.js +221 -0
- package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -0
- package/dist/src/ui/utils/terminalSetup.d.ts +1 -1
- package/dist/src/ui/utils/terminalSetup.js +21 -6
- package/dist/src/ui/utils/terminalSetup.js.map +1 -1
- package/dist/src/ui/utils/terminalSetup.test.js +11 -2
- package/dist/src/ui/utils/terminalSetup.test.js.map +1 -1
- package/dist/src/ui/utils/textUtils.js +9 -1
- package/dist/src/ui/utils/textUtils.js.map +1 -1
- package/dist/src/ui/utils/textUtils.test.js +12 -1
- package/dist/src/ui/utils/textUtils.test.js.map +1 -1
- package/dist/src/ui/utils/ui-sizing.js +1 -1
- package/dist/src/ui/utils/ui-sizing.js.map +1 -1
- package/dist/src/ui/utils/ui-sizing.test.js +2 -2
- package/dist/src/ui/utils/ui-sizing.test.js.map +1 -1
- package/dist/src/utils/activityLogger.d.ts +47 -0
- package/dist/src/utils/activityLogger.js +297 -0
- package/dist/src/utils/activityLogger.js.map +1 -0
- package/dist/src/utils/cleanup.d.ts +5 -0
- package/dist/src/utils/cleanup.js +17 -0
- package/dist/src/utils/cleanup.js.map +1 -1
- package/dist/src/utils/cleanup.test.js +21 -31
- package/dist/src/utils/cleanup.test.js.map +1 -1
- package/dist/src/utils/errors.js +9 -10
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.js +95 -37
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/handleAutoUpdate.test.js +2 -2
- package/dist/src/utils/processUtils.d.ts +1 -1
- package/dist/src/utils/processUtils.js +1 -1
- package/dist/src/utils/processUtils.js.map +1 -1
- package/dist/src/utils/readStdin.js +7 -0
- package/dist/src/utils/readStdin.js.map +1 -1
- package/dist/src/utils/readStdin.test.js +4 -0
- package/dist/src/utils/readStdin.test.js.map +1 -1
- package/dist/src/utils/readStdin_safety.test.d.ts +6 -0
- package/dist/src/utils/readStdin_safety.test.js +68 -0
- package/dist/src/utils/readStdin_safety.test.js.map +1 -0
- package/dist/src/utils/relaunch.js +3 -1
- package/dist/src/utils/relaunch.js.map +1 -1
- package/dist/src/utils/relaunch.test.js +13 -7
- package/dist/src/utils/relaunch.test.js.map +1 -1
- package/dist/src/utils/resolvePath.js +3 -3
- package/dist/src/utils/resolvePath.js.map +1 -1
- package/dist/src/utils/resolvePath.test.js +3 -0
- package/dist/src/utils/resolvePath.test.js.map +1 -1
- package/dist/src/utils/sandbox.js +27 -17
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/sandbox.test.js +17 -5
- package/dist/src/utils/sandbox.test.js.map +1 -1
- package/dist/src/utils/sessionCleanup.integration.test.js +2 -2
- package/dist/src/utils/sessionCleanup.integration.test.js.map +1 -1
- package/dist/src/utils/sessionCleanup.js +16 -4
- package/dist/src/utils/sessionCleanup.js.map +1 -1
- package/dist/src/utils/sessionCleanup.test.js +18 -68
- package/dist/src/utils/sessionCleanup.test.js.map +1 -1
- package/dist/src/utils/sessionUtils.d.ts +20 -0
- package/dist/src/utils/sessionUtils.js +32 -4
- package/dist/src/utils/sessionUtils.js.map +1 -1
- package/dist/src/utils/sessionUtils.test.js +3 -3
- package/dist/src/utils/sessionUtils.test.js.map +1 -1
- package/dist/src/utils/sessions.js +9 -9
- package/dist/src/utils/sessions.js.map +1 -1
- package/dist/src/utils/sessions.test.js +38 -41
- package/dist/src/utils/sessions.test.js.map +1 -1
- package/dist/src/utils/settingsUtils.js +0 -5
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/skillSettings.d.ts +33 -0
- package/dist/src/utils/skillSettings.js +101 -0
- package/dist/src/utils/skillSettings.js.map +1 -0
- package/dist/src/utils/skillUtils.d.ts +29 -0
- package/dist/src/utils/skillUtils.js +144 -0
- package/dist/src/utils/skillUtils.js.map +1 -0
- package/dist/src/utils/skillUtils.test.d.ts +6 -0
- package/dist/src/utils/skillUtils.test.js +57 -0
- package/dist/src/utils/skillUtils.test.js.map +1 -0
- package/dist/src/utils/terminalTheme.d.ts +15 -0
- package/dist/src/utils/terminalTheme.js +50 -0
- package/dist/src/utils/terminalTheme.js.map +1 -0
- package/dist/src/utils/userStartupWarnings.d.ts +2 -1
- package/dist/src/utils/userStartupWarnings.js +17 -7
- package/dist/src/utils/userStartupWarnings.js.map +1 -1
- package/dist/src/utils/userStartupWarnings.test.js +37 -6
- package/dist/src/utils/userStartupWarnings.test.js.map +1 -1
- package/dist/src/utils/windowTitle.d.ts +13 -4
- package/dist/src/utils/windowTitle.js +65 -7
- package/dist/src/utils/windowTitle.js.map +1 -1
- package/dist/src/utils/windowTitle.test.js +183 -40
- package/dist/src/utils/windowTitle.test.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.d.ts +1 -1
- package/dist/src/validateNonInterActiveAuth.js +1 -2
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/src/zed-integration/fileSystemService.d.ts +3 -3
- package/dist/src/zed-integration/fileSystemService.js +5 -7
- package/dist/src/zed-integration/fileSystemService.js.map +1 -1
- package/dist/src/zed-integration/fileSystemService.test.js +11 -13
- package/dist/src/zed-integration/fileSystemService.test.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.d.ts +5 -5
- package/dist/src/zed-integration/zedIntegration.js +42 -21
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.test.js +29 -18
- package/dist/src/zed-integration/zedIntegration.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -4
- package/dist/src/commands/extensions/settings.js +0 -111
- package/dist/src/commands/extensions/settings.js.map +0 -1
- package/dist/src/ui/hooks/useBracketedPaste.d.ts +0 -12
- package/dist/src/ui/hooks/useBracketedPaste.js +0 -31
- package/dist/src/ui/hooks/useBracketedPaste.js.map +0 -1
- package/dist/src/ui/utils/bracketedPaste.d.ts +0 -7
- package/dist/src/ui/utils/bracketedPaste.js +0 -15
- package/dist/src/ui/utils/bracketedPaste.js.map +0 -1
- package/dist/src/ui/utils/kittyProtocolDetector.d.ts +0 -17
- package/dist/src/ui/utils/kittyProtocolDetector.js +0 -111
- package/dist/src/ui/utils/kittyProtocolDetector.js.map +0 -1
- package/dist/src/ui/utils/kittyProtocolDetector.test.js +0 -113
- package/dist/src/ui/utils/kittyProtocolDetector.test.js.map +0 -1
- package/dist/src/zed-integration/acp.d.ts +0 -41
- package/dist/src/zed-integration/acp.js +0 -72
- package/dist/src/zed-integration/acp.js.map +0 -1
- package/dist/src/zed-integration/acp.test.js +0 -214
- package/dist/src/zed-integration/acp.test.js.map +0 -1
- package/dist/src/zed-integration/connection.d.ts +0 -28
- package/dist/src/zed-integration/connection.js +0 -165
- package/dist/src/zed-integration/connection.js.map +0 -1
- package/dist/src/zed-integration/connection.test.js +0 -175
- package/dist/src/zed-integration/connection.test.js.map +0 -1
- package/dist/src/zed-integration/schema.d.ts +0 -11792
- package/dist/src/zed-integration/schema.js +0 -311
- package/dist/src/zed-integration/schema.js.map +0 -1
- /package/dist/src/{ui/utils/kittyProtocolDetector.test.d.ts → config/extension-manager-scope.test.d.ts} +0 -0
- /package/dist/src/{zed-integration/acp.test.d.ts → config/extension-manager-skills.test.d.ts} +0 -0
- /package/dist/src/{zed-integration/connection.test.d.ts → config/extensions/extensionUpdates.test.d.ts} +0 -0
|
@@ -105,6 +105,7 @@ vi.mock('./contexts/SessionContext.js');
|
|
|
105
105
|
vi.mock('./components/shared/text-buffer.js');
|
|
106
106
|
vi.mock('./hooks/useLogger.js');
|
|
107
107
|
vi.mock('./hooks/useInputHistoryStore.js');
|
|
108
|
+
vi.mock('./hooks/useHookDisplayState.js');
|
|
108
109
|
// Mock external utilities
|
|
109
110
|
vi.mock('../utils/events.js');
|
|
110
111
|
vi.mock('../utils/handleAutoUpdate.js');
|
|
@@ -131,6 +132,7 @@ import { useTextBuffer } from './components/shared/text-buffer.js';
|
|
|
131
132
|
import { useLogger } from './hooks/useLogger.js';
|
|
132
133
|
import { useLoadingIndicator } from './hooks/useLoadingIndicator.js';
|
|
133
134
|
import { useInputHistoryStore } from './hooks/useInputHistoryStore.js';
|
|
135
|
+
import { useHookDisplayState } from './hooks/useHookDisplayState.js';
|
|
134
136
|
import { useKeypress } from './hooks/useKeypress.js';
|
|
135
137
|
import { measureElement } from 'ink';
|
|
136
138
|
import { useTerminalSize } from './hooks/useTerminalSize.js';
|
|
@@ -169,18 +171,13 @@ describe('AppContainer State Management', () => {
|
|
|
169
171
|
const mockedUseLoadingIndicator = useLoadingIndicator;
|
|
170
172
|
const mockedUseKeypress = useKeypress;
|
|
171
173
|
const mockedUseInputHistoryStore = useInputHistoryStore;
|
|
174
|
+
const mockedUseHookDisplayState = useHookDisplayState;
|
|
172
175
|
beforeEach(() => {
|
|
173
176
|
vi.clearAllMocks();
|
|
177
|
+
mockIdeClient.getInstance.mockReturnValue(new Promise(() => { }));
|
|
174
178
|
// Initialize mock stdout for terminal title tests
|
|
175
179
|
mocks.mockStdout.write.mockClear();
|
|
176
|
-
// Mock computeWindowTitle function to centralize title logic testing
|
|
177
|
-
vi.mock('../utils/windowTitle.js', async () => ({
|
|
178
|
-
computeWindowTitle: vi.fn((folderName) =>
|
|
179
|
-
// Default behavior: return "Gemini - {folderName}" unless CLI_TITLE is set
|
|
180
|
-
process.env['CLI_TITLE'] || `Gemini - ${folderName}`),
|
|
181
|
-
}));
|
|
182
180
|
capturedUIState = null;
|
|
183
|
-
capturedUIActions = null;
|
|
184
181
|
// **Provide a default return value for EVERY mocked hook.**
|
|
185
182
|
mockedUseQuotaAndFallback.mockReturnValue({
|
|
186
183
|
proQuotaRequest: null,
|
|
@@ -290,6 +287,7 @@ describe('AppContainer State Management', () => {
|
|
|
290
287
|
elapsedTime: '0.0s',
|
|
291
288
|
currentLoadingPhrase: '',
|
|
292
289
|
});
|
|
290
|
+
mockedUseHookDisplayState.mockReturnValue([]);
|
|
293
291
|
// Mock Config
|
|
294
292
|
mockConfig = makeFakeConfig();
|
|
295
293
|
// Mock config's getTargetDir to return consistent workspace directory
|
|
@@ -328,6 +326,7 @@ describe('AppContainer State Management', () => {
|
|
|
328
326
|
});
|
|
329
327
|
afterEach(() => {
|
|
330
328
|
cleanup();
|
|
329
|
+
vi.restoreAllMocks();
|
|
331
330
|
});
|
|
332
331
|
describe('Basic Rendering', () => {
|
|
333
332
|
it('renders without crashing with minimal props', async () => {
|
|
@@ -843,7 +842,7 @@ describe('AppContainer State Management', () => {
|
|
|
843
842
|
const { stdout } = useStdout();
|
|
844
843
|
expect(stdout).toBe(mocks.mockStdout);
|
|
845
844
|
});
|
|
846
|
-
it('should
|
|
845
|
+
it('should update terminal title with Working… when showStatusInTitle is false', () => {
|
|
847
846
|
// Arrange: Set up mock settings with showStatusInTitle disabled
|
|
848
847
|
const mockSettingsWithShowStatusFalse = {
|
|
849
848
|
...mockSettings,
|
|
@@ -856,13 +855,55 @@ describe('AppContainer State Management', () => {
|
|
|
856
855
|
},
|
|
857
856
|
},
|
|
858
857
|
};
|
|
858
|
+
// Mock the streaming state as Active
|
|
859
|
+
mockedUseGeminiStream.mockReturnValue({
|
|
860
|
+
streamingState: 'responding',
|
|
861
|
+
submitQuery: vi.fn(),
|
|
862
|
+
initError: null,
|
|
863
|
+
pendingHistoryItems: [],
|
|
864
|
+
thought: { subject: 'Some thought' },
|
|
865
|
+
cancelOngoingRequest: vi.fn(),
|
|
866
|
+
});
|
|
859
867
|
// Act: Render the container
|
|
860
868
|
const { unmount } = renderAppContainer({
|
|
861
869
|
settings: mockSettingsWithShowStatusFalse,
|
|
862
870
|
});
|
|
863
|
-
// Assert: Check that
|
|
864
|
-
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]
|
|
865
|
-
expect(titleWrites).toHaveLength(
|
|
871
|
+
// Assert: Check that title was updated with "Working…"
|
|
872
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
873
|
+
expect(titleWrites).toHaveLength(1);
|
|
874
|
+
expect(titleWrites[0][0]).toBe(`\x1b]0;${'✦ Working… (workspace)'.padEnd(80, ' ')}\x07`);
|
|
875
|
+
unmount();
|
|
876
|
+
});
|
|
877
|
+
it('should use legacy terminal title when dynamicWindowTitle is false', () => {
|
|
878
|
+
// Arrange: Set up mock settings with dynamicWindowTitle disabled
|
|
879
|
+
const mockSettingsWithDynamicTitleFalse = {
|
|
880
|
+
...mockSettings,
|
|
881
|
+
merged: {
|
|
882
|
+
...mockSettings.merged,
|
|
883
|
+
ui: {
|
|
884
|
+
...mockSettings.merged.ui,
|
|
885
|
+
dynamicWindowTitle: false,
|
|
886
|
+
hideWindowTitle: false,
|
|
887
|
+
},
|
|
888
|
+
},
|
|
889
|
+
};
|
|
890
|
+
// Mock the streaming state
|
|
891
|
+
mockedUseGeminiStream.mockReturnValue({
|
|
892
|
+
streamingState: 'responding',
|
|
893
|
+
submitQuery: vi.fn(),
|
|
894
|
+
initError: null,
|
|
895
|
+
pendingHistoryItems: [],
|
|
896
|
+
thought: { subject: 'Some thought' },
|
|
897
|
+
cancelOngoingRequest: vi.fn(),
|
|
898
|
+
});
|
|
899
|
+
// Act: Render the container
|
|
900
|
+
const { unmount } = renderAppContainer({
|
|
901
|
+
settings: mockSettingsWithDynamicTitleFalse,
|
|
902
|
+
});
|
|
903
|
+
// Assert: Check that legacy title was used
|
|
904
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
905
|
+
expect(titleWrites).toHaveLength(1);
|
|
906
|
+
expect(titleWrites[0][0]).toBe(`\x1b]0;${'Cell CLI (workspace)'.padEnd(80, ' ')}\x07`);
|
|
866
907
|
unmount();
|
|
867
908
|
});
|
|
868
909
|
it('should not update terminal title when hideWindowTitle is true', () => {
|
|
@@ -883,7 +924,7 @@ describe('AppContainer State Management', () => {
|
|
|
883
924
|
settings: mockSettingsWithHideTitleTrue,
|
|
884
925
|
});
|
|
885
926
|
// Assert: Check that no title-related writes occurred
|
|
886
|
-
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]
|
|
927
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
887
928
|
expect(titleWrites).toHaveLength(0);
|
|
888
929
|
unmount();
|
|
889
930
|
});
|
|
@@ -914,10 +955,10 @@ describe('AppContainer State Management', () => {
|
|
|
914
955
|
const { unmount } = renderAppContainer({
|
|
915
956
|
settings: mockSettingsWithTitleEnabled,
|
|
916
957
|
});
|
|
917
|
-
// Assert: Check that title was updated with thought subject
|
|
918
|
-
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]
|
|
958
|
+
// Assert: Check that title was updated with thought subject and suffix
|
|
959
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
919
960
|
expect(titleWrites).toHaveLength(1);
|
|
920
|
-
expect(titleWrites[0][0]).toBe(`\x1b]
|
|
961
|
+
expect(titleWrites[0][0]).toBe(`\x1b]0;${`✦ ${thoughtSubject} (workspace)`.padEnd(80, ' ')}\x07`);
|
|
921
962
|
unmount();
|
|
922
963
|
});
|
|
923
964
|
it('should update terminal title with default text when in Idle state and no thought subject', () => {
|
|
@@ -947,12 +988,12 @@ describe('AppContainer State Management', () => {
|
|
|
947
988
|
settings: mockSettingsWithTitleEnabled,
|
|
948
989
|
});
|
|
949
990
|
// Assert: Check that title was updated with default Idle text
|
|
950
|
-
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]
|
|
991
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
951
992
|
expect(titleWrites).toHaveLength(1);
|
|
952
|
-
expect(titleWrites[0][0]).toBe(`\x1b]
|
|
993
|
+
expect(titleWrites[0][0]).toBe(`\x1b]0;${'◇ Ready (workspace)'.padEnd(80, ' ')}\x07`);
|
|
953
994
|
unmount();
|
|
954
995
|
});
|
|
955
|
-
it('should update terminal title when in WaitingForConfirmation state with thought subject', () => {
|
|
996
|
+
it('should update terminal title when in WaitingForConfirmation state with thought subject', async () => {
|
|
956
997
|
// Arrange: Set up mock settings with showStatusInTitle enabled
|
|
957
998
|
const mockSettingsWithTitleEnabled = {
|
|
958
999
|
...mockSettings,
|
|
@@ -968,7 +1009,7 @@ describe('AppContainer State Management', () => {
|
|
|
968
1009
|
// Mock the streaming state and thought
|
|
969
1010
|
const thoughtSubject = 'Confirm tool execution';
|
|
970
1011
|
mockedUseGeminiStream.mockReturnValue({
|
|
971
|
-
streamingState: '
|
|
1012
|
+
streamingState: 'waiting_for_confirmation',
|
|
972
1013
|
submitQuery: vi.fn(),
|
|
973
1014
|
initError: null,
|
|
974
1015
|
pendingHistoryItems: [],
|
|
@@ -976,15 +1017,146 @@ describe('AppContainer State Management', () => {
|
|
|
976
1017
|
cancelOngoingRequest: vi.fn(),
|
|
977
1018
|
});
|
|
978
1019
|
// Act: Render the container
|
|
979
|
-
|
|
980
|
-
|
|
1020
|
+
let unmount;
|
|
1021
|
+
await act(async () => {
|
|
1022
|
+
const result = renderAppContainer({
|
|
1023
|
+
settings: mockSettingsWithTitleEnabled,
|
|
1024
|
+
});
|
|
1025
|
+
unmount = result.unmount;
|
|
981
1026
|
});
|
|
982
1027
|
// Assert: Check that title was updated with confirmation text
|
|
983
|
-
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]
|
|
1028
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
984
1029
|
expect(titleWrites).toHaveLength(1);
|
|
985
|
-
expect(titleWrites[0][0]).toBe(`\x1b]
|
|
1030
|
+
expect(titleWrites[0][0]).toBe(`\x1b]0;${'✋ Action Required (workspace)'.padEnd(80, ' ')}\x07`);
|
|
986
1031
|
unmount();
|
|
987
1032
|
});
|
|
1033
|
+
describe('Shell Focus Action Required', () => {
|
|
1034
|
+
beforeEach(() => {
|
|
1035
|
+
vi.useFakeTimers();
|
|
1036
|
+
});
|
|
1037
|
+
afterEach(() => {
|
|
1038
|
+
vi.useRealTimers();
|
|
1039
|
+
});
|
|
1040
|
+
it('should show Action Required in title after a delay when shell is awaiting focus', async () => {
|
|
1041
|
+
const startTime = 1000000;
|
|
1042
|
+
vi.setSystemTime(startTime);
|
|
1043
|
+
// Arrange: Set up mock settings with showStatusInTitle enabled
|
|
1044
|
+
const mockSettingsWithTitleEnabled = {
|
|
1045
|
+
...mockSettings,
|
|
1046
|
+
merged: {
|
|
1047
|
+
...mockSettings.merged,
|
|
1048
|
+
ui: {
|
|
1049
|
+
...mockSettings.merged.ui,
|
|
1050
|
+
showStatusInTitle: true,
|
|
1051
|
+
hideWindowTitle: false,
|
|
1052
|
+
},
|
|
1053
|
+
},
|
|
1054
|
+
};
|
|
1055
|
+
// Mock an active shell pty but not focused
|
|
1056
|
+
mockedUseGeminiStream.mockReturnValue({
|
|
1057
|
+
streamingState: 'responding',
|
|
1058
|
+
submitQuery: vi.fn(),
|
|
1059
|
+
initError: null,
|
|
1060
|
+
pendingHistoryItems: [],
|
|
1061
|
+
thought: { subject: 'Executing shell command' },
|
|
1062
|
+
cancelOngoingRequest: vi.fn(),
|
|
1063
|
+
activePtyId: 'pty-1',
|
|
1064
|
+
lastOutputTime: 0,
|
|
1065
|
+
});
|
|
1066
|
+
vi.spyOn(mockConfig, 'isInteractive').mockReturnValue(true);
|
|
1067
|
+
vi.spyOn(mockConfig, 'isInteractiveShellEnabled').mockReturnValue(true);
|
|
1068
|
+
// Act: Render the container (embeddedShellFocused is false by default in state)
|
|
1069
|
+
const { unmount } = renderAppContainer({
|
|
1070
|
+
settings: mockSettingsWithTitleEnabled,
|
|
1071
|
+
});
|
|
1072
|
+
// Initially it should show the working status
|
|
1073
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
1074
|
+
expect(titleWrites[titleWrites.length - 1][0]).toContain('✦ Executing shell command');
|
|
1075
|
+
// Fast-forward time by 40 seconds
|
|
1076
|
+
await act(async () => {
|
|
1077
|
+
await vi.advanceTimersByTimeAsync(40000);
|
|
1078
|
+
});
|
|
1079
|
+
// Now it should show Action Required
|
|
1080
|
+
const titleWritesDelayed = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
1081
|
+
const lastTitle = titleWritesDelayed[titleWritesDelayed.length - 1][0];
|
|
1082
|
+
expect(lastTitle).toContain('✋ Action Required');
|
|
1083
|
+
unmount();
|
|
1084
|
+
});
|
|
1085
|
+
it('should NOT show Action Required in title if shell is streaming output', async () => {
|
|
1086
|
+
const startTime = 1000000;
|
|
1087
|
+
vi.setSystemTime(startTime);
|
|
1088
|
+
// Arrange: Set up mock settings with showStatusInTitle enabled
|
|
1089
|
+
const mockSettingsWithTitleEnabled = {
|
|
1090
|
+
...mockSettings,
|
|
1091
|
+
merged: {
|
|
1092
|
+
...mockSettings.merged,
|
|
1093
|
+
ui: {
|
|
1094
|
+
...mockSettings.merged.ui,
|
|
1095
|
+
showStatusInTitle: true,
|
|
1096
|
+
hideWindowTitle: false,
|
|
1097
|
+
},
|
|
1098
|
+
},
|
|
1099
|
+
};
|
|
1100
|
+
// Mock an active shell pty but not focused
|
|
1101
|
+
let lastOutputTime = 1000;
|
|
1102
|
+
mockedUseGeminiStream.mockImplementation(() => ({
|
|
1103
|
+
streamingState: 'responding',
|
|
1104
|
+
submitQuery: vi.fn(),
|
|
1105
|
+
initError: null,
|
|
1106
|
+
pendingHistoryItems: [],
|
|
1107
|
+
thought: { subject: 'Executing shell command' },
|
|
1108
|
+
cancelOngoingRequest: vi.fn(),
|
|
1109
|
+
activePtyId: 'pty-1',
|
|
1110
|
+
lastOutputTime,
|
|
1111
|
+
}));
|
|
1112
|
+
vi.spyOn(mockConfig, 'isInteractive').mockReturnValue(true);
|
|
1113
|
+
vi.spyOn(mockConfig, 'isInteractiveShellEnabled').mockReturnValue(true);
|
|
1114
|
+
// Act: Render the container
|
|
1115
|
+
const { unmount, rerender } = renderAppContainer({
|
|
1116
|
+
settings: mockSettingsWithTitleEnabled,
|
|
1117
|
+
});
|
|
1118
|
+
// Fast-forward time by 20 seconds
|
|
1119
|
+
await act(async () => {
|
|
1120
|
+
await vi.advanceTimersByTimeAsync(20000);
|
|
1121
|
+
});
|
|
1122
|
+
// Update lastOutputTime to simulate new output
|
|
1123
|
+
lastOutputTime = 21000;
|
|
1124
|
+
mockedUseGeminiStream.mockImplementation(() => ({
|
|
1125
|
+
streamingState: 'responding',
|
|
1126
|
+
submitQuery: vi.fn(),
|
|
1127
|
+
initError: null,
|
|
1128
|
+
pendingHistoryItems: [],
|
|
1129
|
+
thought: { subject: 'Executing shell command' },
|
|
1130
|
+
cancelOngoingRequest: vi.fn(),
|
|
1131
|
+
activePtyId: 'pty-1',
|
|
1132
|
+
lastOutputTime,
|
|
1133
|
+
}));
|
|
1134
|
+
// Rerender to propagate the new lastOutputTime
|
|
1135
|
+
await act(async () => {
|
|
1136
|
+
rerender(getAppContainer({ settings: mockSettingsWithTitleEnabled }));
|
|
1137
|
+
});
|
|
1138
|
+
// Fast-forward time by another 20 seconds
|
|
1139
|
+
// Total time elapsed: 40s.
|
|
1140
|
+
// Time since last output: 20s.
|
|
1141
|
+
// It should NOT show Action Required yet.
|
|
1142
|
+
await act(async () => {
|
|
1143
|
+
await vi.advanceTimersByTimeAsync(20000);
|
|
1144
|
+
});
|
|
1145
|
+
const titleWritesAfterOutput = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
1146
|
+
const lastTitle = titleWritesAfterOutput[titleWritesAfterOutput.length - 1][0];
|
|
1147
|
+
expect(lastTitle).not.toContain('✋ Action Required');
|
|
1148
|
+
expect(lastTitle).toContain('✦ Executing shell command');
|
|
1149
|
+
// Fast-forward another 40 seconds (Total 60s since last output)
|
|
1150
|
+
await act(async () => {
|
|
1151
|
+
await vi.advanceTimersByTimeAsync(40000);
|
|
1152
|
+
});
|
|
1153
|
+
// Now it SHOULD show Action Required
|
|
1154
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
1155
|
+
const lastTitleFinal = titleWrites[titleWrites.length - 1][0];
|
|
1156
|
+
expect(lastTitleFinal).toContain('✋ Action Required');
|
|
1157
|
+
unmount();
|
|
1158
|
+
});
|
|
1159
|
+
});
|
|
988
1160
|
it('should pad title to exactly 80 characters', () => {
|
|
989
1161
|
// Arrange: Set up mock settings with showStatusInTitle enabled
|
|
990
1162
|
const mockSettingsWithTitleEnabled = {
|
|
@@ -1013,14 +1185,12 @@ describe('AppContainer State Management', () => {
|
|
|
1013
1185
|
settings: mockSettingsWithTitleEnabled,
|
|
1014
1186
|
});
|
|
1015
1187
|
// Assert: Check that title is padded to exactly 80 characters
|
|
1016
|
-
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]
|
|
1188
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
1017
1189
|
expect(titleWrites).toHaveLength(1);
|
|
1018
1190
|
const calledWith = titleWrites[0][0];
|
|
1019
|
-
const expectedTitle = shortTitle
|
|
1020
|
-
|
|
1021
|
-
expect(calledWith).
|
|
1022
|
-
expect(calledWith).toContain('\x07');
|
|
1023
|
-
expect(calledWith).toBe('\x1b]2;' + expectedTitle + '\x07');
|
|
1191
|
+
const expectedTitle = `✦ ${shortTitle} (workspace)`.padEnd(80, ' ');
|
|
1192
|
+
const expectedEscapeSequence = `\x1b]0;${expectedTitle}\x07`;
|
|
1193
|
+
expect(calledWith).toBe(expectedEscapeSequence);
|
|
1024
1194
|
unmount();
|
|
1025
1195
|
});
|
|
1026
1196
|
it('should use correct ANSI escape code format', () => {
|
|
@@ -1051,30 +1221,30 @@ describe('AppContainer State Management', () => {
|
|
|
1051
1221
|
settings: mockSettingsWithTitleEnabled,
|
|
1052
1222
|
});
|
|
1053
1223
|
// Assert: Check that the correct ANSI escape sequence is used
|
|
1054
|
-
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]
|
|
1224
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
1055
1225
|
expect(titleWrites).toHaveLength(1);
|
|
1056
|
-
const expectedEscapeSequence = `\x1b]
|
|
1226
|
+
const expectedEscapeSequence = `\x1b]0;${`✦ ${title} (workspace)`.padEnd(80, ' ')}\x07`;
|
|
1057
1227
|
expect(titleWrites[0][0]).toBe(expectedEscapeSequence);
|
|
1058
1228
|
unmount();
|
|
1059
1229
|
});
|
|
1060
1230
|
it('should use CLI_TITLE environment variable when set', () => {
|
|
1061
|
-
// Arrange: Set up mock settings with showStatusInTitle
|
|
1062
|
-
const
|
|
1231
|
+
// Arrange: Set up mock settings with showStatusInTitle disabled (so it shows suffix)
|
|
1232
|
+
const mockSettingsWithTitleDisabled = {
|
|
1063
1233
|
...mockSettings,
|
|
1064
1234
|
merged: {
|
|
1065
1235
|
...mockSettings.merged,
|
|
1066
1236
|
ui: {
|
|
1067
1237
|
...mockSettings.merged.ui,
|
|
1068
|
-
showStatusInTitle:
|
|
1238
|
+
showStatusInTitle: false,
|
|
1069
1239
|
hideWindowTitle: false,
|
|
1070
1240
|
},
|
|
1071
1241
|
},
|
|
1072
1242
|
};
|
|
1073
1243
|
// Mock CLI_TITLE environment variable
|
|
1074
1244
|
vi.stubEnv('CLI_TITLE', 'Custom Gemini Title');
|
|
1075
|
-
// Mock the streaming state
|
|
1245
|
+
// Mock the streaming state
|
|
1076
1246
|
mockedUseGeminiStream.mockReturnValue({
|
|
1077
|
-
streamingState: '
|
|
1247
|
+
streamingState: 'responding',
|
|
1078
1248
|
submitQuery: vi.fn(),
|
|
1079
1249
|
initError: null,
|
|
1080
1250
|
pendingHistoryItems: [],
|
|
@@ -1083,12 +1253,12 @@ describe('AppContainer State Management', () => {
|
|
|
1083
1253
|
});
|
|
1084
1254
|
// Act: Render the container
|
|
1085
1255
|
const { unmount } = renderAppContainer({
|
|
1086
|
-
settings:
|
|
1256
|
+
settings: mockSettingsWithTitleDisabled,
|
|
1087
1257
|
});
|
|
1088
1258
|
// Assert: Check that title was updated with CLI_TITLE value
|
|
1089
|
-
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]
|
|
1259
|
+
const titleWrites = mocks.mockStdout.write.mock.calls.filter((call) => call[0].includes('\x1b]0;'));
|
|
1090
1260
|
expect(titleWrites).toHaveLength(1);
|
|
1091
|
-
expect(titleWrites[0][0]).toBe(`\x1b]
|
|
1261
|
+
expect(titleWrites[0][0]).toBe(`\x1b]0;${'✦ Working… (Custom Gemini Title)'.padEnd(80, ' ')}\x07`);
|
|
1092
1262
|
unmount();
|
|
1093
1263
|
});
|
|
1094
1264
|
});
|
|
@@ -1098,6 +1268,7 @@ describe('AppContainer State Management', () => {
|
|
|
1098
1268
|
});
|
|
1099
1269
|
afterEach(() => {
|
|
1100
1270
|
vi.useRealTimers();
|
|
1271
|
+
vi.restoreAllMocks();
|
|
1101
1272
|
});
|
|
1102
1273
|
it('should set and clear the queue error message after a timeout', async () => {
|
|
1103
1274
|
const { rerender, unmount } = renderAppContainer();
|
|
@@ -1241,6 +1412,7 @@ describe('AppContainer State Management', () => {
|
|
|
1241
1412
|
});
|
|
1242
1413
|
afterEach(() => {
|
|
1243
1414
|
vi.useRealTimers();
|
|
1415
|
+
vi.restoreAllMocks();
|
|
1244
1416
|
});
|
|
1245
1417
|
describe('CTRL+C', () => {
|
|
1246
1418
|
it('should cancel ongoing request on first press', async () => {
|
|
@@ -1341,6 +1513,7 @@ describe('AppContainer State Management', () => {
|
|
|
1341
1513
|
});
|
|
1342
1514
|
afterEach(() => {
|
|
1343
1515
|
vi.useRealTimers();
|
|
1516
|
+
vi.restoreAllMocks();
|
|
1344
1517
|
});
|
|
1345
1518
|
describe.each([
|
|
1346
1519
|
{
|
|
@@ -1551,7 +1724,21 @@ describe('AppContainer State Management', () => {
|
|
|
1551
1724
|
handler({ model: 'new-model' });
|
|
1552
1725
|
});
|
|
1553
1726
|
// Assert: Verify model is updated
|
|
1554
|
-
|
|
1727
|
+
await waitFor(() => {
|
|
1728
|
+
expect(capturedUIState.currentModel).toBe('new-model');
|
|
1729
|
+
});
|
|
1730
|
+
unmount();
|
|
1731
|
+
});
|
|
1732
|
+
it('provides activeHooks from useHookDisplayState', async () => {
|
|
1733
|
+
const mockHooks = [{ name: 'hook1', eventName: 'event1' }];
|
|
1734
|
+
mockedUseHookDisplayState.mockReturnValue(mockHooks);
|
|
1735
|
+
let unmount;
|
|
1736
|
+
await act(async () => {
|
|
1737
|
+
const result = renderAppContainer();
|
|
1738
|
+
unmount = result.unmount;
|
|
1739
|
+
});
|
|
1740
|
+
await waitFor(() => expect(capturedUIState).toBeTruthy());
|
|
1741
|
+
expect(capturedUIState.activeHooks).toEqual(mockHooks);
|
|
1555
1742
|
unmount();
|
|
1556
1743
|
});
|
|
1557
1744
|
});
|
|
@@ -1644,7 +1831,9 @@ describe('AppContainer State Management', () => {
|
|
|
1644
1831
|
await act(async () => {
|
|
1645
1832
|
onCancelSubmit(true);
|
|
1646
1833
|
});
|
|
1647
|
-
|
|
1834
|
+
await waitFor(() => {
|
|
1835
|
+
expect(mockSetText).toHaveBeenCalledWith('previous message');
|
|
1836
|
+
});
|
|
1648
1837
|
unmount();
|
|
1649
1838
|
});
|
|
1650
1839
|
it('input history is independent from conversation history (survives /clear)', async () => {
|