@google/gemini-cli-core 0.1.10-dev.15 → 0.1.10

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 (157) hide show
  1. package/README.md +16 -2
  2. package/dist/google-gemini-cli-core-0.1.9.tgz +0 -0
  3. package/dist/src/code_assist/codeAssist.js +3 -2
  4. package/dist/src/code_assist/codeAssist.js.map +1 -1
  5. package/dist/src/code_assist/converter.js.map +1 -1
  6. package/dist/src/code_assist/oauth2.d.ts +2 -1
  7. package/dist/src/code_assist/oauth2.js +28 -5
  8. package/dist/src/code_assist/oauth2.js.map +1 -1
  9. package/dist/src/code_assist/oauth2.test.js +65 -7
  10. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  11. package/dist/src/code_assist/server.js +35 -2
  12. package/dist/src/code_assist/server.js.map +1 -1
  13. package/dist/src/code_assist/setup.js +1 -1
  14. package/dist/src/code_assist/setup.js.map +1 -1
  15. package/dist/src/code_assist/setup.test.d.ts +6 -0
  16. package/dist/src/code_assist/setup.test.js +62 -0
  17. package/dist/src/code_assist/setup.test.js.map +1 -0
  18. package/dist/src/config/config.d.ts +23 -3
  19. package/dist/src/config/config.js +85 -56
  20. package/dist/src/config/config.js.map +1 -1
  21. package/dist/src/config/config.test.js +25 -0
  22. package/dist/src/config/config.test.js.map +1 -1
  23. package/dist/src/core/client.d.ts +20 -5
  24. package/dist/src/core/client.js +75 -21
  25. package/dist/src/core/client.js.map +1 -1
  26. package/dist/src/core/client.test.js +51 -10
  27. package/dist/src/core/client.test.js.map +1 -1
  28. package/dist/src/core/contentGenerator.d.ts +3 -4
  29. package/dist/src/core/contentGenerator.js +14 -13
  30. package/dist/src/core/contentGenerator.js.map +1 -1
  31. package/dist/src/core/contentGenerator.test.js +49 -3
  32. package/dist/src/core/contentGenerator.test.js.map +1 -1
  33. package/dist/src/core/coreToolScheduler.d.ts +9 -2
  34. package/dist/src/core/coreToolScheduler.js +28 -2
  35. package/dist/src/core/coreToolScheduler.js.map +1 -1
  36. package/dist/src/core/coreToolScheduler.test.js +80 -0
  37. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  38. package/dist/src/core/geminiChat.d.ts +2 -2
  39. package/dist/src/core/geminiChat.js +52 -32
  40. package/dist/src/core/geminiChat.js.map +1 -1
  41. package/dist/src/core/geminiChat.test.js +4 -2
  42. package/dist/src/core/geminiChat.test.js.map +1 -1
  43. package/dist/src/core/modelCheck.js +1 -1
  44. package/dist/src/core/modelCheck.js.map +1 -1
  45. package/dist/src/core/nonInteractiveToolExecutor.js +3 -0
  46. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  47. package/dist/src/core/nonInteractiveToolExecutor.test.js +5 -0
  48. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  49. package/dist/src/core/turn.d.ts +3 -1
  50. package/dist/src/core/turn.js +5 -2
  51. package/dist/src/core/turn.js.map +1 -1
  52. package/dist/src/core/turn.test.js +2 -2
  53. package/dist/src/core/turn.test.js.map +1 -1
  54. package/dist/src/index.d.ts +1 -0
  55. package/dist/src/index.js +1 -0
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/services/fileDiscoveryService.d.ts +4 -0
  58. package/dist/src/services/fileDiscoveryService.js +13 -0
  59. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  60. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +20 -0
  61. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  62. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +2 -1
  63. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +5 -0
  64. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  65. package/dist/src/telemetry/loggers.test.js +18 -5
  66. package/dist/src/telemetry/loggers.test.js.map +1 -1
  67. package/dist/src/telemetry/types.d.ts +9 -4
  68. package/dist/src/telemetry/types.js +14 -4
  69. package/dist/src/telemetry/types.js.map +1 -1
  70. package/dist/src/telemetry/uiTelemetry.test.js +1 -0
  71. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  72. package/dist/src/tools/edit.d.ts +1 -2
  73. package/dist/src/tools/edit.js +11 -12
  74. package/dist/src/tools/edit.js.map +1 -1
  75. package/dist/src/tools/edit.test.js +7 -9
  76. package/dist/src/tools/edit.test.js.map +1 -1
  77. package/dist/src/tools/glob.js +9 -8
  78. package/dist/src/tools/glob.js.map +1 -1
  79. package/dist/src/tools/glob.test.js +3 -3
  80. package/dist/src/tools/glob.test.js.map +1 -1
  81. package/dist/src/tools/grep.js +8 -7
  82. package/dist/src/tools/grep.js.map +1 -1
  83. package/dist/src/tools/grep.test.js +3 -3
  84. package/dist/src/tools/grep.test.js.map +1 -1
  85. package/dist/src/tools/ls.js +9 -8
  86. package/dist/src/tools/ls.js.map +1 -1
  87. package/dist/src/tools/mcp-client.d.ts +0 -9
  88. package/dist/src/tools/mcp-client.js +21 -37
  89. package/dist/src/tools/mcp-client.js.map +1 -1
  90. package/dist/src/tools/mcp-client.test.js +85 -4
  91. package/dist/src/tools/mcp-client.test.js.map +1 -1
  92. package/dist/src/tools/mcp-tool.d.ts +3 -3
  93. package/dist/src/tools/mcp-tool.js.map +1 -1
  94. package/dist/src/tools/memoryTool.js +3 -2
  95. package/dist/src/tools/memoryTool.js.map +1 -1
  96. package/dist/src/tools/read-file.js +8 -8
  97. package/dist/src/tools/read-file.js.map +1 -1
  98. package/dist/src/tools/read-file.test.js +4 -4
  99. package/dist/src/tools/read-file.test.js.map +1 -1
  100. package/dist/src/tools/read-many-files.js +24 -38
  101. package/dist/src/tools/read-many-files.js.map +1 -1
  102. package/dist/src/tools/read-many-files.test.js +4 -4
  103. package/dist/src/tools/read-many-files.test.js.map +1 -1
  104. package/dist/src/tools/shell.d.ts +5 -2
  105. package/dist/src/tools/shell.js +38 -17
  106. package/dist/src/tools/shell.js.map +1 -1
  107. package/dist/src/tools/shell.test.js +85 -65
  108. package/dist/src/tools/shell.test.js.map +1 -1
  109. package/dist/src/tools/tool-registry.d.ts +16 -2
  110. package/dist/src/tools/tool-registry.js +150 -19
  111. package/dist/src/tools/tool-registry.js.map +1 -1
  112. package/dist/src/tools/tool-registry.test.js +186 -75
  113. package/dist/src/tools/tool-registry.test.js.map +1 -1
  114. package/dist/src/tools/tools.d.ts +7 -4
  115. package/dist/src/tools/tools.js.map +1 -1
  116. package/dist/src/tools/web-fetch.js +6 -5
  117. package/dist/src/tools/web-fetch.js.map +1 -1
  118. package/dist/src/tools/web-search.d.ts +1 -1
  119. package/dist/src/tools/web-search.js +7 -6
  120. package/dist/src/tools/web-search.js.map +1 -1
  121. package/dist/src/tools/write-file.d.ts +0 -1
  122. package/dist/src/tools/write-file.js +10 -11
  123. package/dist/src/tools/write-file.js.map +1 -1
  124. package/dist/src/tools/write-file.test.js +4 -4
  125. package/dist/src/tools/write-file.test.js.map +1 -1
  126. package/dist/src/utils/editCorrector.d.ts +1 -1
  127. package/dist/src/utils/editCorrector.js +106 -2
  128. package/dist/src/utils/editCorrector.js.map +1 -1
  129. package/dist/src/utils/editCorrector.test.js +69 -19
  130. package/dist/src/utils/editCorrector.test.js.map +1 -1
  131. package/dist/src/utils/editor.d.ts +1 -1
  132. package/dist/src/utils/editor.js +1 -1
  133. package/dist/src/utils/fileUtils.d.ts +1 -1
  134. package/dist/src/utils/fileUtils.js +17 -0
  135. package/dist/src/utils/fileUtils.js.map +1 -1
  136. package/dist/src/utils/fileUtils.test.js +17 -0
  137. package/dist/src/utils/fileUtils.test.js.map +1 -1
  138. package/dist/src/utils/flashFallback.integration.test.js +1 -1
  139. package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
  140. package/dist/src/utils/messageInspectors.d.ts +1 -0
  141. package/dist/src/utils/messageInspectors.js +5 -0
  142. package/dist/src/utils/messageInspectors.js.map +1 -1
  143. package/dist/src/utils/nextSpeakerChecker.js +1 -1
  144. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  145. package/dist/src/utils/quotaErrorDetection.d.ts +22 -0
  146. package/dist/src/utils/quotaErrorDetection.js +74 -0
  147. package/dist/src/utils/quotaErrorDetection.js.map +1 -0
  148. package/dist/src/utils/retry.d.ts +1 -1
  149. package/dist/src/utils/retry.js +58 -2
  150. package/dist/src/utils/retry.js.map +1 -1
  151. package/dist/src/utils/retry.test.js +1 -1
  152. package/dist/src/utils/retry.test.js.map +1 -1
  153. package/dist/src/utils/schemaValidator.d.ts +10 -5
  154. package/dist/src/utils/schemaValidator.js +44 -32
  155. package/dist/src/utils/schemaValidator.js.map +1 -1
  156. package/dist/tsconfig.tsbuildinfo +1 -1
  157. package/package.json +7 -6
