@google/gemini-cli 0.5.0-nightly.20250908.4693137b → 0.5.0-preview

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 (90) hide show
  1. package/dist/package.json +2 -2
  2. package/dist/src/commands/extensions/install.js +5 -12
  3. package/dist/src/commands/extensions/install.js.map +1 -1
  4. package/dist/src/commands/extensions/install.test.js +1 -16
  5. package/dist/src/commands/extensions/install.test.js.map +1 -1
  6. package/dist/src/config/config.js +1 -0
  7. package/dist/src/config/config.js.map +1 -1
  8. package/dist/src/config/extension.d.ts +1 -0
  9. package/dist/src/config/extension.js +70 -46
  10. package/dist/src/config/extension.js.map +1 -1
  11. package/dist/src/config/settings.js +2 -2
  12. package/dist/src/config/settings.js.map +1 -1
  13. package/dist/src/config/settingsSchema.d.ts +31 -6
  14. package/dist/src/config/settingsSchema.js +24 -3
  15. package/dist/src/config/settingsSchema.js.map +1 -1
  16. package/dist/src/config/settingsSchema.test.js +62 -55
  17. package/dist/src/config/settingsSchema.test.js.map +1 -1
  18. package/dist/src/gemini.js +4 -37
  19. package/dist/src/gemini.js.map +1 -1
  20. package/dist/src/generated/git-commit.d.ts +2 -2
  21. package/dist/src/generated/git-commit.js +2 -2
  22. package/dist/src/generated/git-commit.js.map +1 -1
  23. package/dist/src/nonInteractiveCli.js +75 -73
  24. package/dist/src/nonInteractiveCli.js.map +1 -1
  25. package/dist/src/ui/AppContainer.js +40 -136
  26. package/dist/src/ui/AppContainer.js.map +1 -1
  27. package/dist/src/ui/AppContainer.test.js +199 -16
  28. package/dist/src/ui/AppContainer.test.js.map +1 -1
  29. package/dist/src/ui/components/AppHeader.js +5 -2
  30. package/dist/src/ui/components/AppHeader.js.map +1 -1
  31. package/dist/src/ui/components/Composer.js +2 -1
  32. package/dist/src/ui/components/Composer.js.map +1 -1
  33. package/dist/src/ui/components/ConfigInitDisplay.d.ts +6 -0
  34. package/dist/src/ui/components/ConfigInitDisplay.js +37 -0
  35. package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -0
  36. package/dist/src/ui/components/DialogManager.js +2 -3
  37. package/dist/src/ui/components/DialogManager.js.map +1 -1
  38. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +5 -0
  39. package/dist/src/ui/components/GeminiRespondingSpinner.js +5 -1
  40. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  41. package/dist/src/ui/components/ProQuotaDialog.d.ts +2 -2
  42. package/dist/src/ui/components/ProQuotaDialog.js +2 -2
  43. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  44. package/dist/src/ui/components/ProQuotaDialog.test.js +3 -3
  45. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
  46. package/dist/src/ui/components/SettingsDialog.js +20 -5
  47. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  48. package/dist/src/ui/components/SettingsDialog.test.js +144 -79
  49. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  50. package/dist/src/ui/components/ThemeDialog.js +10 -27
  51. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  52. package/dist/src/ui/components/ThemeDialog.test.d.ts +6 -0
  53. package/dist/src/ui/components/ThemeDialog.test.js +65 -0
  54. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -0
  55. package/dist/src/ui/components/shared/EnumSelector.d.ts +18 -0
  56. package/dist/src/ui/components/shared/EnumSelector.js +44 -0
  57. package/dist/src/ui/components/shared/EnumSelector.js.map +1 -0
  58. package/dist/src/ui/components/shared/EnumSelector.test.d.ts +6 -0
  59. package/dist/src/ui/components/shared/EnumSelector.test.js +70 -0
  60. package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -0
  61. package/dist/src/ui/components/shared/ScopeSelector.d.ts +19 -0
  62. package/dist/src/ui/components/shared/ScopeSelector.js +11 -0
  63. package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -0
  64. package/dist/src/ui/contexts/UIStateContext.d.ts +8 -2
  65. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  66. package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -2
  67. package/dist/src/ui/hooks/useFolderTrust.js +21 -8
  68. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  69. package/dist/src/ui/hooks/useGeminiStream.js +36 -34
  70. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  71. package/dist/src/ui/hooks/useMessageQueue.d.ts +2 -1
  72. package/dist/src/ui/hooks/useMessageQueue.js +5 -3
  73. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
  74. package/dist/src/ui/hooks/useMessageQueue.test.js +9 -0
  75. package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -1
  76. package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +21 -0
  77. package/dist/src/ui/hooks/useQuotaAndFallback.js +122 -0
  78. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -0
  79. package/dist/src/ui/hooks/useQuotaAndFallback.test.d.ts +6 -0
  80. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +269 -0
  81. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -0
  82. package/dist/src/utils/settingsUtils.d.ts +16 -6
  83. package/dist/src/utils/settingsUtils.js +35 -25
  84. package/dist/src/utils/settingsUtils.js.map +1 -1
  85. package/dist/src/utils/settingsUtils.test.js +418 -156
  86. package/dist/src/utils/settingsUtils.test.js.map +1 -1
  87. package/dist/src/zed-integration/schema.d.ts +4 -4
  88. package/dist/tsconfig.tsbuildinfo +1 -1
  89. package/package.json +3 -3
  90. package/dist/google-gemini-cli-0.3.4.tgz +0 -0
