@umsai/ums-code 0.0.14-v2 → 0.1.4-v2
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 +16 -11
- package/dist/src/commands/extensions/disable.d.ts +2 -3
- package/dist/src/commands/extensions/disable.js +20 -6
- package/dist/src/commands/extensions/disable.js.map +1 -1
- package/dist/src/commands/extensions/enable.d.ts +2 -3
- package/dist/src/commands/extensions/enable.js +21 -10
- package/dist/src/commands/extensions/enable.js.map +1 -1
- package/dist/src/commands/extensions/examples/context/QWEN.md +8 -0
- package/dist/src/commands/extensions/examples/context/qwen-extension.json +4 -0
- package/dist/src/commands/extensions/examples/custom-commands/commands/fs/grep-code.toml +6 -0
- package/dist/src/commands/extensions/examples/custom-commands/qwen-extension.json +4 -0
- package/dist/src/commands/extensions/examples/exclude-tools/qwen-extension.json +5 -0
- package/dist/src/commands/extensions/examples/mcp-server/example.ts +60 -0
- package/dist/src/commands/extensions/examples/mcp-server/package.json +18 -0
- package/dist/src/commands/extensions/examples/mcp-server/qwen-extension.json +11 -0
- package/dist/src/commands/extensions/examples/mcp-server/tsconfig.json +13 -0
- package/dist/src/commands/extensions/install.d.ts +3 -2
- package/dist/src/commands/extensions/install.js +47 -17
- package/dist/src/commands/extensions/install.js.map +1 -1
- package/dist/src/commands/extensions/install.test.js +86 -9
- package/dist/src/commands/extensions/install.test.js.map +1 -1
- package/dist/src/commands/extensions/link.d.ts +12 -0
- package/dist/src/commands/extensions/link.js +37 -0
- package/dist/src/commands/extensions/link.js.map +1 -0
- package/dist/src/commands/extensions/list.js +1 -1
- package/dist/src/commands/extensions/list.js.map +1 -1
- package/dist/src/commands/extensions/new.d.ts +7 -0
- package/dist/src/commands/extensions/new.js +90 -0
- package/dist/src/commands/extensions/new.js.map +1 -0
- package/dist/src/commands/extensions/new.test.js +59 -0
- package/dist/src/commands/extensions/new.test.js.map +1 -0
- package/dist/src/commands/extensions/uninstall.js +1 -1
- package/dist/src/commands/extensions/uninstall.js.map +1 -1
- package/dist/src/commands/extensions/uninstall.test.js +2 -2
- package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
- package/dist/src/commands/extensions/update.d.ts +2 -1
- package/dist/src/commands/extensions/update.js +80 -14
- package/dist/src/commands/extensions/update.js.map +1 -1
- package/dist/src/commands/extensions.js +4 -0
- package/dist/src/commands/extensions.js.map +1 -1
- package/dist/src/commands/mcp/add.js +6 -1
- package/dist/src/commands/mcp/add.js.map +1 -1
- package/dist/src/commands/mcp/list.js +4 -3
- package/dist/src/commands/mcp/list.js.map +1 -1
- package/dist/src/commands/mcp/remove.js +1 -1
- package/dist/src/commands/mcp/remove.js.map +1 -1
- package/dist/src/config/auth.d.ts +2 -4
- package/dist/src/config/auth.js +10 -36
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/auth.test.js +12 -32
- package/dist/src/config/auth.test.js.map +1 -1
- package/dist/src/config/config.d.ts +7 -2
- package/dist/src/config/config.js +183 -124
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +41 -18
- package/dist/src/config/extension.js +352 -195
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/extensions/extensionEnablement.d.ts +47 -0
- package/dist/src/config/extensions/extensionEnablement.js +189 -0
- package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
- package/dist/src/config/extensions/extensionEnablement.test.js +333 -0
- package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -0
- package/dist/src/config/extensions/github.d.ts +30 -0
- package/dist/src/config/extensions/github.js +322 -0
- package/dist/src/config/extensions/github.js.map +1 -0
- package/dist/src/{ui/components/ModelSelectionDialog.test.d.ts → config/extensions/github.test.d.ts} +1 -1
- package/dist/src/config/extensions/github.test.js +334 -0
- package/dist/src/config/extensions/github.test.js.map +1 -0
- package/dist/src/config/extensions/update.d.ts +19 -0
- package/dist/src/config/extensions/update.js +113 -0
- package/dist/src/config/extensions/update.js.map +1 -0
- package/dist/src/config/extensions/update.test.d.ts +6 -0
- package/dist/src/config/extensions/update.test.js +342 -0
- package/dist/src/config/extensions/update.test.js.map +1 -0
- package/dist/src/config/extensions/variableSchema.d.ts +8 -0
- package/dist/src/config/extensions/variableSchema.js +4 -0
- package/dist/src/config/extensions/variableSchema.js.map +1 -1
- package/dist/src/config/keyBindings.d.ts +5 -1
- package/dist/src/config/keyBindings.js +14 -25
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/settings.d.ts +10 -5
- package/dist/src/config/settings.js +218 -275
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +358 -140
- package/dist/src/config/settingsSchema.js +347 -136
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +64 -57
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/config/trustedFolders.d.ts +24 -5
- package/dist/src/config/trustedFolders.js +98 -48
- package/dist/src/config/trustedFolders.js.map +1 -1
- package/dist/src/config/trustedFolders.test.js +196 -20
- package/dist/src/config/trustedFolders.test.js.map +1 -1
- package/dist/src/core/auth.d.ts +13 -0
- package/dist/src/core/auth.js +27 -0
- package/dist/src/core/auth.js.map +1 -0
- package/dist/src/core/initializer.d.ts +21 -0
- package/dist/src/core/initializer.js +33 -0
- package/dist/src/core/initializer.js.map +1 -0
- package/dist/src/core/theme.d.ts +12 -0
- package/dist/src/core/theme.js +20 -0
- package/dist/src/core/theme.js.map +1 -0
- package/dist/src/gemini.d.ts +3 -2
- package/dist/src/gemini.js +167 -138
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +190 -47
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/nonInteractiveCli.d.ts +2 -1
- package/dist/src/nonInteractiveCli.js +101 -72
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/nonInteractiveCliCommands.d.ts +17 -0
- package/dist/src/nonInteractiveCliCommands.js +79 -0
- package/dist/src/nonInteractiveCliCommands.js.map +1 -0
- package/dist/src/services/BuiltinCommandLoader.js +3 -3
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +53 -19
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
- package/dist/src/services/FileCommandLoader.d.ts +2 -0
- package/dist/src/services/FileCommandLoader.js +7 -0
- package/dist/src/services/FileCommandLoader.js.map +1 -1
- package/dist/src/services/McpPromptLoader.js +43 -8
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/services/McpPromptLoader.test.js +228 -1
- package/dist/src/services/McpPromptLoader.test.js.map +1 -1
- package/dist/src/services/prompt-processors/shellProcessor.js +8 -1
- package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
- package/dist/src/test-utils/createExtension.d.ts +15 -0
- package/dist/src/test-utils/createExtension.js +25 -0
- package/dist/src/test-utils/createExtension.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.js +2 -0
- package/dist/src/test-utils/mockCommandContext.js.map +1 -1
- package/dist/src/test-utils/render.d.ts +5 -1
- package/dist/src/test-utils/render.js +5 -1
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/App.d.ts +1 -10
- package/dist/src/ui/App.js +26 -833
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/AppContainer.d.ts +17 -0
- package/dist/src/ui/AppContainer.js +1069 -0
- package/dist/src/ui/AppContainer.js.map +1 -0
- package/dist/src/ui/AppContainer.test.d.ts +6 -0
- package/dist/src/ui/AppContainer.test.js +831 -0
- package/dist/src/ui/AppContainer.test.js.map +1 -0
- package/dist/src/ui/IdeIntegrationNudge.d.ts +2 -2
- package/dist/src/ui/IdeIntegrationNudge.js +6 -8
- package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
- package/dist/src/ui/{components → auth}/AuthDialog.d.ts +5 -1
- package/dist/src/ui/{components → auth}/AuthDialog.js +26 -29
- package/dist/src/ui/auth/AuthDialog.js.map +1 -0
- package/dist/src/ui/auth/AuthDialog.test.d.ts +6 -0
- package/dist/src/ui/{components → auth}/AuthDialog.test.js +92 -10
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -0
- package/dist/src/ui/{components → auth}/AuthInProgress.js +2 -2
- package/dist/src/ui/auth/AuthInProgress.js.map +1 -0
- package/dist/src/ui/auth/useAuth.d.ts +24 -0
- package/dist/src/ui/auth/useAuth.js +108 -0
- package/dist/src/ui/auth/useAuth.js.map +1 -0
- package/dist/src/ui/commands/aboutCommand.js +9 -3
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.js +19 -5
- package/dist/src/ui/commands/bugCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.d.ts +2 -0
- package/dist/src/ui/commands/chatCommand.js +95 -5
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +1 -1
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/corgiCommand.js +1 -0
- package/dist/src/ui/commands/corgiCommand.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.js +1 -1
- package/dist/src/ui/commands/directoryCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +92 -15
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.d.ts +1 -2
- package/dist/src/ui/commands/ideCommand.js +19 -10
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +88 -263
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +1 -1
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.js +1 -16
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.test.js +10 -11
- package/dist/src/ui/commands/modelCommand.test.js.map +1 -1
- package/dist/src/ui/commands/{privacyCommand.d.ts → permissionsCommand.d.ts} +1 -1
- package/dist/src/ui/commands/{privacyCommand.js → permissionsCommand.js} +5 -5
- package/dist/src/ui/commands/permissionsCommand.js.map +1 -0
- package/dist/src/ui/commands/permissionsCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/permissionsCommand.test.js +30 -0
- package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -0
- package/dist/src/ui/commands/summaryCommand.js +1 -1
- package/dist/src/ui/commands/summaryCommand.js.map +1 -1
- package/dist/src/ui/commands/toolsCommand.js +10 -24
- package/dist/src/ui/commands/toolsCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +8 -3
- package/dist/src/ui/commands/types.js +0 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/AboutBox.js +2 -2
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/AnsiOutput.d.ts +13 -0
- package/dist/src/ui/components/AnsiOutput.js +12 -0
- package/dist/src/ui/components/AnsiOutput.js.map +1 -0
- package/dist/src/ui/components/AnsiOutput.test.d.ts +6 -0
- package/dist/src/ui/components/AnsiOutput.test.js +97 -0
- package/dist/src/ui/components/AnsiOutput.test.js.map +1 -0
- package/dist/src/ui/components/AppHeader.d.ts +10 -0
- package/dist/src/ui/components/AppHeader.js +19 -0
- package/dist/src/ui/components/AppHeader.js.map +1 -0
- package/dist/src/ui/components/AutoAcceptIndicator.js +5 -5
- package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/components/Composer.d.ts +6 -0
- package/dist/src/ui/components/Composer.js +54 -0
- package/dist/src/ui/components/Composer.js.map +1 -0
- package/dist/src/ui/components/Composer.test.d.ts +6 -0
- package/dist/src/ui/components/Composer.test.js +337 -0
- package/dist/src/ui/components/Composer.test.js.map +1 -0
- package/dist/src/ui/components/ConfigInitDisplay.d.ts +6 -0
- package/dist/src/ui/components/ConfigInitDisplay.js +38 -0
- package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -0
- package/dist/src/ui/components/ConsentPrompt.d.ts +13 -0
- package/dist/src/ui/components/ConsentPrompt.js +19 -0
- package/dist/src/ui/components/ConsentPrompt.js.map +1 -0
- package/dist/src/ui/components/ConsentPrompt.test.d.ts +6 -0
- package/dist/src/ui/components/ConsentPrompt.test.js +67 -0
- package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -0
- package/dist/src/ui/components/ConsoleSummaryDisplay.js +2 -2
- package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextSummaryDisplay.js +3 -3
- package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.d.ts +4 -1
- package/dist/src/ui/components/ContextUsageDisplay.js +27 -5
- package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.js +2 -2
- package/dist/src/ui/components/DebugProfiler.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.js +7 -7
- package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
- package/dist/src/ui/components/DialogManager.d.ts +12 -0
- package/dist/src/ui/components/DialogManager.js +130 -0
- package/dist/src/ui/components/DialogManager.js.map +1 -0
- package/dist/src/ui/components/EditorSettingsDialog.js +16 -7
- package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/ExitWarning.d.ts +7 -0
- package/dist/src/ui/components/ExitWarning.js +9 -0
- package/dist/src/ui/components/ExitWarning.js.map +1 -0
- package/dist/src/ui/components/FolderTrustDialog.js +22 -9
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +37 -12
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Footer.d.ts +1 -17
- package/dist/src/ui/components/Footer.js +33 -11
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +5 -0
- package/dist/src/ui/components/GeminiRespondingSpinner.js +7 -2
- package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
- package/dist/src/ui/components/Header.js +2 -2
- package/dist/src/ui/components/Header.js.map +1 -1
- package/dist/src/ui/components/Help.d.ts +1 -1
- package/dist/src/ui/components/Help.js +9 -6
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/Help.test.d.ts +6 -0
- package/dist/src/ui/components/Help.test.js +57 -0
- package/dist/src/ui/components/Help.test.js.map +1 -0
- package/dist/src/ui/components/HistoryItemDisplay.d.ts +5 -4
- package/dist/src/ui/components/HistoryItemDisplay.js +13 -4
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.js +90 -9
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
- package/dist/src/ui/components/IdeTrustChangeDialog.d.ts +11 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.js +32 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.js.map +1 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.test.d.ts +6 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.test.js +57 -0
- package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -0
- package/dist/src/ui/components/InputPrompt.d.ts +9 -0
- package/dist/src/ui/components/InputPrompt.js +192 -46
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +2 -2
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.test.js +4 -0
- package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/components/LoopDetectionConfirmation.d.ts +13 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.js +37 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +6 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js +28 -0
- package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -0
- package/dist/src/ui/components/MainContent.d.ts +6 -0
- package/dist/src/ui/components/MainContent.js +28 -0
- package/dist/src/ui/components/MainContent.js.map +1 -0
- package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
- package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.d.ts +11 -0
- package/dist/src/ui/components/ModelDialog.js +42 -0
- package/dist/src/ui/components/ModelDialog.js.map +1 -0
- package/dist/src/ui/components/ModelDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ModelDialog.test.js +158 -0
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -0
- package/dist/src/ui/components/ModelStatsDisplay.js +7 -7
- package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/ModelSwitchDialog.d.ts +3 -1
- package/dist/src/ui/components/ModelSwitchDialog.js +11 -7
- package/dist/src/ui/components/ModelSwitchDialog.js.map +1 -1
- package/dist/src/ui/components/ModelSwitchDialog.test.js +14 -10
- package/dist/src/ui/components/ModelSwitchDialog.test.js.map +1 -1
- package/dist/src/ui/components/Notifications.d.ts +6 -0
- package/dist/src/ui/components/Notifications.js +23 -0
- package/dist/src/ui/components/Notifications.js.map +1 -0
- package/dist/src/ui/components/OpenAIKeyPrompt.js +63 -39
- package/dist/src/ui/components/OpenAIKeyPrompt.js.map +1 -1
- package/dist/src/ui/components/OpenAIKeyPrompt.test.js +8 -1
- package/dist/src/ui/components/OpenAIKeyPrompt.test.js.map +1 -1
- package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +13 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js +48 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.d.ts +6 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +154 -0
- package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -0
- package/dist/src/ui/components/PrepareLabel.d.ts +5 -5
- package/dist/src/ui/components/PrepareLabel.js +67 -11
- package/dist/src/ui/components/PrepareLabel.js.map +1 -1
- package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
- package/dist/src/ui/components/PrepareLabel.test.js +71 -0
- package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
- package/dist/src/ui/components/ProQuotaDialog.d.ts +13 -0
- package/dist/src/ui/components/ProQuotaDialog.js +23 -0
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -0
- package/dist/src/ui/components/ProQuotaDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ProQuotaDialog.test.js +58 -0
- package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -0
- package/dist/src/ui/components/QueuedMessageDisplay.d.ts +9 -0
- package/dist/src/ui/components/QueuedMessageDisplay.js +20 -0
- package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.js +56 -0
- package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -0
- package/dist/src/ui/components/QuitConfirmationDialog.js +4 -0
- package/dist/src/ui/components/QuitConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/QuittingDisplay.d.ts +6 -0
- package/dist/src/ui/components/QuittingDisplay.js +20 -0
- package/dist/src/ui/components/QuittingDisplay.js.map +1 -0
- package/dist/src/ui/components/QwenOAuthProgress.js +7 -6
- package/dist/src/ui/components/QwenOAuthProgress.js.map +1 -1
- package/dist/src/ui/components/QwenOAuthProgress.test.js +84 -13
- package/dist/src/ui/components/QwenOAuthProgress.test.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
- package/dist/src/ui/components/SettingsDialog.js +97 -23
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +474 -84
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.js +5 -2
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/ShellInputPrompt.d.ts +11 -0
- package/dist/src/ui/components/ShellInputPrompt.js +36 -0
- package/dist/src/ui/components/ShellInputPrompt.js.map +1 -0
- package/dist/src/ui/components/ShellModeIndicator.js +2 -2
- package/dist/src/ui/components/ShellModeIndicator.js.map +1 -1
- package/dist/src/ui/components/ShowMoreLines.js +2 -2
- package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.js +6 -6
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/SuggestionsDisplay.d.ts +7 -2
- package/dist/src/ui/components/SuggestionsDisplay.js +17 -17
- package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.js +14 -29
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ThemeDialog.test.js +75 -0
- package/dist/src/ui/components/ThemeDialog.test.js.map +1 -0
- package/dist/src/ui/components/Tips.js +2 -2
- package/dist/src/ui/components/Tips.js.map +1 -1
- package/dist/src/ui/components/ToolStatsDisplay.js +4 -4
- package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/UpdateNotification.js +2 -2
- package/dist/src/ui/components/UpdateNotification.js.map +1 -1
- package/dist/src/ui/components/WelcomeBackDialog.js +2 -0
- package/dist/src/ui/components/WelcomeBackDialog.js.map +1 -1
- package/dist/src/ui/components/WorkspaceMigrationDialog.js +14 -11
- package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.d.ts +1 -2
- package/dist/src/ui/components/messages/CompressionMessage.js +37 -8
- package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/CompressionMessage.test.js +160 -0
- package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/DiffRenderer.d.ts +2 -1
- package/dist/src/ui/components/messages/DiffRenderer.js +14 -22
- package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
- package/dist/src/ui/components/messages/ErrorMessage.js +2 -2
- package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiMessage.js +2 -2
- package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
- package/dist/src/ui/components/messages/InfoMessage.js +2 -2
- package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +56 -21
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +36 -8
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -2
- package/dist/src/ui/components/messages/ToolGroupMessage.js +18 -10
- package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js +17 -15
- package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.d.ts +3 -1
- package/dist/src/ui/components/messages/ToolMessage.js +53 -11
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +34 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/UserMessage.js +3 -4
- package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
- package/dist/src/ui/components/messages/UserShellMessage.js +2 -2
- package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
- package/dist/src/ui/components/messages/WarningMessage.d.ts +11 -0
- package/dist/src/ui/components/messages/WarningMessage.js +10 -0
- package/dist/src/ui/components/messages/WarningMessage.js.map +1 -0
- package/dist/src/ui/components/shared/BaseSelectionList.d.ts +38 -0
- package/dist/src/ui/components/shared/BaseSelectionList.js +72 -0
- package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +6 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.js +376 -0
- package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +35 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +13 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +6 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +79 -0
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -0
- package/dist/src/ui/components/shared/EnumSelector.d.ts +18 -0
- package/dist/src/ui/components/shared/EnumSelector.js +44 -0
- package/dist/src/ui/components/shared/EnumSelector.js.map +1 -0
- package/dist/src/ui/components/shared/EnumSelector.test.d.ts +6 -0
- package/dist/src/ui/components/shared/EnumSelector.test.js +70 -0
- package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -0
- package/dist/src/ui/components/shared/MaxSizedBox.js +2 -2
- package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +2 -3
- package/dist/src/ui/components/shared/RadioButtonSelect.js +10 -105
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js +115 -92
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -1
- package/dist/src/ui/components/shared/ScopeSelector.d.ts +19 -0
- package/dist/src/ui/components/shared/ScopeSelector.js +14 -0
- package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -0
- package/dist/src/ui/components/shared/text-buffer.d.ts +25 -2
- package/dist/src/ui/components/shared/text-buffer.js +296 -187
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/subagents/create/AgentCreationWizard.js +2 -3
- package/dist/src/ui/components/subagents/create/AgentCreationWizard.js.map +1 -1
- package/dist/src/ui/components/subagents/create/ColorSelector.js +3 -2
- package/dist/src/ui/components/subagents/create/ColorSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/create/CreationSummary.js +6 -5
- package/dist/src/ui/components/subagents/create/CreationSummary.js.map +1 -1
- package/dist/src/ui/components/subagents/create/DescriptionInput.js +2 -3
- package/dist/src/ui/components/subagents/create/DescriptionInput.js.map +1 -1
- package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js +1 -0
- package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/create/LocationSelector.js +1 -0
- package/dist/src/ui/components/subagents/create/LocationSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/create/TextEntryStep.js +2 -2
- package/dist/src/ui/components/subagents/create/TextEntryStep.js.map +1 -1
- package/dist/src/ui/components/subagents/create/ToolSelector.js +4 -3
- package/dist/src/ui/components/subagents/create/ToolSelector.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js +4 -4
- package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js +1 -0
- package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +1 -2
- package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +1 -1
- package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js +1 -2
- package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js.map +1 -1
- package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +9 -10
- package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js.map +1 -1
- package/dist/src/ui/components/ums/UMSKeyPrompt.d.ts +2 -2
- package/dist/src/ui/components/ums/UMSKeyPrompt.js +66 -64
- package/dist/src/ui/components/ums/UMSKeyPrompt.js.map +1 -1
- package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
- package/dist/src/ui/components/views/ExtensionsList.js +47 -0
- package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
- package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js +97 -0
- package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
- package/dist/src/ui/components/views/McpStatus.d.ts +27 -0
- package/dist/src/ui/components/views/McpStatus.js +77 -0
- package/dist/src/ui/components/views/McpStatus.js.map +1 -0
- package/dist/src/ui/components/views/McpStatus.test.d.ts +6 -0
- package/dist/src/ui/components/views/McpStatus.test.js +117 -0
- package/dist/src/ui/components/views/McpStatus.test.js.map +1 -0
- package/dist/src/ui/components/views/ToolsList.d.ts +14 -0
- package/dist/src/ui/components/views/ToolsList.js +7 -0
- package/dist/src/ui/components/views/ToolsList.js.map +1 -0
- package/dist/src/ui/components/views/ToolsList.test.d.ts +6 -0
- package/dist/src/ui/components/views/ToolsList.test.js +45 -0
- package/dist/src/ui/components/views/ToolsList.test.js.map +1 -0
- package/dist/src/ui/constants.d.ts +1 -0
- package/dist/src/ui/constants.js +1 -0
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/AppContext.d.ts +11 -0
- package/dist/src/ui/contexts/AppContext.js +15 -0
- package/dist/src/ui/contexts/AppContext.js.map +1 -0
- package/dist/src/ui/contexts/ConfigContext.d.ts +9 -0
- package/dist/src/ui/contexts/ConfigContext.js +16 -0
- package/dist/src/ui/contexts/ConfigContext.js.map +1 -0
- package/dist/src/ui/contexts/KeypressContext.d.ts +3 -0
- package/dist/src/ui/contexts/KeypressContext.js +309 -44
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.test.js +288 -2
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
- package/dist/src/ui/contexts/SessionContext.js +107 -5
- package/dist/src/ui/contexts/SessionContext.js.map +1 -1
- package/dist/src/ui/contexts/ShellFocusContext.d.ts +7 -0
- package/dist/src/ui/contexts/ShellFocusContext.js +9 -0
- package/dist/src/ui/contexts/ShellFocusContext.js.map +1 -0
- package/dist/src/ui/contexts/UIActionsContext.d.ts +45 -0
- package/dist/src/ui/contexts/UIActionsContext.js +21 -0
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -0
- package/dist/src/ui/contexts/UIStateContext.d.ts +117 -0
- package/dist/src/ui/contexts/UIStateContext.js +17 -0
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.js +12 -12
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.test.js +21 -19
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/keyToAnsi.d.ts +15 -0
- package/dist/src/ui/hooks/keyToAnsi.js +67 -0
- package/dist/src/ui/hooks/keyToAnsi.js.map +1 -0
- package/dist/src/ui/hooks/shellCommandProcessor.d.ts +2 -1
- package/dist/src/ui/hooks/shellCommandProcessor.js +65 -15
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.test.js +196 -17
- package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +20 -3
- package/dist/src/ui/hooks/slashCommandProcessor.js +48 -90
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAtCompletion.js +1 -1
- package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +3 -2
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js +20 -18
- package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +43 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useDialogClose.d.ts +0 -2
- package/dist/src/ui/hooks/useDialogClose.js +0 -14
- package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
- package/dist/src/ui/hooks/useEditorSettings.js +1 -1
- package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
- package/dist/src/ui/hooks/useEditorSettings.test.js +4 -4
- package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
- package/dist/src/ui/hooks/useExtensionUpdates.d.ts +21 -0
- package/dist/src/ui/hooks/useExtensionUpdates.js +116 -0
- package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +6 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js +243 -0
- package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
- package/dist/src/ui/hooks/useFocus.js +10 -0
- package/dist/src/ui/hooks/useFocus.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.js +6 -10
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +14 -3
- package/dist/src/ui/hooks/useGeminiStream.js +184 -83
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.js +15 -18
- package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.test.js +49 -53
- package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
- package/dist/src/ui/hooks/useIdeTrustListener.d.ts +16 -0
- package/dist/src/ui/hooks/useIdeTrustListener.js +65 -0
- package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -0
- package/dist/src/ui/hooks/useIdeTrustListener.test.d.ts +6 -0
- package/dist/src/ui/hooks/useIdeTrustListener.test.js +183 -0
- package/dist/src/ui/hooks/useIdeTrustListener.test.js.map +1 -0
- package/dist/src/ui/hooks/useInputHistoryStore.d.ts +19 -0
- package/dist/src/ui/hooks/useInputHistoryStore.js +81 -0
- package/dist/src/ui/hooks/useInputHistoryStore.js.map +1 -0
- package/dist/src/ui/hooks/useInputHistoryStore.test.d.ts +6 -0
- package/dist/src/ui/hooks/useInputHistoryStore.test.js +234 -0
- package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -0
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +2 -2
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/useMemoryMonitor.d.ts +13 -0
- package/dist/src/ui/hooks/useMemoryMonitor.js +28 -0
- package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
- package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +6 -0
- package/dist/src/ui/hooks/useMemoryMonitor.test.js +57 -0
- package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -0
- package/dist/src/ui/hooks/useMessageQueue.d.ts +2 -1
- package/dist/src/ui/hooks/useMessageQueue.js +5 -3
- package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
- package/dist/src/ui/hooks/useMessageQueue.test.js +9 -0
- package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -1
- package/dist/src/ui/hooks/useModelCommand.d.ts +12 -0
- package/dist/src/ui/hooks/useModelCommand.js +21 -0
- package/dist/src/ui/hooks/useModelCommand.js.map +1 -0
- package/dist/src/ui/hooks/useModelCommand.test.d.ts +6 -0
- package/dist/src/ui/hooks/useModelCommand.test.js +35 -0
- package/dist/src/ui/hooks/useModelCommand.test.js.map +1 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +17 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js +78 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.d.ts +6 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +182 -0
- package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -0
- package/dist/src/ui/hooks/usePhraseCycler.d.ts +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.js +11 -8
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +21 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.js +122 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.test.d.ts +6 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js +269 -0
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -0
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
- package/dist/src/ui/hooks/useReactToolScheduler.js +23 -17
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +1 -1
- package/dist/src/ui/hooks/useReverseSearchCompletion.js +67 -20
- package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSelectionList.d.ts +34 -0
- package/dist/src/ui/hooks/useSelectionList.js +245 -0
- package/dist/src/ui/hooks/useSelectionList.js.map +1 -0
- package/dist/src/ui/hooks/useSelectionList.test.d.ts +6 -0
- package/dist/src/ui/hooks/useSelectionList.test.js +701 -0
- package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.js +281 -67
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +4 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +390 -65
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useStateAndRef.d.ts +1 -1
- package/dist/src/ui/hooks/useStateAndRef.js +2 -2
- package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
- package/dist/src/ui/hooks/useThemeCommand.d.ts +1 -1
- package/dist/src/ui/hooks/useThemeCommand.js +3 -14
- package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +64 -291
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/hooks/useVisionAutoSwitch.d.ts +1 -1
- package/dist/src/ui/hooks/useVisionAutoSwitch.js +36 -6
- package/dist/src/ui/hooks/useVisionAutoSwitch.js.map +1 -1
- package/dist/src/ui/hooks/useVisionAutoSwitch.test.js +3 -3
- package/dist/src/ui/hooks/useVisionAutoSwitch.test.js.map +1 -1
- package/dist/src/ui/hooks/useWelcomeBack.js +2 -2
- package/dist/src/ui/hooks/useWelcomeBack.js.map +1 -1
- package/dist/src/ui/hooks/useWorkspaceMigration.js +2 -1
- package/dist/src/ui/hooks/useWorkspaceMigration.js.map +1 -1
- package/dist/src/ui/keyMatchers.test.js +17 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -1
- package/dist/src/ui/layouts/DefaultAppLayout.d.ts +9 -0
- package/dist/src/ui/layouts/DefaultAppLayout.js +13 -0
- package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -0
- package/dist/src/ui/layouts/ScreenReaderAppLayout.d.ts +7 -0
- package/dist/src/ui/layouts/ScreenReaderAppLayout.js +14 -0
- package/dist/src/ui/layouts/ScreenReaderAppLayout.js.map +1 -0
- package/dist/src/ui/models/availableModels.d.ts +11 -5
- package/dist/src/ui/models/availableModels.js +89 -3
- package/dist/src/ui/models/availableModels.js.map +1 -1
- package/dist/src/ui/noninteractive/nonInteractiveUi.d.ts +12 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.js +28 -0
- package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -0
- package/dist/src/ui/state/extensions.d.ts +42 -0
- package/dist/src/ui/state/extensions.js +62 -0
- package/dist/src/ui/state/extensions.js.map +1 -0
- package/dist/src/ui/themes/ayu.js +1 -1
- package/dist/src/ui/themes/dracula.js +2 -2
- package/dist/src/ui/themes/github-dark.js +1 -1
- package/dist/src/ui/themes/theme.js +19 -19
- package/dist/src/ui/themes/theme.js.map +1 -1
- package/dist/src/ui/types.d.ts +79 -3
- package/dist/src/ui/types.js +14 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/CodeColorizer.js +3 -2
- package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +7 -7
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.js +11 -11
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +95 -87
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/TableRenderer.js +4 -4
- package/dist/src/ui/utils/TableRenderer.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.js +5 -6
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
- package/dist/src/ui/utils/displayUtils.d.ts +1 -0
- package/dist/src/ui/utils/displayUtils.js +7 -4
- package/dist/src/ui/utils/displayUtils.js.map +1 -1
- package/dist/src/ui/utils/displayUtils.test.js +37 -18
- package/dist/src/ui/utils/displayUtils.test.js.map +1 -1
- package/dist/src/ui/utils/highlight.d.ts +11 -0
- package/dist/src/ui/utils/highlight.js +78 -0
- package/dist/src/ui/utils/highlight.js.map +1 -0
- package/dist/src/ui/utils/highlight.test.d.ts +6 -0
- package/dist/src/ui/utils/highlight.test.js +120 -0
- package/dist/src/ui/utils/highlight.test.js.map +1 -0
- package/dist/src/ui/utils/kittyProtocolDetector.js +39 -29
- package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
- package/dist/src/ui/utils/platformConstants.d.ts +24 -1
- package/dist/src/ui/utils/platformConstants.js +26 -1
- package/dist/src/ui/utils/platformConstants.js.map +1 -1
- package/dist/src/ui/utils/textUtils.d.ts +10 -0
- package/dist/src/ui/utils/textUtils.js +108 -3
- package/dist/src/ui/utils/textUtils.js.map +1 -1
- package/dist/src/ui/utils/textUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/textUtils.test.js +132 -0
- package/dist/src/ui/utils/textUtils.test.js.map +1 -0
- package/dist/src/ui/utils/updateCheck.d.ts +1 -0
- package/dist/src/ui/utils/updateCheck.js +53 -2
- package/dist/src/ui/utils/updateCheck.js.map +1 -1
- package/dist/src/utils/commands.d.ts +20 -0
- package/dist/src/utils/commands.js +53 -0
- package/dist/src/utils/commands.js.map +1 -0
- package/dist/src/utils/commands.test.d.ts +6 -0
- package/dist/src/utils/commands.test.js +115 -0
- package/dist/src/utils/commands.test.js.map +1 -0
- package/dist/src/utils/commentJson.d.ts +9 -0
- package/dist/src/utils/commentJson.js +48 -0
- package/dist/src/utils/commentJson.js.map +1 -0
- package/dist/src/utils/commentJson.test.d.ts +6 -0
- package/dist/src/utils/commentJson.test.js +146 -0
- package/dist/src/utils/commentJson.test.js.map +1 -0
- package/dist/src/utils/deepMerge.d.ts +9 -0
- package/dist/src/utils/deepMerge.js +58 -0
- package/dist/src/utils/deepMerge.js.map +1 -0
- package/dist/src/utils/deepMerge.test.d.ts +6 -0
- package/dist/src/utils/deepMerge.test.js +143 -0
- package/dist/src/utils/deepMerge.test.js.map +1 -0
- package/dist/src/utils/envVarResolver.d.ts +39 -0
- package/dist/src/utils/envVarResolver.js +97 -0
- package/dist/src/utils/envVarResolver.js.map +1 -0
- package/dist/src/utils/envVarResolver.test.d.ts +6 -0
- package/dist/src/utils/envVarResolver.test.js +221 -0
- package/dist/src/utils/envVarResolver.test.js.map +1 -0
- package/dist/src/utils/errors.d.ts +21 -0
- package/dist/src/utils/errors.js +93 -0
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/errors.test.d.ts +6 -0
- package/dist/src/utils/errors.test.js +303 -0
- package/dist/src/utils/errors.test.js.map +1 -0
- package/dist/src/utils/events.d.ts +2 -1
- package/dist/src/utils/events.js +1 -0
- package/dist/src/utils/events.js.map +1 -1
- package/dist/src/utils/handleAutoUpdate.js +6 -3
- package/dist/src/utils/handleAutoUpdate.js.map +1 -1
- package/dist/src/utils/math.d.ts +13 -0
- package/dist/src/utils/math.js +14 -0
- package/dist/src/utils/math.js.map +1 -0
- package/dist/src/utils/processUtils.d.ts +13 -0
- package/dist/src/utils/processUtils.js +18 -0
- package/dist/src/utils/processUtils.js.map +1 -0
- package/dist/src/utils/processUtils.test.d.ts +6 -0
- package/dist/src/utils/processUtils.test.js +20 -0
- package/dist/src/utils/processUtils.test.js.map +1 -0
- package/dist/src/utils/relaunch.d.ts +7 -0
- package/dist/src/utils/relaunch.js +57 -0
- package/dist/src/utils/relaunch.js.map +1 -0
- package/dist/src/utils/relaunch.test.d.ts +6 -0
- package/dist/src/utils/relaunch.test.js +273 -0
- package/dist/src/utils/relaunch.test.js.map +1 -0
- package/dist/src/utils/sandbox.d.ts +1 -1
- package/dist/src/utils/sandbox.js +42 -17
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/settingsUtils.d.ts +16 -6
- package/dist/src/utils/settingsUtils.js +35 -25
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/settingsUtils.test.js +455 -158
- package/dist/src/utils/settingsUtils.test.js.map +1 -1
- package/dist/src/utils/startupWarnings.js +1 -1
- package/dist/src/utils/startupWarnings.js.map +1 -1
- package/dist/src/utils/userStartupWarnings.d.ts +7 -1
- package/dist/src/utils/userStartupWarnings.js +21 -6
- package/dist/src/utils/userStartupWarnings.js.map +1 -1
- package/dist/src/utils/userStartupWarnings.test.js +26 -5
- package/dist/src/utils/userStartupWarnings.test.js.map +1 -1
- package/dist/src/utils/windowTitle.d.ts +12 -0
- package/dist/src/utils/windowTitle.js +19 -0
- package/dist/src/utils/windowTitle.js.map +1 -0
- package/dist/src/utils/windowTitle.test.d.ts +6 -0
- package/dist/src/utils/windowTitle.test.js +49 -0
- package/dist/src/utils/windowTitle.test.js.map +1 -0
- package/dist/src/validateNonInterActiveAuth.d.ts +4 -2
- package/dist/src/validateNonInterActiveAuth.js +36 -21
- package/dist/src/validateNonInterActiveAuth.js.map +1 -1
- package/dist/src/zed-integration/fileSystemService.d.ts +1 -0
- package/dist/src/zed-integration/fileSystemService.js +3 -0
- package/dist/src/zed-integration/fileSystemService.js.map +1 -1
- package/dist/src/zed-integration/schema.d.ts +282 -282
- package/dist/src/zed-integration/zedIntegration.d.ts +8 -1
- package/dist/src/zed-integration/zedIntegration.js +34 -30
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +16 -11
- package/dist/src/ui/commands/privacyCommand.js.map +0 -1
- package/dist/src/ui/components/AuthDialog.js.map +0 -1
- package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
- package/dist/src/ui/components/AuthInProgress.js.map +0 -1
- package/dist/src/ui/components/ModelSelectionDialog.d.ts +0 -14
- package/dist/src/ui/components/ModelSelectionDialog.js +0 -26
- package/dist/src/ui/components/ModelSelectionDialog.js.map +0 -1
- package/dist/src/ui/components/ModelSelectionDialog.test.js +0 -124
- package/dist/src/ui/components/ModelSelectionDialog.test.js.map +0 -1
- package/dist/src/ui/hooks/useAuthCommand.d.ts +0 -14
- package/dist/src/ui/hooks/useAuthCommand.js +0 -66
- package/dist/src/ui/hooks/useAuthCommand.js.map +0 -1
- package/dist/src/ui/hooks/usePrivacySettings.d.ts +0 -16
- package/dist/src/ui/hooks/usePrivacySettings.js +0 -119
- package/dist/src/ui/hooks/usePrivacySettings.js.map +0 -1
- package/dist/src/ui/hooks/usePrivacySettings.test.js +0 -154
- package/dist/src/ui/hooks/usePrivacySettings.test.js.map +0 -1
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.d.ts +0 -12
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +0 -41
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +0 -1
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.d.ts +0 -10
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +0 -18
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +0 -1
- package/dist/src/ui/privacy/GeminiPrivacyNotice.d.ts +0 -10
- package/dist/src/ui/privacy/GeminiPrivacyNotice.js +0 -18
- package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +0 -1
- package/dist/src/ui/privacy/PrivacyNotice.d.ts +0 -12
- package/dist/src/ui/privacy/PrivacyNotice.js +0 -25
- package/dist/src/ui/privacy/PrivacyNotice.js.map +0 -1
- /package/dist/src/{ui/components/AuthDialog.test.d.ts → commands/extensions/new.test.d.ts} +0 -0
- /package/dist/src/{ui/hooks/usePrivacySettings.test.d.ts → config/extensions/extensionEnablement.test.d.ts} +0 -0
- /package/dist/src/ui/{components → auth}/AuthInProgress.d.ts +0 -0
|
@@ -7,65 +7,111 @@ import * as fs from 'node:fs';
|
|
|
7
7
|
import * as path from 'node:path';
|
|
8
8
|
import { homedir, platform } from 'node:os';
|
|
9
9
|
import * as dotenv from 'dotenv';
|
|
10
|
-
import
|
|
10
|
+
import process from 'node:process';
|
|
11
|
+
import { FatalConfigError, QWEN_DIR, getErrorMessage, Storage, } from '@umsai/ums-code-core';
|
|
11
12
|
import stripJsonComments from 'strip-json-comments';
|
|
12
13
|
import { DefaultLight } from '../ui/themes/default-light.js';
|
|
13
14
|
import { DefaultDark } from '../ui/themes/default.js';
|
|
14
15
|
import { isWorkspaceTrusted } from './trustedFolders.js';
|
|
15
|
-
import {
|
|
16
|
+
import { getSettingsSchema, } from './settingsSchema.js';
|
|
17
|
+
import { resolveEnvVarsInObject } from '../utils/envVarResolver.js';
|
|
18
|
+
import { customDeepMerge } from '../utils/deepMerge.js';
|
|
19
|
+
import { updateSettingsFilePreservingFormat } from '../utils/commentJson.js';
|
|
20
|
+
import { disableExtension } from './extension.js';
|
|
21
|
+
function getMergeStrategyForPath(path) {
|
|
22
|
+
let current = undefined;
|
|
23
|
+
let currentSchema = getSettingsSchema();
|
|
24
|
+
for (const key of path) {
|
|
25
|
+
if (!currentSchema || !currentSchema[key]) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
current = currentSchema[key];
|
|
29
|
+
currentSchema = current.properties;
|
|
30
|
+
}
|
|
31
|
+
return current?.mergeStrategy;
|
|
32
|
+
}
|
|
16
33
|
export const SETTINGS_DIRECTORY_NAME = '.ums';
|
|
17
34
|
export const USER_SETTINGS_PATH = Storage.getGlobalSettingsPath();
|
|
18
35
|
export const USER_SETTINGS_DIR = path.dirname(USER_SETTINGS_PATH);
|
|
19
36
|
export const DEFAULT_EXCLUDED_ENV_VARS = ['DEBUG', 'DEBUG_MODE'];
|
|
20
|
-
const MIGRATE_V2_OVERWRITE =
|
|
37
|
+
const MIGRATE_V2_OVERWRITE = true;
|
|
38
|
+
// Settings version to track migration state
|
|
39
|
+
export const SETTINGS_VERSION = 2;
|
|
40
|
+
export const SETTINGS_VERSION_KEY = '$version';
|
|
21
41
|
const MIGRATION_MAP = {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
42
|
+
accessibility: 'ui.accessibility',
|
|
43
|
+
allowedTools: 'tools.allowed',
|
|
44
|
+
allowMCPServers: 'mcp.allowed',
|
|
45
|
+
autoAccept: 'tools.autoAccept',
|
|
46
|
+
autoConfigureMaxOldSpaceSize: 'advanced.autoConfigureMemory',
|
|
47
|
+
bugCommand: 'advanced.bugCommand',
|
|
48
|
+
chatCompression: 'model.chatCompression',
|
|
26
49
|
checkpointing: 'general.checkpointing',
|
|
27
|
-
|
|
50
|
+
coreTools: 'tools.core',
|
|
51
|
+
contextFileName: 'context.fileName',
|
|
28
52
|
customThemes: 'ui.customThemes',
|
|
53
|
+
customWittyPhrases: 'ui.customWittyPhrases',
|
|
54
|
+
debugKeystrokeLogging: 'general.debugKeystrokeLogging',
|
|
55
|
+
disableAutoUpdate: 'general.disableAutoUpdate',
|
|
56
|
+
disableUpdateNag: 'general.disableUpdateNag',
|
|
57
|
+
dnsResolutionOrder: 'advanced.dnsResolutionOrder',
|
|
58
|
+
enablePromptCompletion: 'general.enablePromptCompletion',
|
|
59
|
+
enforcedAuthType: 'security.auth.enforcedType',
|
|
60
|
+
excludeTools: 'tools.exclude',
|
|
61
|
+
excludeMCPServers: 'mcp.excluded',
|
|
62
|
+
excludedProjectEnvVars: 'advanced.excludedEnvVars',
|
|
63
|
+
extensionManagement: 'experimental.extensionManagement',
|
|
64
|
+
extensions: 'extensions',
|
|
65
|
+
fileFiltering: 'context.fileFiltering',
|
|
66
|
+
folderTrustFeature: 'security.folderTrust.featureEnabled',
|
|
67
|
+
folderTrust: 'security.folderTrust.enabled',
|
|
68
|
+
hasSeenIdeIntegrationNudge: 'ide.hasSeenNudge',
|
|
29
69
|
hideWindowTitle: 'ui.hideWindowTitle',
|
|
70
|
+
showStatusInTitle: 'ui.showStatusInTitle',
|
|
30
71
|
hideTips: 'ui.hideTips',
|
|
31
72
|
hideBanner: 'ui.hideBanner',
|
|
32
73
|
hideFooter: 'ui.hideFooter',
|
|
74
|
+
hideCWD: 'ui.footer.hideCWD',
|
|
75
|
+
hideSandboxStatus: 'ui.footer.hideSandboxStatus',
|
|
76
|
+
hideModelInfo: 'ui.footer.hideModelInfo',
|
|
77
|
+
hideContextSummary: 'ui.hideContextSummary',
|
|
33
78
|
showMemoryUsage: 'ui.showMemoryUsage',
|
|
34
79
|
showLineNumbers: 'ui.showLineNumbers',
|
|
35
|
-
|
|
80
|
+
showCitations: 'ui.showCitations',
|
|
36
81
|
ideMode: 'ide.enabled',
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
telemetry: 'telemetry',
|
|
40
|
-
model: 'model.name',
|
|
82
|
+
includeDirectories: 'context.includeDirectories',
|
|
83
|
+
loadMemoryFromIncludeDirectories: 'context.loadFromIncludeDirectories',
|
|
41
84
|
maxSessionTurns: 'model.maxSessionTurns',
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
skipNextSpeakerCheck: 'model.skipNextSpeakerCheck',
|
|
45
|
-
contextFileName: 'context.fileName',
|
|
85
|
+
mcpServers: 'mcpServers',
|
|
86
|
+
mcpServerCommand: 'mcp.serverCommand',
|
|
46
87
|
memoryImportFormat: 'context.importFormat',
|
|
47
88
|
memoryDiscoveryMaxDirs: 'context.discoveryMaxDirs',
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
fileFiltering: 'context.fileFiltering',
|
|
89
|
+
model: 'model.name',
|
|
90
|
+
preferredEditor: 'general.preferredEditor',
|
|
51
91
|
sandbox: 'tools.sandbox',
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
92
|
+
selectedAuthType: 'security.auth.selectedType',
|
|
93
|
+
shouldUseNodePtyShell: 'tools.shell.enableInteractiveShell',
|
|
94
|
+
shellPager: 'tools.shell.pager',
|
|
95
|
+
shellShowColor: 'tools.shell.showColor',
|
|
96
|
+
skipNextSpeakerCheck: 'model.skipNextSpeakerCheck',
|
|
97
|
+
summarizeToolOutput: 'model.summarizeToolOutput',
|
|
98
|
+
telemetry: 'telemetry',
|
|
99
|
+
theme: 'ui.theme',
|
|
56
100
|
toolDiscoveryCommand: 'tools.discoveryCommand',
|
|
57
101
|
toolCallCommand: 'tools.callCommand',
|
|
58
|
-
|
|
59
|
-
allowMCPServers: 'mcp.allowed',
|
|
60
|
-
excludeMCPServers: 'mcp.excluded',
|
|
61
|
-
folderTrustFeature: 'security.folderTrust.featureEnabled',
|
|
62
|
-
folderTrust: 'security.folderTrust.enabled',
|
|
63
|
-
selectedAuthType: 'security.auth.selectedType',
|
|
102
|
+
usageStatisticsEnabled: 'privacy.usageStatisticsEnabled',
|
|
64
103
|
useExternalAuth: 'security.auth.useExternal',
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
104
|
+
useRipgrep: 'tools.useRipgrep',
|
|
105
|
+
vimMode: 'general.vimMode',
|
|
106
|
+
enableWelcomeBack: 'ui.enableWelcomeBack',
|
|
107
|
+
approvalMode: 'tools.approvalMode',
|
|
108
|
+
sessionTokenLimit: 'model.sessionTokenLimit',
|
|
109
|
+
contentGenerator: 'model.generationConfig',
|
|
110
|
+
skipLoopDetection: 'model.skipLoopDetection',
|
|
111
|
+
enableOpenAILogging: 'model.enableOpenAILogging',
|
|
112
|
+
tavilyApiKey: 'advanced.tavilyApiKey',
|
|
113
|
+
vlmSwitchMode: 'experimental.vlmSwitchMode',
|
|
114
|
+
visionModelPreview: 'experimental.visionModelPreview',
|
|
69
115
|
};
|
|
70
116
|
export function getSystemSettingsPath() {
|
|
71
117
|
if (process.env['QWEN_CODE_SYSTEM_SETTINGS_PATH']) {
|
|
@@ -115,8 +161,31 @@ function setNestedProperty(obj, path, value) {
|
|
|
115
161
|
}
|
|
116
162
|
current[lastKey] = value;
|
|
117
163
|
}
|
|
118
|
-
function needsMigration(settings) {
|
|
119
|
-
|
|
164
|
+
export function needsMigration(settings) {
|
|
165
|
+
// Check version field first - if present and matches current version, no migration needed
|
|
166
|
+
if (SETTINGS_VERSION_KEY in settings) {
|
|
167
|
+
const version = settings[SETTINGS_VERSION_KEY];
|
|
168
|
+
if (typeof version === 'number' && version >= SETTINGS_VERSION) {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Fallback to legacy detection: A file needs migration if it contains any
|
|
173
|
+
// top-level key that is moved to a nested location in V2.
|
|
174
|
+
const hasV1Keys = Object.entries(MIGRATION_MAP).some(([v1Key, v2Path]) => {
|
|
175
|
+
if (v1Key === v2Path || !(v1Key in settings)) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
// If a key exists that is both a V1 key and a V2 container (like 'model'),
|
|
179
|
+
// we need to check the type. If it's an object, it's a V2 container and not
|
|
180
|
+
// a V1 key that needs migration.
|
|
181
|
+
if (KNOWN_V2_CONTAINERS.has(v1Key) &&
|
|
182
|
+
typeof settings[v1Key] === 'object' &&
|
|
183
|
+
settings[v1Key] !== null) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
return true;
|
|
187
|
+
});
|
|
188
|
+
return hasV1Keys;
|
|
120
189
|
}
|
|
121
190
|
function migrateSettingsToV2(flatSettings) {
|
|
122
191
|
if (!needsMigration(flatSettings)) {
|
|
@@ -126,6 +195,18 @@ function migrateSettingsToV2(flatSettings) {
|
|
|
126
195
|
const flatKeys = new Set(Object.keys(flatSettings));
|
|
127
196
|
for (const [oldKey, newPath] of Object.entries(MIGRATION_MAP)) {
|
|
128
197
|
if (flatKeys.has(oldKey)) {
|
|
198
|
+
// Safety check: If this key is a V2 container (like 'model') and it's
|
|
199
|
+
// already an object, it's likely already in V2 format. Skip migration
|
|
200
|
+
// to prevent double-nesting (e.g., model.name.name).
|
|
201
|
+
if (KNOWN_V2_CONTAINERS.has(oldKey) &&
|
|
202
|
+
typeof flatSettings[oldKey] === 'object' &&
|
|
203
|
+
flatSettings[oldKey] !== null &&
|
|
204
|
+
!Array.isArray(flatSettings[oldKey])) {
|
|
205
|
+
// This is already a V2 container, carry it over as-is
|
|
206
|
+
v2Settings[oldKey] = flatSettings[oldKey];
|
|
207
|
+
flatKeys.delete(oldKey);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
129
210
|
setNestedProperty(v2Settings, newPath, flatSettings[oldKey]);
|
|
130
211
|
flatKeys.delete(oldKey);
|
|
131
212
|
}
|
|
@@ -137,8 +218,23 @@ function migrateSettingsToV2(flatSettings) {
|
|
|
137
218
|
}
|
|
138
219
|
// Carry over any unrecognized keys
|
|
139
220
|
for (const remainingKey of flatKeys) {
|
|
140
|
-
|
|
221
|
+
const existingValue = v2Settings[remainingKey];
|
|
222
|
+
const newValue = flatSettings[remainingKey];
|
|
223
|
+
if (typeof existingValue === 'object' &&
|
|
224
|
+
existingValue !== null &&
|
|
225
|
+
!Array.isArray(existingValue) &&
|
|
226
|
+
typeof newValue === 'object' &&
|
|
227
|
+
newValue !== null &&
|
|
228
|
+
!Array.isArray(newValue)) {
|
|
229
|
+
const pathAwareGetStrategy = (path) => getMergeStrategyForPath([remainingKey, ...path]);
|
|
230
|
+
v2Settings[remainingKey] = customDeepMerge(pathAwareGetStrategy, {}, newValue, existingValue);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
v2Settings[remainingKey] = newValue;
|
|
234
|
+
}
|
|
141
235
|
}
|
|
236
|
+
// Set version field to indicate this is a V2 settings file
|
|
237
|
+
v2Settings[SETTINGS_VERSION_KEY] = SETTINGS_VERSION;
|
|
142
238
|
return v2Settings;
|
|
143
239
|
}
|
|
144
240
|
function getNestedProperty(obj, path) {
|
|
@@ -172,6 +268,10 @@ export function migrateSettingsToV1(v2Settings) {
|
|
|
172
268
|
}
|
|
173
269
|
// Carry over any unrecognized keys
|
|
174
270
|
for (const remainingKey of v2Keys) {
|
|
271
|
+
// Skip the version field - it's only for V2 format
|
|
272
|
+
if (remainingKey === SETTINGS_VERSION_KEY) {
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
175
275
|
const value = v2Settings[remainingKey];
|
|
176
276
|
if (value === undefined) {
|
|
177
277
|
continue;
|
|
@@ -190,180 +290,21 @@ export function migrateSettingsToV1(v2Settings) {
|
|
|
190
290
|
}
|
|
191
291
|
function mergeSettings(system, systemDefaults, user, workspace, isTrusted) {
|
|
192
292
|
const safeWorkspace = isTrusted ? workspace : {};
|
|
193
|
-
// folderTrust is not supported at workspace level.
|
|
194
|
-
const { security, ...restOfWorkspace } = safeWorkspace;
|
|
195
|
-
const safeWorkspaceWithoutFolderTrust = security
|
|
196
|
-
? {
|
|
197
|
-
...restOfWorkspace,
|
|
198
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
199
|
-
security: (({ folderTrust, ...rest }) => rest)(security),
|
|
200
|
-
}
|
|
201
|
-
: {
|
|
202
|
-
...restOfWorkspace,
|
|
203
|
-
security: {},
|
|
204
|
-
};
|
|
205
293
|
// Settings are merged with the following precedence (last one wins for
|
|
206
294
|
// single values):
|
|
207
295
|
// 1. System Defaults
|
|
208
296
|
// 2. User Settings
|
|
209
297
|
// 3. Workspace Settings
|
|
210
298
|
// 4. System Settings (as overrides)
|
|
211
|
-
//
|
|
212
|
-
|
|
213
|
-
// are concatenated. For objects (e.g., customThemes), they are merged.
|
|
214
|
-
return {
|
|
215
|
-
...systemDefaults,
|
|
216
|
-
...user,
|
|
217
|
-
...safeWorkspaceWithoutFolderTrust,
|
|
218
|
-
...system,
|
|
219
|
-
general: {
|
|
220
|
-
...(systemDefaults.general || {}),
|
|
221
|
-
...(user.general || {}),
|
|
222
|
-
...(safeWorkspaceWithoutFolderTrust.general || {}),
|
|
223
|
-
...(system.general || {}),
|
|
224
|
-
},
|
|
225
|
-
ui: {
|
|
226
|
-
...(systemDefaults.ui || {}),
|
|
227
|
-
...(user.ui || {}),
|
|
228
|
-
...(safeWorkspaceWithoutFolderTrust.ui || {}),
|
|
229
|
-
...(system.ui || {}),
|
|
230
|
-
customThemes: {
|
|
231
|
-
...(systemDefaults.ui?.customThemes || {}),
|
|
232
|
-
...(user.ui?.customThemes || {}),
|
|
233
|
-
...(safeWorkspaceWithoutFolderTrust.ui?.customThemes || {}),
|
|
234
|
-
...(system.ui?.customThemes || {}),
|
|
235
|
-
},
|
|
236
|
-
},
|
|
237
|
-
ide: {
|
|
238
|
-
...(systemDefaults.ide || {}),
|
|
239
|
-
...(user.ide || {}),
|
|
240
|
-
...(safeWorkspaceWithoutFolderTrust.ide || {}),
|
|
241
|
-
...(system.ide || {}),
|
|
242
|
-
},
|
|
243
|
-
privacy: {
|
|
244
|
-
...(systemDefaults.privacy || {}),
|
|
245
|
-
...(user.privacy || {}),
|
|
246
|
-
...(safeWorkspaceWithoutFolderTrust.privacy || {}),
|
|
247
|
-
...(system.privacy || {}),
|
|
248
|
-
},
|
|
249
|
-
telemetry: {
|
|
250
|
-
...(systemDefaults.telemetry || {}),
|
|
251
|
-
...(user.telemetry || {}),
|
|
252
|
-
...(safeWorkspaceWithoutFolderTrust.telemetry || {}),
|
|
253
|
-
...(system.telemetry || {}),
|
|
254
|
-
},
|
|
255
|
-
security: {
|
|
256
|
-
...(systemDefaults.security || {}),
|
|
257
|
-
...(user.security || {}),
|
|
258
|
-
...(safeWorkspaceWithoutFolderTrust.security || {}),
|
|
259
|
-
...(system.security || {}),
|
|
260
|
-
},
|
|
261
|
-
mcp: {
|
|
262
|
-
...(systemDefaults.mcp || {}),
|
|
263
|
-
...(user.mcp || {}),
|
|
264
|
-
...(safeWorkspaceWithoutFolderTrust.mcp || {}),
|
|
265
|
-
...(system.mcp || {}),
|
|
266
|
-
},
|
|
267
|
-
mcpServers: {
|
|
268
|
-
...(systemDefaults.mcpServers || {}),
|
|
269
|
-
...(user.mcpServers || {}),
|
|
270
|
-
...(safeWorkspaceWithoutFolderTrust.mcpServers || {}),
|
|
271
|
-
...(system.mcpServers || {}),
|
|
272
|
-
},
|
|
273
|
-
tools: {
|
|
274
|
-
...(systemDefaults.tools || {}),
|
|
275
|
-
...(user.tools || {}),
|
|
276
|
-
...(safeWorkspaceWithoutFolderTrust.tools || {}),
|
|
277
|
-
...(system.tools || {}),
|
|
278
|
-
},
|
|
279
|
-
context: {
|
|
280
|
-
...(systemDefaults.context || {}),
|
|
281
|
-
...(user.context || {}),
|
|
282
|
-
...(safeWorkspaceWithoutFolderTrust.context || {}),
|
|
283
|
-
...(system.context || {}),
|
|
284
|
-
includeDirectories: [
|
|
285
|
-
...(systemDefaults.context?.includeDirectories || []),
|
|
286
|
-
...(user.context?.includeDirectories || []),
|
|
287
|
-
...(safeWorkspaceWithoutFolderTrust.context?.includeDirectories || []),
|
|
288
|
-
...(system.context?.includeDirectories || []),
|
|
289
|
-
],
|
|
290
|
-
},
|
|
291
|
-
model: {
|
|
292
|
-
...(systemDefaults.model || {}),
|
|
293
|
-
...(user.model || {}),
|
|
294
|
-
...(safeWorkspaceWithoutFolderTrust.model || {}),
|
|
295
|
-
...(system.model || {}),
|
|
296
|
-
chatCompression: {
|
|
297
|
-
...(systemDefaults.model?.chatCompression || {}),
|
|
298
|
-
...(user.model?.chatCompression || {}),
|
|
299
|
-
...(safeWorkspaceWithoutFolderTrust.model?.chatCompression || {}),
|
|
300
|
-
...(system.model?.chatCompression || {}),
|
|
301
|
-
},
|
|
302
|
-
},
|
|
303
|
-
advanced: {
|
|
304
|
-
...(systemDefaults.advanced || {}),
|
|
305
|
-
...(user.advanced || {}),
|
|
306
|
-
...(safeWorkspaceWithoutFolderTrust.advanced || {}),
|
|
307
|
-
...(system.advanced || {}),
|
|
308
|
-
excludedEnvVars: [
|
|
309
|
-
...new Set([
|
|
310
|
-
...(systemDefaults.advanced?.excludedEnvVars || []),
|
|
311
|
-
...(user.advanced?.excludedEnvVars || []),
|
|
312
|
-
...(safeWorkspaceWithoutFolderTrust.advanced?.excludedEnvVars || []),
|
|
313
|
-
...(system.advanced?.excludedEnvVars || []),
|
|
314
|
-
]),
|
|
315
|
-
],
|
|
316
|
-
},
|
|
317
|
-
experimental: {
|
|
318
|
-
...(systemDefaults.experimental || {}),
|
|
319
|
-
...(user.experimental || {}),
|
|
320
|
-
...(safeWorkspaceWithoutFolderTrust.experimental || {}),
|
|
321
|
-
...(system.experimental || {}),
|
|
322
|
-
},
|
|
323
|
-
contentGenerator: {
|
|
324
|
-
...(systemDefaults.contentGenerator || {}),
|
|
325
|
-
...(user.contentGenerator || {}),
|
|
326
|
-
...(safeWorkspaceWithoutFolderTrust.contentGenerator || {}),
|
|
327
|
-
...(system.contentGenerator || {}),
|
|
328
|
-
},
|
|
329
|
-
systemPromptMappings: {
|
|
330
|
-
...(systemDefaults.systemPromptMappings || {}),
|
|
331
|
-
...(user.systemPromptMappings || {}),
|
|
332
|
-
...(safeWorkspaceWithoutFolderTrust.systemPromptMappings || {}),
|
|
333
|
-
...(system.systemPromptMappings || {}),
|
|
334
|
-
},
|
|
335
|
-
extensions: {
|
|
336
|
-
...(systemDefaults.extensions || {}),
|
|
337
|
-
...(user.extensions || {}),
|
|
338
|
-
...(safeWorkspaceWithoutFolderTrust.extensions || {}),
|
|
339
|
-
...(system.extensions || {}),
|
|
340
|
-
disabled: [
|
|
341
|
-
...new Set([
|
|
342
|
-
...(systemDefaults.extensions?.disabled || []),
|
|
343
|
-
...(user.extensions?.disabled || []),
|
|
344
|
-
...(safeWorkspaceWithoutFolderTrust.extensions?.disabled || []),
|
|
345
|
-
...(system.extensions?.disabled || []),
|
|
346
|
-
]),
|
|
347
|
-
],
|
|
348
|
-
workspacesWithMigrationNudge: [
|
|
349
|
-
...new Set([
|
|
350
|
-
...(systemDefaults.extensions?.workspacesWithMigrationNudge || []),
|
|
351
|
-
...(user.extensions?.workspacesWithMigrationNudge || []),
|
|
352
|
-
...(safeWorkspaceWithoutFolderTrust.extensions
|
|
353
|
-
?.workspacesWithMigrationNudge || []),
|
|
354
|
-
...(system.extensions?.workspacesWithMigrationNudge || []),
|
|
355
|
-
]),
|
|
356
|
-
],
|
|
357
|
-
},
|
|
358
|
-
};
|
|
299
|
+
return customDeepMerge(getMergeStrategyForPath, {}, // Start with an empty object
|
|
300
|
+
systemDefaults, user, safeWorkspace, system);
|
|
359
301
|
}
|
|
360
302
|
export class LoadedSettings {
|
|
361
|
-
constructor(system, systemDefaults, user, workspace,
|
|
303
|
+
constructor(system, systemDefaults, user, workspace, isTrusted, migratedInMemorScopes) {
|
|
362
304
|
this.system = system;
|
|
363
305
|
this.systemDefaults = systemDefaults;
|
|
364
306
|
this.user = user;
|
|
365
307
|
this.workspace = workspace;
|
|
366
|
-
this.errors = errors;
|
|
367
308
|
this.isTrusted = isTrusted;
|
|
368
309
|
this.migratedInMemorScopes = migratedInMemorScopes;
|
|
369
310
|
this._merged = this.computeMergedSettings();
|
|
@@ -372,7 +313,6 @@ export class LoadedSettings {
|
|
|
372
313
|
systemDefaults;
|
|
373
314
|
user;
|
|
374
315
|
workspace;
|
|
375
|
-
errors;
|
|
376
316
|
isTrusted;
|
|
377
317
|
migratedInMemorScopes;
|
|
378
318
|
_merged;
|
|
@@ -399,49 +339,16 @@ export class LoadedSettings {
|
|
|
399
339
|
setValue(scope, key, value) {
|
|
400
340
|
const settingsFile = this.forScope(scope);
|
|
401
341
|
setNestedProperty(settingsFile.settings, key, value);
|
|
342
|
+
setNestedProperty(settingsFile.originalSettings, key, value);
|
|
402
343
|
this._merged = this.computeMergedSettings();
|
|
403
344
|
saveSettings(settingsFile);
|
|
404
345
|
}
|
|
405
346
|
}
|
|
406
|
-
function resolveEnvVarsInString(value) {
|
|
407
|
-
const envVarRegex = /\$(?:(\w+)|{([^}]+)})/g; // Find $VAR_NAME or ${VAR_NAME}
|
|
408
|
-
return value.replace(envVarRegex, (match, varName1, varName2) => {
|
|
409
|
-
const varName = varName1 || varName2;
|
|
410
|
-
if (process && process.env && typeof process.env[varName] === 'string') {
|
|
411
|
-
return process.env[varName];
|
|
412
|
-
}
|
|
413
|
-
return match;
|
|
414
|
-
});
|
|
415
|
-
}
|
|
416
|
-
function resolveEnvVarsInObject(obj) {
|
|
417
|
-
if (obj === null ||
|
|
418
|
-
obj === undefined ||
|
|
419
|
-
typeof obj === 'boolean' ||
|
|
420
|
-
typeof obj === 'number') {
|
|
421
|
-
return obj;
|
|
422
|
-
}
|
|
423
|
-
if (typeof obj === 'string') {
|
|
424
|
-
return resolveEnvVarsInString(obj);
|
|
425
|
-
}
|
|
426
|
-
if (Array.isArray(obj)) {
|
|
427
|
-
return obj.map((item) => resolveEnvVarsInObject(item));
|
|
428
|
-
}
|
|
429
|
-
if (typeof obj === 'object') {
|
|
430
|
-
const newObj = { ...obj };
|
|
431
|
-
for (const key in newObj) {
|
|
432
|
-
if (Object.prototype.hasOwnProperty.call(newObj, key)) {
|
|
433
|
-
newObj[key] = resolveEnvVarsInObject(newObj[key]);
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
return newObj;
|
|
437
|
-
}
|
|
438
|
-
return obj;
|
|
439
|
-
}
|
|
440
347
|
function findEnvFile(startDir) {
|
|
441
348
|
let currentDir = path.resolve(startDir);
|
|
442
349
|
while (true) {
|
|
443
|
-
// prefer gemini-specific .env under
|
|
444
|
-
const geminiEnvPath = path.join(currentDir,
|
|
350
|
+
// prefer gemini-specific .env under QWEN_DIR
|
|
351
|
+
const geminiEnvPath = path.join(currentDir, QWEN_DIR, '.env');
|
|
445
352
|
if (fs.existsSync(geminiEnvPath)) {
|
|
446
353
|
return geminiEnvPath;
|
|
447
354
|
}
|
|
@@ -452,7 +359,7 @@ function findEnvFile(startDir) {
|
|
|
452
359
|
const parentDir = path.dirname(currentDir);
|
|
453
360
|
if (parentDir === currentDir || !parentDir) {
|
|
454
361
|
// check .env under home as fallback, again preferring gemini-specific .env
|
|
455
|
-
const homeGeminiEnvPath = path.join(homedir(),
|
|
362
|
+
const homeGeminiEnvPath = path.join(homedir(), QWEN_DIR, '.env');
|
|
456
363
|
if (fs.existsSync(homeGeminiEnvPath)) {
|
|
457
364
|
return homeGeminiEnvPath;
|
|
458
365
|
}
|
|
@@ -490,34 +397,21 @@ export function setUpCloudShellEnvironment(envFilePath) {
|
|
|
490
397
|
}
|
|
491
398
|
export function loadEnvironment(settings) {
|
|
492
399
|
const envFilePath = findEnvFile(process.cwd());
|
|
400
|
+
if (!isWorkspaceTrusted(settings).isTrusted) {
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
493
403
|
// Cloud Shell environment variable handling
|
|
494
404
|
if (process.env['CLOUD_SHELL'] === 'true') {
|
|
495
405
|
setUpCloudShellEnvironment(envFilePath);
|
|
496
406
|
}
|
|
497
|
-
// If no settings provided, try to load workspace settings for exclusions
|
|
498
|
-
let resolvedSettings = settings;
|
|
499
|
-
if (!resolvedSettings) {
|
|
500
|
-
const workspaceSettingsPath = new Storage(process.cwd()).getWorkspaceSettingsPath();
|
|
501
|
-
try {
|
|
502
|
-
if (fs.existsSync(workspaceSettingsPath)) {
|
|
503
|
-
const workspaceContent = fs.readFileSync(workspaceSettingsPath, 'utf-8');
|
|
504
|
-
const parsedWorkspaceSettings = JSON.parse(stripJsonComments(workspaceContent));
|
|
505
|
-
resolvedSettings = resolveEnvVarsInObject(parsedWorkspaceSettings);
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
catch (_e) {
|
|
509
|
-
// Ignore errors loading workspace settings
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
407
|
if (envFilePath) {
|
|
513
408
|
// Manually parse and load environment variables to handle exclusions correctly.
|
|
514
409
|
// This avoids modifying environment variables that were already set from the shell.
|
|
515
410
|
try {
|
|
516
411
|
const envFileContent = fs.readFileSync(envFilePath, 'utf-8');
|
|
517
412
|
const parsedEnv = dotenv.parse(envFileContent);
|
|
518
|
-
const excludedVars =
|
|
519
|
-
|
|
520
|
-
const isProjectEnvFile = !envFilePath.includes(GEMINI_DIR);
|
|
413
|
+
const excludedVars = settings?.advanced?.excludedEnvVars || DEFAULT_EXCLUDED_ENV_VARS;
|
|
414
|
+
const isProjectEnvFile = !envFilePath.includes(QWEN_DIR);
|
|
521
415
|
for (const key in parsedEnv) {
|
|
522
416
|
if (Object.hasOwn(parsedEnv, key)) {
|
|
523
417
|
// If it's a project .env file, skip loading excluded variables.
|
|
@@ -540,7 +434,7 @@ export function loadEnvironment(settings) {
|
|
|
540
434
|
* Loads settings from user and workspace directories.
|
|
541
435
|
* Project settings override user settings.
|
|
542
436
|
*/
|
|
543
|
-
export function loadSettings(workspaceDir) {
|
|
437
|
+
export function loadSettings(workspaceDir = process.cwd()) {
|
|
544
438
|
let systemSettings = {};
|
|
545
439
|
let systemDefaultSettings = {};
|
|
546
440
|
let userSettings = {};
|
|
@@ -575,7 +469,7 @@ export function loadSettings(workspaceDir) {
|
|
|
575
469
|
message: 'Settings file is not a valid JSON object.',
|
|
576
470
|
path: filePath,
|
|
577
471
|
});
|
|
578
|
-
return {};
|
|
472
|
+
return { settings: {} };
|
|
579
473
|
}
|
|
580
474
|
let settingsObject = rawSettings;
|
|
581
475
|
if (needsMigration(settingsObject)) {
|
|
@@ -596,7 +490,19 @@ export function loadSettings(workspaceDir) {
|
|
|
596
490
|
settingsObject = migratedSettings;
|
|
597
491
|
}
|
|
598
492
|
}
|
|
599
|
-
|
|
493
|
+
else if (!(SETTINGS_VERSION_KEY in settingsObject)) {
|
|
494
|
+
// No migration needed, but version field is missing - add it for future optimizations
|
|
495
|
+
settingsObject[SETTINGS_VERSION_KEY] = SETTINGS_VERSION;
|
|
496
|
+
if (MIGRATE_V2_OVERWRITE) {
|
|
497
|
+
try {
|
|
498
|
+
fs.writeFileSync(filePath, JSON.stringify(settingsObject, null, 2), 'utf-8');
|
|
499
|
+
}
|
|
500
|
+
catch (e) {
|
|
501
|
+
console.error(`Error adding version to settings file: ${getErrorMessage(e)}`);
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
return { settings: settingsObject, rawJson: content };
|
|
600
506
|
}
|
|
601
507
|
}
|
|
602
508
|
catch (error) {
|
|
@@ -605,14 +511,27 @@ export function loadSettings(workspaceDir) {
|
|
|
605
511
|
path: filePath,
|
|
606
512
|
});
|
|
607
513
|
}
|
|
608
|
-
return {};
|
|
514
|
+
return { settings: {} };
|
|
515
|
+
};
|
|
516
|
+
const systemResult = loadAndMigrate(systemSettingsPath, SettingScope.System);
|
|
517
|
+
const systemDefaultsResult = loadAndMigrate(systemDefaultsPath, SettingScope.SystemDefaults);
|
|
518
|
+
const userResult = loadAndMigrate(USER_SETTINGS_PATH, SettingScope.User);
|
|
519
|
+
let workspaceResult = {
|
|
520
|
+
settings: {},
|
|
521
|
+
rawJson: undefined,
|
|
609
522
|
};
|
|
610
|
-
systemSettings = loadAndMigrate(systemSettingsPath, SettingScope.System);
|
|
611
|
-
systemDefaultSettings = loadAndMigrate(systemDefaultsPath, SettingScope.SystemDefaults);
|
|
612
|
-
userSettings = loadAndMigrate(USER_SETTINGS_PATH, SettingScope.User);
|
|
613
523
|
if (realWorkspaceDir !== realHomeDir) {
|
|
614
|
-
|
|
615
|
-
}
|
|
524
|
+
workspaceResult = loadAndMigrate(workspaceSettingsPath, SettingScope.Workspace);
|
|
525
|
+
}
|
|
526
|
+
const systemOriginalSettings = structuredClone(systemResult.settings);
|
|
527
|
+
const systemDefaultsOriginalSettings = structuredClone(systemDefaultsResult.settings);
|
|
528
|
+
const userOriginalSettings = structuredClone(userResult.settings);
|
|
529
|
+
const workspaceOriginalSettings = structuredClone(workspaceResult.settings);
|
|
530
|
+
// Environment variables for runtime use
|
|
531
|
+
systemSettings = resolveEnvVarsInObject(systemResult.settings);
|
|
532
|
+
systemDefaultSettings = resolveEnvVarsInObject(systemDefaultsResult.settings);
|
|
533
|
+
userSettings = resolveEnvVarsInObject(userResult.settings);
|
|
534
|
+
workspaceSettings = resolveEnvVarsInObject(workspaceResult.settings);
|
|
616
535
|
// Support legacy theme names
|
|
617
536
|
if (userSettings.ui?.theme === 'VS') {
|
|
618
537
|
userSettings.ui.theme = DefaultLight.name;
|
|
@@ -627,32 +546,55 @@ export function loadSettings(workspaceDir) {
|
|
|
627
546
|
workspaceSettings.ui.theme = DefaultDark.name;
|
|
628
547
|
}
|
|
629
548
|
// For the initial trust check, we can only use user and system settings.
|
|
630
|
-
const initialTrustCheckSettings =
|
|
631
|
-
const isTrusted = isWorkspaceTrusted(initialTrustCheckSettings) ?? true;
|
|
549
|
+
const initialTrustCheckSettings = customDeepMerge(getMergeStrategyForPath, {}, systemSettings, userSettings);
|
|
550
|
+
const isTrusted = isWorkspaceTrusted(initialTrustCheckSettings).isTrusted ?? true;
|
|
632
551
|
// Create a temporary merged settings object to pass to loadEnvironment.
|
|
633
552
|
const tempMergedSettings = mergeSettings(systemSettings, systemDefaultSettings, userSettings, workspaceSettings, isTrusted);
|
|
634
553
|
// loadEnviroment depends on settings so we have to create a temp version of
|
|
635
554
|
// the settings to avoid a cycle
|
|
636
555
|
loadEnvironment(tempMergedSettings);
|
|
637
|
-
// Now that the environment is loaded, resolve variables in the settings.
|
|
638
|
-
systemSettings = resolveEnvVarsInObject(systemSettings);
|
|
639
|
-
userSettings = resolveEnvVarsInObject(userSettings);
|
|
640
|
-
workspaceSettings = resolveEnvVarsInObject(workspaceSettings);
|
|
641
556
|
// Create LoadedSettings first
|
|
642
|
-
|
|
557
|
+
if (settingsErrors.length > 0) {
|
|
558
|
+
const errorMessages = settingsErrors.map((error) => `Error in ${error.path}: ${error.message}`);
|
|
559
|
+
throw new FatalConfigError(`${errorMessages.join('\n')}\nPlease fix the configuration file(s) and try again.`);
|
|
560
|
+
}
|
|
561
|
+
return new LoadedSettings({
|
|
643
562
|
path: systemSettingsPath,
|
|
644
563
|
settings: systemSettings,
|
|
564
|
+
originalSettings: systemOriginalSettings,
|
|
565
|
+
rawJson: systemResult.rawJson,
|
|
645
566
|
}, {
|
|
646
567
|
path: systemDefaultsPath,
|
|
647
568
|
settings: systemDefaultSettings,
|
|
569
|
+
originalSettings: systemDefaultsOriginalSettings,
|
|
570
|
+
rawJson: systemDefaultsResult.rawJson,
|
|
648
571
|
}, {
|
|
649
572
|
path: USER_SETTINGS_PATH,
|
|
650
573
|
settings: userSettings,
|
|
574
|
+
originalSettings: userOriginalSettings,
|
|
575
|
+
rawJson: userResult.rawJson,
|
|
651
576
|
}, {
|
|
652
577
|
path: workspaceSettingsPath,
|
|
653
578
|
settings: workspaceSettings,
|
|
654
|
-
|
|
655
|
-
|
|
579
|
+
originalSettings: workspaceOriginalSettings,
|
|
580
|
+
rawJson: workspaceResult.rawJson,
|
|
581
|
+
}, isTrusted, migratedInMemorScopes);
|
|
582
|
+
}
|
|
583
|
+
export function migrateDeprecatedSettings(loadedSettings, workspaceDir = process.cwd()) {
|
|
584
|
+
const processScope = (scope) => {
|
|
585
|
+
const settings = loadedSettings.forScope(scope).settings;
|
|
586
|
+
if (settings.extensions?.disabled) {
|
|
587
|
+
console.log(`Migrating deprecated extensions.disabled settings from ${scope} settings...`);
|
|
588
|
+
for (const extension of settings.extensions.disabled ?? []) {
|
|
589
|
+
disableExtension(extension, scope, workspaceDir);
|
|
590
|
+
}
|
|
591
|
+
const newExtensionsValue = { ...settings.extensions };
|
|
592
|
+
newExtensionsValue.disabled = undefined;
|
|
593
|
+
loadedSettings.setValue(scope, 'extensions', newExtensionsValue);
|
|
594
|
+
}
|
|
595
|
+
};
|
|
596
|
+
processScope(SettingScope.User);
|
|
597
|
+
processScope(SettingScope.Workspace);
|
|
656
598
|
}
|
|
657
599
|
export function saveSettings(settingsFile) {
|
|
658
600
|
try {
|
|
@@ -661,11 +603,12 @@ export function saveSettings(settingsFile) {
|
|
|
661
603
|
if (!fs.existsSync(dirPath)) {
|
|
662
604
|
fs.mkdirSync(dirPath, { recursive: true });
|
|
663
605
|
}
|
|
664
|
-
let settingsToSave = settingsFile.
|
|
606
|
+
let settingsToSave = settingsFile.originalSettings;
|
|
665
607
|
if (!MIGRATE_V2_OVERWRITE) {
|
|
666
608
|
settingsToSave = migrateSettingsToV1(settingsToSave);
|
|
667
609
|
}
|
|
668
|
-
|
|
610
|
+
// Use the format-preserving update function
|
|
611
|
+
updateSettingsFilePreservingFormat(settingsFile.path, settingsToSave);
|
|
669
612
|
}
|
|
670
613
|
catch (error) {
|
|
671
614
|
console.error('Error saving user settings file:', error);
|