@vybestack/llxprt-code 0.1.19-beta → 0.1.19

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.
Files changed (115) hide show
  1. package/README.md +49 -2
  2. package/dist/package.json +3 -3
  3. package/dist/src/auth/anthropic-oauth-provider.d.ts +33 -0
  4. package/dist/src/auth/anthropic-oauth-provider.js +129 -0
  5. package/dist/src/auth/anthropic-oauth-provider.js.map +1 -0
  6. package/dist/src/auth/gemini-oauth-provider.d.ts +15 -0
  7. package/dist/src/auth/gemini-oauth-provider.js +33 -0
  8. package/dist/src/auth/gemini-oauth-provider.js.map +1 -0
  9. package/dist/src/auth/oauth-manager.d.ts +110 -0
  10. package/dist/src/auth/oauth-manager.js +345 -0
  11. package/dist/src/auth/oauth-manager.js.map +1 -0
  12. package/dist/src/auth/oauth-manager.spec.d.ts +6 -0
  13. package/dist/src/auth/oauth-manager.spec.js +523 -0
  14. package/dist/src/auth/oauth-manager.spec.js.map +1 -0
  15. package/dist/src/auth/qwen-oauth-provider.d.ts +14 -0
  16. package/dist/src/auth/qwen-oauth-provider.js +75 -0
  17. package/dist/src/auth/qwen-oauth-provider.js.map +1 -0
  18. package/dist/src/auth/types.d.ts +7 -0
  19. package/dist/src/auth/types.js +7 -0
  20. package/dist/src/auth/types.js.map +1 -0
  21. package/dist/src/config/auth.js +6 -0
  22. package/dist/src/config/auth.js.map +1 -1
  23. package/dist/src/config/config.js +32 -15
  24. package/dist/src/config/config.js.map +1 -1
  25. package/dist/src/config/keyBindings.d.ts +2 -0
  26. package/dist/src/config/keyBindings.js +7 -8
  27. package/dist/src/config/keyBindings.js.map +1 -1
  28. package/dist/src/config/settings.d.ts +3 -62
  29. package/dist/src/config/settings.js.map +1 -1
  30. package/dist/src/config/settingsSchema.d.ts +587 -0
  31. package/dist/src/config/settingsSchema.js +565 -0
  32. package/dist/src/config/settingsSchema.js.map +1 -0
  33. package/dist/src/gemini.js +23 -5
  34. package/dist/src/gemini.js.map +1 -1
  35. package/dist/src/generated/git-commit.d.ts +1 -1
  36. package/dist/src/generated/git-commit.js +1 -1
  37. package/dist/src/providers/providerManagerInstance.d.ts +2 -0
  38. package/dist/src/providers/providerManagerInstance.js +45 -5
  39. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  40. package/dist/src/services/BuiltinCommandLoader.js +2 -0
  41. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  42. package/dist/src/ui/App.js +108 -17
  43. package/dist/src/ui/App.js.map +1 -1
  44. package/dist/src/ui/IdeIntegrationNudge.d.ts +7 -4
  45. package/dist/src/ui/IdeIntegrationNudge.js +26 -6
  46. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  47. package/dist/src/ui/commands/authCommand.d.ts +11 -1
  48. package/dist/src/ui/commands/authCommand.js +153 -48
  49. package/dist/src/ui/commands/authCommand.js.map +1 -1
  50. package/dist/src/ui/commands/diagnosticsCommand.js +94 -10
  51. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  52. package/dist/src/ui/commands/ideCommand.js +7 -4
  53. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  54. package/dist/src/ui/commands/keyCommand.js +32 -2
  55. package/dist/src/ui/commands/keyCommand.js.map +1 -1
  56. package/dist/src/ui/commands/keyfileCommand.js +15 -12
  57. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  58. package/dist/src/ui/commands/modelCommand.js +21 -3
  59. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  60. package/dist/src/ui/commands/providerCommand.js +52 -14
  61. package/dist/src/ui/commands/providerCommand.js.map +1 -1
  62. package/dist/src/ui/commands/setCommand.js +17 -1
  63. package/dist/src/ui/commands/setCommand.js.map +1 -1
  64. package/dist/src/ui/commands/settingsCommand.d.ts +7 -0
  65. package/dist/src/ui/commands/settingsCommand.js +16 -0
  66. package/dist/src/ui/commands/settingsCommand.js.map +1 -0
  67. package/dist/src/ui/commands/toolformatCommand.js +79 -23
  68. package/dist/src/ui/commands/toolformatCommand.js.map +1 -1
  69. package/dist/src/ui/commands/types.d.ts +1 -1
  70. package/dist/src/ui/commands/types.js.map +1 -1
  71. package/dist/src/ui/components/AuthDialog.js +55 -62
  72. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  73. package/dist/src/ui/components/Footer.d.ts +1 -0
  74. package/dist/src/ui/components/Footer.js +2 -2
  75. package/dist/src/ui/components/Footer.js.map +1 -1
  76. package/dist/src/ui/components/InputPrompt.d.ts +1 -0
  77. package/dist/src/ui/components/InputPrompt.js +59 -7
  78. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  79. package/dist/src/ui/components/OAuthCodeDialog.d.ts +13 -0
  80. package/dist/src/ui/components/OAuthCodeDialog.js +52 -0
  81. package/dist/src/ui/components/OAuthCodeDialog.js.map +1 -0
  82. package/dist/src/ui/components/SettingsDialog.d.ts +14 -0
  83. package/dist/src/ui/components/SettingsDialog.js +247 -0
  84. package/dist/src/ui/components/SettingsDialog.js.map +1 -0
  85. package/dist/src/ui/components/ThemeDialog.js +4 -15
  86. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  87. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +2 -2
  88. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  89. package/dist/src/ui/components/shared/text-buffer.d.ts +17 -4
  90. package/dist/src/ui/components/shared/text-buffer.js +224 -70
  91. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  92. package/dist/src/ui/components/shared/vim-buffer-actions.js +137 -151
  93. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -1
  94. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  95. package/dist/src/ui/hooks/slashCommandProcessor.js +5 -1
  96. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  97. package/dist/src/ui/hooks/useAuthCommand.js +14 -20
  98. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  99. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
  100. package/dist/src/ui/hooks/useGeminiStream.js +67 -25
  101. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  102. package/dist/src/ui/hooks/useSettingsCommand.d.ts +10 -0
  103. package/dist/src/ui/hooks/useSettingsCommand.js +21 -0
  104. package/dist/src/ui/hooks/useSettingsCommand.js.map +1 -0
  105. package/dist/src/ui/reducers/appReducer.d.ts +3 -2
  106. package/dist/src/ui/reducers/appReducer.js +1 -0
  107. package/dist/src/ui/reducers/appReducer.js.map +1 -1
  108. package/dist/src/utils/dialogScopeUtils.d.ts +31 -0
  109. package/dist/src/utils/dialogScopeUtils.js +48 -0
  110. package/dist/src/utils/dialogScopeUtils.js.map +1 -0
  111. package/dist/src/utils/settingsUtils.d.ts +126 -0
  112. package/dist/src/utils/settingsUtils.js +327 -0
  113. package/dist/src/utils/settingsUtils.js.map +1 -0
  114. package/dist/tsconfig.tsbuildinfo +1 -1
  115. package/package.json +3 -3