@@ -0,0 +1,269 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { vi, describe, it, expect, beforeEach, afterEach, } from 'vitest';
7
+ import { act, renderHook } from '@testing-library/react';
8
+ import { UserTierId, AuthType, isGenericQuotaExceededError, isProQuotaExceededError, makeFakeConfig, } from '@google/gemini-cli-core';
9
+ import { useQuotaAndFallback } from './useQuotaAndFallback.js';
10
+ import { AuthState, MessageType } from '../types.js';
11
+ // Mock the error checking functions from the core package to control test scenarios
12
+ vi.mock('@google/gemini-cli-core', async (importOriginal) => {
13
+ const original = await importOriginal();
14
+ return {
15
+ ...original,
16
+ isGenericQuotaExceededError: vi.fn(),
17
+ isProQuotaExceededError: vi.fn(),
18
+ };
19
+ });
20
+ describe('useQuotaAndFallback', () => {
21
+ let mockConfig;
22
+ let mockHistoryManager;
23
+ let mockSetAuthState;
24
+ let mockSetModelSwitchedFromQuotaError;
25
+ let setFallbackHandlerSpy;
26
+ const mockedIsGenericQuotaExceededError = isGenericQuotaExceededError;
27
+ const mockedIsProQuotaExceededError = isProQuotaExceededError;
28
+ beforeEach(() => {
29
+ mockConfig = makeFakeConfig();
30
+ // Spy on the method that requires the private field and mock its return.
31
+ // This is cleaner than modifying the config class for tests.
32
+ vi.spyOn(mockConfig, 'getContentGeneratorConfig').mockReturnValue({
33
+ model: 'gemini-pro',
34
+ authType: AuthType.LOGIN_WITH_GOOGLE,
35
+ });
36
+ mockHistoryManager = {
37
+ addItem: vi.fn(),
38
+ history: [],
39
+ updateItem: vi.fn(),
40
+ clearItems: vi.fn(),
41
+ loadHistory: vi.fn(),
42
+ };
43
+ mockSetAuthState = vi.fn();
44
+ mockSetModelSwitchedFromQuotaError = vi.fn();
45
+ setFallbackHandlerSpy = vi.spyOn(mockConfig, 'setFallbackModelHandler');
46
+ vi.spyOn(mockConfig, 'setQuotaErrorOccurred');
47
+ mockedIsGenericQuotaExceededError.mockReturnValue(false);
48
+ mockedIsProQuotaExceededError.mockReturnValue(false);
49
+ });
50
+ afterEach(() => {
51
+ vi.clearAllMocks();
52
+ });
53
+ it('should register a fallback handler on initialization', () => {
54
+ renderHook(() => useQuotaAndFallback({
55
+ config: mockConfig,
56
+ historyManager: mockHistoryManager,
57
+ userTier: UserTierId.FREE,
58
+ setAuthState: mockSetAuthState,
59
+ setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
60
+ }));
61
+ expect(setFallbackHandlerSpy).toHaveBeenCalledTimes(1);
62
+ expect(setFallbackHandlerSpy.mock.calls[0][0]).toBeInstanceOf(Function);
63
+ });
64
+ describe('Fallback Handler Logic', () => {
65
+ // Helper function to render the hook and extract the registered handler
66
+ const getRegisteredHandler = (userTier = UserTierId.FREE) => {
67
+ renderHook((props) => useQuotaAndFallback({
68
+ config: mockConfig,
69
+ historyManager: mockHistoryManager,
70
+ userTier: props.userTier,
71
+ setAuthState: mockSetAuthState,
72
+ setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
73
+ }), { initialProps: { userTier } });
74
+ return setFallbackHandlerSpy.mock.calls[0][0];
75
+ };
76
+ it('should return null and take no action if already in fallback mode', async () => {
77
+ vi.spyOn(mockConfig, 'isInFallbackMode').mockReturnValue(true);
78
+ const handler = getRegisteredHandler();
79
+ const result = await handler('gemini-pro', 'gemini-flash', new Error());
80
+ expect(result).toBeNull();
81
+ expect(mockHistoryManager.addItem).not.toHaveBeenCalled();
82
+ });
83
+ it('should return null and take no action if authType is not LOGIN_WITH_GOOGLE', async () => {
84
+ // Override the default mock from beforeEach for this specific test
85
+ vi.spyOn(mockConfig, 'getContentGeneratorConfig').mockReturnValue({
86
+ model: 'gemini-pro',
87
+ authType: AuthType.USE_GEMINI,
88
+ });
89
+ const handler = getRegisteredHandler();
90
+ const result = await handler('gemini-pro', 'gemini-flash', new Error());
91
+ expect(result).toBeNull();
92
+ expect(mockHistoryManager.addItem).not.toHaveBeenCalled();
93
+ });
94
+ describe('Automatic Fallback Scenarios', () => {
95
+ const testCases = [
96
+ {
97
+ errorType: 'generic',
98
+ tier: UserTierId.FREE,
99
+ expectedMessageSnippets: [
100
+ 'Automatically switching from model-A to model-B',
101
+ 'upgrade to a Gemini Code Assist Standard or Enterprise plan',
102
+ ],
103
+ },
104
+ {
105
+ errorType: 'generic',
106
+ tier: UserTierId.STANDARD, // Paid tier
107
+ expectedMessageSnippets: [
108
+ 'Automatically switching from model-A to model-B',
109
+ 'switch to using a paid API key from AI Studio',
110
+ ],
111
+ },
112
+ {
113
+ errorType: 'other',
114
+ tier: UserTierId.FREE,
115
+ expectedMessageSnippets: [
116
+ 'Automatically switching from model-A to model-B for faster responses',
117
+ 'upgrade to a Gemini Code Assist Standard or Enterprise plan',
118
+ ],
119
+ },
120
+ {
121
+ errorType: 'other',
122
+ tier: UserTierId.LEGACY, // Paid tier
123
+ expectedMessageSnippets: [
124
+ 'Automatically switching from model-A to model-B for faster responses',
125
+ 'switch to using a paid API key from AI Studio',
126
+ ],
127
+ },
128
+ ];
129
+ for (const { errorType, tier, expectedMessageSnippets } of testCases) {
130
+ it(`should handle ${errorType} error for ${tier} tier correctly`, async () => {
131
+ mockedIsGenericQuotaExceededError.mockReturnValue(errorType === 'generic');
132
+ const handler = getRegisteredHandler(tier);
133
+ const result = await handler('model-A', 'model-B', new Error('quota exceeded'));
134
+ // Automatic fallbacks should return 'stop'
135
+ expect(result).toBe('stop');
136
+ expect(mockHistoryManager.addItem).toHaveBeenCalledWith(expect.objectContaining({ type: MessageType.INFO }), expect.any(Number));
137
+ const message = mockHistoryManager.addItem.mock.calls[0][0]
138
+ .text;
139
+ for (const snippet of expectedMessageSnippets) {
140
+ expect(message).toContain(snippet);
141
+ }
142
+ expect(mockSetModelSwitchedFromQuotaError).toHaveBeenCalledWith(true);
143
+ expect(mockConfig.setQuotaErrorOccurred).toHaveBeenCalledWith(true);
144
+ });
145
+ }
146
+ });
147
+ describe('Interactive Fallback (Pro Quota Error)', () => {
148
+ beforeEach(() => {
149
+ mockedIsProQuotaExceededError.mockReturnValue(true);
150
+ });
151
+ it('should set an interactive request and wait for user choice', async () => {
152
+ const { result } = renderHook(() => useQuotaAndFallback({
153
+ config: mockConfig,
154
+ historyManager: mockHistoryManager,
155
+ userTier: UserTierId.FREE,
156
+ setAuthState: mockSetAuthState,
157
+ setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
158
+ }));
159
+ const handler = setFallbackHandlerSpy.mock
160
+ .calls[0][0];
161
+ // Call the handler but do not await it, to check the intermediate state
162
+ const promise = handler('gemini-pro', 'gemini-flash', new Error('pro quota'));
163
+ await act(async () => { });
164
+ // The hook should now have a pending request for the UI to handle
165
+ expect(result.current.proQuotaRequest).not.toBeNull();
166
+ expect(result.current.proQuotaRequest?.failedModel).toBe('gemini-pro');
167
+ // Simulate the user choosing to continue with the fallback model
168
+ act(() => {
169
+ result.current.handleProQuotaChoice('continue');
170
+ });
171
+ // The original promise from the handler should now resolve
172
+ const intent = await promise;
173
+ expect(intent).toBe('retry');
174
+ // The pending request should be cleared from the state
175
+ expect(result.current.proQuotaRequest).toBeNull();
176
+ });
177
+ it('should handle race conditions by stopping subsequent requests', async () => {
178
+ const { result } = renderHook(() => useQuotaAndFallback({
179
+ config: mockConfig,
180
+ historyManager: mockHistoryManager,
181
+ userTier: UserTierId.FREE,
182
+ setAuthState: mockSetAuthState,
183
+ setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
184
+ }));
185
+ const handler = setFallbackHandlerSpy.mock
186
+ .calls[0][0];
187
+ const promise1 = handler('gemini-pro', 'gemini-flash', new Error('pro quota 1'));
188
+ await act(async () => { });
189
+ const firstRequest = result.current.proQuotaRequest;
190
+ expect(firstRequest).not.toBeNull();
191
+ const result2 = await handler('gemini-pro', 'gemini-flash', new Error('pro quota 2'));
192
+ // The lock should have stopped the second request
193
+ expect(result2).toBe('stop');
194
+ expect(result.current.proQuotaRequest).toBe(firstRequest);
195
+ act(() => {
196
+ result.current.handleProQuotaChoice('continue');
197
+ });
198
+ const intent1 = await promise1;
199
+ expect(intent1).toBe('retry');
200
+ expect(result.current.proQuotaRequest).toBeNull();
201
+ });
202
+ });
203
+ });
204
+ describe('handleProQuotaChoice', () => {
205
+ beforeEach(() => {
206
+ mockedIsProQuotaExceededError.mockReturnValue(true);
207
+ });
208
+ it('should do nothing if there is no pending pro quota request', () => {
209
+ const { result } = renderHook(() => useQuotaAndFallback({
210
+ config: mockConfig,
211
+ historyManager: mockHistoryManager,
212
+ userTier: UserTierId.FREE,
213
+ setAuthState: mockSetAuthState,
214
+ setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
215
+ }));
216
+ act(() => {
217
+ result.current.handleProQuotaChoice('auth');
218
+ });
219
+ expect(mockSetAuthState).not.toHaveBeenCalled();
220
+ expect(mockHistoryManager.addItem).not.toHaveBeenCalled();
221
+ });
222
+ it('should resolve intent to "auth" and trigger auth state update', async () => {
223
+ const { result } = renderHook(() => useQuotaAndFallback({
224
+ config: mockConfig,
225
+ historyManager: mockHistoryManager,
226
+ userTier: UserTierId.FREE,
227
+ setAuthState: mockSetAuthState,
228
+ setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
229
+ }));
230
+ const handler = setFallbackHandlerSpy.mock
231
+ .calls[0][0];
232
+ const promise = handler('gemini-pro', 'gemini-flash', new Error('pro quota'));
233
+ await act(async () => { }); // Allow state to update
234
+ act(() => {
235
+ result.current.handleProQuotaChoice('auth');
236
+ });
237
+ const intent = await promise;
238
+ expect(intent).toBe('auth');
239
+ expect(mockSetAuthState).toHaveBeenCalledWith(AuthState.Updating);
240
+ expect(result.current.proQuotaRequest).toBeNull();
241
+ });
242
+ it('should resolve intent to "retry" and add info message on continue', async () => {
243
+ const { result } = renderHook(() => useQuotaAndFallback({
244
+ config: mockConfig,
245
+ historyManager: mockHistoryManager,
246
+ userTier: UserTierId.FREE,
247
+ setAuthState: mockSetAuthState,
248
+ setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
249
+ }));
250
+ const handler = setFallbackHandlerSpy.mock
251
+ .calls[0][0];
252
+ // The first `addItem` call is for the initial quota error message
253
+ const promise = handler('gemini-pro', 'gemini-flash', new Error('pro quota'));
254
+ await act(async () => { }); // Allow state to update
255
+ act(() => {
256
+ result.current.handleProQuotaChoice('continue');
257
+ });
258
+ const intent = await promise;
259
+ expect(intent).toBe('retry');
260
+ expect(result.current.proQuotaRequest).toBeNull();
261
+ // Check for the second "Switched to fallback model" message
262
+ expect(mockHistoryManager.addItem).toHaveBeenCalledTimes(2);
263
+ const lastCall = mockHistoryManager.addItem.mock.calls[1][0];
264
+ expect(lastCall.type).toBe(MessageType.INFO);
265
+ expect(lastCall.text).toContain('Switched to fallback model.');
266
+ });
267
+ });
268
+ });
269
+ //# sourceMappingURL=useQuotaAndFallback.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQuotaAndFallback.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useQuotaAndFallback.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,13 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import type { Settings, SettingScope, LoadedSettings } from '../config/settings.js';
7
- import type { SettingDefinition } from '../config/settingsSchema.js';
7
+ import type { SettingDefinition, SettingsType, SettingsValue } from '../config/settingsSchema.js';
8
+ type FlattenedSchema = Record<string, SettingDefinition & {
9
+ key: string;
10
+ }>;
11
+ /** Returns a flattened schema, the first call is memoized for future requests. */
12
+ export declare function getFlattenedSchema(): FlattenedSchema;
13
+ declare function clearFlattenedSchema(): void;
8
14
  /**
9
15
  * Get all settings grouped by category
10
16
  */
