@machina.ai/cell-cli 1.18.4-rc1 → 1.19.4-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/package.json +6 -6
- package/dist/src/commands/extensions.test.d.ts +6 -0
- package/dist/src/commands/extensions.test.js +67 -0
- package/dist/src/commands/extensions.test.js.map +1 -0
- package/dist/src/commands/utils.test.d.ts +6 -0
- package/dist/src/commands/utils.test.js +35 -0
- package/dist/src/commands/utils.test.js.map +1 -0
- package/dist/src/config/auth.js +4 -0
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/auth.test.js +1 -2
- package/dist/src/config/auth.test.js.map +1 -1
- package/dist/src/config/config.integration.test.js +81 -198
- package/dist/src/config/config.integration.test.js.map +1 -1
- package/dist/src/config/config.js +3 -9
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +200 -316
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/extension.test.js +109 -133
- package/dist/src/config/extension.test.js.map +1 -1
- package/dist/src/config/extensions/consent.test.d.ts +6 -0
- package/dist/src/config/extensions/consent.test.js +152 -0
- package/dist/src/config/extensions/consent.test.js.map +1 -0
- package/dist/src/config/extensions/extensionEnablement.test.js +82 -15
- package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -1
- package/dist/src/config/extensions/extensionSettings.test.js +105 -1
- package/dist/src/config/extensions/extensionSettings.test.js.map +1 -1
- package/dist/src/config/extensions/github.d.ts +1 -0
- package/dist/src/config/extensions/github.js +21 -5
- package/dist/src/config/extensions/github.js.map +1 -1
- package/dist/src/config/extensions/github.test.js +201 -318
- package/dist/src/config/extensions/github.test.js.map +1 -1
- package/dist/src/config/extensions/storage.test.d.ts +6 -0
- package/dist/src/config/extensions/storage.test.js +64 -0
- package/dist/src/config/extensions/storage.test.js.map +1 -0
- package/dist/src/config/extensions/update.test.js +154 -263
- package/dist/src/config/extensions/update.test.js.map +1 -1
- package/dist/src/config/extensions/variables.test.js +87 -1
- package/dist/src/config/extensions/variables.test.js.map +1 -1
- package/dist/src/config/sandboxConfig.d.ts +1 -1
- package/dist/src/config/sandboxConfig.js.map +1 -1
- package/dist/src/config/sandboxConfig.test.d.ts +6 -0
- package/dist/src/config/sandboxConfig.test.js +178 -0
- package/dist/src/config/sandboxConfig.test.js.map +1 -0
- package/dist/src/config/settingPaths.test.d.ts +6 -0
- package/dist/src/config/settingPaths.test.js +22 -0
- package/dist/src/config/settingPaths.test.js.map +1 -0
- package/dist/src/config/settings.js +12 -1
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settings.test.js +228 -227
- package/dist/src/config/settings.test.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +13 -4
- package/dist/src/config/settingsSchema.js +13 -4
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +10 -5
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/core/auth.test.d.ts +6 -0
- package/dist/src/core/auth.test.js +43 -0
- package/dist/src/core/auth.test.js.map +1 -0
- package/dist/src/core/initializer.test.d.ts +6 -0
- package/dist/src/core/initializer.test.js +101 -0
- package/dist/src/core/initializer.test.js.map +1 -0
- package/dist/src/core/theme.test.d.ts +6 -0
- package/dist/src/core/theme.test.js +46 -0
- package/dist/src/core/theme.test.js.map +1 -0
- package/dist/src/gemini.d.ts +1 -0
- package/dist/src/gemini.js +7 -2
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +625 -1
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/gemini_cleanup.test.d.ts +6 -0
- package/dist/src/gemini_cleanup.test.js +201 -0
- package/dist/src/gemini_cleanup.test.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/nonInteractiveCli.test.js +336 -0
- package/dist/src/nonInteractiveCli.test.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +3 -1
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +1 -22
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
- package/dist/src/test-utils/mockCommandContext.js +1 -1
- package/dist/src/test-utils/render.js +4 -0
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/App.test.js +28 -14
- package/dist/src/ui/App.test.js.map +1 -1
- package/dist/src/ui/AppContainer.js +30 -6
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/IdeIntegrationNudge.test.d.ts +6 -0
- package/dist/src/ui/IdeIntegrationNudge.test.js +147 -0
- package/dist/src/ui/IdeIntegrationNudge.test.js.map +1 -0
- package/dist/src/ui/auth/ApiAuthDialog.test.js +12 -17
- package/dist/src/ui/auth/ApiAuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +48 -17
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/auth/AuthInProgress.test.d.ts +6 -0
- package/dist/src/ui/auth/AuthInProgress.test.js +71 -0
- package/dist/src/ui/auth/AuthInProgress.test.js.map +1 -0
- package/dist/src/ui/auth/useAuth.d.ts +2 -0
- package/dist/src/ui/auth/useAuth.js +6 -1
- package/dist/src/ui/auth/useAuth.js.map +1 -1
- package/dist/src/ui/auth/useAuth.test.d.ts +6 -0
- package/dist/src/ui/auth/useAuth.test.js +178 -0
- package/dist/src/ui/auth/useAuth.test.js.map +1 -0
- package/dist/src/ui/commands/extensionsCommand.js +28 -6
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.test.js +32 -0
- package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/resumeCommand.d.ts +7 -0
- package/dist/src/ui/commands/resumeCommand.js +16 -0
- package/dist/src/ui/commands/resumeCommand.js.map +1 -0
- package/dist/src/ui/commands/statsCommand.js +27 -16
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +1 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/AboutBox.test.d.ts +6 -0
- package/dist/src/ui/components/AboutBox.test.js +53 -0
- package/dist/src/ui/components/AboutBox.test.js.map +1 -0
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +62 -11
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +1 -1
- package/dist/src/ui/components/AnsiOutput.test.js +18 -23
- package/dist/src/ui/components/AnsiOutput.test.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/AutoAcceptIndicator.test.d.ts +6 -0
- package/dist/src/ui/components/AutoAcceptIndicator.test.js +31 -0
- package/dist/src/ui/components/AutoAcceptIndicator.test.js.map +1 -0
- package/dist/src/ui/components/Banner.test.d.ts +6 -0
- package/dist/src/ui/components/Banner.test.js +24 -0
- package/dist/src/ui/components/Banner.test.js.map +1 -0
- package/dist/src/ui/components/ConfigInitDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/ConfigInitDisplay.test.js +103 -0
- package/dist/src/ui/components/ConfigInitDisplay.test.js.map +1 -0
- package/dist/src/ui/components/ConsoleSummaryDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/ConsoleSummaryDisplay.test.js +26 -0
- package/dist/src/ui/components/ConsoleSummaryDisplay.test.js.map +1 -0
- package/dist/src/ui/components/ContextUsageDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/ContextUsageDisplay.test.js +39 -0
- package/dist/src/ui/components/ContextUsageDisplay.test.js.map +1 -0
- package/dist/src/ui/components/CopyModeWarning.test.d.ts +6 -0
- package/dist/src/ui/components/CopyModeWarning.test.js +33 -0
- package/dist/src/ui/components/CopyModeWarning.test.js.map +1 -0
- package/dist/src/ui/components/DebugProfiler.js +1 -1
- package/dist/src/ui/components/DebugProfiler.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.test.js +46 -1
- package/dist/src/ui/components/DebugProfiler.test.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/DetailedMessagesDisplay.test.js +49 -0
- package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -0
- package/dist/src/ui/components/DialogManager.js +4 -0
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/DialogManager.test.d.ts +6 -0
- package/dist/src/ui/components/DialogManager.test.js +167 -0
- package/dist/src/ui/components/DialogManager.test.js.map +1 -0
- package/dist/src/ui/components/EditorSettingsDialog.test.d.ts +6 -0
- package/dist/src/ui/components/EditorSettingsDialog.test.js +111 -0
- package/dist/src/ui/components/EditorSettingsDialog.test.js.map +1 -0
- package/dist/src/ui/components/ExitWarning.test.d.ts +6 -0
- package/dist/src/ui/components/ExitWarning.test.js +54 -0
- package/dist/src/ui/components/ExitWarning.test.js.map +1 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.test.d.ts +6 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.test.js +58 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +1 -0
- package/dist/src/ui/components/InputPrompt.js +1 -1
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.js +6 -0
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/dist/src/ui/components/MainContent.test.d.ts +6 -0
- package/dist/src/ui/components/MainContent.test.js +73 -0
- package/dist/src/ui/components/MainContent.test.js.map +1 -0
- package/dist/src/ui/components/MemoryUsageDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/MemoryUsageDisplay.test.js +49 -0
- package/dist/src/ui/components/MemoryUsageDisplay.test.js.map +1 -0
- package/dist/src/ui/components/ModelDialog.test.js +1 -1
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
- package/dist/src/ui/components/Notifications.js +5 -3
- package/dist/src/ui/components/Notifications.js.map +1 -1
- package/dist/src/ui/components/Notifications.test.d.ts +6 -0
- package/dist/src/ui/components/Notifications.test.js +153 -0
- package/dist/src/ui/components/Notifications.test.js.map +1 -0
- package/dist/src/ui/components/QuittingDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/QuittingDisplay.test.js +49 -0
- package/dist/src/ui/components/QuittingDisplay.test.js.map +1 -0
- package/dist/src/ui/components/RawMarkdownIndicator.test.d.ts +6 -0
- package/dist/src/ui/components/RawMarkdownIndicator.test.js +34 -0
- package/dist/src/ui/components/RawMarkdownIndicator.test.js.map +1 -0
- package/dist/src/ui/components/SessionBrowser.d.ts +98 -0
- package/dist/src/ui/components/SessionBrowser.js +457 -0
- package/dist/src/ui/components/SessionBrowser.js.map +1 -0
- package/dist/src/ui/components/SessionBrowser.test.d.ts +6 -0
- package/dist/src/ui/components/SessionBrowser.test.js +250 -0
- package/dist/src/ui/components/SessionBrowser.test.js.map +1 -0
- package/dist/src/ui/components/ShellInputPrompt.test.d.ts +6 -0
- package/dist/src/ui/components/ShellInputPrompt.test.js +82 -0
- package/dist/src/ui/components/ShellInputPrompt.test.js.map +1 -0
- package/dist/src/ui/components/ShellModeIndicator.test.d.ts +6 -0
- package/dist/src/ui/components/ShellModeIndicator.test.js +17 -0
- package/dist/src/ui/components/ShellModeIndicator.test.js.map +1 -0
- package/dist/src/ui/components/ShowMoreLines.test.d.ts +6 -0
- package/dist/src/ui/components/ShowMoreLines.test.js +40 -0
- package/dist/src/ui/components/ShowMoreLines.test.js.map +1 -0
- package/dist/src/ui/components/SuggestionsDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/SuggestionsDisplay.test.js +56 -0
- package/dist/src/ui/components/SuggestionsDisplay.test.js.map +1 -0
- package/dist/src/ui/components/ThemeDialog.js +6 -2
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.test.js +20 -6
- package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
- package/dist/src/ui/components/ThemedGradient.test.d.ts +6 -0
- package/dist/src/ui/components/ThemedGradient.test.js +30 -0
- package/dist/src/ui/components/ThemedGradient.test.js.map +1 -0
- package/dist/src/ui/components/Tips.test.d.ts +6 -0
- package/dist/src/ui/components/Tips.test.js +23 -0
- package/dist/src/ui/components/Tips.test.js.map +1 -0
- package/dist/src/ui/components/UpdateNotification.test.d.ts +6 -0
- package/dist/src/ui/components/UpdateNotification.test.js +16 -0
- package/dist/src/ui/components/UpdateNotification.test.js.map +1 -0
- package/dist/src/ui/components/messages/ErrorMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ErrorMessage.test.js +23 -0
- package/dist/src/ui/components/messages/ErrorMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/InfoMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/InfoMessage.test.js +28 -0
- package/dist/src/ui/components/messages/InfoMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +5 -6
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +13 -21
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.js +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
- package/dist/src/ui/components/messages/ToolResultDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolResultDisplay.test.js +96 -0
- package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -0
- package/dist/src/ui/components/messages/UserMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/UserMessage.test.js +32 -0
- package/dist/src/ui/components/messages/UserMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/WarningMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/WarningMessage.test.js +23 -0
- package/dist/src/ui/components/messages/WarningMessage.test.js.map +1 -0
- package/dist/src/ui/components/shared/text-buffer.js +20 -4
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.test.js +20 -0
- package/dist/src/ui/components/shared/text-buffer.test.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +5 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +1 -0
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -0
- package/dist/src/ui/hooks/slashCommandProcessor.js +3 -0
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.test.js +1 -0
- package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/useBracketedPaste.js +3 -5
- package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.d.ts +18 -1
- package/dist/src/ui/hooks/useSessionBrowser.js +63 -0
- package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.test.js +154 -526
- package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +5 -5
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +6 -2
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.d.ts +6 -0
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js +121 -0
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js.map +1 -0
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.d.ts +6 -0
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js +34 -0
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js.map +1 -0
- package/dist/src/ui/privacy/GeminiPrivacyNotice.test.d.ts +6 -0
- package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js +34 -0
- package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js.map +1 -0
- package/dist/src/ui/privacy/PrivacyNotice.test.d.ts +6 -0
- package/dist/src/ui/privacy/PrivacyNotice.test.js +62 -0
- package/dist/src/ui/privacy/PrivacyNotice.test.js.map +1 -0
- package/dist/src/ui/state/extensions.test.js +208 -51
- package/dist/src/ui/state/extensions.test.js.map +1 -1
- package/dist/src/ui/themes/holiday.d.ts +7 -0
- package/dist/src/ui/themes/holiday.js +162 -0
- package/dist/src/ui/themes/holiday.js.map +1 -0
- package/dist/src/ui/themes/theme-manager.js +2 -0
- package/dist/src/ui/themes/theme-manager.js.map +1 -1
- package/dist/src/ui/types.js +1 -1
- package/dist/src/ui/utils/bracketedPaste.d.ts +7 -0
- package/dist/src/ui/utils/bracketedPaste.js +15 -0
- package/dist/src/ui/utils/bracketedPaste.js.map +1 -0
- package/dist/src/ui/utils/kittyProtocolDetector.test.d.ts +6 -0
- package/dist/src/ui/utils/kittyProtocolDetector.test.js +113 -0
- package/dist/src/ui/utils/kittyProtocolDetector.test.js.map +1 -0
- package/dist/src/ui/utils/terminalSetup.js +39 -38
- package/dist/src/ui/utils/terminalSetup.js.map +1 -1
- package/dist/src/ui/utils/terminalSetup.test.d.ts +6 -0
- package/dist/src/ui/utils/terminalSetup.test.js +132 -0
- package/dist/src/ui/utils/terminalSetup.test.js.map +1 -0
- package/dist/src/ui/utils/ui-sizing.test.d.ts +6 -0
- package/dist/src/ui/utils/ui-sizing.test.js +56 -0
- package/dist/src/ui/utils/ui-sizing.test.js.map +1 -0
- package/dist/src/utils/checks.test.d.ts +6 -0
- package/dist/src/utils/checks.test.js +29 -0
- package/dist/src/utils/checks.test.js.map +1 -0
- package/dist/src/utils/cleanup.test.js +69 -16
- package/dist/src/utils/cleanup.test.js.map +1 -1
- package/dist/src/utils/dialogScopeUtils.test.d.ts +6 -0
- package/dist/src/utils/dialogScopeUtils.test.js +81 -0
- package/dist/src/utils/dialogScopeUtils.test.js.map +1 -0
- package/dist/src/utils/errors.test.js +62 -0
- package/dist/src/utils/errors.test.js.map +1 -1
- package/dist/src/utils/events.test.d.ts +6 -0
- package/dist/src/utils/events.test.js +24 -0
- package/dist/src/utils/events.test.js.map +1 -0
- package/dist/src/utils/handleAutoUpdate.test.js +103 -24
- package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
- package/dist/src/utils/math.test.d.ts +6 -0
- package/dist/src/utils/math.test.js +23 -0
- package/dist/src/utils/math.test.js.map +1 -0
- package/dist/src/utils/persistentState.test.d.ts +6 -0
- package/dist/src/utils/persistentState.test.js +68 -0
- package/dist/src/utils/persistentState.test.js.map +1 -0
- package/dist/src/utils/readStdin.js +1 -0
- package/dist/src/utils/readStdin.js.map +1 -1
- package/dist/src/utils/readStdin.test.js +25 -0
- package/dist/src/utils/readStdin.test.js.map +1 -1
- package/dist/src/utils/resolvePath.test.d.ts +6 -0
- package/dist/src/utils/resolvePath.test.js +31 -0
- package/dist/src/utils/resolvePath.test.js.map +1 -0
- package/dist/src/utils/sandbox.js +6 -137
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/sandbox.test.d.ts +6 -0
- package/dist/src/utils/sandbox.test.js +302 -0
- package/dist/src/utils/sandbox.test.js.map +1 -0
- package/dist/src/utils/sandboxUtils.d.ts +14 -0
- package/dist/src/utils/sandboxUtils.js +120 -0
- package/dist/src/utils/sandboxUtils.js.map +1 -0
- package/dist/src/utils/sandboxUtils.test.d.ts +6 -0
- package/dist/src/utils/sandboxUtils.test.js +119 -0
- package/dist/src/utils/sandboxUtils.test.js.map +1 -0
- package/dist/src/utils/sessionCleanup.test.js +38 -0
- package/dist/src/utils/sessionCleanup.test.js.map +1 -1
- package/dist/src/utils/sessionUtils.d.ts +49 -4
- package/dist/src/utils/sessionUtils.js +100 -25
- package/dist/src/utils/sessionUtils.js.map +1 -1
- package/dist/src/utils/sessionUtils.test.js +46 -3
- package/dist/src/utils/sessionUtils.test.js.map +1 -1
- package/dist/src/utils/sessions.js +4 -1
- package/dist/src/utils/sessions.js.map +1 -1
- package/dist/src/utils/sessions.test.js +42 -0
- package/dist/src/utils/sessions.test.js.map +1 -1
- package/dist/src/utils/updateEventEmitter.test.d.ts +6 -0
- package/dist/src/utils/updateEventEmitter.test.js +18 -0
- package/dist/src/utils/updateEventEmitter.test.js.map +1 -0
- package/dist/src/utils/version.test.d.ts +6 -0
- package/dist/src/utils/version.test.js +39 -0
- package/dist/src/utils/version.test.js.map +1 -0
- package/dist/src/zed-integration/connection.test.d.ts +6 -0
- package/dist/src/zed-integration/connection.test.js +175 -0
- package/dist/src/zed-integration/connection.test.js.map +1 -0
- package/dist/src/zed-integration/fileSystemService.test.d.ts +6 -0
- package/dist/src/zed-integration/fileSystemService.test.js +98 -0
- package/dist/src/zed-integration/fileSystemService.test.js.map +1 -0
- package/dist/src/zed-integration/zedIntegration.d.ts +31 -1
- package/dist/src/zed-integration/zedIntegration.js +5 -2
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.test.d.ts +6 -0
- package/dist/src/zed-integration/zedIntegration.test.js +619 -0
- package/dist/src/zed-integration/zedIntegration.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
7
7
|
import * as os from 'node:os';
|
|
8
8
|
import * as path from 'node:path';
|
|
9
|
-
import {
|
|
9
|
+
import { DEFAULT_GEMINI_MODEL_AUTO, DEFAULT_FILE_FILTERING_OPTIONS, OutputFormat, SHELL_TOOL_NAME, WRITE_FILE_TOOL_NAME, EDIT_TOOL_NAME, debugLogger, } from '@google/gemini-cli-core';
|
|
10
10
|
import { loadCliConfig, parseArguments } from './config.js';
|
|
11
11
|
import * as ServerConfig from '@google/gemini-cli-core';
|
|
12
12
|
import { isWorkspaceTrusted } from './trustedFolders.js';
|
|
@@ -111,241 +111,223 @@ afterEach(() => {
|
|
|
111
111
|
}
|
|
112
112
|
});
|
|
113
113
|
describe('parseArguments', () => {
|
|
114
|
-
it(
|
|
115
|
-
|
|
116
|
-
'
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
});
|
|
140
|
-
it('should throw an error when using short flags -p and -i together', async () => {
|
|
141
|
-
process.argv = [
|
|
142
|
-
'node',
|
|
143
|
-
'script.js',
|
|
144
|
-
'-p',
|
|
145
|
-
'test prompt',
|
|
146
|
-
'-i',
|
|
147
|
-
'interactive prompt',
|
|
148
|
-
];
|
|
114
|
+
it.each([
|
|
115
|
+
{
|
|
116
|
+
description: 'long flags',
|
|
117
|
+
argv: [
|
|
118
|
+
'node',
|
|
119
|
+
'script.js',
|
|
120
|
+
'--prompt',
|
|
121
|
+
'test prompt',
|
|
122
|
+
'--prompt-interactive',
|
|
123
|
+
'interactive prompt',
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
description: 'short flags',
|
|
128
|
+
argv: [
|
|
129
|
+
'node',
|
|
130
|
+
'script.js',
|
|
131
|
+
'-p',
|
|
132
|
+
'test prompt',
|
|
133
|
+
'-i',
|
|
134
|
+
'interactive prompt',
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
])('should throw an error when using conflicting prompt flags ($description)', async ({ argv }) => {
|
|
138
|
+
process.argv = argv;
|
|
149
139
|
const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
150
140
|
throw new Error('process.exit called');
|
|
151
141
|
});
|
|
152
142
|
const mockConsoleError = vi
|
|
153
143
|
.spyOn(console, 'error')
|
|
154
144
|
.mockImplementation(() => { });
|
|
155
|
-
const debugErrorSpy = vi
|
|
156
|
-
.spyOn(debugLogger, 'error')
|
|
157
|
-
.mockImplementation(() => { });
|
|
158
145
|
await expect(parseArguments({})).rejects.toThrow('process.exit called');
|
|
159
|
-
expect(
|
|
160
|
-
expect(mockConsoleError).toHaveBeenCalled();
|
|
146
|
+
expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('Cannot use both --prompt (-p) and --prompt-interactive (-i) together'));
|
|
161
147
|
mockExit.mockRestore();
|
|
162
148
|
mockConsoleError.mockRestore();
|
|
163
|
-
debugErrorSpy.mockRestore();
|
|
164
149
|
});
|
|
165
|
-
it(
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
'node',
|
|
174
|
-
'
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
})
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
expect(
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
150
|
+
it.each([
|
|
151
|
+
{
|
|
152
|
+
description: 'should allow --prompt without --prompt-interactive',
|
|
153
|
+
argv: ['node', 'script.js', '--prompt', 'test prompt'],
|
|
154
|
+
expected: { prompt: 'test prompt', promptInteractive: undefined },
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
description: 'should allow --prompt-interactive without --prompt',
|
|
158
|
+
argv: ['node', 'script.js', '--prompt-interactive', 'interactive prompt'],
|
|
159
|
+
expected: { prompt: undefined, promptInteractive: 'interactive prompt' },
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
description: 'should allow -i flag as alias for --prompt-interactive',
|
|
163
|
+
argv: ['node', 'script.js', '-i', 'interactive prompt'],
|
|
164
|
+
expected: { prompt: undefined, promptInteractive: 'interactive prompt' },
|
|
165
|
+
},
|
|
166
|
+
])('$description', async ({ argv, expected }) => {
|
|
167
|
+
process.argv = argv;
|
|
168
|
+
const parsedArgs = await parseArguments({});
|
|
169
|
+
expect(parsedArgs.prompt).toBe(expected.prompt);
|
|
170
|
+
expect(parsedArgs.promptInteractive).toBe(expected.promptInteractive);
|
|
171
|
+
});
|
|
172
|
+
describe('positional arguments and @commands', () => {
|
|
173
|
+
it.each([
|
|
174
|
+
{
|
|
175
|
+
description: 'should convert positional query argument to prompt by default',
|
|
176
|
+
argv: ['node', 'script.js', 'Hi Gemini'],
|
|
177
|
+
expectedQuery: 'Hi Gemini',
|
|
178
|
+
expectedModel: undefined,
|
|
179
|
+
debug: false,
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
description: 'should map @path to prompt (one-shot) when it starts with @',
|
|
183
|
+
argv: ['node', 'script.js', '@path ./file.md'],
|
|
184
|
+
expectedQuery: '@path ./file.md',
|
|
185
|
+
expectedModel: undefined,
|
|
186
|
+
debug: false,
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
description: 'should map @path to prompt even when config flags are present',
|
|
190
|
+
argv: [
|
|
191
|
+
'node',
|
|
192
|
+
'script.js',
|
|
193
|
+
'@path',
|
|
194
|
+
'./file.md',
|
|
195
|
+
'--model',
|
|
196
|
+
'gemini-2.5-pro',
|
|
197
|
+
],
|
|
198
|
+
expectedQuery: '@path ./file.md',
|
|
199
|
+
expectedModel: 'gemini-2.5-pro',
|
|
200
|
+
debug: false,
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
description: 'maps unquoted positional @path + arg to prompt (one-shot)',
|
|
204
|
+
argv: ['node', 'script.js', '@path', './file.md'],
|
|
205
|
+
expectedQuery: '@path ./file.md',
|
|
206
|
+
expectedModel: undefined,
|
|
207
|
+
debug: false,
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
description: 'should handle multiple @path arguments in a single command (one-shot)',
|
|
211
|
+
argv: [
|
|
212
|
+
'node',
|
|
213
|
+
'script.js',
|
|
214
|
+
'@path',
|
|
215
|
+
'./file1.md',
|
|
216
|
+
'@path',
|
|
217
|
+
'./file2.md',
|
|
218
|
+
],
|
|
219
|
+
expectedQuery: '@path ./file1.md @path ./file2.md',
|
|
220
|
+
expectedModel: undefined,
|
|
221
|
+
debug: false,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
description: 'should handle mixed quoted and unquoted @path arguments (one-shot)',
|
|
225
|
+
argv: [
|
|
226
|
+
'node',
|
|
227
|
+
'script.js',
|
|
228
|
+
'@path ./file1.md',
|
|
229
|
+
'@path',
|
|
230
|
+
'./file2.md',
|
|
231
|
+
'additional text',
|
|
232
|
+
],
|
|
233
|
+
expectedQuery: '@path ./file1.md @path ./file2.md additional text',
|
|
234
|
+
expectedModel: undefined,
|
|
235
|
+
debug: false,
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
description: 'should map @path to prompt with ambient flags (debug)',
|
|
239
|
+
argv: ['node', 'script.js', '@path', './file.md', '--debug'],
|
|
240
|
+
expectedQuery: '@path ./file.md',
|
|
241
|
+
expectedModel: undefined,
|
|
242
|
+
debug: true,
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
description: 'should map @include to prompt (one-shot)',
|
|
246
|
+
argv: ['node', 'script.js', '@include src/'],
|
|
247
|
+
expectedQuery: '@include src/',
|
|
248
|
+
expectedModel: undefined,
|
|
249
|
+
debug: false,
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
description: 'should map @search to prompt (one-shot)',
|
|
253
|
+
argv: ['node', 'script.js', '@search pattern'],
|
|
254
|
+
expectedQuery: '@search pattern',
|
|
255
|
+
expectedModel: undefined,
|
|
256
|
+
debug: false,
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
description: 'should map @web to prompt (one-shot)',
|
|
260
|
+
argv: ['node', 'script.js', '@web query'],
|
|
261
|
+
expectedQuery: '@web query',
|
|
262
|
+
expectedModel: undefined,
|
|
263
|
+
debug: false,
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
description: 'should map @git to prompt (one-shot)',
|
|
267
|
+
argv: ['node', 'script.js', '@git status'],
|
|
268
|
+
expectedQuery: '@git status',
|
|
269
|
+
expectedModel: undefined,
|
|
270
|
+
debug: false,
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
description: 'should handle @command with leading whitespace',
|
|
274
|
+
argv: ['node', 'script.js', ' @path ./file.md'],
|
|
275
|
+
expectedQuery: ' @path ./file.md',
|
|
276
|
+
expectedModel: undefined,
|
|
277
|
+
debug: false,
|
|
278
|
+
},
|
|
279
|
+
])('$description', async ({ argv, expectedQuery, expectedModel, debug }) => {
|
|
280
|
+
process.argv = argv;
|
|
281
|
+
const parsedArgs = await parseArguments({});
|
|
282
|
+
expect(parsedArgs.query).toBe(expectedQuery);
|
|
283
|
+
expect(parsedArgs.prompt).toBe(expectedQuery);
|
|
284
|
+
expect(parsedArgs.promptInteractive).toBeUndefined();
|
|
285
|
+
if (expectedModel) {
|
|
286
|
+
expect(parsedArgs.model).toBe(expectedModel);
|
|
287
|
+
}
|
|
288
|
+
if (debug) {
|
|
289
|
+
expect(parsedArgs.debug).toBe(true);
|
|
290
|
+
}
|
|
306
291
|
});
|
|
307
|
-
const mockConsoleError = vi
|
|
308
|
-
.spyOn(console, 'error')
|
|
309
|
-
.mockImplementation(() => { });
|
|
310
|
-
const debugErrorSpy = vi
|
|
311
|
-
.spyOn(debugLogger, 'error')
|
|
312
|
-
.mockImplementation(() => { });
|
|
313
|
-
await expect(parseArguments({})).rejects.toThrow('process.exit called');
|
|
314
|
-
expect(debugErrorSpy).toHaveBeenCalledWith(expect.stringContaining('Cannot use both --yolo (-y) and --approval-mode together. Use --approval-mode=yolo instead.'));
|
|
315
|
-
expect(mockConsoleError).toHaveBeenCalled();
|
|
316
|
-
mockExit.mockRestore();
|
|
317
|
-
mockConsoleError.mockRestore();
|
|
318
|
-
debugErrorSpy.mockRestore();
|
|
319
292
|
});
|
|
320
|
-
it(
|
|
321
|
-
|
|
293
|
+
it.each([
|
|
294
|
+
{
|
|
295
|
+
description: 'long flags',
|
|
296
|
+
argv: ['node', 'script.js', '--yolo', '--approval-mode', 'default'],
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
description: 'short flags',
|
|
300
|
+
argv: ['node', 'script.js', '-y', '--approval-mode', 'yolo'],
|
|
301
|
+
},
|
|
302
|
+
])('should throw an error when using conflicting yolo/approval-mode flags ($description)', async ({ argv }) => {
|
|
303
|
+
process.argv = argv;
|
|
322
304
|
const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
323
305
|
throw new Error('process.exit called');
|
|
324
306
|
});
|
|
325
307
|
const mockConsoleError = vi
|
|
326
308
|
.spyOn(console, 'error')
|
|
327
309
|
.mockImplementation(() => { });
|
|
328
|
-
const debugErrorSpy = vi
|
|
329
|
-
.spyOn(debugLogger, 'error')
|
|
330
|
-
.mockImplementation(() => { });
|
|
331
310
|
await expect(parseArguments({})).rejects.toThrow('process.exit called');
|
|
332
|
-
expect(
|
|
333
|
-
expect(mockConsoleError).toHaveBeenCalled();
|
|
311
|
+
expect(mockConsoleError).toHaveBeenCalledWith(expect.stringContaining('Cannot use both --yolo (-y) and --approval-mode together. Use --approval-mode=yolo instead.'));
|
|
334
312
|
mockExit.mockRestore();
|
|
335
313
|
mockConsoleError.mockRestore();
|
|
336
|
-
debugErrorSpy.mockRestore();
|
|
337
|
-
});
|
|
338
|
-
it('should allow --approval-mode without --yolo', async () => {
|
|
339
|
-
process.argv = ['node', 'script.js', '--approval-mode', 'auto_edit'];
|
|
340
|
-
const argv = await parseArguments({});
|
|
341
|
-
expect(argv.approvalMode).toBe('auto_edit');
|
|
342
|
-
expect(argv.yolo).toBe(false);
|
|
343
314
|
});
|
|
344
|
-
it(
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
315
|
+
it.each([
|
|
316
|
+
{
|
|
317
|
+
description: 'should allow --approval-mode without --yolo',
|
|
318
|
+
argv: ['node', 'script.js', '--approval-mode', 'auto_edit'],
|
|
319
|
+
expected: { approvalMode: 'auto_edit', yolo: false },
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
description: 'should allow --yolo without --approval-mode',
|
|
323
|
+
argv: ['node', 'script.js', '--yolo'],
|
|
324
|
+
expected: { approvalMode: undefined, yolo: true },
|
|
325
|
+
},
|
|
326
|
+
])('$description', async ({ argv, expected }) => {
|
|
327
|
+
process.argv = argv;
|
|
328
|
+
const parsedArgs = await parseArguments({});
|
|
329
|
+
expect(parsedArgs.approvalMode).toBe(expected.approvalMode);
|
|
330
|
+
expect(parsedArgs.yolo).toBe(expected.yolo);
|
|
349
331
|
});
|
|
350
332
|
it('should reject invalid --approval-mode values', async () => {
|
|
351
333
|
process.argv = ['node', 'script.js', '--approval-mode', 'invalid'];
|
|
@@ -365,28 +347,15 @@ describe('parseArguments', () => {
|
|
|
365
347
|
mockConsoleError.mockRestore();
|
|
366
348
|
debugErrorSpy.mockRestore();
|
|
367
349
|
});
|
|
368
|
-
it('should
|
|
350
|
+
it('should allow resuming a session without prompt argument in non-interactive mode (expecting stdin)', async () => {
|
|
369
351
|
const originalIsTTY = process.stdin.isTTY;
|
|
370
352
|
process.stdin.isTTY = false;
|
|
371
353
|
process.argv = ['node', 'script.js', '--resume', 'session-id'];
|
|
372
|
-
const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
373
|
-
throw new Error('process.exit called');
|
|
374
|
-
});
|
|
375
|
-
const mockConsoleError = vi
|
|
376
|
-
.spyOn(console, 'error')
|
|
377
|
-
.mockImplementation(() => { });
|
|
378
|
-
const debugErrorSpy = vi
|
|
379
|
-
.spyOn(debugLogger, 'error')
|
|
380
|
-
.mockImplementation(() => { });
|
|
381
354
|
try {
|
|
382
|
-
await
|
|
383
|
-
expect(
|
|
384
|
-
expect(mockConsoleError).toHaveBeenCalled();
|
|
355
|
+
const argv = await parseArguments({});
|
|
356
|
+
expect(argv.resume).toBe('session-id');
|
|
385
357
|
}
|
|
386
358
|
finally {
|
|
387
|
-
mockExit.mockRestore();
|
|
388
|
-
mockConsoleError.mockRestore();
|
|
389
|
-
debugErrorSpy.mockRestore();
|
|
390
359
|
process.stdin.isTTY = originalIsTTY;
|
|
391
360
|
}
|
|
392
361
|
});
|
|
@@ -1106,7 +1075,7 @@ describe('loadCliConfig model selection', () => {
|
|
|
1106
1075
|
const config = await loadCliConfig({
|
|
1107
1076
|
// No model set.
|
|
1108
1077
|
}, 'test-session', argv);
|
|
1109
|
-
expect(config.getModel()).toBe(
|
|
1078
|
+
expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL_AUTO);
|
|
1110
1079
|
});
|
|
1111
1080
|
it('always prefers model from argv', async () => {
|
|
1112
1081
|
process.argv = ['node', 'script.js', '--model', 'gemini-2.5-flash-preview'];
|
|
@@ -1127,68 +1096,6 @@ describe('loadCliConfig model selection', () => {
|
|
|
1127
1096
|
expect(config.getModel()).toBe('gemini-2.5-flash-preview');
|
|
1128
1097
|
});
|
|
1129
1098
|
});
|
|
1130
|
-
describe('loadCliConfig model selection with model router', () => {
|
|
1131
|
-
beforeEach(() => {
|
|
1132
|
-
vi.spyOn(ExtensionManager.prototype, 'getExtensions').mockReturnValue([]);
|
|
1133
|
-
});
|
|
1134
|
-
afterEach(() => {
|
|
1135
|
-
vi.resetAllMocks();
|
|
1136
|
-
});
|
|
1137
|
-
it('should use auto model when useModelRouter is true and no model is provided', async () => {
|
|
1138
|
-
process.argv = ['node', 'script.js'];
|
|
1139
|
-
const argv = await parseArguments({});
|
|
1140
|
-
const config = await loadCliConfig({
|
|
1141
|
-
experimental: {
|
|
1142
|
-
useModelRouter: true,
|
|
1143
|
-
},
|
|
1144
|
-
}, 'test-session', argv);
|
|
1145
|
-
expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL_AUTO);
|
|
1146
|
-
});
|
|
1147
|
-
it('should use default model when useModelRouter is false and no model is provided', async () => {
|
|
1148
|
-
process.argv = ['node', 'script.js'];
|
|
1149
|
-
const argv = await parseArguments({});
|
|
1150
|
-
const config = await loadCliConfig({
|
|
1151
|
-
experimental: {
|
|
1152
|
-
useModelRouter: false,
|
|
1153
|
-
},
|
|
1154
|
-
}, 'test-session', argv);
|
|
1155
|
-
expect(config.getModel()).toBe(DEFAULT_GEMINI_MODEL);
|
|
1156
|
-
});
|
|
1157
|
-
it('should prioritize argv over useModelRouter', async () => {
|
|
1158
|
-
process.argv = ['node', 'script.js', '--model', 'gemini-from-argv'];
|
|
1159
|
-
const argv = await parseArguments({});
|
|
1160
|
-
const config = await loadCliConfig({
|
|
1161
|
-
experimental: {
|
|
1162
|
-
useModelRouter: true,
|
|
1163
|
-
},
|
|
1164
|
-
}, 'test-session', argv);
|
|
1165
|
-
expect(config.getModel()).toBe('gemini-from-argv');
|
|
1166
|
-
});
|
|
1167
|
-
it('should prioritize settings over useModelRouter', async () => {
|
|
1168
|
-
process.argv = ['node', 'script.js'];
|
|
1169
|
-
const argv = await parseArguments({});
|
|
1170
|
-
const config = await loadCliConfig({
|
|
1171
|
-
experimental: {
|
|
1172
|
-
useModelRouter: true,
|
|
1173
|
-
},
|
|
1174
|
-
model: {
|
|
1175
|
-
name: 'gemini-from-settings',
|
|
1176
|
-
},
|
|
1177
|
-
}, 'test-session', argv);
|
|
1178
|
-
expect(config.getModel()).toBe('gemini-from-settings');
|
|
1179
|
-
});
|
|
1180
|
-
it('should prioritize environment variable over useModelRouter', async () => {
|
|
1181
|
-
process.argv = ['node', 'script.js'];
|
|
1182
|
-
vi.stubEnv('GEMINI_MODEL', 'gemini-from-env');
|
|
1183
|
-
const argv = await parseArguments({});
|
|
1184
|
-
const config = await loadCliConfig({
|
|
1185
|
-
experimental: {
|
|
1186
|
-
useModelRouter: true,
|
|
1187
|
-
},
|
|
1188
|
-
}, 'test-session', argv);
|
|
1189
|
-
expect(config.getModel()).toBe('gemini-from-env');
|
|
1190
|
-
});
|
|
1191
|
-
});
|
|
1192
1099
|
describe('loadCliConfig folderTrust', () => {
|
|
1193
1100
|
beforeEach(() => {
|
|
1194
1101
|
vi.resetAllMocks();
|
|
@@ -1340,29 +1247,6 @@ describe('loadCliConfig useRipgrep', () => {
|
|
|
1340
1247
|
const config = await loadCliConfig(settings, 'test-session', argv);
|
|
1341
1248
|
expect(config.getUseRipgrep()).toBe(true);
|
|
1342
1249
|
});
|
|
1343
|
-
describe('loadCliConfig useModelRouter', () => {
|
|
1344
|
-
it('should be false by default when useModelRouter is not set in settings', async () => {
|
|
1345
|
-
process.argv = ['node', 'script.js'];
|
|
1346
|
-
const _argv = await parseArguments({});
|
|
1347
|
-
const settings = {};
|
|
1348
|
-
const config = await loadCliConfig(settings, 'test-session', _argv);
|
|
1349
|
-
expect(config.getUseModelRouter()).toBe(false);
|
|
1350
|
-
});
|
|
1351
|
-
it('should be true when useModelRouter is set to true in settings', async () => {
|
|
1352
|
-
process.argv = ['node', 'script.js'];
|
|
1353
|
-
const argv = await parseArguments({});
|
|
1354
|
-
const settings = { experimental: { useModelRouter: true } };
|
|
1355
|
-
const config = await loadCliConfig(settings, 'test-session', argv);
|
|
1356
|
-
expect(config.getUseModelRouter()).toBe(true);
|
|
1357
|
-
});
|
|
1358
|
-
it('should be false when useModelRouter is explicitly set to false in settings', async () => {
|
|
1359
|
-
process.argv = ['node', 'script.js'];
|
|
1360
|
-
const argv = await parseArguments({});
|
|
1361
|
-
const settings = { experimental: { useModelRouter: false } };
|
|
1362
|
-
const config = await loadCliConfig(settings, 'test-session', argv);
|
|
1363
|
-
expect(config.getUseModelRouter()).toBe(false);
|
|
1364
|
-
});
|
|
1365
|
-
});
|
|
1366
1250
|
});
|
|
1367
1251
|
describe('screenReader configuration', () => {
|
|
1368
1252
|
beforeEach(() => {
|