@google/gemini-cli 0.16.0-preview.5 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +2 -2
- package/dist/src/config/config.js +1 -0
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +10 -0
- package/dist/src/config/settingsSchema.js +10 -0
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +9 -0
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/ui/App.test.js +4 -0
- package/dist/src/ui/App.test.js.map +1 -1
- package/dist/src/ui/AppContainer.js +38 -1
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +18 -1
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +6 -4
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +12 -0
- package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +1 -1
- package/dist/src/ui/components/AppHeader.js +25 -3
- package/dist/src/ui/components/AppHeader.js.map +1 -1
- package/dist/src/ui/components/AppHeader.test.d.ts +6 -0
- package/dist/src/ui/components/AppHeader.test.js +138 -0
- package/dist/src/ui/components/AppHeader.test.js.map +1 -0
- package/dist/src/ui/components/Banner.d.ts +12 -0
- package/dist/src/ui/components/Banner.js +14 -0
- package/dist/src/ui/components/Banner.js.map +1 -0
- package/dist/src/ui/components/Composer.js +1 -1
- package/dist/src/ui/components/Composer.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +1 -1
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/EditorSettingsDialog.d.ts +1 -1
- package/dist/src/ui/components/EditorSettingsDialog.js +2 -2
- package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.d.ts +1 -0
- package/dist/src/ui/components/InputPrompt.js +3 -1
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.js +11 -0
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.js +38 -29
- package/dist/src/ui/components/ModelDialog.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.test.js +19 -11
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.d.ts +8 -2
- package/dist/src/ui/components/ProQuotaDialog.js +79 -14
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.test.js +146 -40
- package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +7 -7
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/contexts/UIActionsContext.d.ts +2 -1
- package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +8 -0
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/editors/editorSettingsManager.d.ts +0 -1
- package/dist/src/ui/editors/editorSettingsManager.js +1 -11
- package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +3 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.test.js +2 -1
- package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/useEditorSettings.js +2 -2
- package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
- package/dist/src/ui/hooks/useEditorSettings.test.js +8 -3
- package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.js +44 -31
- package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js +106 -101
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
- package/dist/src/utils/persistentState.d.ts +19 -0
- package/dist/src/utils/persistentState.js +65 -0
- package/dist/src/utils/persistentState.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/google-gemini-cli-0.16.0-preview.4.tgz +0 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { vi, describe, it, expect, beforeEach, afterEach, } from 'vitest';
|
|
7
7
|
import { act } from 'react';
|
|
8
8
|
import { renderHook } from '../../test-utils/render.js';
|
|
9
|
-
import { UserTierId, AuthType, TerminalQuotaError, makeFakeConfig, RetryableQuotaError, } from '@google/gemini-cli-core';
|
|
9
|
+
import { UserTierId, AuthType, TerminalQuotaError, makeFakeConfig, RetryableQuotaError, PREVIEW_GEMINI_MODEL, ModelNotFoundError, } from '@google/gemini-cli-core';
|
|
10
10
|
import { useQuotaAndFallback } from './useQuotaAndFallback.js';
|
|
11
11
|
import { MessageType } from '../types.js';
|
|
12
12
|
describe('useQuotaAndFallback', () => {
|
|
@@ -53,13 +53,13 @@ describe('useQuotaAndFallback', () => {
|
|
|
53
53
|
});
|
|
54
54
|
describe('Fallback Handler Logic', () => {
|
|
55
55
|
// Helper function to render the hook and extract the registered handler
|
|
56
|
-
const getRegisteredHandler = (
|
|
57
|
-
renderHook((
|
|
56
|
+
const getRegisteredHandler = () => {
|
|
57
|
+
renderHook(() => useQuotaAndFallback({
|
|
58
58
|
config: mockConfig,
|
|
59
59
|
historyManager: mockHistoryManager,
|
|
60
|
-
userTier:
|
|
60
|
+
userTier: UserTierId.FREE,
|
|
61
61
|
setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
|
|
62
|
-
})
|
|
62
|
+
}));
|
|
63
63
|
return setFallbackHandlerSpy.mock.calls[0][0];
|
|
64
64
|
};
|
|
65
65
|
it('should return null and take no action if authType is not LOGIN_WITH_GOOGLE', async () => {
|
|
@@ -72,41 +72,8 @@ describe('useQuotaAndFallback', () => {
|
|
|
72
72
|
expect(result).toBeNull();
|
|
73
73
|
expect(mockHistoryManager.addItem).not.toHaveBeenCalled();
|
|
74
74
|
});
|
|
75
|
-
describe('Flash Model Fallback', () => {
|
|
76
|
-
it('should show a terminal quota message and stop, without offering a fallback', async () => {
|
|
77
|
-
const handler = getRegisteredHandler();
|
|
78
|
-
const result = await handler('gemini-2.5-flash', 'gemini-2.5-flash', new TerminalQuotaError('flash quota', mockGoogleApiError));
|
|
79
|
-
expect(result).toBe('stop');
|
|
80
|
-
expect(mockHistoryManager.addItem).toHaveBeenCalledTimes(1);
|
|
81
|
-
const message = mockHistoryManager.addItem.mock.calls[0][0]
|
|
82
|
-
.text;
|
|
83
|
-
expect(message).toContain('You have reached your daily gemini-2.5-flash');
|
|
84
|
-
expect(message).not.toContain('continue with the fallback model');
|
|
85
|
-
});
|
|
86
|
-
it('should show a capacity message and stop', async () => {
|
|
87
|
-
const handler = getRegisteredHandler();
|
|
88
|
-
// let result: FallbackIntent | null = null;
|
|
89
|
-
const result = await handler('gemini-2.5-flash', 'gemini-2.5-flash', new Error('capacity'));
|
|
90
|
-
expect(result).toBe('stop');
|
|
91
|
-
expect(mockHistoryManager.addItem).toHaveBeenCalledTimes(1);
|
|
92
|
-
const message = mockHistoryManager.addItem.mock.calls[0][0]
|
|
93
|
-
.text;
|
|
94
|
-
expect(message).toContain('Pardon Our Congestion! It looks like gemini-2.5-flash is very popular');
|
|
95
|
-
});
|
|
96
|
-
it('should show a capacity message and stop, even when already in fallback mode', async () => {
|
|
97
|
-
vi.spyOn(mockConfig, 'isInFallbackMode').mockReturnValue(true);
|
|
98
|
-
const handler = getRegisteredHandler();
|
|
99
|
-
const result = await handler('gemini-2.5-flash', 'gemini-2.5-flash', new Error('capacity'));
|
|
100
|
-
expect(result).toBe('stop');
|
|
101
|
-
expect(mockHistoryManager.addItem).toHaveBeenCalledTimes(1);
|
|
102
|
-
const message = mockHistoryManager.addItem.mock.calls[0][0]
|
|
103
|
-
.text;
|
|
104
|
-
expect(message).toContain('Pardon Our Congestion! It looks like gemini-2.5-flash is very popular');
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
75
|
describe('Interactive Fallback', () => {
|
|
108
|
-
|
|
109
|
-
it('should set an interactive request and wait for user choice', async () => {
|
|
76
|
+
it('should set an interactive request for a terminal quota error', async () => {
|
|
110
77
|
const { result } = renderHook(() => useQuotaAndFallback({
|
|
111
78
|
config: mockConfig,
|
|
112
79
|
historyManager: mockHistoryManager,
|
|
@@ -115,23 +82,32 @@ describe('useQuotaAndFallback', () => {
|
|
|
115
82
|
}));
|
|
116
83
|
const handler = setFallbackHandlerSpy.mock
|
|
117
84
|
.calls[0][0];
|
|
118
|
-
// Call the handler but do not await it, to check the intermediate state
|
|
119
85
|
let promise;
|
|
86
|
+
const error = new TerminalQuotaError('pro quota', mockGoogleApiError, 1000 * 60 * 5); // 5 minutes
|
|
120
87
|
await act(() => {
|
|
121
|
-
promise = handler('gemini-pro', 'gemini-flash',
|
|
88
|
+
promise = handler('gemini-pro', 'gemini-flash', error);
|
|
122
89
|
});
|
|
123
90
|
// The hook should now have a pending request for the UI to handle
|
|
124
|
-
|
|
125
|
-
expect(
|
|
91
|
+
const request = result.current.proQuotaRequest;
|
|
92
|
+
expect(request).not.toBeNull();
|
|
93
|
+
expect(request?.failedModel).toBe('gemini-pro');
|
|
94
|
+
expect(request?.isTerminalQuotaError).toBe(true);
|
|
95
|
+
const message = request.message;
|
|
96
|
+
expect(message).toContain('Usage limit reached for gemini-pro.');
|
|
97
|
+
expect(message).toContain('Access resets at'); // From getResetTimeMessage
|
|
98
|
+
expect(message).toContain('/stats for usage details');
|
|
99
|
+
expect(message).toContain('/auth to switch to API key.');
|
|
100
|
+
expect(mockHistoryManager.addItem).not.toHaveBeenCalled();
|
|
126
101
|
// Simulate the user choosing to continue with the fallback model
|
|
127
102
|
await act(() => {
|
|
128
|
-
result.current.handleProQuotaChoice('
|
|
103
|
+
result.current.handleProQuotaChoice('retry_always');
|
|
129
104
|
});
|
|
130
105
|
// The original promise from the handler should now resolve
|
|
131
106
|
const intent = await promise;
|
|
132
|
-
expect(intent).toBe('
|
|
107
|
+
expect(intent).toBe('retry_always');
|
|
133
108
|
// The pending request should be cleared from the state
|
|
134
109
|
expect(result.current.proQuotaRequest).toBeNull();
|
|
110
|
+
expect(mockHistoryManager.addItem).toHaveBeenCalledTimes(1);
|
|
135
111
|
});
|
|
136
112
|
it('should handle race conditions by stopping subsequent requests', async () => {
|
|
137
113
|
const { result } = renderHook(() => useQuotaAndFallback({
|
|
@@ -156,89 +132,97 @@ describe('useQuotaAndFallback', () => {
|
|
|
156
132
|
expect(result2).toBe('stop');
|
|
157
133
|
expect(result.current.proQuotaRequest).toBe(firstRequest);
|
|
158
134
|
await act(() => {
|
|
159
|
-
result.current.handleProQuotaChoice('
|
|
135
|
+
result.current.handleProQuotaChoice('retry_always');
|
|
160
136
|
});
|
|
161
137
|
const intent1 = await promise1;
|
|
162
|
-
expect(intent1).toBe('
|
|
138
|
+
expect(intent1).toBe('retry_always');
|
|
163
139
|
expect(result.current.proQuotaRequest).toBeNull();
|
|
164
140
|
});
|
|
165
|
-
// Non-
|
|
141
|
+
// Non-TerminalQuotaError test cases
|
|
166
142
|
const testCases = [
|
|
167
143
|
{
|
|
168
|
-
description: '
|
|
169
|
-
tier: UserTierId.FREE,
|
|
170
|
-
error: new Error('some error'),
|
|
171
|
-
expectedMessageSnippets: [
|
|
172
|
-
'🚦Pardon Our Congestion! It looks like model-A is very popular at the moment.',
|
|
173
|
-
'Please retry again later.',
|
|
174
|
-
],
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
description: 'other error for LEGACY tier',
|
|
178
|
-
tier: UserTierId.LEGACY, // Paid tier
|
|
144
|
+
description: 'generic error',
|
|
179
145
|
error: new Error('some error'),
|
|
180
|
-
expectedMessageSnippets: [
|
|
181
|
-
'🚦Pardon Our Congestion! It looks like model-A is very popular at the moment.',
|
|
182
|
-
'Please retry again later.',
|
|
183
|
-
],
|
|
184
146
|
},
|
|
185
147
|
{
|
|
186
|
-
description: 'retryable quota error
|
|
187
|
-
tier: UserTierId.FREE,
|
|
148
|
+
description: 'retryable quota error',
|
|
188
149
|
error: new RetryableQuotaError('retryable quota', mockGoogleApiError, 5),
|
|
189
|
-
expectedMessageSnippets: [
|
|
190
|
-
'🚦Pardon Our Congestion! It looks like model-A is very popular at the moment.',
|
|
191
|
-
'Please retry again later.',
|
|
192
|
-
],
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
description: 'retryable quota error for LEGACY tier',
|
|
196
|
-
tier: UserTierId.LEGACY, // Paid tier
|
|
197
|
-
error: new RetryableQuotaError('retryable quota', mockGoogleApiError, 5),
|
|
198
|
-
expectedMessageSnippets: [
|
|
199
|
-
'🚦Pardon Our Congestion! It looks like model-A is very popular at the moment.',
|
|
200
|
-
'Please retry again later.',
|
|
201
|
-
],
|
|
202
150
|
},
|
|
203
151
|
];
|
|
204
|
-
for (const { description,
|
|
152
|
+
for (const { description, error } of testCases) {
|
|
205
153
|
it(`should handle ${description} correctly`, async () => {
|
|
206
|
-
const { result } = renderHook((
|
|
154
|
+
const { result } = renderHook(() => useQuotaAndFallback({
|
|
207
155
|
config: mockConfig,
|
|
208
156
|
historyManager: mockHistoryManager,
|
|
209
|
-
userTier:
|
|
157
|
+
userTier: UserTierId.FREE,
|
|
210
158
|
setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
|
|
211
|
-
})
|
|
159
|
+
}));
|
|
212
160
|
const handler = setFallbackHandlerSpy.mock
|
|
213
161
|
.calls[0][0];
|
|
214
|
-
// Call the handler but do not await it, to check the intermediate state
|
|
215
162
|
let promise;
|
|
216
163
|
await act(() => {
|
|
217
164
|
promise = handler('model-A', 'model-B', error);
|
|
218
165
|
});
|
|
219
166
|
// The hook should now have a pending request for the UI to handle
|
|
220
|
-
|
|
221
|
-
expect(
|
|
222
|
-
|
|
223
|
-
expect(
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
}
|
|
167
|
+
const request = result.current.proQuotaRequest;
|
|
168
|
+
expect(request).not.toBeNull();
|
|
169
|
+
expect(request?.failedModel).toBe('model-A');
|
|
170
|
+
expect(request?.isTerminalQuotaError).toBe(false);
|
|
171
|
+
// Check that the correct initial message was generated
|
|
172
|
+
expect(mockHistoryManager.addItem).not.toHaveBeenCalled();
|
|
173
|
+
const message = request.message;
|
|
174
|
+
expect(message).toContain('model-A is currently experiencing high demand. We apologize and appreciate your patience.');
|
|
229
175
|
// Simulate the user choosing to continue with the fallback model
|
|
230
176
|
await act(() => {
|
|
231
|
-
result.current.handleProQuotaChoice('
|
|
177
|
+
result.current.handleProQuotaChoice('retry_always');
|
|
232
178
|
});
|
|
233
179
|
expect(mockSetModelSwitchedFromQuotaError).toHaveBeenCalledWith(true);
|
|
234
180
|
// The original promise from the handler should now resolve
|
|
235
181
|
const intent = await promise;
|
|
236
|
-
expect(intent).toBe('
|
|
182
|
+
expect(intent).toBe('retry_always');
|
|
237
183
|
// The pending request should be cleared from the state
|
|
238
184
|
expect(result.current.proQuotaRequest).toBeNull();
|
|
239
185
|
expect(mockConfig.setQuotaErrorOccurred).toHaveBeenCalledWith(true);
|
|
186
|
+
// Check for the "Switched to fallback model" message
|
|
187
|
+
expect(mockHistoryManager.addItem).toHaveBeenCalledTimes(1);
|
|
188
|
+
const lastCall = mockHistoryManager.addItem.mock
|
|
189
|
+
.calls[0][0];
|
|
190
|
+
expect(lastCall.type).toBe(MessageType.INFO);
|
|
191
|
+
expect(lastCall.text).toContain('Switched to fallback model.');
|
|
240
192
|
});
|
|
241
193
|
}
|
|
194
|
+
it('should handle ModelNotFoundError correctly', async () => {
|
|
195
|
+
const { result } = renderHook(() => useQuotaAndFallback({
|
|
196
|
+
config: mockConfig,
|
|
197
|
+
historyManager: mockHistoryManager,
|
|
198
|
+
userTier: UserTierId.FREE,
|
|
199
|
+
setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
|
|
200
|
+
}));
|
|
201
|
+
const handler = setFallbackHandlerSpy.mock
|
|
202
|
+
.calls[0][0];
|
|
203
|
+
let promise;
|
|
204
|
+
const error = new ModelNotFoundError('model not found', 404);
|
|
205
|
+
await act(() => {
|
|
206
|
+
promise = handler('gemini-3-pro-preview', 'gemini-2.5-pro', error);
|
|
207
|
+
});
|
|
208
|
+
// The hook should now have a pending request for the UI to handle
|
|
209
|
+
const request = result.current.proQuotaRequest;
|
|
210
|
+
expect(request).not.toBeNull();
|
|
211
|
+
expect(request?.failedModel).toBe('gemini-3-pro-preview');
|
|
212
|
+
expect(request?.isTerminalQuotaError).toBe(false);
|
|
213
|
+
expect(request?.isModelNotFoundError).toBe(true);
|
|
214
|
+
const message = request.message;
|
|
215
|
+
expect(message).toBe(`It seems like you don't have access to Gemini 3.
|
|
216
|
+
Learn more at https://goo.gle/enable-preview-features
|
|
217
|
+
To disable Gemini 3, disable "Preview features" in /settings.`);
|
|
218
|
+
// Simulate the user choosing to switch
|
|
219
|
+
await act(() => {
|
|
220
|
+
result.current.handleProQuotaChoice('retry_always');
|
|
221
|
+
});
|
|
222
|
+
const intent = await promise;
|
|
223
|
+
expect(intent).toBe('retry_always');
|
|
224
|
+
expect(result.current.proQuotaRequest).toBeNull();
|
|
225
|
+
});
|
|
242
226
|
});
|
|
243
227
|
});
|
|
244
228
|
describe('handleProQuotaChoice', () => {
|
|
@@ -274,7 +258,7 @@ describe('useQuotaAndFallback', () => {
|
|
|
274
258
|
expect(intent).toBe('retry_later');
|
|
275
259
|
expect(result.current.proQuotaRequest).toBeNull();
|
|
276
260
|
});
|
|
277
|
-
it('should resolve intent to "
|
|
261
|
+
it('should resolve intent to "retry_always" and add info message on continue', async () => {
|
|
278
262
|
const { result } = renderHook(() => useQuotaAndFallback({
|
|
279
263
|
config: mockConfig,
|
|
280
264
|
historyManager: mockHistoryManager,
|
|
@@ -283,23 +267,44 @@ describe('useQuotaAndFallback', () => {
|
|
|
283
267
|
}));
|
|
284
268
|
const handler = setFallbackHandlerSpy.mock
|
|
285
269
|
.calls[0][0];
|
|
286
|
-
// The first `addItem` call is for the initial quota error message
|
|
287
270
|
let promise;
|
|
288
271
|
await act(() => {
|
|
289
272
|
promise = handler('gemini-pro', 'gemini-flash', new TerminalQuotaError('pro quota', mockGoogleApiError));
|
|
290
273
|
});
|
|
291
274
|
await act(() => {
|
|
292
|
-
result.current.handleProQuotaChoice('
|
|
275
|
+
result.current.handleProQuotaChoice('retry_always');
|
|
293
276
|
});
|
|
294
277
|
const intent = await promise;
|
|
295
|
-
expect(intent).toBe('
|
|
278
|
+
expect(intent).toBe('retry_always');
|
|
296
279
|
expect(result.current.proQuotaRequest).toBeNull();
|
|
297
|
-
// Check for the
|
|
298
|
-
expect(mockHistoryManager.addItem).toHaveBeenCalledTimes(
|
|
299
|
-
const lastCall = mockHistoryManager.addItem.mock.calls[
|
|
280
|
+
// Check for the "Switched to fallback model" message
|
|
281
|
+
expect(mockHistoryManager.addItem).toHaveBeenCalledTimes(1);
|
|
282
|
+
const lastCall = mockHistoryManager.addItem.mock.calls[0][0];
|
|
300
283
|
expect(lastCall.type).toBe(MessageType.INFO);
|
|
301
284
|
expect(lastCall.text).toContain('Switched to fallback model.');
|
|
302
285
|
});
|
|
286
|
+
it('should show a special message when falling back from the preview model', async () => {
|
|
287
|
+
const { result } = renderHook(() => useQuotaAndFallback({
|
|
288
|
+
config: mockConfig,
|
|
289
|
+
historyManager: mockHistoryManager,
|
|
290
|
+
userTier: UserTierId.FREE,
|
|
291
|
+
setModelSwitchedFromQuotaError: mockSetModelSwitchedFromQuotaError,
|
|
292
|
+
}));
|
|
293
|
+
const handler = setFallbackHandlerSpy.mock
|
|
294
|
+
.calls[0][0];
|
|
295
|
+
let promise;
|
|
296
|
+
await act(() => {
|
|
297
|
+
promise = handler(PREVIEW_GEMINI_MODEL, 'gemini-flash', new Error('preview model failed'));
|
|
298
|
+
});
|
|
299
|
+
await act(() => {
|
|
300
|
+
result.current.handleProQuotaChoice('retry_always');
|
|
301
|
+
});
|
|
302
|
+
await promise;
|
|
303
|
+
expect(mockHistoryManager.addItem).toHaveBeenCalledTimes(1);
|
|
304
|
+
const lastCall = mockHistoryManager.addItem.mock.calls[0][0];
|
|
305
|
+
expect(lastCall.type).toBe(MessageType.INFO);
|
|
306
|
+
expect(lastCall.text).toContain(`Switched to fallback model gemini-flash. We will periodically check if ${PREVIEW_GEMINI_MODEL} is available again.`);
|
|
307
|
+
});
|
|
303
308
|
});
|
|
304
309
|
});
|
|
305
310
|
//# sourceMappingURL=useQuotaAndFallback.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuotaAndFallback.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useQuotaAndFallback.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useQuotaAndFallback.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useQuotaAndFallback.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,EAAE,EACF,QAAQ,EACR,EAAE,EACF,MAAM,EACN,UAAU,EACV,SAAS,GAEV,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAIL,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,cAAc,EAEd,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,UAAkB,CAAC;IACvB,IAAI,kBAA2C,CAAC;IAChD,IAAI,kCAAwC,CAAC;IAC7C,IAAI,qBAAkC,CAAC;IACvC,IAAI,kBAAkC,CAAC;IAEvC,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,cAAc,EAAE,CAAC;QAC9B,kBAAkB,GAAG;YACnB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,EAAE;SACZ,CAAC;QAEF,yEAAyE;QACzE,6DAA6D;QAC7D,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,eAAe,CAAC;YAChE,QAAQ,EAAE,QAAQ,CAAC,iBAAiB;SACrC,CAAC,CAAC;QAEH,kBAAkB,GAAG;YACnB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;SACrB,CAAC;QACF,kCAAkC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAE7C,qBAAqB,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC;QACxE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,UAAU,CAAC,GAAG,EAAE,CACd,mBAAmB,CAAC;YAClB,MAAM,EAAE,UAAU;YAClB,cAAc,EAAE,kBAAkB;YAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;YACzB,8BAA8B,EAAE,kCAAkC;SACnE,CAAC,CACH,CAAC;QAEF,MAAM,CAAC,qBAAqB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,wEAAwE;QACxE,MAAM,oBAAoB,GAAG,GAAyB,EAAE;YACtD,UAAU,CAAC,GAAG,EAAE,CACd,mBAAmB,CAAC;gBAClB,MAAM,EAAE,UAAU;gBAClB,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;gBACzB,8BAA8B,EAAE,kCAAkC;aACnE,CAAC,CACH,CAAC;YACF,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAyB,CAAC;QACxE,CAAC,CAAC;QAEF,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,mEAAmE;YACnE,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC,eAAe,CAAC;gBAChE,QAAQ,EAAE,QAAQ,CAAC,UAAU;aAC9B,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;YAExE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC1B,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;YACpC,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;gBAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC;oBAClB,MAAM,EAAE,UAAU;oBAClB,cAAc,EAAE,kBAAkB;oBAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;oBACzB,8BAA8B,EAAE,kCAAkC;iBACnE,CAAC,CACH,CAAC;gBAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI;qBACvC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAyB,CAAC;gBAEvC,IAAI,OAAuC,CAAC;gBAC5C,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAClC,WAAW,EACX,kBAAkB,EAClB,IAAI,GAAG,EAAE,GAAG,CAAC,CACd,CAAC,CAAC,YAAY;gBACf,MAAM,GAAG,CAAC,GAAG,EAAE;oBACb,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;gBACzD,CAAC,CAAC,CAAC;gBAEH,kEAAkE;gBAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAChD,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEjD,MAAM,OAAO,GAAG,OAAQ,CAAC,OAAO,CAAC;gBACjC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;gBACjE,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,2BAA2B;gBAC1E,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;gBACtD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;gBAEzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;gBAE1D,iEAAiE;gBACjE,MAAM,GAAG,CAAC,GAAG,EAAE;oBACb,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBAEH,2DAA2D;gBAC3D,MAAM,MAAM,GAAG,MAAM,OAAQ,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAEpC,uDAAuD;gBACvD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAClD,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;gBAC7E,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC;oBAClB,MAAM,EAAE,UAAU;oBAClB,cAAc,EAAE,kBAAkB;oBAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;oBACzB,8BAA8B,EAAE,kCAAkC;iBACnE,CAAC,CACH,CAAC;gBAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI;qBACvC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAyB,CAAC;gBAEvC,IAAI,QAAwC,CAAC;gBAC7C,MAAM,GAAG,CAAC,GAAG,EAAE;oBACb,QAAQ,GAAG,OAAO,CAChB,YAAY,EACZ,cAAc,EACd,IAAI,kBAAkB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAC1D,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;gBACpD,MAAM,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAEpC,IAAI,OAA8B,CAAC;gBACnC,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;oBACnB,OAAO,GAAG,MAAM,OAAO,CACrB,YAAY,EACZ,cAAc,EACd,IAAI,kBAAkB,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAC1D,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,kDAAkD;gBAClD,MAAM,CAAC,OAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAE1D,MAAM,GAAG,CAAC,GAAG,EAAE;oBACb,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBAEH,MAAM,OAAO,GAAG,MAAM,QAAS,CAAC;gBAChC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACrC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,oCAAoC;YACpC,MAAM,SAAS,GAAG;gBAChB;oBACE,WAAW,EAAE,eAAe;oBAC5B,KAAK,EAAE,IAAI,KAAK,CAAC,YAAY,CAAC;iBAC/B;gBACD;oBACE,WAAW,EAAE,uBAAuB;oBACpC,KAAK,EAAE,IAAI,mBAAmB,CAC5B,iBAAiB,EACjB,kBAAkB,EAClB,CAAC,CACF;iBACF;aACF,CAAC;YAEF,KAAK,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC;gBAC/C,EAAE,CAAC,iBAAiB,WAAW,YAAY,EAAE,KAAK,IAAI,EAAE;oBACtD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC;wBAClB,MAAM,EAAE,UAAU;wBAClB,cAAc,EAAE,kBAAkB;wBAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;wBACzB,8BAA8B,EAC5B,kCAAkC;qBACrC,CAAC,CACH,CAAC;oBAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI;yBACvC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAyB,CAAC;oBAEvC,IAAI,OAAuC,CAAC;oBAC5C,MAAM,GAAG,CAAC,GAAG,EAAE;wBACb,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;oBACjD,CAAC,CAAC,CAAC;oBAEH,kEAAkE;oBAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;oBAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;oBAC/B,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7C,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAElD,uDAAuD;oBACvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;oBAC1D,MAAM,OAAO,GAAG,OAAQ,CAAC,OAAO,CAAC;oBACjC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CACvB,2FAA2F,CAC5F,CAAC;oBAEF,iEAAiE;oBACjE,MAAM,GAAG,CAAC,GAAG,EAAE;wBACb,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;oBACtD,CAAC,CAAC,CAAC;oBAEH,MAAM,CAAC,kCAAkC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;oBACtE,2DAA2D;oBAC3D,MAAM,MAAM,GAAG,MAAM,OAAQ,CAAC;oBAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAEpC,uDAAuD;oBACvD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAClD,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;oBAEpE,qDAAqD;oBACrD,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;oBAC5D,MAAM,QAAQ,GAAI,kBAAkB,CAAC,OAAgB,CAAC,IAAI;yBACvD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACf,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;YACL,CAAC;YAED,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;gBAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC;oBAClB,MAAM,EAAE,UAAU;oBAClB,cAAc,EAAE,kBAAkB;oBAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;oBACzB,8BAA8B,EAAE,kCAAkC;iBACnE,CAAC,CACH,CAAC;gBAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI;qBACvC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAyB,CAAC;gBAEvC,IAAI,OAAuC,CAAC;gBAC5C,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;gBAE7D,MAAM,GAAG,CAAC,GAAG,EAAE;oBACb,OAAO,GAAG,OAAO,CAAC,sBAAsB,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC;gBAEH,kEAAkE;gBAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBAC1D,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClD,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEjD,MAAM,OAAO,GAAG,OAAQ,CAAC,OAAO,CAAC;gBACjC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAClB;;8DAEoD,CACrD,CAAC;gBAEF,uCAAuC;gBACvC,MAAM,GAAG,CAAC,GAAG,EAAE;oBACb,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;gBACtD,CAAC,CAAC,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,OAAQ,CAAC;gBAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC;gBAClB,MAAM,EAAE,UAAU;gBAClB,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;gBACzB,8BAA8B,EAAE,kCAAkC;aACnE,CAAC,CACH,CAAC;YAEF,GAAG,CAAC,GAAG,EAAE;gBACP,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC;gBAClB,MAAM,EAAE,UAAU;gBAClB,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;gBACzB,8BAA8B,EAAE,kCAAkC;aACnE,CAAC,CACH,CAAC;YAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI;iBACvC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAyB,CAAC;YACvC,IAAI,OAAuC,CAAC;YAC5C,MAAM,GAAG,CAAC,GAAG,EAAE;gBACb,OAAO,GAAG,OAAO,CACf,YAAY,EACZ,cAAc,EACd,IAAI,kBAAkB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CACxD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,GAAG,CAAC,GAAG,EAAE;gBACb,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAQ,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC;gBAClB,MAAM,EAAE,UAAU;gBAClB,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;gBACzB,8BAA8B,EAAE,kCAAkC;aACnE,CAAC,CACH,CAAC;YAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI;iBACvC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAyB,CAAC;YAEvC,IAAI,OAAuC,CAAC;YAC5C,MAAM,GAAG,CAAC,GAAG,EAAE;gBACb,OAAO,GAAG,OAAO,CACf,YAAY,EACZ,cAAc,EACd,IAAI,kBAAkB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CACxD,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,GAAG,CAAC,GAAG,EAAE;gBACb,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAQ,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC;YAElD,qDAAqD;YACrD,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAI,kBAAkB,CAAC,OAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CACjC,mBAAmB,CAAC;gBAClB,MAAM,EAAE,UAAU;gBAClB,cAAc,EAAE,kBAAkB;gBAClC,QAAQ,EAAE,UAAU,CAAC,IAAI;gBACzB,8BAA8B,EAAE,kCAAkC;aACnE,CAAC,CACH,CAAC;YAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI;iBACvC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAyB,CAAC;YACvC,IAAI,OAAuC,CAAC;YAC5C,MAAM,GAAG,CAAC,GAAG,EAAE;gBACb,OAAO,GAAG,OAAO,CACf,oBAAoB,EACpB,cAAc,EACd,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAClC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,MAAM,GAAG,CAAC,GAAG,EAAE;gBACb,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC;YAEH,MAAM,OAAQ,CAAC;YAEf,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAI,kBAAkB,CAAC,OAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAC7B,0EAA0E,oBAAoB,sBAAsB,CACrH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
interface PersistentStateData {
|
|
7
|
+
defaultBannerShownCount?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare class PersistentState {
|
|
10
|
+
private cache;
|
|
11
|
+
private filePath;
|
|
12
|
+
private getPath;
|
|
13
|
+
private load;
|
|
14
|
+
private save;
|
|
15
|
+
get<K extends keyof PersistentStateData>(key: K): PersistentStateData[K] | undefined;
|
|
16
|
+
set<K extends keyof PersistentStateData>(key: K, value: PersistentStateData[K]): void;
|
|
17
|
+
}
|
|
18
|
+
export declare const persistentState: PersistentState;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { Storage, debugLogger } from '@google/gemini-cli-core';
|
|
7
|
+
import * as fs from 'node:fs';
|
|
8
|
+
import * as path from 'node:path';
|
|
9
|
+
const STATE_FILENAME = 'state.json';
|
|
10
|
+
export class PersistentState {
|
|
11
|
+
cache = null;
|
|
12
|
+
filePath = null;
|
|
13
|
+
getPath() {
|
|
14
|
+
if (!this.filePath) {
|
|
15
|
+
this.filePath = path.join(Storage.getGlobalGeminiDir(), STATE_FILENAME);
|
|
16
|
+
}
|
|
17
|
+
return this.filePath;
|
|
18
|
+
}
|
|
19
|
+
load() {
|
|
20
|
+
if (this.cache) {
|
|
21
|
+
return this.cache;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const filePath = this.getPath();
|
|
25
|
+
if (fs.existsSync(filePath)) {
|
|
26
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
27
|
+
this.cache = JSON.parse(content);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this.cache = {};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
debugLogger.warn('Failed to load persistent state:', error);
|
|
35
|
+
// If error reading (e.g. corrupt JSON), start fresh
|
|
36
|
+
this.cache = {};
|
|
37
|
+
}
|
|
38
|
+
return this.cache;
|
|
39
|
+
}
|
|
40
|
+
save() {
|
|
41
|
+
if (!this.cache)
|
|
42
|
+
return;
|
|
43
|
+
try {
|
|
44
|
+
const filePath = this.getPath();
|
|
45
|
+
const dir = path.dirname(filePath);
|
|
46
|
+
if (!fs.existsSync(dir)) {
|
|
47
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
48
|
+
}
|
|
49
|
+
fs.writeFileSync(filePath, JSON.stringify(this.cache, null, 2));
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
debugLogger.warn('Failed to save persistent state:', error);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
get(key) {
|
|
56
|
+
return this.load()[key];
|
|
57
|
+
}
|
|
58
|
+
set(key, value) {
|
|
59
|
+
this.load(); // ensure loaded
|
|
60
|
+
this.cache[key] = value;
|
|
61
|
+
this.save();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export const persistentState = new PersistentState();
|
|
65
|
+
//# sourceMappingURL=persistentState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistentState.js","sourceRoot":"","sources":["../../../src/utils/persistentState.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,cAAc,GAAG,YAAY,CAAC;AAOpC,MAAM,OAAO,eAAe;IAClB,KAAK,GAA+B,IAAI,CAAC;IACzC,QAAQ,GAAkB,IAAI,CAAC;IAE/B,OAAO;QACb,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,cAAc,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,IAAI;QACV,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;YAC5D,oDAAoD;YACpD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAClB,CAAC;QACD,OAAO,IAAI,CAAC,KAAM,CAAC;IACrB,CAAC;IAEO,IAAI;QACV,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,GAAG,CACD,GAAM;QAEN,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,GAAG,CACD,GAAM,EACN,KAA6B;QAE7B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,gBAAgB;QAC7B,IAAI,CAAC,KAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
|