@@ -0,0 +1,126 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Settings, SettingScope, LoadedSettings } from '../config/settings.js';
7
+ import { SettingDefinition } from '../config/settingsSchema.js';
8
+ /**
9
+ * Get all settings grouped by category
10
+ */
11
+ export declare function getSettingsByCategory(): Record<string, Array<SettingDefinition & {
12
+ key: string;
13
+ }>>;
14
+ /**
15
+ * Get a setting definition by key
16
+ */
17
+ export declare function getSettingDefinition(key: string): (SettingDefinition & {
18
+ key: string;
19
+ }) | undefined;
20
+ /**
21
+ * Check if a setting requires restart
22
+ */
23
+ export declare function requiresRestart(key: string): boolean;
24
+ /**
25
+ * Get the default value for a setting
26
+ */
27
+ export declare function getDefaultValue(key: string): SettingDefinition['default'];
28
+ /**
29
+ * Get all setting keys that require restart
30
+ */
31
+ export declare function getRestartRequiredSettings(): string[];
32
+ /**
33
+ * Get the effective value for a setting, considering inheritance from higher scopes
34
+ * Always returns a value (never undefined) - falls back to default if not set anywhere
35
+ */
36
+ export declare function getEffectiveValue(key: string, settings: Settings, mergedSettings: Settings): SettingDefinition['default'];
37
+ /**
38
+ * Get all setting keys from the schema
39
+ */
40
+ export declare function getAllSettingKeys(): string[];
41
+ /**
42
+ * Get settings by type
43
+ */
44
+ export declare function getSettingsByType(type: SettingDefinition['type']): Array<SettingDefinition & {
45
+ key: string;
46
+ }>;
47
+ /**
48
+ * Get settings that require restart
49
+ */
50
+ export declare function getSettingsRequiringRestart(): Array<SettingDefinition & {
51
+ key: string;
52
+ }>;
53
+ /**
54
+ * Validate if a setting key exists in the schema
55
+ */
56
+ export declare function isValidSettingKey(key: string): boolean;
57
+ /**
58
+ * Get the category for a setting
59
+ */
60
+ export declare function getSettingCategory(key: string): string | undefined;
61
+ /**
62
+ * Check if a setting should be shown in the settings dialog
63
+ */
64
+ export declare function shouldShowInDialog(key: string): boolean;
65
+ /**
66
+ * Get all settings that should be shown in the dialog, grouped by category
67
+ */
68
+ export declare function getDialogSettingsByCategory(): Record<string, Array<SettingDefinition & {
69
+ key: string;
70
+ }>>;
71
+ /**
72
+ * Get settings by type that should be shown in the dialog
73
+ */
74
+ export declare function getDialogSettingsByType(type: SettingDefinition['type']): Array<SettingDefinition & {
75
+ key: string;
76
+ }>;
77
+ /**
78
+ * Get all setting keys that should be shown in the dialog
79
+ */
80
+ export declare function getDialogSettingKeys(): string[];
81
+ /**
82
+ * Get the current value for a setting in a specific scope
83
+ * Always returns a value (never undefined) - falls back to default if not set anywhere
84
+ */
85
+ export declare function getSettingValue(key: string, settings: Settings, mergedSettings: Settings): boolean;
86
+ /**
87
+ * Check if a setting value is modified from its default
88
+ */
89
+ export declare function isSettingModified(key: string, value: boolean): boolean;
90
+ /**
91
+ * Check if a setting exists in the original settings file for a scope
92
+ */
93
+ export declare function settingExistsInScope(key: string, scopeSettings: Settings): boolean;
94
+ /**
95
+ * Set a setting value in the pending settings
96
+ */
97
+ export declare function setPendingSettingValue(key: string, value: boolean, pendingSettings: Settings): Settings;
98
+ /**
99
+ * Check if any modified settings require a restart
100
+ */
101
+ export declare function hasRestartRequiredSettings(modifiedSettings: Set<string>): boolean;
102
+ /**
103
+ * Get the restart required settings from a set of modified settings
104
+ */
105
+ export declare function getRestartRequiredFromModified(modifiedSettings: Set<string>): string[];
106
+ /**
107
+ * Save modified settings to the appropriate scope
108
+ */
109
+ export declare function saveModifiedSettings(modifiedSettings: Set<string>, pendingSettings: Settings, loadedSettings: LoadedSettings, scope: SettingScope): void;
110
+ /**
111
+ * Get the display value for a setting, showing current scope value with default change indicator
112
+ */
113
+ export declare function getDisplayValue(key: string, settings: Settings, _mergedSettings: Settings, modifiedSettings: Set<string>, pendingSettings?: Settings): string;
114
+ /**
115
+ * Check if a setting doesn't exist in current scope (should be greyed out)
116
+ */
117
+ export declare function isDefaultValue(key: string, settings: Settings): boolean;
118
+ /**
119
+ * Check if a setting value is inherited (not set at current scope)
120
+ */
121
+ export declare function isValueInherited(key: string, settings: Settings, _mergedSettings: Settings): boolean;
122
+ /**
123
+ * Get the effective value for display, considering inheritance
124
+ * Always returns a boolean value (never undefined)
125
+ */
126
+ export declare function getEffectiveDisplayValue(key: string, settings: Settings, mergedSettings: Settings): boolean;
@@ -0,0 +1,327 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SETTINGS_SCHEMA, } from '../config/settingsSchema.js';
7
+ // The schema is now nested, but many parts of the UI and logic work better
8
+ // with a flattened structure and dot-notation keys. This section flattens the
9
+ // schema into a map for easier lookups.
10
+ function flattenSchema(schema, prefix = '') {
11
+ let result = {};
12
+ for (const key in schema) {
13
+ const newKey = prefix ? `${prefix}.${key}` : key;
14
+ const definition = schema[key];
15
+ result[newKey] = { ...definition, key: newKey };
16
+ if (definition.properties) {
17
+ result = { ...result, ...flattenSchema(definition.properties, newKey) };
18
+ }
19
+ }
20
+ return result;
21
+ }
22
+ const FLATTENED_SCHEMA = flattenSchema(SETTINGS_SCHEMA);
23
+ /**
24
+ * Get all settings grouped by category
25
+ */
26
+ export function getSettingsByCategory() {
27
+ const categories = {};
28
+ Object.values(FLATTENED_SCHEMA).forEach((definition) => {
29
+ const category = definition.category;
30
+ if (!categories[category]) {
31
+ categories[category] = [];
32
+ }
33
+ categories[category].push(definition);
34
+ });
35
+ return categories;
36
+ }
37
+ /**
38
+ * Get a setting definition by key
39
+ */
40
+ export function getSettingDefinition(key) {
41
+ return FLATTENED_SCHEMA[key];
42
+ }
43
+ /**
44
+ * Check if a setting requires restart
45
+ */
46
+ export function requiresRestart(key) {
47
+ return FLATTENED_SCHEMA[key]?.requiresRestart ?? false;
48
+ }
49
+ /**
50
+ * Get the default value for a setting
51
+ */
52
+ export function getDefaultValue(key) {
53
+ return FLATTENED_SCHEMA[key]?.default;
54
+ }
55
+ /**
56
+ * Get all setting keys that require restart
57
+ */
58
+ export function getRestartRequiredSettings() {
59
+ return Object.values(FLATTENED_SCHEMA)
60
+ .filter((definition) => definition.requiresRestart)
61
+ .map((definition) => definition.key);
62
+ }
63
+ /**
64
+ * Recursively gets a value from a nested object using a key path array.
65
+ */
66
+ function getNestedValue(obj, path) {
67
+ const [first, ...rest] = path;
68
+ if (!first || !(first in obj)) {
69
+ return undefined;
70
+ }
71
+ const value = obj[first];
72
+ if (rest.length === 0) {
73
+ return value;
74
+ }
75
+ if (value && typeof value === 'object' && value !== null) {
76
+ return getNestedValue(value, rest);
77
+ }
78
+ return undefined;
79
+ }
80
+ /**
81
+ * Get the effective value for a setting, considering inheritance from higher scopes
82
+ * Always returns a value (never undefined) - falls back to default if not set anywhere
83
+ */
84
+ export function getEffectiveValue(key, settings, mergedSettings) {
85
+ const definition = getSettingDefinition(key);
86
+ if (!definition) {
87
+ return undefined;
88
+ }
89
+ const path = key.split('.');
90
+ // Check the current scope's settings first
91
+ let value = getNestedValue(settings, path);
92
+ if (value !== undefined) {
93
+ return value;
94
+ }
95
+ // Check the merged settings for an inherited value
96
+ value = getNestedValue(mergedSettings, path);
97
+ if (value !== undefined) {
98
+ return value;
99
+ }
100
+ // Return default value if no value is set anywhere
101
+ return definition.default;
102
+ }
103
+ /**
104
+ * Get all setting keys from the schema
105
+ */
106
+ export function getAllSettingKeys() {
107
+ return Object.keys(FLATTENED_SCHEMA);
108
+ }
109
+ /**
110
+ * Get settings by type
111
+ */
112
+ export function getSettingsByType(type) {
113
+ return Object.values(FLATTENED_SCHEMA).filter((definition) => definition.type === type);
114
+ }
115
+ /**
116
+ * Get settings that require restart
117
+ */
118
+ export function getSettingsRequiringRestart() {
119
+ return Object.values(FLATTENED_SCHEMA).filter((definition) => definition.requiresRestart);
120
+ }
121
+ /**
122
+ * Validate if a setting key exists in the schema
123
+ */
124
+ export function isValidSettingKey(key) {
125
+ return key in FLATTENED_SCHEMA;
126
+ }
127
+ /**
128
+ * Get the category for a setting
129
+ */
130
+ export function getSettingCategory(key) {
131
+ return FLATTENED_SCHEMA[key]?.category;
132
+ }
133
+ /**
134
+ * Check if a setting should be shown in the settings dialog
135
+ */
136
+ export function shouldShowInDialog(key) {
137
+ return FLATTENED_SCHEMA[key]?.showInDialog ?? true; // Default to true for backward compatibility
138
+ }
139
+ /**
140
+ * Get all settings that should be shown in the dialog, grouped by category
141
+ */
142
+ export function getDialogSettingsByCategory() {
143
+ const categories = {};
144
+ Object.values(FLATTENED_SCHEMA)
145
+ .filter((definition) => definition.showInDialog !== false)
146
+ .forEach((definition) => {
147
+ const category = definition.category;
148
+ if (!categories[category]) {
149
+ categories[category] = [];
150
+ }
151
+ categories[category].push(definition);
152
+ });
153
+ return categories;
154
+ }
155
+ /**
156
+ * Get settings by type that should be shown in the dialog
157
+ */
158
+ export function getDialogSettingsByType(type) {
159
+ return Object.values(FLATTENED_SCHEMA).filter((definition) => definition.type === type && definition.showInDialog !== false);
160
+ }
161
+ /**
162
+ * Get all setting keys that should be shown in the dialog
163
+ */
164
+ export function getDialogSettingKeys() {
165
+ return Object.values(FLATTENED_SCHEMA)
166
+ .filter((definition) => definition.showInDialog !== false)
167
+ .map((definition) => definition.key);
168
+ }
169
+ // ============================================================================
170
+ // BUSINESS LOGIC UTILITIES (Higher-level utilities for setting operations)
171
+ // ============================================================================
172
+ /**
173
+ * Get the current value for a setting in a specific scope
174
+ * Always returns a value (never undefined) - falls back to default if not set anywhere
175
+ */
176
+ export function getSettingValue(key, settings, mergedSettings) {
177
+ const definition = getSettingDefinition(key);
178
+ if (!definition) {
179
+ return false; // Default fallback for invalid settings
180
+ }
181
+ const value = getEffectiveValue(key, settings, mergedSettings);
182
+ // Ensure we return a boolean value, converting from the more general type
183
+ if (typeof value === 'boolean') {
184
+ return value;
185
+ }
186
+ // Fall back to default value, ensuring it's a boolean
187
+ const defaultValue = definition.default;
188
+ if (typeof defaultValue === 'boolean') {
189
+ return defaultValue;
190
+ }
191
+ return false; // Final fallback
192
+ }
193
+ /**
194
+ * Check if a setting value is modified from its default
195
+ */
196
+ export function isSettingModified(key, value) {
197
+ const defaultValue = getDefaultValue(key);
198
+ // Handle type comparison properly
199
+ if (typeof defaultValue === 'boolean') {
200
+ return value !== defaultValue;
201
+ }
202
+ // If default is not a boolean, consider it modified if value is true
203
+ return value === true;
204
+ }
205
+ /**
206
+ * Check if a setting exists in the original settings file for a scope
207
+ */
208
+ export function settingExistsInScope(key, scopeSettings) {
209
+ const path = key.split('.');
210
+ const value = getNestedValue(scopeSettings, path);
211
+ return value !== undefined;
212
+ }
213
+ /**
214
+ * Recursively sets a value in a nested object using a key path array.
215
+ */
216
+ function setNestedValue(obj, path, value) {
217
+ const [first, ...rest] = path;
218
+ if (!first) {
219
+ return obj;
220
+ }
221
+ if (rest.length === 0) {
222
+ obj[first] = value;
223
+ return obj;
224
+ }
225
+ if (!obj[first] || typeof obj[first] !== 'object') {
226
+ obj[first] = {};
227
+ }
228
+ setNestedValue(obj[first], rest, value);
229
+ return obj;
230
+ }
231
+ /**
232
+ * Set a setting value in the pending settings
233
+ */
234
+ export function setPendingSettingValue(key, value, pendingSettings) {
235
+ const path = key.split('.');
236
+ const newSettings = JSON.parse(JSON.stringify(pendingSettings));
237
+ setNestedValue(newSettings, path, value);
238
+ return newSettings;
239
+ }
240
+ /**
241
+ * Check if any modified settings require a restart
242
+ */
243
+ export function hasRestartRequiredSettings(modifiedSettings) {
244
+ return Array.from(modifiedSettings).some((key) => requiresRestart(key));
245
+ }
246
+ /**
247
+ * Get the restart required settings from a set of modified settings
248
+ */
249
+ export function getRestartRequiredFromModified(modifiedSettings) {
250
+ return Array.from(modifiedSettings).filter((key) => requiresRestart(key));
251
+ }
252
+ /**
253
+ * Save modified settings to the appropriate scope
254
+ */
255
+ export function saveModifiedSettings(modifiedSettings, pendingSettings, loadedSettings, scope) {
256
+ modifiedSettings.forEach((settingKey) => {
257
+ const path = settingKey.split('.');
258
+ const value = getNestedValue(pendingSettings, path);
259
+ if (value === undefined) {
260
+ return;
261
+ }
262
+ const existsInOriginalFile = settingExistsInScope(settingKey, loadedSettings.forScope(scope).settings);
263
+ const isDefaultValue = value === getDefaultValue(settingKey);
264
+ if (existsInOriginalFile || !isDefaultValue) {
265
+ // This is tricky because setValue only works on top-level keys.
266
+ // We need to set the whole parent object.
267
+ const [parentKey] = path;
268
+ if (parentKey) {
269
+ // Ensure value is a boolean for setPendingSettingValue
270
+ const booleanValue = typeof value === 'boolean' ? value : false;
271
+ const newParentValue = setPendingSettingValue(settingKey, booleanValue, loadedSettings.forScope(scope).settings)[parentKey];
272
+ loadedSettings.setValue(scope, parentKey, newParentValue);
273
+ }
274
+ }
275
+ });
276
+ }
277
+ /**
278
+ * Get the display value for a setting, showing current scope value with default change indicator
279
+ */
280
+ export function getDisplayValue(key, settings, _mergedSettings, modifiedSettings, pendingSettings) {
281
+ // Prioritize pending changes if user has modified this setting
282
+ let value;
283
+ if (pendingSettings && settingExistsInScope(key, pendingSettings)) {
284
+ // Show the value from the pending (unsaved) edits when it exists
285
+ value = getSettingValue(key, pendingSettings, {});
286
+ }
287
+ else if (settingExistsInScope(key, settings)) {
288
+ // Show the value defined at the current scope if present
289
+ value = getSettingValue(key, settings, {});
290
+ }
291
+ else {
292
+ // Fall back to the schema default when the key is unset in this scope
293
+ const defaultValue = getDefaultValue(key);
294
+ value = typeof defaultValue === 'boolean' ? defaultValue : false;
295
+ }
296
+ const valueString = String(value);
297
+ // Check if value is different from default OR if it's in modified settings OR if there are pending changes
298
+ const defaultValue = getDefaultValue(key);
299
+ const isChangedFromDefault = typeof defaultValue === 'boolean' ? value !== defaultValue : value === true;
300
+ const isInModifiedSettings = modifiedSettings.has(key);
301
+ const hasPendingChanges = pendingSettings && settingExistsInScope(key, pendingSettings);
302
+ // Add * indicator when value differs from default, is in modified settings, or has pending changes
303
+ if (isChangedFromDefault || isInModifiedSettings || hasPendingChanges) {
304
+ return `${valueString}*`; // * indicates changed from default value
305
+ }
306
+ return valueString;
307
+ }
308
+ /**
309
+ * Check if a setting doesn't exist in current scope (should be greyed out)
310
+ */
311
+ export function isDefaultValue(key, settings) {
312
+ return !settingExistsInScope(key, settings);
313
+ }
314
+ /**
315
+ * Check if a setting value is inherited (not set at current scope)
316
+ */
317
+ export function isValueInherited(key, settings, _mergedSettings) {
318
+ return !settingExistsInScope(key, settings);
319
+ }
320
+ /**
321
+ * Get the effective value for display, considering inheritance
322
+ * Always returns a boolean value (never undefined)
323
+ */
324
+ export function getEffectiveDisplayValue(key, settings, mergedSettings) {
325
+ return getSettingValue(key, settings, mergedSettings);
326
+ }
327
+ //# sourceMappingURL=settingsUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsUtils.js","sourceRoot":"","sources":["../../../src/utils/settingsUtils.ts"],"names":[],"mappings":"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"}