@rdmind/rdmind 0.0.15-alpha.0 → 0.0.15-alpha.2
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 +15 -10
- 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 +1 -1
- package/dist/src/config/auth.js +4 -4
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/auth.test.js +15 -7
- 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 +178 -122
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +39 -16
- package/dist/src/config/extension.js +349 -192
- 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/{ui/components/ModelSelectionDialog.test.d.ts → config/extensions/extensionEnablement.test.d.ts} +1 -1
- 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/config/extensions/github.test.d.ts +6 -0
- 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 +8 -5
- package/dist/src/config/settings.js +178 -275
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +332 -141
- package/dist/src/config/settingsSchema.js +321 -153
- 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 +23 -4
- package/dist/src/config/trustedFolders.js +97 -47
- 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 +156 -128
- 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/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 +1 -1
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +30 -18
- 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 -834
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/AppContainer.d.ts +17 -0
- package/dist/src/ui/AppContainer.js +1062 -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.js +8 -4
- 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/{hooks/useAuthCommand.d.ts → auth/useAuth.d.ts} +9 -3
- package/dist/src/ui/{hooks/useAuthCommand.js → auth/useAuth.js} +49 -14
- 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/chatCommand.d.ts +2 -0
- package/dist/src/ui/commands/chatCommand.js +93 -3
- 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.d.ts +1 -0
- package/dist/src/ui/commands/directoryCommand.js +156 -4
- 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 -261
- 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/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 +7 -2
- 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 +2 -1
- package/dist/src/ui/components/ContextUsageDisplay.js +5 -3
- 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 +129 -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 -45
- 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.js +3 -0
- package/dist/src/ui/components/ModelSwitchDialog.js.map +1 -1
- package/dist/src/ui/components/ModelSwitchDialog.test.js +3 -0
- 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 +5 -4
- package/dist/src/ui/components/QwenOAuthProgress.js.map +1 -1
- package/dist/src/ui/components/QwenOAuthProgress.test.js +82 -11
- 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 +53 -21
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -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/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 -2
- package/dist/src/ui/hooks/slashCommandProcessor.js +41 -82
- 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/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 +173 -79
- 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/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 +3 -0
- package/dist/src/ui/models/availableModels.js +27 -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 +7 -8
- 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/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/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/userStartupWarnings.d.ts +1 -1
- package/dist/src/utils/userStartupWarnings.js +1 -1
- package/dist/src/utils/userStartupWarnings.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 +33 -12
- 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 +310 -310
- package/dist/src/zed-integration/zedIntegration.d.ts +8 -1
- package/dist/src/zed-integration/zedIntegration.js +32 -15
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +15 -10
- 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.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/{components → auth}/AuthDialog.d.ts +0 -0
- /package/dist/src/ui/{components → auth}/AuthInProgress.d.ts +0 -0
|
@@ -7,65 +7,108 @@ 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 '@rdmind/rdmind-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 = '.rdmind';
|
|
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;
|
|
21
38
|
const MIGRATION_MAP = {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
39
|
+
accessibility: 'ui.accessibility',
|
|
40
|
+
allowedTools: 'tools.allowed',
|
|
41
|
+
allowMCPServers: 'mcp.allowed',
|
|
42
|
+
autoAccept: 'tools.autoAccept',
|
|
43
|
+
autoConfigureMaxOldSpaceSize: 'advanced.autoConfigureMemory',
|
|
44
|
+
bugCommand: 'advanced.bugCommand',
|
|
45
|
+
chatCompression: 'model.chatCompression',
|
|
26
46
|
checkpointing: 'general.checkpointing',
|
|
27
|
-
|
|
47
|
+
coreTools: 'tools.core',
|
|
48
|
+
contextFileName: 'context.fileName',
|
|
28
49
|
customThemes: 'ui.customThemes',
|
|
50
|
+
customWittyPhrases: 'ui.customWittyPhrases',
|
|
51
|
+
debugKeystrokeLogging: 'general.debugKeystrokeLogging',
|
|
52
|
+
disableAutoUpdate: 'general.disableAutoUpdate',
|
|
53
|
+
disableUpdateNag: 'general.disableUpdateNag',
|
|
54
|
+
dnsResolutionOrder: 'advanced.dnsResolutionOrder',
|
|
55
|
+
enablePromptCompletion: 'general.enablePromptCompletion',
|
|
56
|
+
enforcedAuthType: 'security.auth.enforcedType',
|
|
57
|
+
excludeTools: 'tools.exclude',
|
|
58
|
+
excludeMCPServers: 'mcp.excluded',
|
|
59
|
+
excludedProjectEnvVars: 'advanced.excludedEnvVars',
|
|
60
|
+
extensionManagement: 'experimental.extensionManagement',
|
|
61
|
+
extensions: 'extensions',
|
|
62
|
+
fileFiltering: 'context.fileFiltering',
|
|
63
|
+
folderTrustFeature: 'security.folderTrust.featureEnabled',
|
|
64
|
+
folderTrust: 'security.folderTrust.enabled',
|
|
65
|
+
hasSeenIdeIntegrationNudge: 'ide.hasSeenNudge',
|
|
29
66
|
hideWindowTitle: 'ui.hideWindowTitle',
|
|
67
|
+
showStatusInTitle: 'ui.showStatusInTitle',
|
|
30
68
|
hideTips: 'ui.hideTips',
|
|
31
69
|
hideBanner: 'ui.hideBanner',
|
|
32
70
|
hideFooter: 'ui.hideFooter',
|
|
71
|
+
hideCWD: 'ui.footer.hideCWD',
|
|
72
|
+
hideSandboxStatus: 'ui.footer.hideSandboxStatus',
|
|
73
|
+
hideModelInfo: 'ui.footer.hideModelInfo',
|
|
74
|
+
hideContextSummary: 'ui.hideContextSummary',
|
|
33
75
|
showMemoryUsage: 'ui.showMemoryUsage',
|
|
34
76
|
showLineNumbers: 'ui.showLineNumbers',
|
|
35
|
-
|
|
77
|
+
showCitations: 'ui.showCitations',
|
|
36
78
|
ideMode: 'ide.enabled',
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
telemetry: 'telemetry',
|
|
40
|
-
model: 'model.name',
|
|
79
|
+
includeDirectories: 'context.includeDirectories',
|
|
80
|
+
loadMemoryFromIncludeDirectories: 'context.loadFromIncludeDirectories',
|
|
41
81
|
maxSessionTurns: 'model.maxSessionTurns',
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
skipNextSpeakerCheck: 'model.skipNextSpeakerCheck',
|
|
45
|
-
contextFileName: 'context.fileName',
|
|
82
|
+
mcpServers: 'mcpServers',
|
|
83
|
+
mcpServerCommand: 'mcp.serverCommand',
|
|
46
84
|
memoryImportFormat: 'context.importFormat',
|
|
47
85
|
memoryDiscoveryMaxDirs: 'context.discoveryMaxDirs',
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
fileFiltering: 'context.fileFiltering',
|
|
86
|
+
model: 'model.name',
|
|
87
|
+
preferredEditor: 'general.preferredEditor',
|
|
51
88
|
sandbox: 'tools.sandbox',
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
89
|
+
selectedAuthType: 'security.auth.selectedType',
|
|
90
|
+
shouldUseNodePtyShell: 'tools.shell.enableInteractiveShell',
|
|
91
|
+
shellPager: 'tools.shell.pager',
|
|
92
|
+
shellShowColor: 'tools.shell.showColor',
|
|
93
|
+
skipNextSpeakerCheck: 'model.skipNextSpeakerCheck',
|
|
94
|
+
summarizeToolOutput: 'model.summarizeToolOutput',
|
|
95
|
+
telemetry: 'telemetry',
|
|
96
|
+
theme: 'ui.theme',
|
|
56
97
|
toolDiscoveryCommand: 'tools.discoveryCommand',
|
|
57
98
|
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',
|
|
99
|
+
usageStatisticsEnabled: 'privacy.usageStatisticsEnabled',
|
|
64
100
|
useExternalAuth: 'security.auth.useExternal',
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
101
|
+
useRipgrep: 'tools.useRipgrep',
|
|
102
|
+
vimMode: 'general.vimMode',
|
|
103
|
+
enableWelcomeBack: 'ui.enableWelcomeBack',
|
|
104
|
+
approvalMode: 'tools.approvalMode',
|
|
105
|
+
sessionTokenLimit: 'model.sessionTokenLimit',
|
|
106
|
+
contentGenerator: 'model.generationConfig',
|
|
107
|
+
skipLoopDetection: 'model.skipLoopDetection',
|
|
108
|
+
enableOpenAILogging: 'model.enableOpenAILogging',
|
|
109
|
+
tavilyApiKey: 'advanced.tavilyApiKey',
|
|
110
|
+
vlmSwitchMode: 'experimental.vlmSwitchMode',
|
|
111
|
+
visionModelPreview: 'experimental.visionModelPreview',
|
|
69
112
|
};
|
|
70
113
|
export function getSystemSettingsPath() {
|
|
71
114
|
if (process.env['RDMIND_SYSTEM_SETTINGS_PATH']) {
|
|
@@ -115,8 +158,24 @@ function setNestedProperty(obj, path, value) {
|
|
|
115
158
|
}
|
|
116
159
|
current[lastKey] = value;
|
|
117
160
|
}
|
|
118
|
-
function needsMigration(settings) {
|
|
119
|
-
|
|
161
|
+
export function needsMigration(settings) {
|
|
162
|
+
// A file needs migration if it contains any top-level key that is moved to a
|
|
163
|
+
// nested location in V2.
|
|
164
|
+
const hasV1Keys = Object.entries(MIGRATION_MAP).some(([v1Key, v2Path]) => {
|
|
165
|
+
if (v1Key === v2Path || !(v1Key in settings)) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
// If a key exists that is both a V1 key and a V2 container (like 'model'),
|
|
169
|
+
// we need to check the type. If it's an object, it's a V2 container and not
|
|
170
|
+
// a V1 key that needs migration.
|
|
171
|
+
if (KNOWN_V2_CONTAINERS.has(v1Key) &&
|
|
172
|
+
typeof settings[v1Key] === 'object' &&
|
|
173
|
+
settings[v1Key] !== null) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
return true;
|
|
177
|
+
});
|
|
178
|
+
return hasV1Keys;
|
|
120
179
|
}
|
|
121
180
|
function migrateSettingsToV2(flatSettings) {
|
|
122
181
|
if (!needsMigration(flatSettings)) {
|
|
@@ -137,7 +196,20 @@ function migrateSettingsToV2(flatSettings) {
|
|
|
137
196
|
}
|
|
138
197
|
// Carry over any unrecognized keys
|
|
139
198
|
for (const remainingKey of flatKeys) {
|
|
140
|
-
|
|
199
|
+
const existingValue = v2Settings[remainingKey];
|
|
200
|
+
const newValue = flatSettings[remainingKey];
|
|
201
|
+
if (typeof existingValue === 'object' &&
|
|
202
|
+
existingValue !== null &&
|
|
203
|
+
!Array.isArray(existingValue) &&
|
|
204
|
+
typeof newValue === 'object' &&
|
|
205
|
+
newValue !== null &&
|
|
206
|
+
!Array.isArray(newValue)) {
|
|
207
|
+
const pathAwareGetStrategy = (path) => getMergeStrategyForPath([remainingKey, ...path]);
|
|
208
|
+
v2Settings[remainingKey] = customDeepMerge(pathAwareGetStrategy, {}, newValue, existingValue);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
v2Settings[remainingKey] = newValue;
|
|
212
|
+
}
|
|
141
213
|
}
|
|
142
214
|
return v2Settings;
|
|
143
215
|
}
|
|
@@ -190,180 +262,21 @@ export function migrateSettingsToV1(v2Settings) {
|
|
|
190
262
|
}
|
|
191
263
|
function mergeSettings(system, systemDefaults, user, workspace, isTrusted) {
|
|
192
264
|
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
265
|
// Settings are merged with the following precedence (last one wins for
|
|
206
266
|
// single values):
|
|
207
267
|
// 1. System Defaults
|
|
208
268
|
// 2. User Settings
|
|
209
269
|
// 3. Workspace Settings
|
|
210
270
|
// 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
|
-
};
|
|
271
|
+
return customDeepMerge(getMergeStrategyForPath, {}, // Start with an empty object
|
|
272
|
+
systemDefaults, user, safeWorkspace, system);
|
|
359
273
|
}
|
|
360
274
|
export class LoadedSettings {
|
|
361
|
-
constructor(system, systemDefaults, user, workspace,
|
|
275
|
+
constructor(system, systemDefaults, user, workspace, isTrusted, migratedInMemorScopes) {
|
|
362
276
|
this.system = system;
|
|
363
277
|
this.systemDefaults = systemDefaults;
|
|
364
278
|
this.user = user;
|
|
365
279
|
this.workspace = workspace;
|
|
366
|
-
this.errors = errors;
|
|
367
280
|
this.isTrusted = isTrusted;
|
|
368
281
|
this.migratedInMemorScopes = migratedInMemorScopes;
|
|
369
282
|
this._merged = this.computeMergedSettings();
|
|
@@ -372,7 +285,6 @@ export class LoadedSettings {
|
|
|
372
285
|
systemDefaults;
|
|
373
286
|
user;
|
|
374
287
|
workspace;
|
|
375
|
-
errors;
|
|
376
288
|
isTrusted;
|
|
377
289
|
migratedInMemorScopes;
|
|
378
290
|
_merged;
|
|
@@ -399,49 +311,16 @@ export class LoadedSettings {
|
|
|
399
311
|
setValue(scope, key, value) {
|
|
400
312
|
const settingsFile = this.forScope(scope);
|
|
401
313
|
setNestedProperty(settingsFile.settings, key, value);
|
|
314
|
+
setNestedProperty(settingsFile.originalSettings, key, value);
|
|
402
315
|
this._merged = this.computeMergedSettings();
|
|
403
316
|
saveSettings(settingsFile);
|
|
404
317
|
}
|
|
405
318
|
}
|
|
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
319
|
function findEnvFile(startDir) {
|
|
441
320
|
let currentDir = path.resolve(startDir);
|
|
442
321
|
while (true) {
|
|
443
|
-
// prefer gemini-specific .env under
|
|
444
|
-
const geminiEnvPath = path.join(currentDir,
|
|
322
|
+
// prefer gemini-specific .env under QWEN_DIR
|
|
323
|
+
const geminiEnvPath = path.join(currentDir, QWEN_DIR, '.env');
|
|
445
324
|
if (fs.existsSync(geminiEnvPath)) {
|
|
446
325
|
return geminiEnvPath;
|
|
447
326
|
}
|
|
@@ -452,7 +331,7 @@ function findEnvFile(startDir) {
|
|
|
452
331
|
const parentDir = path.dirname(currentDir);
|
|
453
332
|
if (parentDir === currentDir || !parentDir) {
|
|
454
333
|
// check .env under home as fallback, again preferring gemini-specific .env
|
|
455
|
-
const homeGeminiEnvPath = path.join(homedir(),
|
|
334
|
+
const homeGeminiEnvPath = path.join(homedir(), QWEN_DIR, '.env');
|
|
456
335
|
if (fs.existsSync(homeGeminiEnvPath)) {
|
|
457
336
|
return homeGeminiEnvPath;
|
|
458
337
|
}
|
|
@@ -490,34 +369,21 @@ export function setUpCloudShellEnvironment(envFilePath) {
|
|
|
490
369
|
}
|
|
491
370
|
export function loadEnvironment(settings) {
|
|
492
371
|
const envFilePath = findEnvFile(process.cwd());
|
|
372
|
+
if (!isWorkspaceTrusted(settings).isTrusted) {
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
493
375
|
// Cloud Shell environment variable handling
|
|
494
376
|
if (process.env['CLOUD_SHELL'] === 'true') {
|
|
495
377
|
setUpCloudShellEnvironment(envFilePath);
|
|
496
378
|
}
|
|
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
379
|
if (envFilePath) {
|
|
513
380
|
// Manually parse and load environment variables to handle exclusions correctly.
|
|
514
381
|
// This avoids modifying environment variables that were already set from the shell.
|
|
515
382
|
try {
|
|
516
383
|
const envFileContent = fs.readFileSync(envFilePath, 'utf-8');
|
|
517
384
|
const parsedEnv = dotenv.parse(envFileContent);
|
|
518
|
-
const excludedVars =
|
|
519
|
-
|
|
520
|
-
const isProjectEnvFile = !envFilePath.includes(GEMINI_DIR);
|
|
385
|
+
const excludedVars = settings?.advanced?.excludedEnvVars || DEFAULT_EXCLUDED_ENV_VARS;
|
|
386
|
+
const isProjectEnvFile = !envFilePath.includes(QWEN_DIR);
|
|
521
387
|
for (const key in parsedEnv) {
|
|
522
388
|
if (Object.hasOwn(parsedEnv, key)) {
|
|
523
389
|
// If it's a project .env file, skip loading excluded variables.
|
|
@@ -540,7 +406,7 @@ export function loadEnvironment(settings) {
|
|
|
540
406
|
* Loads settings from user and workspace directories.
|
|
541
407
|
* Project settings override user settings.
|
|
542
408
|
*/
|
|
543
|
-
export function loadSettings(workspaceDir) {
|
|
409
|
+
export function loadSettings(workspaceDir = process.cwd()) {
|
|
544
410
|
let systemSettings = {};
|
|
545
411
|
let systemDefaultSettings = {};
|
|
546
412
|
let userSettings = {};
|
|
@@ -575,7 +441,7 @@ export function loadSettings(workspaceDir) {
|
|
|
575
441
|
message: 'Settings file is not a valid JSON object.',
|
|
576
442
|
path: filePath,
|
|
577
443
|
});
|
|
578
|
-
return {};
|
|
444
|
+
return { settings: {} };
|
|
579
445
|
}
|
|
580
446
|
let settingsObject = rawSettings;
|
|
581
447
|
if (needsMigration(settingsObject)) {
|
|
@@ -596,7 +462,7 @@ export function loadSettings(workspaceDir) {
|
|
|
596
462
|
settingsObject = migratedSettings;
|
|
597
463
|
}
|
|
598
464
|
}
|
|
599
|
-
return settingsObject;
|
|
465
|
+
return { settings: settingsObject, rawJson: content };
|
|
600
466
|
}
|
|
601
467
|
}
|
|
602
468
|
catch (error) {
|
|
@@ -605,14 +471,27 @@ export function loadSettings(workspaceDir) {
|
|
|
605
471
|
path: filePath,
|
|
606
472
|
});
|
|
607
473
|
}
|
|
608
|
-
return {};
|
|
474
|
+
return { settings: {} };
|
|
475
|
+
};
|
|
476
|
+
const systemResult = loadAndMigrate(systemSettingsPath, SettingScope.System);
|
|
477
|
+
const systemDefaultsResult = loadAndMigrate(systemDefaultsPath, SettingScope.SystemDefaults);
|
|
478
|
+
const userResult = loadAndMigrate(USER_SETTINGS_PATH, SettingScope.User);
|
|
479
|
+
let workspaceResult = {
|
|
480
|
+
settings: {},
|
|
481
|
+
rawJson: undefined,
|
|
609
482
|
};
|
|
610
|
-
systemSettings = loadAndMigrate(systemSettingsPath, SettingScope.System);
|
|
611
|
-
systemDefaultSettings = loadAndMigrate(systemDefaultsPath, SettingScope.SystemDefaults);
|
|
612
|
-
userSettings = loadAndMigrate(USER_SETTINGS_PATH, SettingScope.User);
|
|
613
483
|
if (realWorkspaceDir !== realHomeDir) {
|
|
614
|
-
|
|
615
|
-
}
|
|
484
|
+
workspaceResult = loadAndMigrate(workspaceSettingsPath, SettingScope.Workspace);
|
|
485
|
+
}
|
|
486
|
+
const systemOriginalSettings = structuredClone(systemResult.settings);
|
|
487
|
+
const systemDefaultsOriginalSettings = structuredClone(systemDefaultsResult.settings);
|
|
488
|
+
const userOriginalSettings = structuredClone(userResult.settings);
|
|
489
|
+
const workspaceOriginalSettings = structuredClone(workspaceResult.settings);
|
|
490
|
+
// Environment variables for runtime use
|
|
491
|
+
systemSettings = resolveEnvVarsInObject(systemResult.settings);
|
|
492
|
+
systemDefaultSettings = resolveEnvVarsInObject(systemDefaultsResult.settings);
|
|
493
|
+
userSettings = resolveEnvVarsInObject(userResult.settings);
|
|
494
|
+
workspaceSettings = resolveEnvVarsInObject(workspaceResult.settings);
|
|
616
495
|
// Support legacy theme names
|
|
617
496
|
if (userSettings.ui?.theme === 'VS') {
|
|
618
497
|
userSettings.ui.theme = DefaultLight.name;
|
|
@@ -627,32 +506,55 @@ export function loadSettings(workspaceDir) {
|
|
|
627
506
|
workspaceSettings.ui.theme = DefaultDark.name;
|
|
628
507
|
}
|
|
629
508
|
// For the initial trust check, we can only use user and system settings.
|
|
630
|
-
const initialTrustCheckSettings =
|
|
631
|
-
const isTrusted = isWorkspaceTrusted(initialTrustCheckSettings) ?? true;
|
|
509
|
+
const initialTrustCheckSettings = customDeepMerge(getMergeStrategyForPath, {}, systemSettings, userSettings);
|
|
510
|
+
const isTrusted = isWorkspaceTrusted(initialTrustCheckSettings).isTrusted ?? true;
|
|
632
511
|
// Create a temporary merged settings object to pass to loadEnvironment.
|
|
633
512
|
const tempMergedSettings = mergeSettings(systemSettings, systemDefaultSettings, userSettings, workspaceSettings, isTrusted);
|
|
634
513
|
// loadEnviroment depends on settings so we have to create a temp version of
|
|
635
514
|
// the settings to avoid a cycle
|
|
636
515
|
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
516
|
// Create LoadedSettings first
|
|
642
|
-
|
|
517
|
+
if (settingsErrors.length > 0) {
|
|
518
|
+
const errorMessages = settingsErrors.map((error) => `Error in ${error.path}: ${error.message}`);
|
|
519
|
+
throw new FatalConfigError(`${errorMessages.join('\n')}\nPlease fix the configuration file(s) and try again.`);
|
|
520
|
+
}
|
|
521
|
+
return new LoadedSettings({
|
|
643
522
|
path: systemSettingsPath,
|
|
644
523
|
settings: systemSettings,
|
|
524
|
+
originalSettings: systemOriginalSettings,
|
|
525
|
+
rawJson: systemResult.rawJson,
|
|
645
526
|
}, {
|
|
646
527
|
path: systemDefaultsPath,
|
|
647
528
|
settings: systemDefaultSettings,
|
|
529
|
+
originalSettings: systemDefaultsOriginalSettings,
|
|
530
|
+
rawJson: systemDefaultsResult.rawJson,
|
|
648
531
|
}, {
|
|
649
532
|
path: USER_SETTINGS_PATH,
|
|
650
533
|
settings: userSettings,
|
|
534
|
+
originalSettings: userOriginalSettings,
|
|
535
|
+
rawJson: userResult.rawJson,
|
|
651
536
|
}, {
|
|
652
537
|
path: workspaceSettingsPath,
|
|
653
538
|
settings: workspaceSettings,
|
|
654
|
-
|
|
655
|
-
|
|
539
|
+
originalSettings: workspaceOriginalSettings,
|
|
540
|
+
rawJson: workspaceResult.rawJson,
|
|
541
|
+
}, isTrusted, migratedInMemorScopes);
|
|
542
|
+
}
|
|
543
|
+
export function migrateDeprecatedSettings(loadedSettings, workspaceDir = process.cwd()) {
|
|
544
|
+
const processScope = (scope) => {
|
|
545
|
+
const settings = loadedSettings.forScope(scope).settings;
|
|
546
|
+
if (settings.extensions?.disabled) {
|
|
547
|
+
console.log(`Migrating deprecated extensions.disabled settings from ${scope} settings...`);
|
|
548
|
+
for (const extension of settings.extensions.disabled ?? []) {
|
|
549
|
+
disableExtension(extension, scope, workspaceDir);
|
|
550
|
+
}
|
|
551
|
+
const newExtensionsValue = { ...settings.extensions };
|
|
552
|
+
newExtensionsValue.disabled = undefined;
|
|
553
|
+
loadedSettings.setValue(scope, 'extensions', newExtensionsValue);
|
|
554
|
+
}
|
|
555
|
+
};
|
|
556
|
+
processScope(SettingScope.User);
|
|
557
|
+
processScope(SettingScope.Workspace);
|
|
656
558
|
}
|
|
657
559
|
export function saveSettings(settingsFile) {
|
|
658
560
|
try {
|
|
@@ -661,11 +563,12 @@ export function saveSettings(settingsFile) {
|
|
|
661
563
|
if (!fs.existsSync(dirPath)) {
|
|
662
564
|
fs.mkdirSync(dirPath, { recursive: true });
|
|
663
565
|
}
|
|
664
|
-
let settingsToSave = settingsFile.
|
|
566
|
+
let settingsToSave = settingsFile.originalSettings;
|
|
665
567
|
if (!MIGRATE_V2_OVERWRITE) {
|
|
666
568
|
settingsToSave = migrateSettingsToV1(settingsToSave);
|
|
667
569
|
}
|
|
668
|
-
|
|
570
|
+
// Use the format-preserving update function
|
|
571
|
+
updateSettingsFilePreservingFormat(settingsFile.path, settingsToSave);
|
|
669
572
|
}
|
|
670
573
|
catch (error) {
|
|
671
574
|
console.error('Error saving user settings file:', error);
|