@@ -21,6 +21,7 @@ import { WebSearchTool } from '../tools/web-search.js';
21
21
  import { GeminiClient } from '../core/client.js';
22
22
  import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
23
23
  import { GitService } from '../services/gitService.js';
24
+ import { loadServerHierarchicalMemory } from '../utils/memoryDiscovery.js';
24
25
  import { getProjectTempDir } from '../utils/paths.js';
25
26
  import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, StartSessionEvent, } from '../telemetry/index.js';
26
27
  import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, } from './models.js';
@@ -43,6 +44,8 @@ export class MCPServerConfig {
43
44
  timeout;
44
45
  trust;
45
46
  description;
47
+ includeTools;
48
+ excludeTools;
46
49
  constructor(
47
50
  // For stdio transport
48
51
  command, args, env, cwd,
@@ -55,7 +58,7 @@ export class MCPServerConfig {
55
58
  // Common
56
59
  timeout, trust,
57
60
  // Metadata
58
- description) {
61
+ description, includeTools, excludeTools) {
59
62
  this.command = command;
60
63
  this.args = args;
61
64
  this.env = env;
@@ -67,6 +70,8 @@ export class MCPServerConfig {
67
70
  this.timeout = timeout;
68
71
  this.trust = trust;
69
72
  this.description = description;
73
+ this.includeTools = includeTools;
74
+ this.excludeTools = excludeTools;
70
75
  }
71
76
  }
72
77
  export class Config {
@@ -103,7 +108,10 @@ export class Config {
103
108
  model;
104
109
  extensionContextFilePaths;
105
110
  modelSwitchedDuringSession = false;
111
+ listExtensions;
112
+ _activeExtensions;
106
113
  flashFallbackHandler;
114
+ quotaErrorOccurred = false;
107
115
  constructor(params) {
108
116
  this.sessionId = params.sessionId;
109
117
  this.embeddingModel =
@@ -142,6 +150,8 @@ export class Config {
142
150
  this.bugCommand = params.bugCommand;
143
151
  this.model = params.model;
144
152
  this.extensionContextFilePaths = params.extensionContextFilePaths ?? [];
153
+ this.listExtensions = params.listExtensions ?? false;
154
+ this._activeExtensions = params.activeExtensions ?? [];
145
155
  if (params.contextFileName) {
146
156
  setGeminiMdFilename(params.contextFileName);
147
157
  }
@@ -155,23 +165,25 @@ export class Config {
155
165
  console.log('Data collection is disabled.');
156
166
  }
157
167
  }
168
+ async initialize() {
169
+ // Initialize centralized FileDiscoveryService
170
+ this.getFileService();
171
+ if (this.getCheckpointingEnabled()) {
172
+ try {
173
+ await this.getGitService();
174
+ }
175
+ catch {
176
+ // For now swallow the error, later log it.
177
+ }
178
+ }
179
+ this.toolRegistry = await this.createToolRegistry();
180
+ }
158
181
  async refreshAuth(authMethod) {
159
- // Always use the original default model when switching auth methods
160
- // This ensures users don't stay on Flash after switching between auth types
161
- // and allows API key users to get proper fallback behavior from getEffectiveModel
162
- const modelToUse = this.model; // Use the original default model
163
- // Temporarily clear contentGeneratorConfig to prevent getModel() from returning
164
- // the previous session's model (which might be Flash)
165
- this.contentGeneratorConfig = undefined;
166
- const contentConfig = await createContentGeneratorConfig(modelToUse, authMethod, this);
167
- const gc = new GeminiClient(this);
168
- this.geminiClient = gc;
169
- this.toolRegistry = await createToolRegistry(this);
170
- await gc.initialize(contentConfig);
171
- this.contentGeneratorConfig = contentConfig;
182
+ this.contentGeneratorConfig = await createContentGeneratorConfig(this.model, authMethod);
183
+ this.geminiClient = new GeminiClient(this);
184
+ await this.geminiClient.initialize(this.contentGeneratorConfig);
172
185
  // Reset the session flag since we're explicitly changing auth and using default model
173
186
  this.modelSwitchedDuringSession = false;
174
- // Note: In the future, we may want to reset any cached state when switching auth methods
175
187
  }
176
188
  getSessionId() {
177
189
  return this.sessionId;
@@ -200,6 +212,12 @@ export class Config {
200
212
  setFlashFallbackHandler(handler) {
201
213
  this.flashFallbackHandler = handler;
202
214
  }
215
+ setQuotaErrorOccurred(value) {
216
+ this.quotaErrorOccurred = value;
217
+ }
218
+ getQuotaErrorOccurred() {
219
+ return this.quotaErrorOccurred;
220
+ }
203
221
  getEmbeddingModel() {
204
222
  return this.embeddingModel;
205
223
  }
@@ -317,6 +335,12 @@ export class Config {
317
335
  getExtensionContextFilePaths() {
318
336
  return this.extensionContextFilePaths;
319
337
  }
338
+ getListExtensions() {
339
+ return this.listExtensions;
340
+ }
341
+ getActiveExtensions() {
342
+ return this._activeExtensions;
343
+ }
320
344
  async getGitService() {
321
345
  if (!this.gitService) {
322
346
  this.gitService = new GitService(this.targetDir);
@@ -324,49 +348,54 @@ export class Config {
324
348
  }
325
349
  return this.gitService;
326
350
  }
327
- }
328
- export function createToolRegistry(config) {
329
- const registry = new ToolRegistry(config);
330
- const targetDir = config.getTargetDir();
331
- // helper to create & register core tools that are enabled
332
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
333
- const registerCoreTool = (ToolClass, ...args) => {
334
- const className = ToolClass.name;
335
- const toolName = ToolClass.Name || className;
336
- const coreTools = config.getCoreTools();
337
- const excludeTools = config.getExcludeTools();
338
- let isEnabled = false;
339
- if (coreTools === undefined) {
340
- isEnabled = true;
341
- }
342
- else {
343
- isEnabled = coreTools.some((tool) => tool === className ||
344
- tool === toolName ||
345
- tool.startsWith(`${className}(`) ||
346
- tool.startsWith(`${toolName}(`));
347
- }
348
- if (excludeTools?.includes(className) || excludeTools?.includes(toolName)) {
349
- isEnabled = false;
350
- }
351
- if (isEnabled) {
352
- registry.registerTool(new ToolClass(...args));
353
- }
354
- };
355
- registerCoreTool(LSTool, targetDir, config);
356
- registerCoreTool(ReadFileTool, targetDir, config);
357
- registerCoreTool(GrepTool, targetDir);
358
- registerCoreTool(GlobTool, targetDir, config);
359
- registerCoreTool(EditTool, config);
360
- registerCoreTool(WriteFileTool, config);
361
- registerCoreTool(WebFetchTool, config);
362
- registerCoreTool(ReadManyFilesTool, targetDir, config);
363
- registerCoreTool(ShellTool, config);
364
- registerCoreTool(MemoryTool);
365
- registerCoreTool(WebSearchTool, config);
366
- return (async () => {
351
+ async refreshMemory() {
352
+ const { memoryContent, fileCount } = await loadServerHierarchicalMemory(this.getWorkingDir(), this.getDebugMode(), this.getFileService(), this.getExtensionContextFilePaths());
353
+ this.setUserMemory(memoryContent);
354
+ this.setGeminiMdFileCount(fileCount);
355
+ return { memoryContent, fileCount };
356
+ }
357
+ async createToolRegistry() {
358
+ const registry = new ToolRegistry(this);
359
+ const targetDir = this.getTargetDir();
360
+ // helper to create & register core tools that are enabled
361
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
362
+ const registerCoreTool = (ToolClass, ...args) => {
363
+ const className = ToolClass.name;
364
+ const toolName = ToolClass.Name || className;
365
+ const coreTools = this.getCoreTools();
366
+ const excludeTools = this.getExcludeTools();
367
+ let isEnabled = false;
368
+ if (coreTools === undefined) {
369
+ isEnabled = true;
370
+ }
371
+ else {
372
+ isEnabled = coreTools.some((tool) => tool === className ||
373
+ tool === toolName ||
374
+ tool.startsWith(`${className}(`) ||
375
+ tool.startsWith(`${toolName}(`));
376
+ }
377
+ if (excludeTools?.includes(className) ||
378
+ excludeTools?.includes(toolName)) {
379
+ isEnabled = false;
380
+ }
381
+ if (isEnabled) {
382
+ registry.registerTool(new ToolClass(...args));
383
+ }
384
+ };
385
+ registerCoreTool(LSTool, targetDir, this);
386
+ registerCoreTool(ReadFileTool, targetDir, this);
387
+ registerCoreTool(GrepTool, targetDir);
388
+ registerCoreTool(GlobTool, targetDir, this);
389
+ registerCoreTool(EditTool, this);
390
+ registerCoreTool(WriteFileTool, this);
391
+ registerCoreTool(WebFetchTool, this);
392
+ registerCoreTool(ReadManyFilesTool, targetDir, this);
393
+ registerCoreTool(ShellTool, this);
394
+ registerCoreTool(MemoryTool);
395
+ registerCoreTool(WebSearchTool, this);
367
396
  await registry.discoverTools();
368
397
  return registry;
369
- })();
398
+ }
370
399
  }
371
400
  // Export model constants for use in CLI
372
401
  export { DEFAULT_GEMINI_FLASH_MODEL };
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { Config } from './config.js';
8
8
  import * as path from 'path';
9
9
  import { setGeminiMdFilename as mockSetGeminiMdFilename } from '../tools/memoryTool.js';
10
10
  import { DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, } from '../telemetry/index.js';
11
+ import { loadServerHierarchicalMemory } from '../utils/memoryDiscovery.js';
11
12
  // Mock dependencies that might be called during Config construction or createServerConfig
12
13
  vi.mock('../tools/tool-registry', () => {
13
14
  const ToolRegistryMock = vi.fn();
@@ -18,6 +19,9 @@ vi.mock('../tools/tool-registry', () => {
18
19
  ToolRegistryMock.prototype.getFunctionDeclarations = vi.fn(() => []);
19
20
  return { ToolRegistry: ToolRegistryMock };
20
21
  });
22
+ vi.mock('../utils/memoryDiscovery.js', () => ({
23
+ loadServerHierarchicalMemory: vi.fn(),
24
+ }));
21
25
  // Mock individual tools if their constructors are complex or have side effects
22
26
  vi.mock('../tools/ls');
23
27
  vi.mock('../tools/read-file');
@@ -234,5 +238,26 @@ describe('Server Config (config.ts)', () => {
234
238
  expect(config.getTelemetryOtlpEndpoint()).toBe(DEFAULT_OTLP_ENDPOINT);
235
239
  });
236
240
  });
241
+ describe('refreshMemory', () => {
242
+ it('should update memory and file count on successful refresh', async () => {
243
+ const config = new Config(baseParams);
244
+ const mockMemoryData = {
245
+ memoryContent: 'new memory content',
246
+ fileCount: 5,
247
+ };
248
+ loadServerHierarchicalMemory.mockResolvedValue(mockMemoryData);
249
+ const result = await config.refreshMemory();
250
+ expect(loadServerHierarchicalMemory).toHaveBeenCalledWith(config.getWorkingDir(), config.getDebugMode(), config.getFileService(), config.getExtensionContextFilePaths());
251
+ expect(config.getUserMemory()).toBe(mockMemoryData.memoryContent);
252
+ expect(config.getGeminiMdFileCount()).toBe(mockMemoryData.fileCount);
253
+ expect(result).toEqual(mockMemoryData);
254
+ });
255
+ it('should propagate errors from loadServerHierarchicalMemory', async () => {
256
+ const config = new Config(baseParams);
257
+ const testError = new Error('Failed to load memory');
258
+ loadServerHierarchicalMemory.mockRejectedValue(testError);
259
+ await expect(config.refreshMemory()).rejects.toThrow(testError);
260
+ });
261
+ });
237
262
  });
238
263
  //# sourceMappingURL=config.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../src/config/config.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../../src/config/config.test.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,12 @@ import { Turn, ServerGeminiStreamEvent, ChatCompressionInfo } from './turn.js';
8
8
  import { Config } from '../config/config.js';
9
9
  import { GeminiChat } from './geminiChat.js';
10
10
  import { ContentGenerator, ContentGeneratorConfig } from './contentGenerator.js';
11
+ /**
12
+ * Returns the index of the content after the fraction of the total characters in the history.
13
+ *
14
+ * Exported for testing purposes.
15
+ */
16
+ export declare function findIndexAfterFraction(history: Content[], fraction: number): number;
11
17
  export declare class GeminiClient {
12
18
  private config;
13
19
  private chat?;
@@ -15,22 +21,31 @@ export declare class GeminiClient {
15
21
  private embeddingModel;
16
22
  private generateContentConfig;
17
23
  private readonly MAX_TURNS;
18
- private readonly TOKEN_THRESHOLD_FOR_SUMMARIZATION;
24
+ /**
25
+ * Threshold for compression token count as a fraction of the model's token limit.
26
+ * If the chat history exceeds this threshold, it will be compressed.
27
+ */
28
+ private readonly COMPRESSION_TOKEN_THRESHOLD;
29
+ /**
30
+ * The fraction of the latest chat history to keep. A value of 0.3
31
+ * means that only the last 30% of the chat history will be kept after compression.
32
+ */
33
+ private readonly COMPRESSION_PRESERVE_THRESHOLD;
19
34
  constructor(config: Config);
20
35
  initialize(contentGeneratorConfig: ContentGeneratorConfig): Promise<void>;
21
36
  getContentGenerator(): ContentGenerator;
22
37
  addHistory(content: Content): Promise<void>;
23
38
  getChat(): GeminiChat;
24
- getHistory(): Promise<Content[]>;
25
- setHistory(history: Content[]): Promise<void>;
39
+ getHistory(): Content[];
40
+ setHistory(history: Content[]): void;
26
41
  resetChat(): Promise<void>;
27
42
  private getEnvironment;
28
43
  private startChat;
29
- sendMessageStream(request: PartListUnion, signal: AbortSignal, turns?: number): AsyncGenerator<ServerGeminiStreamEvent, Turn>;
44
+ sendMessageStream(request: PartListUnion, signal: AbortSignal, prompt_id: string, turns?: number, originalModel?: string): AsyncGenerator<ServerGeminiStreamEvent, Turn>;
30
45
  generateJson(contents: Content[], schema: SchemaUnion, abortSignal: AbortSignal, model?: string, config?: GenerateContentConfig): Promise<Record<string, unknown>>;
31
46
  generateContent(contents: Content[], generationConfig: GenerateContentConfig, abortSignal: AbortSignal): Promise<GenerateContentResponse>;
32
47
  generateEmbedding(texts: string[]): Promise<number[][]>;
33
- tryCompressChat(force?: boolean): Promise<ChatCompressionInfo | null>;
48
+ tryCompressChat(prompt_id: string, force?: boolean): Promise<ChatCompressionInfo | null>;
34
49
  /**
35
50
  * Handles fallback to Flash model when persistent 429 errors occur for OAuth users.
36
51
  * Uses a fallback handler if provided by the config, otherwise returns null.
@@ -21,6 +21,27 @@ function isThinkingSupported(model) {
21
21
  return true;
22
22
  return false;
23
23
  }
24
+ /**
25
+ * Returns the index of the content after the fraction of the total characters in the history.
26
+ *
27
+ * Exported for testing purposes.
28
+ */
29
+ export function findIndexAfterFraction(history, fraction) {
30
+ if (fraction <= 0 || fraction >= 1) {
31
+ throw new Error('Fraction must be between 0 and 1');
32
+ }
33
+ const contentLengths = history.map((content) => JSON.stringify(content).length);
34
+ const totalCharacters = contentLengths.reduce((sum, length) => sum + length, 0);
35
+ const targetCharacters = totalCharacters * fraction;
36
+ let charactersSoFar = 0;
37
+ for (let i = 0; i < contentLengths.length; i++) {
38
+ charactersSoFar += contentLengths[i];
39
+ if (charactersSoFar >= targetCharacters) {
40
+ return i;
41
+ }
42
+ }
43
+ return contentLengths.length;
44
+ }
24
45
  export class GeminiClient {
25
46
  config;
26
47
  chat;
@@ -31,7 +52,16 @@ export class GeminiClient {
31
52
  topP: 1,
32
53
  };
33
54
  MAX_TURNS = 100;
34
- TOKEN_THRESHOLD_FOR_SUMMARIZATION = 0.7;
55
+ /**
56
+ * Threshold for compression token count as a fraction of the model's token limit.
57
+ * If the chat history exceeds this threshold, it will be compressed.
58
+ */
59
+ COMPRESSION_TOKEN_THRESHOLD = 0.7;
60
+ /**
61
+ * The fraction of the latest chat history to keep. A value of 0.3
62
+ * means that only the last 30% of the chat history will be kept after compression.
63
+ */
64
+ COMPRESSION_PRESERVE_THRESHOLD = 0.3;
35
65
  constructor(config) {
36
66
  this.config = config;
37
67
  if (config.getProxy()) {
@@ -58,10 +88,10 @@ export class GeminiClient {
58
88
  }
59
89
  return this.chat;
60
90
  }
61
- async getHistory() {
91
+ getHistory() {
62
92
  return this.getChat().getHistory();
63
93
  }
64
- async setHistory(history) {
94
+ setHistory(history) {
65
95
  this.getChat().setHistory(history);
66
96
  }
67
97
  async resetChat() {
@@ -159,33 +189,44 @@ export class GeminiClient {
159
189
  throw new Error(`Failed to initialize chat: ${getErrorMessage(error)}`);
160
190
  }
161
191
  }
162
- async *sendMessageStream(request, signal, turns = this.MAX_TURNS) {
192
+ async *sendMessageStream(request, signal, prompt_id, turns = this.MAX_TURNS, originalModel) {
163
193
  // Ensure turns never exceeds MAX_TURNS to prevent infinite loops
164
194
  const boundedTurns = Math.min(turns, this.MAX_TURNS);
165
195
  if (!boundedTurns) {
166
- return new Turn(this.getChat());
196
+ return new Turn(this.getChat(), prompt_id);
167
197
  }
168
- const compressed = await this.tryCompressChat();
198
+ // Track the original model from the first call to detect model switching
199
+ const initialModel = originalModel || this.config.getModel();
200
+ const compressed = await this.tryCompressChat(prompt_id);
169
201
  if (compressed) {
170
202
  yield { type: GeminiEventType.ChatCompressed, value: compressed };
171
203
  }
172
- const turn = new Turn(this.getChat());
204
+ const turn = new Turn(this.getChat(), prompt_id);
173
205
  const resultStream = turn.run(request, signal);
174
206
  for await (const event of resultStream) {
175
207
  yield event;
176
208
  }
177
209
  if (!turn.pendingToolCalls.length && signal && !signal.aborted) {
210
+ // Check if model was switched during the call (likely due to quota error)
211
+ const currentModel = this.config.getModel();
212
+ if (currentModel !== initialModel) {
213
+ // Model was switched (likely due to quota error fallback)
214
+ // Don't continue with recursive call to prevent unwanted Flash execution
215
+ return turn;
216
+ }
178
217
  const nextSpeakerCheck = await checkNextSpeaker(this.getChat(), this, signal);
179
218
  if (nextSpeakerCheck?.next_speaker === 'model') {
180
219
  const nextRequest = [{ text: 'Please continue.' }];
181
220
  // This recursive call's events will be yielded out, but the final
182
221
  // turn object will be from the top-level call.
183
- yield* this.sendMessageStream(nextRequest, signal, boundedTurns - 1);
222
+ yield* this.sendMessageStream(nextRequest, signal, prompt_id, boundedTurns - 1, initialModel);
184
223
  }
185
224
  }
186
225
  return turn;
187
226
  }
188
- async generateJson(contents, schema, abortSignal, model = DEFAULT_GEMINI_FLASH_MODEL, config = {}) {
227
+ async generateJson(contents, schema, abortSignal, model, config = {}) {
228
+ // Use current model from config instead of hardcoded Flash model
229
+ const modelToUse = model || this.config.getModel() || DEFAULT_GEMINI_FLASH_MODEL;
189
230
  try {
190
231
  const userMemory = this.config.getUserMemory();
191
232
  const systemInstruction = getCoreSystemPrompt(userMemory);
@@ -195,7 +236,7 @@ export class GeminiClient {
195
236
  ...config,
196
237
  };
197
238
  const apiCall = () => this.getContentGenerator().generateContent({
198
- model,
239
+ model: modelToUse,
199
240
  config: {
200
241
  ...requestConfig,
201
242
  systemInstruction,
@@ -205,7 +246,7 @@ export class GeminiClient {
205
246
  contents,
206
247
  });
207
248
  const result = await retryWithBackoff(apiCall, {
208
- onPersistent429: async (authType) => await this.handleFlashFallback(authType),
249
+ onPersistent429: async (authType, error) => await this.handleFlashFallback(authType, error),
209
250
  authType: this.config.getContentGeneratorConfig()?.authType,
210
251
  });
211
252
  const text = getResponseText(result);
@@ -258,7 +299,7 @@ export class GeminiClient {
258
299
  contents,
259
300
  });
260
301
  const result = await retryWithBackoff(apiCall, {
261
- onPersistent429: async (authType) => await this.handleFlashFallback(authType),
302
+ onPersistent429: async (authType, error) => await this.handleFlashFallback(authType, error),
262
303
  authType: this.config.getContentGeneratorConfig()?.authType,
263
304
  });
264
305
  return result;
@@ -298,27 +339,35 @@ export class GeminiClient {
298
339
  return values;
299
340
  });
300
341
  }
301
- async tryCompressChat(force = false) {
342
+ async tryCompressChat(prompt_id, force = false) {
302
343
  const curatedHistory = this.getChat().getHistory(true);
303
344
  // Regardless of `force`, don't do anything if the history is empty.
304
345
  if (curatedHistory.length === 0) {
305
346
  return null;
306
347
  }
307
348
  const model = this.config.getModel();
308
- let { totalTokens: originalTokenCount } = await this.getContentGenerator().countTokens({
349
+ const { totalTokens: originalTokenCount } = await this.getContentGenerator().countTokens({
309
350
  model,
310
351
  contents: curatedHistory,
311
352
  });
312
353
  if (originalTokenCount === undefined) {
313
354
  console.warn(`Could not determine token count for model ${model}.`);
314
- originalTokenCount = 0;
355
+ return null;
315
356
  }
316
357
  // Don't compress if not forced and we are under the limit.
317
358
  if (!force &&
318
- originalTokenCount <
319
- this.TOKEN_THRESHOLD_FOR_SUMMARIZATION * tokenLimit(model)) {
359
+ originalTokenCount < this.COMPRESSION_TOKEN_THRESHOLD * tokenLimit(model)) {
320
360
  return null;
321
361
  }
362
+ let compressBeforeIndex = findIndexAfterFraction(curatedHistory, 1 - this.COMPRESSION_PRESERVE_THRESHOLD);
363
+ // Find the first user message after the index. This is the start of the next turn.
364
+ while (compressBeforeIndex < curatedHistory.length &&
365
+ curatedHistory[compressBeforeIndex]?.role !== 'user') {
366
+ compressBeforeIndex++;
367
+ }
368
+ const historyToCompress = curatedHistory.slice(0, compressBeforeIndex);
369
+ const historyToKeep = curatedHistory.slice(compressBeforeIndex);
370
+ this.getChat().setHistory(historyToCompress);
322
371
  const { text: summary } = await this.getChat().sendMessage({
323
372
  message: {
324
373
  text: 'First, reason in your scratchpad. Then, generate the <state_snapshot>.',
@@ -326,7 +375,7 @@ export class GeminiClient {
326
375
  config: {
327
376
  systemInstruction: { text: getCompressionPrompt() },
328
377
  },
329
- });
378
+ }, prompt_id);
330
379
  this.chat = await this.startChat([
331
380
  {
332
381
  role: 'user',
@@ -336,6 +385,7 @@ export class GeminiClient {
336
385
  role: 'model',
337
386
  parts: [{ text: 'Got it. Thanks for the additional context!' }],
338
387
  },
388
+ ...historyToKeep,
339
389
  ]);
340
390
  const { totalTokens: newTokenCount } = await this.getContentGenerator().countTokens({
341
391
  // model might change after calling `sendMessage`, so we get the newest value from config
@@ -355,7 +405,7 @@ export class GeminiClient {
355
405
  * Handles fallback to Flash model when persistent 429 errors occur for OAuth users.
356
406
  * Uses a fallback handler if provided by the config, otherwise returns null.
357
407
  */
358
- async handleFlashFallback(authType) {
408
+ async handleFlashFallback(authType, error) {
359
409
  // Only handle fallback for OAuth users
360
410
  if (authType !== AuthType.LOGIN_WITH_GOOGLE) {
361
411
  return null;
@@ -370,11 +420,15 @@ export class GeminiClient {
370
420
  const fallbackHandler = this.config.flashFallbackHandler;
371
421
  if (typeof fallbackHandler === 'function') {
372
422
  try {
373
- const accepted = await fallbackHandler(currentModel, fallbackModel);
374
- if (accepted) {
423
+ const accepted = await fallbackHandler(currentModel, fallbackModel, error);
424
+ if (accepted !== false && accepted !== null) {
375
425
  this.config.setModel(fallbackModel);
376
426
  return fallbackModel;
377
427
  }
428
+ // Check if the model was switched manually in the handler
429
+ if (this.config.getModel() === fallbackModel) {
430
+ return null; // Model was switched but don't continue with current prompt
431
+ }
378
432
  }
379
433
  catch (error) {
380
434
  console.warn('Flash fallback handler failed:', error);