@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
|
@@ -38,7 +38,7 @@ import { isWorkspaceTrusted } from './trustedFolders.js';
|
|
|
38
38
|
// These imports will get the versions from the vi.mock('./settings.js', ...) factory.
|
|
39
39
|
import { loadSettings, USER_SETTINGS_PATH, // This IS the mocked path.
|
|
40
40
|
getSystemSettingsPath, getSystemDefaultsPath, migrateSettingsToV1, needsMigration, loadEnvironment, migrateDeprecatedSettings, SettingScope, saveSettings, } from './settings.js';
|
|
41
|
-
import { FatalConfigError, CELL_DIR } from '@google/gemini-cli-core';
|
|
41
|
+
import { FatalConfigError, CELL_DIR, AuthType } from '@google/gemini-cli-core';
|
|
42
42
|
import { ExtensionManager } from './extension-manager.js';
|
|
43
43
|
import { updateSettingsFilePreservingFormat } from '../utils/commentJson.js';
|
|
44
44
|
const MOCK_WORKSPACE_DIR = '/mock/workspace';
|
|
@@ -108,78 +108,66 @@ describe('Settings Loading and Merging', () => {
|
|
|
108
108
|
expect(settings.system.settings).toEqual({});
|
|
109
109
|
expect(settings.user.settings).toEqual({});
|
|
110
110
|
expect(settings.workspace.settings).toEqual({});
|
|
111
|
-
expect(settings.merged).toEqual({});
|
|
112
|
-
});
|
|
113
|
-
it('should load system settings if only system file exists', () => {
|
|
114
|
-
mockFsExistsSync.mockImplementation((p) => p === getSystemSettingsPath());
|
|
115
|
-
const systemSettingsContent = {
|
|
116
|
-
ui: {
|
|
117
|
-
theme: 'system-default',
|
|
118
|
-
},
|
|
119
|
-
tools: {
|
|
120
|
-
sandbox: false,
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
fs.readFileSync.mockImplementation((p) => {
|
|
124
|
-
if (p === getSystemSettingsPath())
|
|
125
|
-
return JSON.stringify(systemSettingsContent);
|
|
126
|
-
return '{}';
|
|
127
|
-
});
|
|
128
|
-
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
129
|
-
expect(fs.readFileSync).toHaveBeenCalledWith(getSystemSettingsPath(), 'utf-8');
|
|
130
|
-
expect(settings.system.settings).toEqual(systemSettingsContent);
|
|
131
|
-
expect(settings.user.settings).toEqual({});
|
|
132
|
-
expect(settings.workspace.settings).toEqual({});
|
|
133
111
|
expect(settings.merged).toEqual({
|
|
134
|
-
|
|
112
|
+
security: {
|
|
113
|
+
auth: {
|
|
114
|
+
selectedType: AuthType.KEYCLOAK,
|
|
115
|
+
},
|
|
116
|
+
},
|
|
135
117
|
});
|
|
136
118
|
});
|
|
137
|
-
it(
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
theme: '
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
119
|
+
it.each([
|
|
120
|
+
{
|
|
121
|
+
scope: 'system',
|
|
122
|
+
path: getSystemSettingsPath(),
|
|
123
|
+
content: {
|
|
124
|
+
ui: { theme: 'system-default' },
|
|
125
|
+
tools: { sandbox: false },
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
scope: 'user',
|
|
130
|
+
path: USER_SETTINGS_PATH,
|
|
131
|
+
content: {
|
|
132
|
+
ui: { theme: 'dark' },
|
|
133
|
+
context: { fileName: 'USER_CONTEXT.md' },
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
scope: 'workspace',
|
|
138
|
+
path: MOCK_WORKSPACE_SETTINGS_PATH,
|
|
139
|
+
content: {
|
|
140
|
+
tools: { sandbox: true },
|
|
141
|
+
context: { fileName: 'WORKSPACE_CONTEXT.md' },
|
|
146
142
|
},
|
|
147
|
-
}
|
|
143
|
+
},
|
|
144
|
+
])('should load $scope settings if only $scope file exists', ({ scope, path, content }) => {
|
|
145
|
+
mockFsExistsSync.mockImplementation((p) => p === path);
|
|
148
146
|
fs.readFileSync.mockImplementation((p) => {
|
|
149
|
-
if (p ===
|
|
150
|
-
return JSON.stringify(
|
|
147
|
+
if (p === path)
|
|
148
|
+
return JSON.stringify(content);
|
|
151
149
|
return '{}';
|
|
152
150
|
});
|
|
153
151
|
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
154
|
-
expect(fs.readFileSync).toHaveBeenCalledWith(
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
tools: {
|
|
165
|
-
sandbox: true,
|
|
166
|
-
},
|
|
167
|
-
context: {
|
|
168
|
-
fileName: 'WORKSPACE_CONTEXT.md',
|
|
152
|
+
expect(fs.readFileSync).toHaveBeenCalledWith(path, 'utf-8');
|
|
153
|
+
// Prepare expected object with default auth
|
|
154
|
+
const expectedWithAuth = {
|
|
155
|
+
...content,
|
|
156
|
+
security: {
|
|
157
|
+
...(content.security || {}),
|
|
158
|
+
auth: {
|
|
159
|
+
...(content.security?.auth || {}),
|
|
160
|
+
selectedType: AuthType.KEYCLOAK,
|
|
161
|
+
},
|
|
169
162
|
},
|
|
170
163
|
};
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
expect(
|
|
178
|
-
expect(settings.user.settings).toEqual({});
|
|
179
|
-
expect(settings.workspace.settings).toEqual(workspaceSettingsContent);
|
|
180
|
-
expect(settings.merged).toEqual({
|
|
181
|
-
...workspaceSettingsContent,
|
|
182
|
-
});
|
|
164
|
+
if (scope === 'user') {
|
|
165
|
+
expect(settings.user.settings).toEqual(expectedWithAuth);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
expect(settings[scope].settings).toEqual(content);
|
|
169
|
+
}
|
|
170
|
+
expect(settings.merged).toEqual(expectedWithAuth);
|
|
183
171
|
});
|
|
184
172
|
it('should merge system, user and workspace settings, with system taking precedence over workspace, and workspace over user', () => {
|
|
185
173
|
mockFsExistsSync.mockImplementation((p) => p === getSystemSettingsPath() ||
|
|
@@ -231,7 +219,14 @@ describe('Settings Loading and Merging', () => {
|
|
|
231
219
|
});
|
|
232
220
|
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
233
221
|
expect(settings.system.settings).toEqual(systemSettingsContent);
|
|
234
|
-
expect(settings.user.settings).toEqual(
|
|
222
|
+
expect(settings.user.settings).toEqual({
|
|
223
|
+
...userSettingsContent,
|
|
224
|
+
security: {
|
|
225
|
+
auth: {
|
|
226
|
+
selectedType: AuthType.KEYCLOAK,
|
|
227
|
+
},
|
|
228
|
+
},
|
|
229
|
+
});
|
|
235
230
|
expect(settings.workspace.settings).toEqual(workspaceSettingsContent);
|
|
236
231
|
expect(settings.merged).toEqual({
|
|
237
232
|
ui: {
|
|
@@ -248,6 +243,11 @@ describe('Settings Loading and Merging', () => {
|
|
|
248
243
|
mcp: {
|
|
249
244
|
allowed: ['server1', 'server2'],
|
|
250
245
|
},
|
|
246
|
+
security: {
|
|
247
|
+
auth: {
|
|
248
|
+
selectedType: AuthType.KEYCLOAK,
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
251
|
});
|
|
252
252
|
});
|
|
253
253
|
it('should correctly migrate a complex legacy (v1) settings file', () => {
|
|
@@ -307,6 +307,11 @@ describe('Settings Loading and Merging', () => {
|
|
|
307
307
|
allowed: ['legacy-server-1'],
|
|
308
308
|
},
|
|
309
309
|
someUnrecognizedSetting: 'should-be-preserved',
|
|
310
|
+
security: {
|
|
311
|
+
auth: {
|
|
312
|
+
selectedType: AuthType.KEYCLOAK,
|
|
313
|
+
},
|
|
314
|
+
},
|
|
310
315
|
});
|
|
311
316
|
});
|
|
312
317
|
it('should rewrite allowedTools to tools.allowed during migration', () => {
|
|
@@ -412,7 +417,14 @@ describe('Settings Loading and Merging', () => {
|
|
|
412
417
|
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
413
418
|
expect(settings.systemDefaults.settings).toEqual(systemDefaultsContent);
|
|
414
419
|
expect(settings.system.settings).toEqual(systemSettingsContent);
|
|
415
|
-
expect(settings.user.settings).toEqual(
|
|
420
|
+
expect(settings.user.settings).toEqual({
|
|
421
|
+
...userSettingsContent,
|
|
422
|
+
security: {
|
|
423
|
+
auth: {
|
|
424
|
+
selectedType: AuthType.KEYCLOAK,
|
|
425
|
+
},
|
|
426
|
+
},
|
|
427
|
+
});
|
|
416
428
|
expect(settings.workspace.settings).toEqual(workspaceSettingsContent);
|
|
417
429
|
expect(settings.merged).toEqual({
|
|
418
430
|
context: {
|
|
@@ -432,6 +444,11 @@ describe('Settings Loading and Merging', () => {
|
|
|
432
444
|
ui: {
|
|
433
445
|
theme: 'system-theme',
|
|
434
446
|
},
|
|
447
|
+
security: {
|
|
448
|
+
auth: {
|
|
449
|
+
selectedType: AuthType.KEYCLOAK,
|
|
450
|
+
},
|
|
451
|
+
},
|
|
435
452
|
});
|
|
436
453
|
});
|
|
437
454
|
it('should use folderTrust from workspace settings when trusted', () => {
|
|
@@ -529,64 +546,55 @@ describe('Settings Loading and Merging', () => {
|
|
|
529
546
|
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
530
547
|
expect(settings.merged.security?.disableYoloMode).toBe(true); // System setting should be used
|
|
531
548
|
});
|
|
532
|
-
it(
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
'DEBUG',
|
|
570
|
-
'NODE_ENV',
|
|
571
|
-
'CUSTOM_VAR',
|
|
572
|
-
]);
|
|
573
|
-
});
|
|
574
|
-
it('should handle excludedProjectEnvVars correctly when only in workspace settings', () => {
|
|
575
|
-
mockFsExistsSync.mockImplementation((p) => p === MOCK_WORKSPACE_SETTINGS_PATH);
|
|
576
|
-
const workspaceSettingsContent = {
|
|
577
|
-
general: {},
|
|
578
|
-
advanced: { excludedEnvVars: ['WORKSPACE_DEBUG', 'WORKSPACE_VAR'] },
|
|
579
|
-
};
|
|
549
|
+
it.each([
|
|
550
|
+
{
|
|
551
|
+
description: 'contextFileName in user settings',
|
|
552
|
+
path: USER_SETTINGS_PATH,
|
|
553
|
+
content: { context: { fileName: 'CUSTOM.md' } },
|
|
554
|
+
expected: { key: 'context.fileName', value: 'CUSTOM.md' },
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
description: 'contextFileName in workspace settings',
|
|
558
|
+
path: MOCK_WORKSPACE_SETTINGS_PATH,
|
|
559
|
+
content: { context: { fileName: 'PROJECT_SPECIFIC.md' } },
|
|
560
|
+
expected: { key: 'context.fileName', value: 'PROJECT_SPECIFIC.md' },
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
description: 'excludedProjectEnvVars in user settings',
|
|
564
|
+
path: USER_SETTINGS_PATH,
|
|
565
|
+
content: {
|
|
566
|
+
advanced: { excludedEnvVars: ['DEBUG', 'NODE_ENV', 'CUSTOM_VAR'] },
|
|
567
|
+
},
|
|
568
|
+
expected: {
|
|
569
|
+
key: 'advanced.excludedEnvVars',
|
|
570
|
+
value: ['DEBUG', 'NODE_ENV', 'CUSTOM_VAR'],
|
|
571
|
+
},
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
description: 'excludedProjectEnvVars in workspace settings',
|
|
575
|
+
path: MOCK_WORKSPACE_SETTINGS_PATH,
|
|
576
|
+
content: {
|
|
577
|
+
advanced: { excludedEnvVars: ['WORKSPACE_DEBUG', 'WORKSPACE_VAR'] },
|
|
578
|
+
},
|
|
579
|
+
expected: {
|
|
580
|
+
key: 'advanced.excludedEnvVars',
|
|
581
|
+
value: ['WORKSPACE_DEBUG', 'WORKSPACE_VAR'],
|
|
582
|
+
},
|
|
583
|
+
},
|
|
584
|
+
])('should handle $description correctly', ({ path, content, expected }) => {
|
|
585
|
+
mockFsExistsSync.mockImplementation((p) => p === path);
|
|
580
586
|
fs.readFileSync.mockImplementation((p) => {
|
|
581
|
-
if (p ===
|
|
582
|
-
return JSON.stringify(
|
|
583
|
-
return '';
|
|
587
|
+
if (p === path)
|
|
588
|
+
return JSON.stringify(content);
|
|
589
|
+
return '{}';
|
|
584
590
|
});
|
|
585
591
|
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
592
|
+
const keys = expected.key.split('.');
|
|
593
|
+
let result = settings.merged;
|
|
594
|
+
for (const key of keys) {
|
|
595
|
+
result = result[key];
|
|
596
|
+
}
|
|
597
|
+
expect(result).toEqual(expected.value);
|
|
590
598
|
});
|
|
591
599
|
it('should merge excludedProjectEnvVars with workspace taking precedence over user', () => {
|
|
592
600
|
mockFsExistsSync.mockImplementation((p) => p === USER_SETTINGS_PATH || p === MOCK_WORKSPACE_SETTINGS_PATH);
|
|
@@ -637,27 +645,28 @@ describe('Settings Loading and Merging', () => {
|
|
|
637
645
|
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
638
646
|
expect(settings.merged.context?.fileName).toBeUndefined();
|
|
639
647
|
});
|
|
640
|
-
it(
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
648
|
+
it.each([
|
|
649
|
+
{
|
|
650
|
+
scope: 'user',
|
|
651
|
+
path: USER_SETTINGS_PATH,
|
|
652
|
+
content: { telemetry: { enabled: true } },
|
|
653
|
+
expected: true,
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
scope: 'workspace',
|
|
657
|
+
path: MOCK_WORKSPACE_SETTINGS_PATH,
|
|
658
|
+
content: { telemetry: { enabled: false } },
|
|
659
|
+
expected: false,
|
|
660
|
+
},
|
|
661
|
+
])('should load telemetry setting from $scope settings', ({ path, content, expected }) => {
|
|
662
|
+
mockFsExistsSync.mockImplementation((p) => p === path);
|
|
654
663
|
fs.readFileSync.mockImplementation((p) => {
|
|
655
|
-
if (p ===
|
|
656
|
-
return JSON.stringify(
|
|
664
|
+
if (p === path)
|
|
665
|
+
return JSON.stringify(content);
|
|
657
666
|
return '{}';
|
|
658
667
|
});
|
|
659
668
|
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
660
|
-
expect(settings.merged.telemetry?.enabled).toBe(
|
|
669
|
+
expect(settings.merged.telemetry?.enabled).toBe(expected);
|
|
661
670
|
});
|
|
662
671
|
it('should prioritize workspace telemetry setting over user setting', () => {
|
|
663
672
|
mockFsExistsSync.mockReturnValue(true);
|
|
@@ -717,7 +726,14 @@ describe('Settings Loading and Merging', () => {
|
|
|
717
726
|
return '';
|
|
718
727
|
});
|
|
719
728
|
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
720
|
-
expect(settings.user.settings).toEqual(
|
|
729
|
+
expect(settings.user.settings).toEqual({
|
|
730
|
+
...userSettingsContent,
|
|
731
|
+
security: {
|
|
732
|
+
auth: {
|
|
733
|
+
selectedType: AuthType.KEYCLOAK,
|
|
734
|
+
},
|
|
735
|
+
},
|
|
736
|
+
});
|
|
721
737
|
expect(settings.workspace.settings).toEqual(workspaceSettingsContent);
|
|
722
738
|
expect(settings.merged.mcpServers).toEqual({
|
|
723
739
|
'user-server': {
|
|
@@ -736,51 +752,52 @@ describe('Settings Loading and Merging', () => {
|
|
|
736
752
|
},
|
|
737
753
|
});
|
|
738
754
|
});
|
|
739
|
-
it(
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
755
|
+
it.each([
|
|
756
|
+
{
|
|
757
|
+
scope: 'user',
|
|
758
|
+
path: USER_SETTINGS_PATH,
|
|
759
|
+
content: {
|
|
760
|
+
mcpServers: {
|
|
761
|
+
'user-only-server': {
|
|
762
|
+
command: 'user-only-command',
|
|
763
|
+
description: 'User only server',
|
|
764
|
+
},
|
|
765
|
+
},
|
|
766
|
+
},
|
|
767
|
+
expected: {
|
|
743
768
|
'user-only-server': {
|
|
744
769
|
command: 'user-only-command',
|
|
745
770
|
description: 'User only server',
|
|
746
771
|
},
|
|
747
772
|
},
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
scope: 'workspace',
|
|
776
|
+
path: MOCK_WORKSPACE_SETTINGS_PATH,
|
|
777
|
+
content: {
|
|
778
|
+
mcpServers: {
|
|
779
|
+
'workspace-only-server': {
|
|
780
|
+
command: 'workspace-only-command',
|
|
781
|
+
description: 'Workspace only server',
|
|
782
|
+
},
|
|
783
|
+
},
|
|
759
784
|
},
|
|
760
|
-
|
|
761
|
-
});
|
|
762
|
-
it('should handle MCP servers when only in workspace settings', () => {
|
|
763
|
-
mockFsExistsSync.mockImplementation((p) => p === MOCK_WORKSPACE_SETTINGS_PATH);
|
|
764
|
-
const workspaceSettingsContent = {
|
|
765
|
-
mcpServers: {
|
|
785
|
+
expected: {
|
|
766
786
|
'workspace-only-server': {
|
|
767
787
|
command: 'workspace-only-command',
|
|
768
788
|
description: 'Workspace only server',
|
|
769
789
|
},
|
|
770
790
|
},
|
|
771
|
-
}
|
|
791
|
+
},
|
|
792
|
+
])('should handle MCP servers when only in $scope settings', ({ path, content, expected }) => {
|
|
793
|
+
mockFsExistsSync.mockImplementation((p) => p === path);
|
|
772
794
|
fs.readFileSync.mockImplementation((p) => {
|
|
773
|
-
if (p ===
|
|
774
|
-
return JSON.stringify(
|
|
775
|
-
return '';
|
|
795
|
+
if (p === path)
|
|
796
|
+
return JSON.stringify(content);
|
|
797
|
+
return '{}';
|
|
776
798
|
});
|
|
777
799
|
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
778
|
-
expect(settings.merged.mcpServers).toEqual(
|
|
779
|
-
'workspace-only-server': {
|
|
780
|
-
command: 'workspace-only-command',
|
|
781
|
-
description: 'Workspace only server',
|
|
782
|
-
},
|
|
783
|
-
});
|
|
800
|
+
expect(settings.merged.mcpServers).toEqual(expected);
|
|
784
801
|
});
|
|
785
802
|
it('should have mcpServers as undefined if not in any settings file', () => {
|
|
786
803
|
mockFsExistsSync.mockReturnValue(false); // No settings files exist
|
|
@@ -883,65 +900,44 @@ describe('Settings Loading and Merging', () => {
|
|
|
883
900
|
excluded: ['workspace-excluded'],
|
|
884
901
|
});
|
|
885
902
|
});
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
}
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
924
|
-
expect(settings.merged.output?.format).toBe('json');
|
|
925
|
-
});
|
|
926
|
-
it('should handle compressionThreshold when only in user settings', () => {
|
|
927
|
-
mockFsExistsSync.mockImplementation((p) => p === USER_SETTINGS_PATH);
|
|
928
|
-
const userSettingsContent = {
|
|
929
|
-
general: {},
|
|
930
|
-
model: { compressionThreshold: 0.5 },
|
|
931
|
-
};
|
|
932
|
-
fs.readFileSync.mockImplementation((p) => {
|
|
933
|
-
if (p === USER_SETTINGS_PATH)
|
|
934
|
-
return JSON.stringify(userSettingsContent);
|
|
935
|
-
return '{}';
|
|
903
|
+
describe('compressionThreshold settings', () => {
|
|
904
|
+
it.each([
|
|
905
|
+
{
|
|
906
|
+
description: 'should be taken from user settings if only present there',
|
|
907
|
+
userContent: { model: { compressionThreshold: 0.5 } },
|
|
908
|
+
workspaceContent: {},
|
|
909
|
+
expected: 0.5,
|
|
910
|
+
},
|
|
911
|
+
{
|
|
912
|
+
description: 'should be taken from workspace settings if only present there',
|
|
913
|
+
userContent: {},
|
|
914
|
+
workspaceContent: { model: { compressionThreshold: 0.8 } },
|
|
915
|
+
expected: 0.8,
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
description: 'should prioritize workspace settings over user settings',
|
|
919
|
+
userContent: { model: { compressionThreshold: 0.5 } },
|
|
920
|
+
workspaceContent: { model: { compressionThreshold: 0.8 } },
|
|
921
|
+
expected: 0.8,
|
|
922
|
+
},
|
|
923
|
+
{
|
|
924
|
+
description: 'should be undefined if not in any settings file',
|
|
925
|
+
userContent: {},
|
|
926
|
+
workspaceContent: {},
|
|
927
|
+
expected: undefined,
|
|
928
|
+
},
|
|
929
|
+
])('$description', ({ userContent, workspaceContent, expected }) => {
|
|
930
|
+
mockFsExistsSync.mockReturnValue(true);
|
|
931
|
+
fs.readFileSync.mockImplementation((p) => {
|
|
932
|
+
if (p === USER_SETTINGS_PATH)
|
|
933
|
+
return JSON.stringify(userContent);
|
|
934
|
+
if (p === MOCK_WORKSPACE_SETTINGS_PATH)
|
|
935
|
+
return JSON.stringify(workspaceContent);
|
|
936
|
+
return '{}';
|
|
937
|
+
});
|
|
938
|
+
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
939
|
+
expect(settings.merged.model?.compressionThreshold).toEqual(expected);
|
|
936
940
|
});
|
|
937
|
-
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
938
|
-
expect(settings.merged.model?.compressionThreshold).toEqual(0.5);
|
|
939
|
-
});
|
|
940
|
-
it('should have model as undefined if not in any settings file', () => {
|
|
941
|
-
mockFsExistsSync.mockReturnValue(false); // No settings files exist
|
|
942
|
-
fs.readFileSync.mockReturnValue('{}');
|
|
943
|
-
const settings = loadSettings(MOCK_WORKSPACE_DIR);
|
|
944
|
-
expect(settings.merged.model).toBeUndefined();
|
|
945
941
|
});
|
|
946
942
|
it('should use user compressionThreshold if workspace does not define it', () => {
|
|
947
943
|
mockFsExistsSync.mockReturnValue(true);
|
|
@@ -1288,6 +1284,11 @@ describe('Settings Loading and Merging', () => {
|
|
|
1288
1284
|
expect(settings.system.settings).toEqual(systemSettingsContent);
|
|
1289
1285
|
expect(settings.merged).toEqual({
|
|
1290
1286
|
...systemSettingsContent,
|
|
1287
|
+
security: {
|
|
1288
|
+
auth: {
|
|
1289
|
+
selectedType: AuthType.KEYCLOAK,
|
|
1290
|
+
},
|
|
1291
|
+
},
|
|
1291
1292
|
});
|
|
1292
1293
|
});
|
|
1293
1294
|
});
|