@@ -24,7 +30,7 @@ export declare function requiresRestart(key: string): boolean;
24
30
  /**
25
31
  * Get the default value for a setting
26
32
  */
27
- export declare function getDefaultValue(key: string): SettingDefinition['default'];
33
+ export declare function getDefaultValue(key: string): SettingsValue;
28
34
  /**
29
35
  * Get all setting keys that require restart
30
36
  */
@@ -37,7 +43,7 @@ export declare function getNestedValue(obj: Record<string, unknown>, path: strin
37
43
  * Get the effective value for a setting, considering inheritance from higher scopes
38
44
  * Always returns a value (never undefined) - falls back to default if not set anywhere
39
45
  */
40
- export declare function getEffectiveValue(key: string, settings: Settings, mergedSettings: Settings): SettingDefinition['default'];
46
+ export declare function getEffectiveValue(key: string, settings: Settings, mergedSettings: Settings): SettingsValue;
41
47
  /**
42
48
  * Get all setting keys from the schema
43
49
  */
@@ -45,7 +51,7 @@ export declare function getAllSettingKeys(): string[];
45
51
  /**
46
52
  * Get settings by type
47
53
  */
48
- export declare function getSettingsByType(type: SettingDefinition['type']): Array<SettingDefinition & {
54
+ export declare function getSettingsByType(type: SettingsType): Array<SettingDefinition & {
49
55
  key: string;
50
56
  }>;
51
57
  /**
@@ -75,7 +81,7 @@ export declare function getDialogSettingsByCategory(): Record<string, Array<Sett
75
81
  /**
76
82
  * Get settings by type that should be shown in the dialog
77
83
  */
78
- export declare function getDialogSettingsByType(type: SettingDefinition['type']): Array<SettingDefinition & {
84
+ export declare function getDialogSettingsByType(type: SettingsType): Array<SettingDefinition & {
79
85
  key: string;
80
86
  }>;
81
87
  /**
@@ -102,7 +108,7 @@ export declare function setPendingSettingValue(key: string, value: boolean, pend
102
108
  /**
103
109
  * Generic setter: Set a setting value (boolean, number, string, etc.) in the pending settings
104
110
  */
105
- export declare function setPendingSettingValueAny(key: string, value: unknown, pendingSettings: Settings): Settings;
111
+ export declare function setPendingSettingValueAny(key: string, value: SettingsValue, pendingSettings: Settings): Settings;
106
112
  /**
107
113
  * Check if any modified settings require a restart
108
114
  */
@@ -132,3 +138,7 @@ export declare function isValueInherited(key: string, settings: Settings, _merge
132
138
  * Always returns a boolean value (never undefined)
133
139
  */
134
140
  export declare function getEffectiveDisplayValue(key: string, settings: Settings, mergedSettings: Settings): boolean;
141
+ export declare const TEST_ONLY: {
142
+ clearFlattenedSchema: typeof clearFlattenedSchema;
143
+ };
144
+ export {};
@@ -3,10 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
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.
6
+ import { getSettingsSchema } from '../config/settingsSchema.js';
10
7
  function flattenSchema(schema, prefix = '') {
11
8
  let result = {};
12
9
  for (const key in schema) {
@@ -19,13 +16,21 @@ function flattenSchema(schema, prefix = '') {
19
16
  }
20
17
  return result;
21
18
  }
22
- const FLATTENED_SCHEMA = flattenSchema(SETTINGS_SCHEMA);
19
+ let _FLATTENED_SCHEMA;
20
+ /** Returns a flattened schema, the first call is memoized for future requests. */
21
+ export function getFlattenedSchema() {
22
+ return (_FLATTENED_SCHEMA ??
23
+ (_FLATTENED_SCHEMA = flattenSchema(getSettingsSchema())));
24
+ }
25
+ function clearFlattenedSchema() {
26
+ _FLATTENED_SCHEMA = undefined;
27
+ }
23
28
  /**
24
29
  * Get all settings grouped by category
25
30
  */
26
31
  export function getSettingsByCategory() {
27
32
  const categories = {};
28
- Object.values(FLATTENED_SCHEMA).forEach((definition) => {
33
+ Object.values(getFlattenedSchema()).forEach((definition) => {
29
34
  const category = definition.category;
30
35
  if (!categories[category]) {
31
36
  categories[category] = [];
@@ -38,25 +43,25 @@ export function getSettingsByCategory() {
38
43
  * Get a setting definition by key
39
44
  */
40
45
  export function getSettingDefinition(key) {
41
- return FLATTENED_SCHEMA[key];
46
+ return getFlattenedSchema()[key];
42
47
  }
43
48
  /**
44
49
  * Check if a setting requires restart
45
50
  */
46
51
  export function requiresRestart(key) {
47
- return FLATTENED_SCHEMA[key]?.requiresRestart ?? false;
52
+ return getFlattenedSchema()[key]?.requiresRestart ?? false;
48
53
  }
49
54
  /**
50
55
  * Get the default value for a setting
51
56
  */
52
57
  export function getDefaultValue(key) {
53
- return FLATTENED_SCHEMA[key]?.default;
58
+ return getFlattenedSchema()[key]?.default;
54
59
  }
55
60
  /**
56
61
  * Get all setting keys that require restart
57
62
  */
58
63
  export function getRestartRequiredSettings() {
59
- return Object.values(FLATTENED_SCHEMA)
64
+ return Object.values(getFlattenedSchema())
60
65
  .filter((definition) => definition.requiresRestart)
61
66
  .map((definition) => definition.key);
62
67
  }
@@ -104,44 +109,44 @@ export function getEffectiveValue(key, settings, mergedSettings) {
104
109
  * Get all setting keys from the schema
105
110
  */
106
111
  export function getAllSettingKeys() {
107
- return Object.keys(FLATTENED_SCHEMA);
112
+ return Object.keys(getFlattenedSchema());
108
113
  }
109
114
  /**
110
115
  * Get settings by type
111
116
  */
112
117
  export function getSettingsByType(type) {
113
- return Object.values(FLATTENED_SCHEMA).filter((definition) => definition.type === type);
118
+ return Object.values(getFlattenedSchema()).filter((definition) => definition.type === type);
114
119
  }
115
120
  /**
116
121
  * Get settings that require restart
117
122
  */
118
123
  export function getSettingsRequiringRestart() {
119
- return Object.values(FLATTENED_SCHEMA).filter((definition) => definition.requiresRestart);
124
+ return Object.values(getFlattenedSchema()).filter((definition) => definition.requiresRestart);
120
125
  }
121
126
  /**
122
127
  * Validate if a setting key exists in the schema
123
128
  */
124
129
  export function isValidSettingKey(key) {
125
- return key in FLATTENED_SCHEMA;
130
+ return key in getFlattenedSchema();
126
131
  }
127
132
  /**
128
133
  * Get the category for a setting
129
134
  */
130
135
  export function getSettingCategory(key) {
131
- return FLATTENED_SCHEMA[key]?.category;
136
+ return getFlattenedSchema()[key]?.category;
132
137
  }
133
138
  /**
134
139
  * Check if a setting should be shown in the settings dialog
135
140
  */
136
141
  export function shouldShowInDialog(key) {
137
- return FLATTENED_SCHEMA[key]?.showInDialog ?? true; // Default to true for backward compatibility
142
+ return getFlattenedSchema()[key]?.showInDialog ?? true; // Default to true for backward compatibility
138
143
  }
139
144
  /**
140
145
  * Get all settings that should be shown in the dialog, grouped by category
141
146
  */
142
147
  export function getDialogSettingsByCategory() {
143
148
  const categories = {};
144
- Object.values(FLATTENED_SCHEMA)
149
+ Object.values(getFlattenedSchema())
145
150
  .filter((definition) => definition.showInDialog !== false)
146
151
  .forEach((definition) => {
147
152
  const category = definition.category;
@@ -156,13 +161,13 @@ export function getDialogSettingsByCategory() {
156
161
  * Get settings by type that should be shown in the dialog
157
162
  */
158
163
  export function getDialogSettingsByType(type) {
159
- return Object.values(FLATTENED_SCHEMA).filter((definition) => definition.type === type && definition.showInDialog !== false);
164
+ return Object.values(getFlattenedSchema()).filter((definition) => definition.type === type && definition.showInDialog !== false);
160
165
  }
161
166
  /**
162
167
  * Get all setting keys that should be shown in the dialog
163
168
  */
164
169
  export function getDialogSettingKeys() {
165
- return Object.values(FLATTENED_SCHEMA)
170
+ return Object.values(getFlattenedSchema())
166
171
  .filter((definition) => definition.showInDialog !== false)
167
172
  .map((definition) => definition.key);
168
173
  }
@@ -280,24 +285,28 @@ export function saveModifiedSettings(modifiedSettings, pendingSettings, loadedSe
280
285
  */
281
286
  export function getDisplayValue(key, settings, _mergedSettings, modifiedSettings, pendingSettings) {
282
287
  // Prioritize pending changes if user has modified this setting
288
+ const definition = getSettingDefinition(key);
283
289
  let value;
284
290
  if (pendingSettings && settingExistsInScope(key, pendingSettings)) {
285
291
  // Show the value from the pending (unsaved) edits when it exists
286
- value = getSettingValue(key, pendingSettings, {});
292
+ value = getEffectiveValue(key, pendingSettings, {});
287
293
  }
288
294
  else if (settingExistsInScope(key, settings)) {
289
295
  // Show the value defined at the current scope if present
290
- value = getSettingValue(key, settings, {});
296
+ value = getEffectiveValue(key, settings, {});
291
297
  }
292
298
  else {
293
299
  // Fall back to the schema default when the key is unset in this scope
294
- const defaultValue = getDefaultValue(key);
295
- value = typeof defaultValue === 'boolean' ? defaultValue : false;
300
+ value = getDefaultValue(key);
301
+ }
302
+ let valueString = String(value);
303
+ if (definition?.type === 'enum' && definition.options) {
304
+ const option = definition.options?.find((option) => option.value === value);
305
+ valueString = option?.label ?? `${value}`;
296
306
  }
297
- const valueString = String(value);
298
307
  // Check if value is different from default OR if it's in modified settings OR if there are pending changes
299
308
  const defaultValue = getDefaultValue(key);
300
- const isChangedFromDefault = typeof defaultValue === 'boolean' ? value !== defaultValue : value === true;
309
+ const isChangedFromDefault = value !== defaultValue;
301
310
  const isInModifiedSettings = modifiedSettings.has(key);
302
311
  // Mark as modified if setting exists in current scope OR is in modified settings
303
312
  if (settingExistsInScope(key, settings) || isInModifiedSettings) {
@@ -327,4 +336,5 @@ export function isValueInherited(key, settings, _mergedSettings) {
327
336
  export function getEffectiveDisplayValue(key, settings, mergedSettings) {
328
337
  return getSettingValue(key, settings, mergedSettings);
329
338
  }
339
+ export const TEST_ONLY = { clearFlattenedSchema };
330
340
  //# sourceMappingURL=settingsUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settingsUtils.js","sourceRoot":"","sources":["../../../src/utils/settingsUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settingsUtils.js","sourceRoot":"","sources":["../../../src/utils/settingsUtils.ts"],"names":[],"mappings":"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"}