@vybestack/llxprt-code 0.1.20 → 0.1.22
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/README.md +31 -0
- package/dist/package.json +3 -3
- package/dist/src/commands/mcp/add.js +11 -0
- package/dist/src/commands/mcp/add.js.map +1 -1
- package/dist/src/config/auth.test.d.ts +6 -0
- package/dist/src/config/auth.test.js +57 -0
- package/dist/src/config/auth.test.js.map +1 -0
- package/dist/src/config/config.d.ts +1 -1
- package/dist/src/config/config.js +27 -14
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/keyBindings.js +3 -2
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/keyBindings.test.d.ts +6 -0
- package/dist/src/config/keyBindings.test.js +51 -0
- package/dist/src/config/keyBindings.test.js.map +1 -0
- package/dist/src/config/logging/loggingConfig.test.d.ts +6 -0
- package/dist/src/config/logging/loggingConfig.test.js +363 -0
- package/dist/src/config/logging/loggingConfig.test.js.map +1 -0
- package/dist/src/config/settingsSchema.d.ts +0 -9
- package/dist/src/config/settingsSchema.js +0 -9
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.d.ts +6 -0
- package/dist/src/config/settingsSchema.test.js +195 -0
- package/dist/src/config/settingsSchema.test.js.map +1 -0
- package/dist/src/config/trustedFolders.test.d.ts +6 -0
- package/dist/src/config/trustedFolders.test.js +156 -0
- package/dist/src/config/trustedFolders.test.js.map +1 -0
- package/dist/src/gemini.js +14 -4
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.d.ts +6 -0
- package/dist/src/gemini.test.js +199 -0
- package/dist/src/gemini.test.js.map +1 -0
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/integration-tests/base-url-behavior.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/base-url-behavior.integration.test.js +492 -0
- package/dist/src/integration-tests/base-url-behavior.integration.test.js.map +1 -0
- package/dist/src/integration-tests/cli-args.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/cli-args.integration.test.js +398 -0
- package/dist/src/integration-tests/cli-args.integration.test.js.map +1 -0
- package/dist/src/integration-tests/compression-settings-apply.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/compression-settings-apply.integration.test.js +436 -0
- package/dist/src/integration-tests/compression-settings-apply.integration.test.js.map +1 -0
- package/dist/src/integration-tests/ephemeral-settings.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/ephemeral-settings.integration.test.js +318 -0
- package/dist/src/integration-tests/ephemeral-settings.integration.test.js.map +1 -0
- package/dist/src/integration-tests/model-params-isolation.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/model-params-isolation.integration.test.js +564 -0
- package/dist/src/integration-tests/model-params-isolation.integration.test.js.map +1 -0
- package/dist/src/integration-tests/modelParams.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/modelParams.integration.test.js +784 -0
- package/dist/src/integration-tests/modelParams.integration.test.js.map +1 -0
- package/dist/src/integration-tests/profile-keyfile.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/profile-keyfile.integration.test.js +429 -0
- package/dist/src/integration-tests/profile-keyfile.integration.test.js.map +1 -0
- package/dist/src/integration-tests/profile-system.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/profile-system.integration.test.js +364 -0
- package/dist/src/integration-tests/profile-system.integration.test.js.map +1 -0
- package/dist/src/integration-tests/provider-switching.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/provider-switching.integration.test.js +207 -0
- package/dist/src/integration-tests/provider-switching.integration.test.js.map +1 -0
- package/dist/src/integration-tests/security.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/security.integration.test.js +319 -0
- package/dist/src/integration-tests/security.integration.test.js.map +1 -0
- package/dist/src/integration-tests/test-utils.test.d.ts +6 -0
- package/dist/src/integration-tests/test-utils.test.js +221 -0
- package/dist/src/integration-tests/test-utils.test.js.map +1 -0
- package/dist/src/integration-tests/todo-continuation.integration.test.d.ts +6 -0
- package/dist/src/integration-tests/todo-continuation.integration.test.js +559 -0
- package/dist/src/integration-tests/todo-continuation.integration.test.js.map +1 -0
- package/dist/src/nonInteractiveCli.js +2 -5
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/providers/logging/LoggingProviderWrapper.test.d.ts +6 -0
- package/dist/src/providers/logging/LoggingProviderWrapper.test.js +305 -0
- package/dist/src/providers/logging/LoggingProviderWrapper.test.js.map +1 -0
- package/dist/src/providers/logging/git-stats.integration.test.d.ts +6 -0
- package/dist/src/providers/logging/git-stats.integration.test.js +245 -0
- package/dist/src/providers/logging/git-stats.integration.test.js.map +1 -0
- package/dist/src/providers/logging/git-stats.test.d.ts +6 -0
- package/dist/src/providers/logging/git-stats.test.js +432 -0
- package/dist/src/providers/logging/git-stats.test.js.map +1 -0
- package/dist/src/providers/logging/multi-provider-logging.integration.test.d.ts +6 -0
- package/dist/src/providers/logging/multi-provider-logging.integration.test.js +531 -0
- package/dist/src/providers/logging/multi-provider-logging.integration.test.js.map +1 -0
- package/dist/src/providers/logging/performance.test.d.ts +6 -0
- package/dist/src/providers/logging/performance.test.js +465 -0
- package/dist/src/providers/logging/performance.test.js.map +1 -0
- package/dist/src/providers/provider-gemini-switching.test.d.ts +6 -0
- package/dist/src/providers/provider-gemini-switching.test.js +129 -0
- package/dist/src/providers/provider-gemini-switching.test.js.map +1 -0
- package/dist/src/providers/provider-switching.integration.test.d.ts +6 -0
- package/dist/src/providers/provider-switching.integration.test.js +113 -0
- package/dist/src/providers/provider-switching.integration.test.js.map +1 -0
- package/dist/src/providers/providerManagerInstance.test.d.ts +6 -0
- package/dist/src/providers/providerManagerInstance.test.js +104 -0
- package/dist/src/providers/providerManagerInstance.test.js.map +1 -0
- package/dist/src/services/BuiltinCommandLoader.test.d.ts +6 -0
- package/dist/src/services/BuiltinCommandLoader.test.js +118 -0
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -0
- package/dist/src/services/CommandService.test.d.ts +6 -0
- package/dist/src/services/CommandService.test.js +232 -0
- package/dist/src/services/CommandService.test.js.map +1 -0
- package/dist/src/services/FileCommandLoader.js +10 -8
- package/dist/src/services/FileCommandLoader.js.map +1 -1
- package/dist/src/services/prompt-processors/argumentProcessor.d.ts +2 -7
- package/dist/src/services/prompt-processors/argumentProcessor.js +2 -10
- package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -1
- package/dist/src/services/prompt-processors/shellProcessor.d.ts +16 -13
- package/dist/src/services/prompt-processors/shellProcessor.js +133 -40
- package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
- package/dist/src/services/prompt-processors/types.d.ts +2 -0
- package/dist/src/services/prompt-processors/types.js +2 -0
- package/dist/src/services/prompt-processors/types.js.map +1 -1
- package/dist/src/storage/ConversationStorage.test.d.ts +6 -0
- package/dist/src/storage/ConversationStorage.test.js +379 -0
- package/dist/src/storage/ConversationStorage.test.js.map +1 -0
- package/dist/src/test-utils/customMatchers.d.ts +14 -0
- package/dist/src/test-utils/customMatchers.js +46 -0
- package/dist/src/test-utils/customMatchers.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.d.ts +18 -0
- package/dist/src/test-utils/mockCommandContext.js +86 -0
- package/dist/src/test-utils/mockCommandContext.js.map +1 -0
- package/dist/src/test-utils/mockCommandContext.test.d.ts +6 -0
- package/dist/src/test-utils/mockCommandContext.test.js +51 -0
- package/dist/src/test-utils/mockCommandContext.test.js.map +1 -0
- package/dist/src/test-utils/render.d.ts +8 -0
- package/dist/src/test-utils/render.js +10 -0
- package/dist/src/test-utils/render.js.map +1 -0
- package/dist/src/test-utils/responsive-testing.d.ts +14 -0
- package/dist/src/test-utils/responsive-testing.js +35 -0
- package/dist/src/test-utils/responsive-testing.js.map +1 -0
- package/dist/src/test-utils/responsive-testing.test.d.ts +6 -0
- package/dist/src/test-utils/responsive-testing.test.js +89 -0
- package/dist/src/test-utils/responsive-testing.test.js.map +1 -0
- package/dist/src/test-utils/testProviderConfig.d.ts +18 -0
- package/dist/src/test-utils/testProviderConfig.js +19 -0
- package/dist/src/test-utils/testProviderConfig.js.map +1 -0
- package/dist/src/ui/App.js +7 -6
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/IdeIntegrationNudge.js +1 -1
- package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
- package/dist/src/ui/colors.js +25 -2
- package/dist/src/ui/colors.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +3 -0
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.js +8 -6
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/diagnosticsCommand.js +0 -1
- package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +3 -3
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/keyCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/keyCommand.test.js +128 -0
- package/dist/src/ui/commands/keyCommand.test.js.map +1 -0
- package/dist/src/ui/commands/profileCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/profileCommand.test.js +343 -0
- package/dist/src/ui/commands/profileCommand.test.js.map +1 -0
- package/dist/src/ui/commands/setCommand.js +41 -0
- package/dist/src/ui/commands/setCommand.js.map +1 -1
- package/dist/src/ui/commands/setCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/setCommand.test.js +431 -0
- package/dist/src/ui/commands/setCommand.test.js.map +1 -0
- package/dist/src/ui/commands/setupGithubCommand.test.d.ts +6 -0
- package/dist/src/ui/commands/setupGithubCommand.test.js +69 -0
- package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -0
- package/dist/src/ui/commands/toolformatCommand.test.d.ts +1 -0
- package/dist/src/ui/commands/toolformatCommand.test.js +145 -0
- package/dist/src/ui/commands/toolformatCommand.test.js.map +1 -0
- package/dist/src/ui/components/AboutBox.d.ts +1 -0
- package/dist/src/ui/components/AboutBox.js +1 -1
- package/dist/src/ui/components/AboutBox.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.js +1 -1
- package/dist/src/ui/components/AuthDialog.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.test.d.ts +6 -0
- package/dist/src/ui/components/AuthDialog.test.js +252 -0
- package/dist/src/ui/components/AuthDialog.test.js.map +1 -0
- package/dist/src/ui/components/ContextIndicator.ui.test.d.ts +1 -0
- package/dist/src/ui/components/ContextIndicator.ui.test.js +89 -0
- package/dist/src/ui/components/ContextIndicator.ui.test.js.map +1 -0
- package/dist/src/ui/components/ContextSummaryDisplay.js +1 -1
- package/dist/src/ui/components/ContextUsageDisplay.semantic.test.d.ts +6 -0
- package/dist/src/ui/components/ContextUsageDisplay.semantic.test.js +75 -0
- package/dist/src/ui/components/ContextUsageDisplay.semantic.test.js.map +1 -0
- package/dist/src/ui/components/FolderTrustDialog.test.d.ts +6 -0
- package/dist/src/ui/components/FolderTrustDialog.test.js +26 -0
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -0
- package/dist/src/ui/components/Footer.d.ts +1 -0
- package/dist/src/ui/components/Footer.js +2 -2
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/Footer.responsive.test.d.ts +6 -0
- package/dist/src/ui/components/Footer.responsive.test.js +262 -0
- package/dist/src/ui/components/Footer.responsive.test.js.map +1 -0
- package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
- package/dist/src/ui/components/HistoryItemDisplay.test.d.ts +6 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.js +93 -0
- package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -0
- package/dist/src/ui/components/InputPrompt.js +0 -4
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.paste.test.d.ts +6 -0
- package/dist/src/ui/components/InputPrompt.paste.test.js +263 -0
- package/dist/src/ui/components/InputPrompt.paste.test.js.map +1 -0
- package/dist/src/ui/components/LoadingIndicator.test.d.ts +6 -0
- package/dist/src/ui/components/LoadingIndicator.test.js +149 -0
- package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -0
- package/dist/src/ui/components/MemoryUsageDisplay.semantic.test.d.ts +6 -0
- package/dist/src/ui/components/MemoryUsageDisplay.semantic.test.js +127 -0
- package/dist/src/ui/components/MemoryUsageDisplay.semantic.test.js.map +1 -0
- package/dist/src/ui/components/ProviderDialog.responsive.test.d.ts +6 -0
- package/dist/src/ui/components/ProviderDialog.responsive.test.js +153 -0
- package/dist/src/ui/components/ProviderDialog.responsive.test.js.map +1 -0
- package/dist/src/ui/components/ProviderModelDialog.responsive.test.d.ts +6 -0
- package/dist/src/ui/components/ProviderModelDialog.responsive.test.js +252 -0
- package/dist/src/ui/components/ProviderModelDialog.responsive.test.js.map +1 -0
- package/dist/src/ui/components/ProviderModelDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ProviderModelDialog.test.js +197 -0
- package/dist/src/ui/components/ProviderModelDialog.test.js.map +1 -0
- package/dist/src/ui/components/SettingsDialog.test.d.ts +6 -0
- package/dist/src/ui/components/SettingsDialog.test.js +555 -0
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -0
- package/dist/src/ui/components/ShellConfirmationDialog.js +2 -1
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.test.d.ts +6 -0
- package/dist/src/ui/components/ShellConfirmationDialog.test.js +40 -0
- package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +1 -0
- package/dist/src/ui/components/TodoPanel.responsive.test.d.ts +6 -0
- package/dist/src/ui/components/TodoPanel.responsive.test.js +221 -0
- package/dist/src/ui/components/TodoPanel.responsive.test.js.map +1 -0
- package/dist/src/ui/components/TodoPanel.semantic.test.d.ts +6 -0
- package/dist/src/ui/components/TodoPanel.semantic.test.js +137 -0
- package/dist/src/ui/components/TodoPanel.semantic.test.js.map +1 -0
- package/dist/src/ui/components/__tests__/LayoutManager.test.d.ts +6 -0
- package/dist/src/ui/components/__tests__/LayoutManager.test.js +94 -0
- package/dist/src/ui/components/__tests__/LayoutManager.test.js.map +1 -0
- package/dist/src/ui/components/messages/DiffRenderer.js +9 -3
- package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
- package/dist/src/ui/components/messages/DiffRenderer.test.d.ts +6 -0
- package/dist/src/ui/components/messages/DiffRenderer.test.js +266 -0
- package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -0
- package/dist/src/ui/components/messages/InfoMessage.js +2 -1
- package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +15 -5
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.responsive.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.responsive.test.js +173 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.responsive.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +37 -0
- package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -0
- package/dist/src/ui/components/messages/ToolMessage.test.d.ts +6 -0
- package/dist/src/ui/components/messages/ToolMessage.test.js +118 -0
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -0
- package/dist/src/ui/components/shared/MaxSizedBox.test.d.ts +6 -0
- package/dist/src/ui/components/shared/MaxSizedBox.test.js +154 -0
- package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.js +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.test.d.ts +6 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js +113 -0
- package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -0
- package/dist/src/ui/containers/SessionController.test.d.ts +6 -0
- package/dist/src/ui/containers/SessionController.test.js +440 -0
- package/dist/src/ui/containers/SessionController.test.js.map +1 -0
- package/dist/src/ui/contexts/KeypressContext.d.ts +30 -0
- package/dist/src/ui/contexts/KeypressContext.js +314 -0
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -0
- package/dist/src/ui/contexts/KeypressContext.test.d.ts +6 -0
- package/dist/src/ui/contexts/KeypressContext.test.js +220 -0
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.d.ts +6 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.js +830 -0
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -0
- package/dist/src/ui/hooks/index.d.ts +1 -0
- package/dist/src/ui/hooks/index.js +1 -0
- package/dist/src/ui/hooks/index.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.test.d.ts +6 -0
- package/dist/src/ui/hooks/shellCommandProcessor.test.js +328 -0
- package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -0
- package/dist/src/ui/hooks/slashCommandProcessor.js +13 -7
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAtCompletion.js +3 -5
- package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.d.ts +6 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +191 -0
- package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -0
- package/dist/src/ui/hooks/useEditorSettings.test.d.ts +6 -0
- package/dist/src/ui/hooks/useEditorSettings.test.js +221 -0
- package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -0
- package/dist/src/ui/hooks/useGeminiStream.integration.test.d.ts +6 -0
- package/dist/src/ui/hooks/useGeminiStream.integration.test.js +800 -0
- package/dist/src/ui/hooks/useGeminiStream.integration.test.js.map +1 -0
- package/dist/src/ui/hooks/useGeminiStream.js +12 -47
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGitBranchName.test.d.ts +6 -0
- package/dist/src/ui/hooks/useGitBranchName.test.js +170 -0
- package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -0
- package/dist/src/ui/hooks/useHistoryManager.test.d.ts +6 -0
- package/dist/src/ui/hooks/useHistoryManager.test.js +171 -0
- package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -0
- package/dist/src/ui/hooks/useInputHistory.test.d.ts +6 -0
- package/dist/src/ui/hooks/useInputHistory.test.js +207 -0
- package/dist/src/ui/hooks/useInputHistory.test.js.map +1 -0
- package/dist/src/ui/hooks/useKeypress.d.ts +4 -24
- package/dist/src/ui/hooks/useKeypress.js +9 -330
- package/dist/src/ui/hooks/useKeypress.js.map +1 -1
- package/dist/src/ui/hooks/useKeypress.test.d.ts +6 -0
- package/dist/src/ui/hooks/useKeypress.test.js +176 -0
- package/dist/src/ui/hooks/useKeypress.test.js.map +1 -0
- package/dist/src/ui/hooks/usePhraseCycler.js +1 -0
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/useResponsive.test.d.ts +6 -0
- package/dist/src/ui/hooks/useResponsive.test.js +124 -0
- package/dist/src/ui/hooks/useResponsive.test.js.map +1 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.d.ts +6 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +163 -0
- package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -0
- package/dist/src/ui/hooks/useShellHistory.test.d.ts +6 -0
- package/dist/src/ui/hooks/useShellHistory.test.js +162 -0
- package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -0
- package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +6 -0
- package/dist/src/ui/hooks/useSlashCompletion.test.js +929 -0
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -0
- package/dist/src/ui/hooks/useStableCallback.test.d.ts +6 -0
- package/dist/src/ui/hooks/useStableCallback.test.js +57 -0
- package/dist/src/ui/hooks/useStableCallback.test.js.map +1 -0
- package/dist/src/ui/hooks/useToolScheduler.test.d.ts +6 -0
- package/dist/src/ui/hooks/useToolScheduler.test.js +841 -0
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -0
- package/dist/src/ui/keyMatchers.test.d.ts +6 -0
- package/dist/src/ui/keyMatchers.test.js +276 -0
- package/dist/src/ui/keyMatchers.test.js.map +1 -0
- package/dist/src/ui/reducers/appReducer.test.d.ts +6 -0
- package/dist/src/ui/reducers/appReducer.test.js +519 -0
- package/dist/src/ui/reducers/appReducer.test.js.map +1 -0
- package/dist/src/ui/themes/color-utils.test.d.ts +6 -0
- package/dist/src/ui/themes/color-utils.test.js +197 -0
- package/dist/src/ui/themes/color-utils.test.js.map +1 -0
- package/dist/src/ui/themes/semantic-resolver.js +16 -7
- package/dist/src/ui/themes/semantic-resolver.js.map +1 -1
- package/dist/src/ui/themes/semantic-resolver.test.d.ts +6 -0
- package/dist/src/ui/themes/semantic-resolver.test.js +246 -0
- package/dist/src/ui/themes/semantic-resolver.test.js.map +1 -0
- package/dist/src/ui/themes/semantic-tokens.d.ts +18 -33
- package/dist/src/ui/themes/semantic-tokens.js +88 -1
- package/dist/src/ui/themes/semantic-tokens.js.map +1 -1
- package/dist/src/ui/themes/semantic-tokens.test.d.ts +6 -0
- package/dist/src/ui/themes/semantic-tokens.test.js +289 -0
- package/dist/src/ui/themes/semantic-tokens.test.js.map +1 -0
- package/dist/src/ui/themes/theme-compat.d.ts +1 -1
- package/dist/src/ui/themes/theme-compat.js +7 -2
- package/dist/src/ui/themes/theme-compat.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.test.d.ts +6 -0
- package/dist/src/ui/themes/theme-manager.test.js +160 -0
- package/dist/src/ui/themes/theme-manager.test.js.map +1 -0
- package/dist/src/ui/types.d.ts +12 -1
- package/dist/src/ui/types.js +1 -0
- package/dist/src/ui/types.js.map +1 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.js +8 -1
- package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.d.ts +6 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.js +151 -0
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -0
- package/dist/src/ui/utils/clipboardUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/clipboardUtils.test.js +65 -0
- package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -0
- package/dist/src/ui/utils/commandUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/commandUtils.test.js +294 -0
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -0
- package/dist/src/ui/utils/displayUtils.test.d.ts +6 -0
- package/dist/src/ui/utils/displayUtils.test.js +42 -0
- package/dist/src/ui/utils/displayUtils.test.js.map +1 -0
- package/dist/src/ui/utils/formatters.test.d.ts +6 -0
- package/dist/src/ui/utils/formatters.test.js +56 -0
- package/dist/src/ui/utils/formatters.test.js.map +1 -0
- package/dist/src/ui/utils/markdownUtilities.test.d.ts +6 -0
- package/dist/src/ui/utils/markdownUtilities.test.js +42 -0
- package/dist/src/ui/utils/markdownUtilities.test.js.map +1 -0
- package/dist/src/ui/utils/platformConstants.d.ts +5 -0
- package/dist/src/ui/utils/platformConstants.js +5 -0
- package/dist/src/ui/utils/platformConstants.js.map +1 -1
- package/dist/src/ui/utils/responsive.test.d.ts +6 -0
- package/dist/src/ui/utils/responsive.test.js +107 -0
- package/dist/src/ui/utils/responsive.test.js.map +1 -0
- package/dist/src/ui/utils/secureInputHandler.test.d.ts +6 -0
- package/dist/src/ui/utils/secureInputHandler.test.js +274 -0
- package/dist/src/ui/utils/secureInputHandler.test.js.map +1 -0
- package/dist/src/ui/utils/updateCheck.test.d.ts +6 -0
- package/dist/src/ui/utils/updateCheck.test.js +202 -0
- package/dist/src/ui/utils/updateCheck.test.js.map +1 -0
- package/dist/src/utils/ConversationContext.test.d.ts +6 -0
- package/dist/src/utils/ConversationContext.test.js +64 -0
- package/dist/src/utils/ConversationContext.test.js.map +1 -0
- package/dist/src/utils/gitUtils.test.d.ts +6 -0
- package/dist/src/utils/gitUtils.test.js +113 -0
- package/dist/src/utils/gitUtils.test.js.map +1 -0
- package/dist/src/utils/installationInfo.test.d.ts +6 -0
- package/dist/src/utils/installationInfo.test.js +242 -0
- package/dist/src/utils/installationInfo.test.js.map +1 -0
- package/dist/src/utils/privacy/ConversationDataRedactor.test.d.ts +6 -0
- package/dist/src/utils/privacy/ConversationDataRedactor.test.js +463 -0
- package/dist/src/utils/privacy/ConversationDataRedactor.test.js.map +1 -0
- package/dist/src/utils/readStdin.js +10 -0
- package/dist/src/utils/readStdin.js.map +1 -1
- package/dist/src/utils/sandbox.js +2 -2
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/settingsUtils.test.d.ts +6 -0
- package/dist/src/utils/settingsUtils.test.js +514 -0
- package/dist/src/utils/settingsUtils.test.js.map +1 -0
- package/dist/src/utils/userStartupWarnings.js +2 -2
- package/dist/src/utils/userStartupWarnings.test.d.ts +6 -0
- package/dist/src/utils/userStartupWarnings.test.js +67 -0
- package/dist/src/utils/userStartupWarnings.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
@@ -0,0 +1,514 @@
|
|
1
|
+
/**
|
2
|
+
* @license
|
3
|
+
* Copyright 2025 Google LLC
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
5
|
+
*/
|
6
|
+
import { describe, it, expect } from 'vitest';
|
7
|
+
import {
|
8
|
+
// Schema utilities
|
9
|
+
getSettingsByCategory, getSettingDefinition, requiresRestart, getDefaultValue, getRestartRequiredSettings, getEffectiveValue, getAllSettingKeys, getSettingsByType, getSettingsRequiringRestart, isValidSettingKey, getSettingCategory, shouldShowInDialog, getDialogSettingsByCategory, getDialogSettingsByType, getDialogSettingKeys,
|
10
|
+
// Business logic utilities
|
11
|
+
getSettingValue, isSettingModified, settingExistsInScope, setPendingSettingValue, hasRestartRequiredSettings, getRestartRequiredFromModified, getDisplayValue, isDefaultValue, isValueInherited, getEffectiveDisplayValue, } from './settingsUtils.js';
|
12
|
+
describe('SettingsUtils', () => {
|
13
|
+
describe('Schema Utilities', () => {
|
14
|
+
describe('getSettingsByCategory', () => {
|
15
|
+
it('should group settings by category', () => {
|
16
|
+
const categories = getSettingsByCategory();
|
17
|
+
expect(categories).toHaveProperty('General');
|
18
|
+
expect(categories).toHaveProperty('Accessibility');
|
19
|
+
expect(categories).toHaveProperty('Checkpointing');
|
20
|
+
expect(categories).toHaveProperty('File Filtering');
|
21
|
+
expect(categories).toHaveProperty('UI');
|
22
|
+
expect(categories).toHaveProperty('Mode');
|
23
|
+
expect(categories).toHaveProperty('Updates');
|
24
|
+
});
|
25
|
+
it('should include key property in grouped settings', () => {
|
26
|
+
const categories = getSettingsByCategory();
|
27
|
+
Object.entries(categories).forEach(([_category, settings]) => {
|
28
|
+
settings.forEach((setting) => {
|
29
|
+
expect(setting.key).toBeDefined();
|
30
|
+
});
|
31
|
+
});
|
32
|
+
});
|
33
|
+
});
|
34
|
+
describe('getSettingDefinition', () => {
|
35
|
+
it('should return definition for valid setting', () => {
|
36
|
+
const definition = getSettingDefinition('showMemoryUsage');
|
37
|
+
expect(definition).toBeDefined();
|
38
|
+
expect(definition?.label).toBe('Show Memory Usage');
|
39
|
+
});
|
40
|
+
it('should return undefined for invalid setting', () => {
|
41
|
+
const definition = getSettingDefinition('invalidSetting');
|
42
|
+
expect(definition).toBeUndefined();
|
43
|
+
});
|
44
|
+
});
|
45
|
+
describe('requiresRestart', () => {
|
46
|
+
it('should return true for settings that require restart', () => {
|
47
|
+
expect(requiresRestart('autoConfigureMaxOldSpaceSize')).toBe(true);
|
48
|
+
expect(requiresRestart('checkpointing.enabled')).toBe(true);
|
49
|
+
});
|
50
|
+
it('should return false for settings that do not require restart', () => {
|
51
|
+
expect(requiresRestart('showMemoryUsage')).toBe(false);
|
52
|
+
expect(requiresRestart('hideTips')).toBe(false);
|
53
|
+
});
|
54
|
+
it('should return false for invalid settings', () => {
|
55
|
+
expect(requiresRestart('invalidSetting')).toBe(false);
|
56
|
+
});
|
57
|
+
});
|
58
|
+
describe('getDefaultValue', () => {
|
59
|
+
it('should return correct default values', () => {
|
60
|
+
expect(getDefaultValue('showMemoryUsage')).toBe(false);
|
61
|
+
expect(getDefaultValue('fileFiltering.enableRecursiveFileSearch')).toBe(true);
|
62
|
+
});
|
63
|
+
it('should return undefined for invalid settings', () => {
|
64
|
+
expect(getDefaultValue('invalidSetting')).toBeUndefined();
|
65
|
+
});
|
66
|
+
});
|
67
|
+
describe('getRestartRequiredSettings', () => {
|
68
|
+
it('should return all settings that require restart', () => {
|
69
|
+
const restartSettings = getRestartRequiredSettings();
|
70
|
+
expect(restartSettings).toContain('autoConfigureMaxOldSpaceSize');
|
71
|
+
expect(restartSettings).toContain('checkpointing.enabled');
|
72
|
+
expect(restartSettings).not.toContain('showMemoryUsage');
|
73
|
+
});
|
74
|
+
});
|
75
|
+
describe('getEffectiveValue', () => {
|
76
|
+
it('should return value from settings when set', () => {
|
77
|
+
const settings = { showMemoryUsage: true };
|
78
|
+
const mergedSettings = { showMemoryUsage: false };
|
79
|
+
const value = getEffectiveValue('showMemoryUsage', settings, mergedSettings);
|
80
|
+
expect(value).toBe(true);
|
81
|
+
});
|
82
|
+
it('should return value from merged settings when not set in current scope', () => {
|
83
|
+
const settings = {};
|
84
|
+
const mergedSettings = { showMemoryUsage: true };
|
85
|
+
const value = getEffectiveValue('showMemoryUsage', settings, mergedSettings);
|
86
|
+
expect(value).toBe(true);
|
87
|
+
});
|
88
|
+
it('should return default value when not set anywhere', () => {
|
89
|
+
const settings = {};
|
90
|
+
const mergedSettings = {};
|
91
|
+
const value = getEffectiveValue('showMemoryUsage', settings, mergedSettings);
|
92
|
+
expect(value).toBe(false); // default value
|
93
|
+
});
|
94
|
+
it('should handle nested settings correctly', () => {
|
95
|
+
const settings = {
|
96
|
+
accessibility: { disableLoadingPhrases: true },
|
97
|
+
};
|
98
|
+
const mergedSettings = {
|
99
|
+
accessibility: { disableLoadingPhrases: false },
|
100
|
+
};
|
101
|
+
const value = getEffectiveValue('accessibility.disableLoadingPhrases', settings, mergedSettings);
|
102
|
+
expect(value).toBe(true);
|
103
|
+
});
|
104
|
+
it('should return undefined for invalid settings', () => {
|
105
|
+
const settings = {};
|
106
|
+
const mergedSettings = {};
|
107
|
+
const value = getEffectiveValue('invalidSetting', settings, mergedSettings);
|
108
|
+
expect(value).toBeUndefined();
|
109
|
+
});
|
110
|
+
});
|
111
|
+
describe('getAllSettingKeys', () => {
|
112
|
+
it('should return all setting keys', () => {
|
113
|
+
const keys = getAllSettingKeys();
|
114
|
+
expect(keys).toContain('showMemoryUsage');
|
115
|
+
expect(keys).toContain('accessibility.disableLoadingPhrases');
|
116
|
+
expect(keys).toContain('checkpointing.enabled');
|
117
|
+
});
|
118
|
+
});
|
119
|
+
describe('getSettingsByType', () => {
|
120
|
+
it('should return only boolean settings', () => {
|
121
|
+
const booleanSettings = getSettingsByType('boolean');
|
122
|
+
expect(booleanSettings.length).toBeGreaterThan(0);
|
123
|
+
booleanSettings.forEach((setting) => {
|
124
|
+
expect(setting.type).toBe('boolean');
|
125
|
+
});
|
126
|
+
});
|
127
|
+
});
|
128
|
+
describe('getSettingsRequiringRestart', () => {
|
129
|
+
it('should return only settings that require restart', () => {
|
130
|
+
const restartSettings = getSettingsRequiringRestart();
|
131
|
+
expect(restartSettings.length).toBeGreaterThan(0);
|
132
|
+
restartSettings.forEach((setting) => {
|
133
|
+
expect(setting.requiresRestart).toBe(true);
|
134
|
+
});
|
135
|
+
});
|
136
|
+
});
|
137
|
+
describe('isValidSettingKey', () => {
|
138
|
+
it('should return true for valid setting keys', () => {
|
139
|
+
expect(isValidSettingKey('showMemoryUsage')).toBe(true);
|
140
|
+
expect(isValidSettingKey('accessibility.disableLoadingPhrases')).toBe(true);
|
141
|
+
});
|
142
|
+
it('should return false for invalid setting keys', () => {
|
143
|
+
expect(isValidSettingKey('invalidSetting')).toBe(false);
|
144
|
+
expect(isValidSettingKey('')).toBe(false);
|
145
|
+
});
|
146
|
+
});
|
147
|
+
describe('getSettingCategory', () => {
|
148
|
+
it('should return correct category for valid settings', () => {
|
149
|
+
expect(getSettingCategory('showMemoryUsage')).toBe('UI');
|
150
|
+
expect(getSettingCategory('accessibility.disableLoadingPhrases')).toBe('Accessibility');
|
151
|
+
});
|
152
|
+
it('should return undefined for invalid settings', () => {
|
153
|
+
expect(getSettingCategory('invalidSetting')).toBeUndefined();
|
154
|
+
});
|
155
|
+
});
|
156
|
+
describe('shouldShowInDialog', () => {
|
157
|
+
it('should return true for settings marked to show in dialog', () => {
|
158
|
+
expect(shouldShowInDialog('showMemoryUsage')).toBe(true);
|
159
|
+
expect(shouldShowInDialog('vimMode')).toBe(true);
|
160
|
+
expect(shouldShowInDialog('hideWindowTitle')).toBe(true);
|
161
|
+
expect(shouldShowInDialog('usageStatisticsEnabled')).toBe(true);
|
162
|
+
});
|
163
|
+
it('should return false for settings marked to hide from dialog', () => {
|
164
|
+
expect(shouldShowInDialog('selectedAuthType')).toBe(false);
|
165
|
+
expect(shouldShowInDialog('coreTools')).toBe(false);
|
166
|
+
expect(shouldShowInDialog('customThemes')).toBe(false);
|
167
|
+
expect(shouldShowInDialog('theme')).toBe(false); // Changed to false
|
168
|
+
expect(shouldShowInDialog('preferredEditor')).toBe(false); // Changed to false
|
169
|
+
});
|
170
|
+
it('should return true for invalid settings (default behavior)', () => {
|
171
|
+
expect(shouldShowInDialog('invalidSetting')).toBe(true);
|
172
|
+
});
|
173
|
+
});
|
174
|
+
describe('getDialogSettingsByCategory', () => {
|
175
|
+
it('should only return settings marked for dialog display', async () => {
|
176
|
+
const categories = getDialogSettingsByCategory();
|
177
|
+
// Should include UI settings that are marked for dialog
|
178
|
+
expect(categories['UI']).toBeDefined();
|
179
|
+
const uiSettings = categories['UI'];
|
180
|
+
const uiKeys = uiSettings.map((s) => s.key);
|
181
|
+
expect(uiKeys).toContain('showMemoryUsage');
|
182
|
+
expect(uiKeys).toContain('hideWindowTitle');
|
183
|
+
expect(uiKeys).not.toContain('customThemes'); // This is marked false
|
184
|
+
expect(uiKeys).not.toContain('theme'); // This is now marked false
|
185
|
+
});
|
186
|
+
it('should not include Advanced category settings', () => {
|
187
|
+
const categories = getDialogSettingsByCategory();
|
188
|
+
// Advanced settings should be filtered out
|
189
|
+
expect(categories['Advanced']).toBeUndefined();
|
190
|
+
});
|
191
|
+
it('should include settings with showInDialog=true', () => {
|
192
|
+
const categories = getDialogSettingsByCategory();
|
193
|
+
const allSettings = Object.values(categories).flat();
|
194
|
+
const allKeys = allSettings.map((s) => s.key);
|
195
|
+
expect(allKeys).toContain('vimMode');
|
196
|
+
expect(allKeys).toContain('ideMode');
|
197
|
+
expect(allKeys).toContain('disableAutoUpdate');
|
198
|
+
expect(allKeys).toContain('showMemoryUsage');
|
199
|
+
expect(allKeys).toContain('usageStatisticsEnabled');
|
200
|
+
expect(allKeys).not.toContain('selectedAuthType');
|
201
|
+
expect(allKeys).not.toContain('coreTools');
|
202
|
+
expect(allKeys).not.toContain('theme'); // Now hidden
|
203
|
+
expect(allKeys).not.toContain('preferredEditor'); // Now hidden
|
204
|
+
});
|
205
|
+
});
|
206
|
+
describe('getDialogSettingsByType', () => {
|
207
|
+
it('should return only boolean dialog settings', () => {
|
208
|
+
const booleanSettings = getDialogSettingsByType('boolean');
|
209
|
+
const keys = booleanSettings.map((s) => s.key);
|
210
|
+
expect(keys).toContain('showMemoryUsage');
|
211
|
+
expect(keys).toContain('vimMode');
|
212
|
+
expect(keys).toContain('hideWindowTitle');
|
213
|
+
expect(keys).toContain('usageStatisticsEnabled');
|
214
|
+
expect(keys).not.toContain('selectedAuthType'); // Advanced setting
|
215
|
+
expect(keys).not.toContain('useExternalAuth'); // Advanced setting
|
216
|
+
});
|
217
|
+
it('should return only string dialog settings', () => {
|
218
|
+
const stringSettings = getDialogSettingsByType('string');
|
219
|
+
const keys = stringSettings.map((s) => s.key);
|
220
|
+
// Note: theme and preferredEditor are now hidden from dialog
|
221
|
+
expect(keys).not.toContain('theme'); // Now marked false
|
222
|
+
expect(keys).not.toContain('preferredEditor'); // Now marked false
|
223
|
+
expect(keys).not.toContain('selectedAuthType'); // Advanced setting
|
224
|
+
// Most string settings are now hidden, so let's just check they exclude advanced ones
|
225
|
+
expect(keys.every((key) => !key.startsWith('tool'))).toBe(true); // No tool-related settings
|
226
|
+
});
|
227
|
+
});
|
228
|
+
describe('getDialogSettingKeys', () => {
|
229
|
+
it('should return only settings marked for dialog display', () => {
|
230
|
+
const dialogKeys = getDialogSettingKeys();
|
231
|
+
// Should include settings marked for dialog
|
232
|
+
expect(dialogKeys).toContain('showMemoryUsage');
|
233
|
+
expect(dialogKeys).toContain('vimMode');
|
234
|
+
expect(dialogKeys).toContain('hideWindowTitle');
|
235
|
+
expect(dialogKeys).toContain('usageStatisticsEnabled');
|
236
|
+
expect(dialogKeys).toContain('ideMode');
|
237
|
+
expect(dialogKeys).toContain('disableAutoUpdate');
|
238
|
+
// Should include nested settings marked for dialog
|
239
|
+
expect(dialogKeys).toContain('fileFiltering.respectGitIgnore');
|
240
|
+
expect(dialogKeys).toContain('fileFiltering.respectLlxprtIgnore');
|
241
|
+
expect(dialogKeys).toContain('fileFiltering.enableRecursiveFileSearch');
|
242
|
+
// Should NOT include settings marked as hidden
|
243
|
+
expect(dialogKeys).not.toContain('theme'); // Hidden
|
244
|
+
expect(dialogKeys).not.toContain('customThemes'); // Hidden
|
245
|
+
expect(dialogKeys).not.toContain('preferredEditor'); // Hidden
|
246
|
+
expect(dialogKeys).not.toContain('selectedAuthType'); // Advanced
|
247
|
+
expect(dialogKeys).not.toContain('coreTools'); // Advanced
|
248
|
+
expect(dialogKeys).not.toContain('mcpServers'); // Advanced
|
249
|
+
expect(dialogKeys).not.toContain('telemetry'); // Advanced
|
250
|
+
});
|
251
|
+
it('should return fewer keys than getAllSettingKeys', () => {
|
252
|
+
const allKeys = getAllSettingKeys();
|
253
|
+
const dialogKeys = getDialogSettingKeys();
|
254
|
+
expect(dialogKeys.length).toBeLessThan(allKeys.length);
|
255
|
+
expect(dialogKeys.length).toBeGreaterThan(0);
|
256
|
+
});
|
257
|
+
it('should handle nested settings display correctly', () => {
|
258
|
+
// Test the specific issue with fileFiltering.respectGitIgnore
|
259
|
+
const key = 'fileFiltering.respectGitIgnore';
|
260
|
+
const initialSettings = {};
|
261
|
+
const pendingSettings = {};
|
262
|
+
// Set the nested setting to true
|
263
|
+
const updatedPendingSettings = setPendingSettingValue(key, true, pendingSettings);
|
264
|
+
// Check if the setting exists in pending settings
|
265
|
+
const existsInPending = settingExistsInScope(key, updatedPendingSettings);
|
266
|
+
expect(existsInPending).toBe(true);
|
267
|
+
// Get the value from pending settings
|
268
|
+
const valueFromPending = getSettingValue(key, updatedPendingSettings, {});
|
269
|
+
expect(valueFromPending).toBe(true);
|
270
|
+
// Test getDisplayValue should show the pending change
|
271
|
+
const displayValue = getDisplayValue(key, initialSettings, {}, new Set(), updatedPendingSettings);
|
272
|
+
expect(displayValue).toBe('true*'); // Should show true with * indicating change
|
273
|
+
// Test that modified settings also show the * indicator
|
274
|
+
const modifiedSettings = new Set([key]);
|
275
|
+
const displayValueWithModified = getDisplayValue(key, initialSettings, {}, modifiedSettings, {});
|
276
|
+
expect(displayValueWithModified).toBe('true*'); // Should show true* because it's in modified settings and default is true
|
277
|
+
});
|
278
|
+
});
|
279
|
+
});
|
280
|
+
describe('Business Logic Utilities', () => {
|
281
|
+
describe('getSettingValue', () => {
|
282
|
+
it('should return value from settings when set', () => {
|
283
|
+
const settings = { showMemoryUsage: true };
|
284
|
+
const mergedSettings = { showMemoryUsage: false };
|
285
|
+
const value = getSettingValue('showMemoryUsage', settings, mergedSettings);
|
286
|
+
expect(value).toBe(true);
|
287
|
+
});
|
288
|
+
it('should return value from merged settings when not set in current scope', () => {
|
289
|
+
const settings = {};
|
290
|
+
const mergedSettings = { showMemoryUsage: true };
|
291
|
+
const value = getSettingValue('showMemoryUsage', settings, mergedSettings);
|
292
|
+
expect(value).toBe(true);
|
293
|
+
});
|
294
|
+
it('should return default value for invalid setting', () => {
|
295
|
+
const settings = {};
|
296
|
+
const mergedSettings = {};
|
297
|
+
const value = getSettingValue('invalidSetting', settings, mergedSettings);
|
298
|
+
expect(value).toBe(false); // Default fallback
|
299
|
+
});
|
300
|
+
});
|
301
|
+
describe('isSettingModified', () => {
|
302
|
+
it('should return true when value differs from default', () => {
|
303
|
+
expect(isSettingModified('showMemoryUsage', true)).toBe(true);
|
304
|
+
expect(isSettingModified('fileFiltering.enableRecursiveFileSearch', false)).toBe(true);
|
305
|
+
});
|
306
|
+
it('should return false when value matches default', () => {
|
307
|
+
expect(isSettingModified('showMemoryUsage', false)).toBe(false);
|
308
|
+
expect(isSettingModified('fileFiltering.enableRecursiveFileSearch', true)).toBe(false);
|
309
|
+
});
|
310
|
+
});
|
311
|
+
describe('settingExistsInScope', () => {
|
312
|
+
it('should return true for top-level settings that exist', () => {
|
313
|
+
const settings = { showMemoryUsage: true };
|
314
|
+
expect(settingExistsInScope('showMemoryUsage', settings)).toBe(true);
|
315
|
+
});
|
316
|
+
it('should return false for top-level settings that do not exist', () => {
|
317
|
+
const settings = {};
|
318
|
+
expect(settingExistsInScope('showMemoryUsage', settings)).toBe(false);
|
319
|
+
});
|
320
|
+
it('should return true for nested settings that exist', () => {
|
321
|
+
const settings = {
|
322
|
+
accessibility: { disableLoadingPhrases: true },
|
323
|
+
};
|
324
|
+
expect(settingExistsInScope('accessibility.disableLoadingPhrases', settings)).toBe(true);
|
325
|
+
});
|
326
|
+
it('should return false for nested settings that do not exist', () => {
|
327
|
+
const settings = {};
|
328
|
+
expect(settingExistsInScope('accessibility.disableLoadingPhrases', settings)).toBe(false);
|
329
|
+
});
|
330
|
+
it('should return false when parent exists but child does not', () => {
|
331
|
+
const settings = { accessibility: {} };
|
332
|
+
expect(settingExistsInScope('accessibility.disableLoadingPhrases', settings)).toBe(false);
|
333
|
+
});
|
334
|
+
});
|
335
|
+
describe('setPendingSettingValue', () => {
|
336
|
+
it('should set top-level setting value', () => {
|
337
|
+
const pendingSettings = {};
|
338
|
+
const result = setPendingSettingValue('showMemoryUsage', true, pendingSettings);
|
339
|
+
expect(result.showMemoryUsage).toBe(true);
|
340
|
+
});
|
341
|
+
it('should set nested setting value', () => {
|
342
|
+
const pendingSettings = {};
|
343
|
+
const result = setPendingSettingValue('accessibility.disableLoadingPhrases', true, pendingSettings);
|
344
|
+
expect(result.accessibility?.disableLoadingPhrases).toBe(true);
|
345
|
+
});
|
346
|
+
it('should preserve existing nested settings', () => {
|
347
|
+
const pendingSettings = {
|
348
|
+
accessibility: { disableLoadingPhrases: false },
|
349
|
+
};
|
350
|
+
const result = setPendingSettingValue('accessibility.disableLoadingPhrases', true, pendingSettings);
|
351
|
+
expect(result.accessibility?.disableLoadingPhrases).toBe(true);
|
352
|
+
});
|
353
|
+
it('should not mutate original settings', () => {
|
354
|
+
const pendingSettings = {};
|
355
|
+
setPendingSettingValue('showMemoryUsage', true, pendingSettings);
|
356
|
+
expect(pendingSettings).toEqual({});
|
357
|
+
});
|
358
|
+
});
|
359
|
+
describe('hasRestartRequiredSettings', () => {
|
360
|
+
it('should return true when modified settings require restart', () => {
|
361
|
+
const modifiedSettings = new Set([
|
362
|
+
'autoConfigureMaxOldSpaceSize',
|
363
|
+
'showMemoryUsage',
|
364
|
+
]);
|
365
|
+
expect(hasRestartRequiredSettings(modifiedSettings)).toBe(true);
|
366
|
+
});
|
367
|
+
it('should return false when no modified settings require restart', () => {
|
368
|
+
const modifiedSettings = new Set([
|
369
|
+
'showMemoryUsage',
|
370
|
+
'hideTips',
|
371
|
+
]);
|
372
|
+
expect(hasRestartRequiredSettings(modifiedSettings)).toBe(false);
|
373
|
+
});
|
374
|
+
it('should return false for empty set', () => {
|
375
|
+
const modifiedSettings = new Set();
|
376
|
+
expect(hasRestartRequiredSettings(modifiedSettings)).toBe(false);
|
377
|
+
});
|
378
|
+
});
|
379
|
+
describe('getRestartRequiredFromModified', () => {
|
380
|
+
it('should return only settings that require restart', () => {
|
381
|
+
const modifiedSettings = new Set([
|
382
|
+
'autoConfigureMaxOldSpaceSize',
|
383
|
+
'showMemoryUsage',
|
384
|
+
'checkpointing.enabled',
|
385
|
+
]);
|
386
|
+
const result = getRestartRequiredFromModified(modifiedSettings);
|
387
|
+
expect(result).toContain('autoConfigureMaxOldSpaceSize');
|
388
|
+
expect(result).toContain('checkpointing.enabled');
|
389
|
+
expect(result).not.toContain('showMemoryUsage');
|
390
|
+
});
|
391
|
+
it('should return empty array when no settings require restart', () => {
|
392
|
+
const modifiedSettings = new Set([
|
393
|
+
'showMemoryUsage',
|
394
|
+
'hideTips',
|
395
|
+
]);
|
396
|
+
const result = getRestartRequiredFromModified(modifiedSettings);
|
397
|
+
expect(result).toEqual([]);
|
398
|
+
});
|
399
|
+
});
|
400
|
+
describe('getDisplayValue', () => {
|
401
|
+
it('should show value without * when setting matches default', () => {
|
402
|
+
const settings = { showMemoryUsage: false }; // false matches default, so no *
|
403
|
+
const mergedSettings = { showMemoryUsage: false };
|
404
|
+
const modifiedSettings = new Set();
|
405
|
+
const result = getDisplayValue('showMemoryUsage', settings, mergedSettings, modifiedSettings);
|
406
|
+
expect(result).toBe('false'); // matches default, no *
|
407
|
+
});
|
408
|
+
it('should show default value when setting is not in scope', () => {
|
409
|
+
const settings = {}; // no setting in scope
|
410
|
+
const mergedSettings = { showMemoryUsage: false };
|
411
|
+
const modifiedSettings = new Set();
|
412
|
+
const result = getDisplayValue('showMemoryUsage', settings, mergedSettings, modifiedSettings);
|
413
|
+
expect(result).toBe('false'); // shows default value
|
414
|
+
});
|
415
|
+
it('should show value with * when changed from default', () => {
|
416
|
+
const settings = { showMemoryUsage: true }; // true is different from default (false)
|
417
|
+
const mergedSettings = { showMemoryUsage: true };
|
418
|
+
const modifiedSettings = new Set();
|
419
|
+
const result = getDisplayValue('showMemoryUsage', settings, mergedSettings, modifiedSettings);
|
420
|
+
expect(result).toBe('true*');
|
421
|
+
});
|
422
|
+
it('should show default value without * when setting does not exist in scope', () => {
|
423
|
+
const settings = {}; // setting doesn't exist in scope, show default
|
424
|
+
const mergedSettings = { showMemoryUsage: false };
|
425
|
+
const modifiedSettings = new Set();
|
426
|
+
const result = getDisplayValue('showMemoryUsage', settings, mergedSettings, modifiedSettings);
|
427
|
+
expect(result).toBe('false'); // default value (false) without *
|
428
|
+
});
|
429
|
+
it('should show value with * when user changes from default', () => {
|
430
|
+
const settings = {}; // setting doesn't exist in scope originally
|
431
|
+
const mergedSettings = { showMemoryUsage: false };
|
432
|
+
const modifiedSettings = new Set(['showMemoryUsage']);
|
433
|
+
const pendingSettings = { showMemoryUsage: true }; // user changed to true
|
434
|
+
const result = getDisplayValue('showMemoryUsage', settings, mergedSettings, modifiedSettings, pendingSettings);
|
435
|
+
expect(result).toBe('true*'); // changed from default (false) to true
|
436
|
+
});
|
437
|
+
});
|
438
|
+
describe('isDefaultValue', () => {
|
439
|
+
it('should return true when setting does not exist in scope', () => {
|
440
|
+
const settings = {}; // setting doesn't exist
|
441
|
+
const result = isDefaultValue('showMemoryUsage', settings);
|
442
|
+
expect(result).toBe(true);
|
443
|
+
});
|
444
|
+
it('should return false when setting exists in scope', () => {
|
445
|
+
const settings = { showMemoryUsage: true }; // setting exists
|
446
|
+
const result = isDefaultValue('showMemoryUsage', settings);
|
447
|
+
expect(result).toBe(false);
|
448
|
+
});
|
449
|
+
it('should return true when nested setting does not exist in scope', () => {
|
450
|
+
const settings = {}; // nested setting doesn't exist
|
451
|
+
const result = isDefaultValue('accessibility.disableLoadingPhrases', settings);
|
452
|
+
expect(result).toBe(true);
|
453
|
+
});
|
454
|
+
it('should return false when nested setting exists in scope', () => {
|
455
|
+
const settings = { accessibility: { disableLoadingPhrases: true } }; // nested setting exists
|
456
|
+
const result = isDefaultValue('accessibility.disableLoadingPhrases', settings);
|
457
|
+
expect(result).toBe(false);
|
458
|
+
});
|
459
|
+
});
|
460
|
+
describe('isValueInherited', () => {
|
461
|
+
it('should return false for top-level settings that exist in scope', () => {
|
462
|
+
const settings = { showMemoryUsage: true };
|
463
|
+
const mergedSettings = { showMemoryUsage: true };
|
464
|
+
const result = isValueInherited('showMemoryUsage', settings, mergedSettings);
|
465
|
+
expect(result).toBe(false);
|
466
|
+
});
|
467
|
+
it('should return true for top-level settings that do not exist in scope', () => {
|
468
|
+
const settings = {};
|
469
|
+
const mergedSettings = { showMemoryUsage: true };
|
470
|
+
const result = isValueInherited('showMemoryUsage', settings, mergedSettings);
|
471
|
+
expect(result).toBe(true);
|
472
|
+
});
|
473
|
+
it('should return false for nested settings that exist in scope', () => {
|
474
|
+
const settings = {
|
475
|
+
accessibility: { disableLoadingPhrases: true },
|
476
|
+
};
|
477
|
+
const mergedSettings = {
|
478
|
+
accessibility: { disableLoadingPhrases: true },
|
479
|
+
};
|
480
|
+
const result = isValueInherited('accessibility.disableLoadingPhrases', settings, mergedSettings);
|
481
|
+
expect(result).toBe(false);
|
482
|
+
});
|
483
|
+
it('should return true for nested settings that do not exist in scope', () => {
|
484
|
+
const settings = {};
|
485
|
+
const mergedSettings = {
|
486
|
+
accessibility: { disableLoadingPhrases: true },
|
487
|
+
};
|
488
|
+
const result = isValueInherited('accessibility.disableLoadingPhrases', settings, mergedSettings);
|
489
|
+
expect(result).toBe(true);
|
490
|
+
});
|
491
|
+
});
|
492
|
+
describe('getEffectiveDisplayValue', () => {
|
493
|
+
it('should return value from settings when available', () => {
|
494
|
+
const settings = { showMemoryUsage: true };
|
495
|
+
const mergedSettings = { showMemoryUsage: false };
|
496
|
+
const result = getEffectiveDisplayValue('showMemoryUsage', settings, mergedSettings);
|
497
|
+
expect(result).toBe(true);
|
498
|
+
});
|
499
|
+
it('should return value from merged settings when not in scope', () => {
|
500
|
+
const settings = {};
|
501
|
+
const mergedSettings = { showMemoryUsage: true };
|
502
|
+
const result = getEffectiveDisplayValue('showMemoryUsage', settings, mergedSettings);
|
503
|
+
expect(result).toBe(true);
|
504
|
+
});
|
505
|
+
it('should return default value for undefined values', () => {
|
506
|
+
const settings = {};
|
507
|
+
const mergedSettings = {};
|
508
|
+
const result = getEffectiveDisplayValue('showMemoryUsage', settings, mergedSettings);
|
509
|
+
expect(result).toBe(false); // Default value
|
510
|
+
});
|
511
|
+
});
|
512
|
+
});
|
513
|
+
});
|
514
|
+
//# sourceMappingURL=settingsUtils.test.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"settingsUtils.test.js","sourceRoot":"","sources":["../../../src/utils/settingsUtils.test.ts"],"names":[],"mappings":"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"}
|
@@ -16,7 +16,7 @@ const homeDirectoryCheck = {
|
|
16
16
|
fs.realpath(os.homedir()),
|
17
17
|
]);
|
18
18
|
if (workspaceRealPath === homeRealPath) {
|
19
|
-
return 'You are running
|
19
|
+
return 'You are running LLxprt CLI in your home directory. It is recommended to run in a project-specific directory.';
|
20
20
|
}
|
21
21
|
return null;
|
22
22
|
}
|
@@ -30,7 +30,7 @@ const rootDirectoryCheck = {
|
|
30
30
|
check: async (workspaceRoot) => {
|
31
31
|
try {
|
32
32
|
const workspaceRealPath = await fs.realpath(workspaceRoot);
|
33
|
-
const errorMessage = 'Warning: You are running
|
33
|
+
const errorMessage = 'Warning: You are running LLxprt CLI in the root directory. Your entire folder structure will be used for context. It is strongly recommended to run in a project-specific directory.';
|
34
34
|
// Check for Unix root directory
|
35
35
|
if (path.dirname(workspaceRealPath) === workspaceRealPath) {
|
36
36
|
return errorMessage;
|