@google/gemini-cli-core 0.1.18 → 0.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/README.md +199 -132
  2. package/dist/google-gemini-cli-core-0.1.18.tgz +0 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/index.js +2 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/src/code_assist/converter.d.ts +3 -2
  7. package/dist/src/code_assist/converter.js +2 -2
  8. package/dist/src/code_assist/converter.js.map +1 -1
  9. package/dist/src/code_assist/converter.test.js +48 -1
  10. package/dist/src/code_assist/converter.test.js.map +1 -1
  11. package/dist/src/code_assist/oauth2.js +1 -1
  12. package/dist/src/code_assist/oauth2.js.map +1 -1
  13. package/dist/src/code_assist/server.test.js +4 -1
  14. package/dist/src/code_assist/server.test.js.map +1 -1
  15. package/dist/src/code_assist/setup.js +4 -4
  16. package/dist/src/code_assist/setup.js.map +1 -1
  17. package/dist/src/config/config.d.ts +19 -0
  18. package/dist/src/config/config.js +29 -5
  19. package/dist/src/config/config.js.map +1 -1
  20. package/dist/src/config/config.test.js +8 -0
  21. package/dist/src/config/config.test.js.map +1 -1
  22. package/dist/src/core/client.d.ts +5 -4
  23. package/dist/src/core/client.js +162 -116
  24. package/dist/src/core/client.js.map +1 -1
  25. package/dist/src/core/client.test.js +275 -30
  26. package/dist/src/core/client.test.js.map +1 -1
  27. package/dist/src/core/contentGenerator.js +3 -2
  28. package/dist/src/core/contentGenerator.js.map +1 -1
  29. package/dist/src/core/contentGenerator.test.js +3 -2
  30. package/dist/src/core/contentGenerator.test.js.map +1 -1
  31. package/dist/src/core/coreToolScheduler.d.ts +21 -8
  32. package/dist/src/core/coreToolScheduler.js +170 -61
  33. package/dist/src/core/coreToolScheduler.js.map +1 -1
  34. package/dist/src/core/coreToolScheduler.test.js +181 -37
  35. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  36. package/dist/src/core/geminiChat.d.ts +7 -6
  37. package/dist/src/core/geminiChat.js +43 -43
  38. package/dist/src/core/geminiChat.js.map +1 -1
  39. package/dist/src/core/logger.d.ts +1 -0
  40. package/dist/src/core/logger.js +18 -0
  41. package/dist/src/core/logger.js.map +1 -1
  42. package/dist/src/core/logger.test.js +29 -0
  43. package/dist/src/core/logger.test.js.map +1 -1
  44. package/dist/src/core/loggingContentGenerator.d.ts +29 -0
  45. package/dist/src/core/loggingContentGenerator.js +97 -0
  46. package/dist/src/core/loggingContentGenerator.js.map +1 -0
  47. package/dist/src/core/nonInteractiveToolExecutor.js +20 -1
  48. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  49. package/dist/src/core/nonInteractiveToolExecutor.test.js +7 -31
  50. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  51. package/dist/src/core/subagent.d.ts +230 -0
  52. package/dist/src/core/subagent.js +447 -0
  53. package/dist/src/core/subagent.js.map +1 -0
  54. package/dist/src/core/subagent.test.d.ts +6 -0
  55. package/dist/src/core/subagent.test.js +515 -0
  56. package/dist/src/core/subagent.test.js.map +1 -0
  57. package/dist/src/core/turn.js +1 -0
  58. package/dist/src/core/turn.js.map +1 -1
  59. package/dist/src/core/turn.test.js +4 -0
  60. package/dist/src/core/turn.test.js.map +1 -1
  61. package/dist/src/ide/detect-ide.d.ts +8 -1
  62. package/dist/src/ide/detect-ide.js +40 -3
  63. package/dist/src/ide/detect-ide.js.map +1 -1
  64. package/dist/src/ide/ide-client.d.ts +20 -1
  65. package/dist/src/ide/ide-client.js +144 -18
  66. package/dist/src/ide/ide-client.js.map +1 -1
  67. package/dist/src/ide/ide-installer.js +20 -1
  68. package/dist/src/ide/ide-installer.js.map +1 -1
  69. package/dist/src/ide/ide-installer.test.js +37 -2
  70. package/dist/src/ide/ide-installer.test.js.map +1 -1
  71. package/dist/src/ide/ideContext.d.ts +95 -0
  72. package/dist/src/ide/ideContext.js +45 -0
  73. package/dist/src/ide/ideContext.js.map +1 -1
  74. package/dist/src/mcp/google-auth-provider.js +9 -0
  75. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  76. package/dist/src/mcp/google-auth-provider.test.js +45 -10
  77. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  78. package/dist/src/services/loopDetectionService.js +14 -11
  79. package/dist/src/services/loopDetectionService.js.map +1 -1
  80. package/dist/src/services/loopDetectionService.test.js +191 -0
  81. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  82. package/dist/src/services/shellExecutionService.js +29 -9
  83. package/dist/src/services/shellExecutionService.js.map +1 -1
  84. package/dist/src/services/shellExecutionService.test.js +8 -0
  85. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  86. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +27 -2
  87. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +187 -58
  88. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  89. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.d.ts +6 -0
  90. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +186 -0
  91. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -0
  92. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +5 -1
  93. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +8 -0
  94. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  95. package/dist/src/telemetry/loggers.test.circular.js +7 -2
  96. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  97. package/dist/src/telemetry/loggers.test.js +7 -2
  98. package/dist/src/telemetry/loggers.test.js.map +1 -1
  99. package/dist/src/telemetry/metrics.d.ts +3 -2
  100. package/dist/src/telemetry/metrics.js +7 -1
  101. package/dist/src/telemetry/metrics.js.map +1 -1
  102. package/dist/src/telemetry/metrics.test.js +50 -0
  103. package/dist/src/telemetry/metrics.test.js.map +1 -1
  104. package/dist/src/telemetry/tool-call-decision.d.ts +13 -0
  105. package/dist/src/telemetry/tool-call-decision.js +29 -0
  106. package/dist/src/telemetry/tool-call-decision.js.map +1 -0
  107. package/dist/src/telemetry/types.d.ts +4 -7
  108. package/dist/src/telemetry/types.js +17 -21
  109. package/dist/src/telemetry/types.js.map +1 -1
  110. package/dist/src/telemetry/uiTelemetry.d.ts +4 -1
  111. package/dist/src/telemetry/uiTelemetry.js +3 -1
  112. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  113. package/dist/src/telemetry/uiTelemetry.test.js +13 -2
  114. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  115. package/dist/src/test-utils/tools.d.ts +23 -0
  116. package/dist/src/test-utils/tools.js +41 -0
  117. package/dist/src/test-utils/tools.js.map +1 -0
  118. package/dist/src/tools/diffOptions.d.ts +2 -0
  119. package/dist/src/tools/diffOptions.js +28 -0
  120. package/dist/src/tools/diffOptions.js.map +1 -1
  121. package/dist/src/tools/diffOptions.test.d.ts +6 -0
  122. package/dist/src/tools/diffOptions.test.js +119 -0
  123. package/dist/src/tools/diffOptions.test.js.map +1 -0
  124. package/dist/src/tools/edit.d.ts +9 -33
  125. package/dist/src/tools/edit.js +143 -132
  126. package/dist/src/tools/edit.js.map +1 -1
  127. package/dist/src/tools/edit.test.js +117 -51
  128. package/dist/src/tools/edit.test.js.map +1 -1
  129. package/dist/src/tools/glob.d.ts +3 -10
  130. package/dist/src/tools/glob.js +85 -89
  131. package/dist/src/tools/glob.js.map +1 -1
  132. package/dist/src/tools/glob.test.js +22 -12
  133. package/dist/src/tools/glob.test.js.map +1 -1
  134. package/dist/src/tools/grep.d.ts +3 -35
  135. package/dist/src/tools/grep.js +111 -83
  136. package/dist/src/tools/grep.js.map +1 -1
  137. package/dist/src/tools/grep.test.js +40 -23
  138. package/dist/src/tools/grep.test.js.map +1 -1
  139. package/dist/src/tools/ls.js +8 -9
  140. package/dist/src/tools/ls.js.map +1 -1
  141. package/dist/src/tools/mcp-client.d.ts +14 -3
  142. package/dist/src/tools/mcp-client.js +82 -6
  143. package/dist/src/tools/mcp-client.js.map +1 -1
  144. package/dist/src/tools/mcp-client.test.js +340 -5
  145. package/dist/src/tools/mcp-client.test.js.map +1 -1
  146. package/dist/src/tools/mcp-tool.d.ts +3 -8
  147. package/dist/src/tools/mcp-tool.js +5 -18
  148. package/dist/src/tools/mcp-tool.js.map +1 -1
  149. package/dist/src/tools/memoryTool.d.ts +2 -2
  150. package/dist/src/tools/memoryTool.js +5 -5
  151. package/dist/src/tools/memoryTool.js.map +1 -1
  152. package/dist/src/tools/memoryTool.test.js +10 -1
  153. package/dist/src/tools/memoryTool.test.js.map +1 -1
  154. package/dist/src/tools/modifiable-tool.d.ts +8 -5
  155. package/dist/src/tools/modifiable-tool.js +4 -1
  156. package/dist/src/tools/modifiable-tool.js.map +1 -1
  157. package/dist/src/tools/modifiable-tool.test.js +3 -3
  158. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  159. package/dist/src/tools/read-file.d.ts +4 -6
  160. package/dist/src/tools/read-file.js +92 -45
  161. package/dist/src/tools/read-file.js.map +1 -1
  162. package/dist/src/tools/read-file.test.js +192 -130
  163. package/dist/src/tools/read-file.test.js.map +1 -1
  164. package/dist/src/tools/read-many-files.js +25 -20
  165. package/dist/src/tools/read-many-files.js.map +1 -1
  166. package/dist/src/tools/read-many-files.test.js +22 -11
  167. package/dist/src/tools/read-many-files.test.js.map +1 -1
  168. package/dist/src/tools/shell.js +11 -7
  169. package/dist/src/tools/shell.js.map +1 -1
  170. package/dist/src/tools/shell.test.js +21 -0
  171. package/dist/src/tools/shell.test.js.map +1 -1
  172. package/dist/src/tools/tool-error.d.ts +4 -0
  173. package/dist/src/tools/tool-error.js +4 -0
  174. package/dist/src/tools/tool-error.js.map +1 -1
  175. package/dist/src/tools/tool-registry.d.ts +12 -20
  176. package/dist/src/tools/tool-registry.js +23 -76
  177. package/dist/src/tools/tool-registry.js.map +1 -1
  178. package/dist/src/tools/tool-registry.test.js +19 -192
  179. package/dist/src/tools/tool-registry.test.js.map +1 -1
  180. package/dist/src/tools/tools.d.ts +144 -43
  181. package/dist/src/tools/tools.js +181 -11
  182. package/dist/src/tools/tools.js.map +1 -1
  183. package/dist/src/tools/tools.test.d.ts +6 -0
  184. package/dist/src/tools/tools.test.js +117 -0
  185. package/dist/src/tools/tools.test.js.map +1 -0
  186. package/dist/src/tools/web-fetch.js +3 -4
  187. package/dist/src/tools/web-fetch.js.map +1 -1
  188. package/dist/src/tools/web-search.js +1 -1
  189. package/dist/src/tools/web-search.js.map +1 -1
  190. package/dist/src/tools/write-file.d.ts +6 -2
  191. package/dist/src/tools/write-file.js +85 -20
  192. package/dist/src/tools/write-file.js.map +1 -1
  193. package/dist/src/tools/write-file.test.js +113 -8
  194. package/dist/src/tools/write-file.test.js.map +1 -1
  195. package/dist/src/utils/bfsFileSearch.test.js +28 -56
  196. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  197. package/dist/src/utils/editCorrector.js +8 -9
  198. package/dist/src/utils/editCorrector.js.map +1 -1
  199. package/dist/src/utils/environmentContext.d.ts +21 -0
  200. package/dist/src/utils/environmentContext.js +90 -0
  201. package/dist/src/utils/environmentContext.js.map +1 -0
  202. package/dist/src/utils/environmentContext.test.d.ts +6 -0
  203. package/dist/src/utils/environmentContext.test.js +139 -0
  204. package/dist/src/utils/environmentContext.test.js.map +1 -0
  205. package/dist/src/utils/fileUtils.d.ts +7 -0
  206. package/dist/src/utils/fileUtils.js +15 -12
  207. package/dist/src/utils/fileUtils.js.map +1 -1
  208. package/dist/src/utils/fileUtils.test.js +6 -5
  209. package/dist/src/utils/fileUtils.test.js.map +1 -1
  210. package/dist/src/utils/filesearch/crawlCache.d.ts +1 -1
  211. package/dist/src/utils/filesearch/crawlCache.js +4 -1
  212. package/dist/src/utils/filesearch/crawlCache.js.map +1 -1
  213. package/dist/src/utils/filesearch/crawlCache.test.js +10 -0
  214. package/dist/src/utils/filesearch/crawlCache.test.js.map +1 -1
  215. package/dist/src/utils/filesearch/fileSearch.d.ts +2 -0
  216. package/dist/src/utils/filesearch/fileSearch.js +32 -7
  217. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  218. package/dist/src/utils/filesearch/fileSearch.test.js +139 -0
  219. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  220. package/dist/src/utils/memoryDiscovery.js +4 -1
  221. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  222. package/dist/src/utils/nextSpeakerChecker.js +5 -6
  223. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  224. package/dist/src/utils/nextSpeakerChecker.test.js +2 -2
  225. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  226. package/dist/src/utils/schemaValidator.d.ts +1 -8
  227. package/dist/src/utils/schemaValidator.js +1 -32
  228. package/dist/src/utils/schemaValidator.js.map +1 -1
  229. package/dist/tsconfig.tsbuildinfo +1 -1
  230. package/package.json +3 -1
  231. package/dist/google-gemini-cli-core-0.1.17.tgz +0 -0
@@ -7,29 +7,7 @@
7
7
  import { describe, it, expect, vi } from 'vitest';
8
8
  import { CoreToolScheduler, convertToFunctionResponse, } from './coreToolScheduler.js';
9
9
  import { BaseTool, ToolConfirmationOutcome, Icon, ApprovalMode, } from '../index.js';
10
- class MockTool extends BaseTool {
11
- shouldConfirm = false;
12
- executeFn = vi.fn();
13
- constructor(name = 'mockTool') {
14
- super(name, name, 'A mock tool', Icon.Hammer, {});
15
- }
16
- async shouldConfirmExecute(_params, _abortSignal) {
17
- if (this.shouldConfirm) {
18
- return {
19
- type: 'exec',
20
- title: 'Confirm Mock Tool',
21
- command: 'do_thing',
22
- rootCommand: 'do_thing',
23
- onConfirm: async () => { },
24
- };
25
- }
26
- return false;
27
- }
28
- async execute(params, _abortSignal) {
29
- this.executeFn(params);
30
- return { llmContent: 'Tool executed', returnDisplay: 'Tool executed' };
31
- }
32
- }
10
+ import { MockTool } from '../test-utils/tools.js';
33
11
  class MockModifiableTool extends MockTool {
34
12
  constructor(name = 'mockModifiableTool') {
35
13
  super(name);
@@ -43,12 +21,13 @@ class MockModifiableTool extends MockTool {
43
21
  createUpdatedParams: (_oldContent, modifiedProposedContent, _originalParams) => ({ newContent: modifiedProposedContent }),
44
22
  };
45
23
  }
46
- async shouldConfirmExecute(_params, _abortSignal) {
24
+ async shouldConfirmExecute() {
47
25
  if (this.shouldConfirm) {
48
26
  return {
49
27
  type: 'edit',
50
28
  title: 'Confirm Mock Tool',
51
29
  fileName: 'test.txt',
30
+ filePath: 'test.txt',
52
31
  fileDiff: 'diff',
53
32
  originalContent: 'originalContent',
54
33
  newContent: 'newContent',
@@ -62,14 +41,15 @@ describe('CoreToolScheduler', () => {
62
41
  it('should cancel a tool call if the signal is aborted before confirmation', async () => {
63
42
  const mockTool = new MockTool();
64
43
  mockTool.shouldConfirm = true;
44
+ const declarativeTool = mockTool;
65
45
  const toolRegistry = {
66
- getTool: () => mockTool,
46
+ getTool: () => declarativeTool,
67
47
  getFunctionDeclarations: () => [],
68
48
  tools: new Map(),
69
49
  discovery: {},
70
50
  registerTool: () => { },
71
- getToolByName: () => mockTool,
72
- getToolByDisplayName: () => mockTool,
51
+ getToolByName: () => declarativeTool,
52
+ getToolByDisplayName: () => declarativeTool,
73
53
  getTools: () => [],
74
54
  discoverTools: async () => { },
75
55
  getAllTools: () => [],
@@ -116,14 +96,15 @@ describe('CoreToolScheduler', () => {
116
96
  describe('CoreToolScheduler with payload', () => {
117
97
  it('should update args and diff and execute tool when payload is provided', async () => {
118
98
  const mockTool = new MockModifiableTool();
99
+ const declarativeTool = mockTool;
119
100
  const toolRegistry = {
120
- getTool: () => mockTool,
101
+ getTool: () => declarativeTool,
121
102
  getFunctionDeclarations: () => [],
122
103
  tools: new Map(),
123
104
  discovery: {},
124
105
  registerTool: () => { },
125
- getToolByName: () => mockTool,
126
- getToolByDisplayName: () => mockTool,
106
+ getToolByName: () => declarativeTool,
107
+ getToolByDisplayName: () => declarativeTool,
127
108
  getTools: () => [],
128
109
  discoverTools: async () => { },
129
110
  getAllTools: () => [],
@@ -154,7 +135,7 @@ describe('CoreToolScheduler with payload', () => {
154
135
  prompt_id: 'prompt-id-2',
155
136
  };
156
137
  await scheduler.schedule([request], abortController.signal);
157
- const confirmationDetails = await mockTool.shouldConfirmExecute({}, abortController.signal);
138
+ const confirmationDetails = await mockTool.shouldConfirmExecute();
158
139
  if (confirmationDetails) {
159
140
  const payload = { newContent: 'final version' };
160
141
  await scheduler.handleConfirmationResponse('1', confirmationDetails.onConfirm, ToolConfirmationOutcome.ProceedOnce, abortController.signal, payload);
@@ -334,6 +315,7 @@ describe('CoreToolScheduler edit cancellation', () => {
334
315
  type: 'edit',
335
316
  title: 'Confirm Edit',
336
317
  fileName: 'test.txt',
318
+ filePath: 'test.txt',
337
319
  fileDiff: '--- test.txt\n+++ test.txt\n@@ -1,1 +1,1 @@\n-old content\n+new content',
338
320
  originalContent: 'old content',
339
321
  newContent: 'new content',
@@ -348,14 +330,15 @@ describe('CoreToolScheduler edit cancellation', () => {
348
330
  }
349
331
  }
350
332
  const mockEditTool = new MockEditTool();
333
+ const declarativeTool = mockEditTool;
351
334
  const toolRegistry = {
352
- getTool: () => mockEditTool,
335
+ getTool: () => declarativeTool,
353
336
  getFunctionDeclarations: () => [],
354
337
  tools: new Map(),
355
338
  discovery: {},
356
339
  registerTool: () => { },
357
- getToolByName: () => mockEditTool,
358
- getToolByDisplayName: () => mockEditTool,
340
+ getToolByName: () => declarativeTool,
341
+ getToolByDisplayName: () => declarativeTool,
359
342
  getTools: () => [],
360
343
  discoverTools: async () => { },
361
344
  getAllTools: () => [],
@@ -409,17 +392,22 @@ describe('CoreToolScheduler YOLO mode', () => {
409
392
  it('should execute tool requiring confirmation directly without waiting', async () => {
410
393
  // Arrange
411
394
  const mockTool = new MockTool();
395
+ mockTool.executeFn.mockReturnValue({
396
+ llmContent: 'Tool executed',
397
+ returnDisplay: 'Tool executed',
398
+ });
412
399
  // This tool would normally require confirmation.
413
400
  mockTool.shouldConfirm = true;
401
+ const declarativeTool = mockTool;
414
402
  const toolRegistry = {
415
- getTool: () => mockTool,
416
- getToolByName: () => mockTool,
403
+ getTool: () => declarativeTool,
404
+ getToolByName: () => declarativeTool,
417
405
  // Other properties are not needed for this test but are included for type consistency.
418
406
  getFunctionDeclarations: () => [],
419
407
  tools: new Map(),
420
408
  discovery: {},
421
409
  registerTool: () => { },
422
- getToolByDisplayName: () => mockTool,
410
+ getToolByDisplayName: () => declarativeTool,
423
411
  getTools: () => [],
424
412
  discoverTools: async () => { },
425
413
  getAllTools: () => [],
@@ -478,4 +466,160 @@ describe('CoreToolScheduler YOLO mode', () => {
478
466
  }
479
467
  });
480
468
  });
469
+ describe('CoreToolScheduler request queueing', () => {
470
+ it('should queue a request if another is running', async () => {
471
+ let resolveFirstCall;
472
+ const firstCallPromise = new Promise((resolve) => {
473
+ resolveFirstCall = resolve;
474
+ });
475
+ const mockTool = new MockTool();
476
+ mockTool.executeFn.mockImplementation(() => firstCallPromise);
477
+ const declarativeTool = mockTool;
478
+ const toolRegistry = {
479
+ getTool: () => declarativeTool,
480
+ getToolByName: () => declarativeTool,
481
+ getFunctionDeclarations: () => [],
482
+ tools: new Map(),
483
+ discovery: {},
484
+ registerTool: () => { },
485
+ getToolByDisplayName: () => declarativeTool,
486
+ getTools: () => [],
487
+ discoverTools: async () => { },
488
+ getAllTools: () => [],
489
+ getToolsByServer: () => [],
490
+ };
491
+ const onAllToolCallsComplete = vi.fn();
492
+ const onToolCallsUpdate = vi.fn();
493
+ const mockConfig = {
494
+ getSessionId: () => 'test-session-id',
495
+ getUsageStatisticsEnabled: () => true,
496
+ getDebugMode: () => false,
497
+ getApprovalMode: () => ApprovalMode.YOLO, // Use YOLO to avoid confirmation prompts
498
+ };
499
+ const scheduler = new CoreToolScheduler({
500
+ config: mockConfig,
501
+ toolRegistry: Promise.resolve(toolRegistry),
502
+ onAllToolCallsComplete,
503
+ onToolCallsUpdate,
504
+ getPreferredEditor: () => 'vscode',
505
+ onEditorClose: vi.fn(),
506
+ });
507
+ const abortController = new AbortController();
508
+ const request1 = {
509
+ callId: '1',
510
+ name: 'mockTool',
511
+ args: { a: 1 },
512
+ isClientInitiated: false,
513
+ prompt_id: 'prompt-1',
514
+ };
515
+ const request2 = {
516
+ callId: '2',
517
+ name: 'mockTool',
518
+ args: { b: 2 },
519
+ isClientInitiated: false,
520
+ prompt_id: 'prompt-2',
521
+ };
522
+ // Schedule the first call, which will pause execution.
523
+ scheduler.schedule([request1], abortController.signal);
524
+ // Wait for the first call to be in the 'executing' state.
525
+ await vi.waitFor(() => {
526
+ const calls = onToolCallsUpdate.mock.calls.at(-1)?.[0];
527
+ expect(calls?.[0]?.status).toBe('executing');
528
+ });
529
+ // Schedule the second call while the first is "running".
530
+ const schedulePromise2 = scheduler.schedule([request2], abortController.signal);
531
+ // Ensure the second tool call hasn't been executed yet.
532
+ expect(mockTool.executeFn).toHaveBeenCalledTimes(1);
533
+ expect(mockTool.executeFn).toHaveBeenCalledWith({ a: 1 });
534
+ // Complete the first tool call.
535
+ resolveFirstCall({
536
+ llmContent: 'First call complete',
537
+ returnDisplay: 'First call complete',
538
+ });
539
+ // Wait for the second schedule promise to resolve.
540
+ await schedulePromise2;
541
+ // Wait for the second call to be in the 'executing' state.
542
+ await vi.waitFor(() => {
543
+ const calls = onToolCallsUpdate.mock.calls.at(-1)?.[0];
544
+ expect(calls?.[0]?.status).toBe('executing');
545
+ });
546
+ // Now the second tool call should have been executed.
547
+ expect(mockTool.executeFn).toHaveBeenCalledTimes(2);
548
+ expect(mockTool.executeFn).toHaveBeenCalledWith({ b: 2 });
549
+ // Let the second call finish.
550
+ const secondCallResult = {
551
+ llmContent: 'Second call complete',
552
+ returnDisplay: 'Second call complete',
553
+ };
554
+ // Since the mock is shared, we need to resolve the current promise.
555
+ // In a real scenario, a new promise would be created for the second call.
556
+ resolveFirstCall(secondCallResult);
557
+ // Wait for the second completion.
558
+ await vi.waitFor(() => {
559
+ expect(onAllToolCallsComplete).toHaveBeenCalledTimes(2);
560
+ });
561
+ // Verify the completion callbacks were called correctly.
562
+ expect(onAllToolCallsComplete.mock.calls[0][0][0].status).toBe('success');
563
+ expect(onAllToolCallsComplete.mock.calls[1][0][0].status).toBe('success');
564
+ });
565
+ it('should handle two synchronous calls to schedule', async () => {
566
+ const mockTool = new MockTool();
567
+ const declarativeTool = mockTool;
568
+ const toolRegistry = {
569
+ getTool: () => declarativeTool,
570
+ getToolByName: () => declarativeTool,
571
+ getFunctionDeclarations: () => [],
572
+ tools: new Map(),
573
+ discovery: {},
574
+ registerTool: () => { },
575
+ getToolByDisplayName: () => declarativeTool,
576
+ getTools: () => [],
577
+ discoverTools: async () => { },
578
+ getAllTools: () => [],
579
+ getToolsByServer: () => [],
580
+ };
581
+ const onAllToolCallsComplete = vi.fn();
582
+ const onToolCallsUpdate = vi.fn();
583
+ const mockConfig = {
584
+ getSessionId: () => 'test-session-id',
585
+ getUsageStatisticsEnabled: () => true,
586
+ getDebugMode: () => false,
587
+ getApprovalMode: () => ApprovalMode.YOLO,
588
+ };
589
+ const scheduler = new CoreToolScheduler({
590
+ config: mockConfig,
591
+ toolRegistry: Promise.resolve(toolRegistry),
592
+ onAllToolCallsComplete,
593
+ onToolCallsUpdate,
594
+ getPreferredEditor: () => 'vscode',
595
+ onEditorClose: vi.fn(),
596
+ });
597
+ const abortController = new AbortController();
598
+ const request1 = {
599
+ callId: '1',
600
+ name: 'mockTool',
601
+ args: { a: 1 },
602
+ isClientInitiated: false,
603
+ prompt_id: 'prompt-1',
604
+ };
605
+ const request2 = {
606
+ callId: '2',
607
+ name: 'mockTool',
608
+ args: { b: 2 },
609
+ isClientInitiated: false,
610
+ prompt_id: 'prompt-2',
611
+ };
612
+ // Schedule two calls synchronously.
613
+ const schedulePromise1 = scheduler.schedule([request1], abortController.signal);
614
+ const schedulePromise2 = scheduler.schedule([request2], abortController.signal);
615
+ // Wait for both promises to resolve.
616
+ await Promise.all([schedulePromise1, schedulePromise2]);
617
+ // Ensure the tool was called twice with the correct arguments.
618
+ expect(mockTool.executeFn).toHaveBeenCalledTimes(2);
619
+ expect(mockTool.executeFn).toHaveBeenCalledWith({ a: 1 });
620
+ expect(mockTool.executeFn).toHaveBeenCalledWith({ b: 2 });
621
+ // Ensure completion callbacks were called twice.
622
+ expect(onAllToolCallsComplete).toHaveBeenCalledTimes(2);
623
+ });
624
+ });
481
625
  //# sourceMappingURL=coreToolScheduler.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coreToolScheduler.test.js","sourceRoot":"","sources":["../../../src/core/coreToolScheduler.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coreToolScheduler.test.js","sourceRoot":"","sources":["../../../src/core/coreToolScheduler.test.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,10 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { GenerateContentResponse, Content, GenerateContentConfig, SendMessageParameters, GenerateContentResponseUsageMetadata, Tool } from '@google/genai';
6
+ import { GenerateContentResponse, Content, GenerateContentConfig, SendMessageParameters, Tool } from '@google/genai';
7
7
  import { ContentGenerator } from './contentGenerator.js';
8
8
  import { Config } from '../config/config.js';
9
+ import { StructuredError } from './turn.js';
9
10
  /**
10
11
  * Chat session that enables sending messages to the model with previous
11
12
  * conversation context.
@@ -20,15 +21,12 @@ export declare class GeminiChat {
20
21
  private history;
21
22
  private sendPromise;
22
23
  constructor(config: Config, contentGenerator: ContentGenerator, generationConfig?: GenerateContentConfig, history?: Content[]);
23
- private _getRequestTextFromContents;
24
- private _logApiRequest;
25
- private _logApiResponse;
26
- private _logApiError;
27
24
  /**
28
25
  * Handles falling back to Flash model when persistent 429 errors occur for OAuth users.
29
26
  * Uses a fallback handler if provided by the config; otherwise, returns null.
30
27
  */
31
28
  private handleFlashFallback;
29
+ setSystemInstruction(sysInstr: string): void;
32
30
  /**
33
31
  * Sends a message to the model and returns the response.
34
32
  *
@@ -109,9 +107,12 @@ export declare class GeminiChat {
109
107
  addHistory(content: Content): void;
110
108
  setHistory(history: Content[]): void;
111
109
  setTools(tools: Tool[]): void;
112
- getFinalUsageMetadata(chunks: GenerateContentResponse[]): GenerateContentResponseUsageMetadata | undefined;
110
+ maybeIncludeSchemaDepthContext(error: StructuredError): Promise<void>;
113
111
  private processStreamResponse;
114
112
  private recordHistory;
115
113
  private isTextContent;
116
114
  private isThoughtContent;
117
115
  }
116
+ /** Visible for Testing */
117
+ export declare function isSchemaDepthError(errorMessage: string): boolean;
118
+ export declare function isInvalidArgumentError(errorMessage: string): boolean;
@@ -9,9 +9,8 @@ import { createUserContent, } from '@google/genai';
9
9
  import { retryWithBackoff } from '../utils/retry.js';
10
10
  import { isFunctionResponse } from '../utils/messageInspectors.js';
11
11
  import { AuthType } from './contentGenerator.js';
12
- import { logApiRequest, logApiResponse, logApiError, } from '../telemetry/loggers.js';
13
- import { ApiErrorEvent, ApiRequestEvent, ApiResponseEvent, } from '../telemetry/types.js';
14
12
  import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
13
+ import { hasCycleInSchema } from '../tools/tools.js';
15
14
  /**
16
15
  * Returns true if the response is valid, false otherwise.
17
16
  */
@@ -115,21 +114,6 @@ export class GeminiChat {
115
114
  this.history = history;
116
115
  validateHistory(history);
117
116
  }
118
- _getRequestTextFromContents(contents) {
119
- return JSON.stringify(contents);
120
- }
121
- async _logApiRequest(contents, model, prompt_id) {
122
- const requestText = this._getRequestTextFromContents(contents);
123
- logApiRequest(this.config, new ApiRequestEvent(model, prompt_id, requestText));
124
- }
125
- async _logApiResponse(durationMs, prompt_id, usageMetadata, responseText) {
126
- logApiResponse(this.config, new ApiResponseEvent(this.config.getModel(), durationMs, prompt_id, this.config.getContentGeneratorConfig()?.authType, usageMetadata, responseText));
127
- }
128
- _logApiError(durationMs, error, prompt_id) {
129
- const errorMessage = error instanceof Error ? error.message : String(error);
130
- const errorType = error instanceof Error ? error.name : 'unknown';
131
- logApiError(this.config, new ApiErrorEvent(this.config.getModel(), errorMessage, durationMs, prompt_id, this.config.getContentGeneratorConfig()?.authType, errorType));
132
- }
133
117
  /**
134
118
  * Handles falling back to Flash model when persistent 429 errors occur for OAuth users.
135
119
  * Uses a fallback handler if provided by the config; otherwise, returns null.
@@ -166,6 +150,9 @@ export class GeminiChat {
166
150
  }
167
151
  return null;
168
152
  }
153
+ setSystemInstruction(sysInstr) {
154
+ this.generationConfig.systemInstruction = sysInstr;
155
+ }
169
156
  /**
170
157
  * Sends a message to the model and returns the response.
171
158
  *
@@ -190,8 +177,6 @@ export class GeminiChat {
190
177
  await this.sendPromise;
191
178
  const userContent = createUserContent(params.message);
192
179
  const requestContents = this.getHistory(true).concat(userContent);
193
- this._logApiRequest(requestContents, this.config.getModel(), prompt_id);
194
- const startTime = Date.now();
195
180
  let response;
196
181
  try {
197
182
  const apiCall = () => {
@@ -209,19 +194,20 @@ export class GeminiChat {
209
194
  };
210
195
  response = await retryWithBackoff(apiCall, {
211
196
  shouldRetry: (error) => {
212
- if (error && error.message) {
197
+ // Check for known error messages and codes.
198
+ if (error instanceof Error && error.message) {
199
+ if (isSchemaDepthError(error.message))
200
+ return false;
213
201
  if (error.message.includes('429'))
214
202
  return true;
215
203
  if (error.message.match(/5\d{2}/))
216
204
  return true;
217
205
  }
218
- return false;
206
+ return false; // Don't retry other errors by default
219
207
  },
220
208
  onPersistent429: async (authType, error) => await this.handleFlashFallback(authType, error),
221
209
  authType: this.config.getContentGeneratorConfig()?.authType,
222
210
  });
223
- const durationMs = Date.now() - startTime;
224
- await this._logApiResponse(durationMs, prompt_id, response.usageMetadata, JSON.stringify(response));
225
211
  this.sendPromise = (async () => {
226
212
  const outputContent = response.candidates?.[0]?.content;
227
213
  // Because the AFC input contains the entire curated chat history in
@@ -244,8 +230,6 @@ export class GeminiChat {
244
230
  return response;
245
231
  }
246
232
  catch (error) {
247
- const durationMs = Date.now() - startTime;
248
- this._logApiError(durationMs, error, prompt_id);
249
233
  this.sendPromise = Promise.resolve();
250
234
  throw error;
251
235
  }
@@ -276,8 +260,6 @@ export class GeminiChat {
276
260
  await this.sendPromise;
277
261
  const userContent = createUserContent(params.message);
278
262
  const requestContents = this.getHistory(true).concat(userContent);
279
- this._logApiRequest(requestContents, this.config.getModel(), prompt_id);
280
- const startTime = Date.now();
281
263
  try {
282
264
  const apiCall = () => {
283
265
  const modelToUse = this.config.getModel();
@@ -298,8 +280,10 @@ export class GeminiChat {
298
280
  // If errors occur mid-stream, this setup won't resume the stream; it will restart it.
299
281
  const streamResponse = await retryWithBackoff(apiCall, {
300
282
  shouldRetry: (error) => {
301
- // Check error messages for status codes, or specific error names if known
302
- if (error && error.message) {
283
+ // Check for known error messages and codes.
284
+ if (error instanceof Error && error.message) {
285
+ if (isSchemaDepthError(error.message))
286
+ return false;
303
287
  if (error.message.includes('429'))
304
288
  return true;
305
289
  if (error.message.match(/5\d{2}/))
@@ -316,12 +300,10 @@ export class GeminiChat {
316
300
  this.sendPromise = Promise.resolve(streamResponse)
317
301
  .then(() => undefined)
318
302
  .catch(() => undefined);
319
- const result = this.processStreamResponse(streamResponse, userContent, startTime, prompt_id);
303
+ const result = this.processStreamResponse(streamResponse, userContent);
320
304
  return result;
321
305
  }
322
306
  catch (error) {
323
- const durationMs = Date.now() - startTime;
324
- this._logApiError(durationMs, error, prompt_id);
325
307
  this.sendPromise = Promise.resolve();
326
308
  throw error;
327
309
  }
@@ -377,14 +359,29 @@ export class GeminiChat {
377
359
  setTools(tools) {
378
360
  this.generationConfig.tools = tools;
379
361
  }
380
- getFinalUsageMetadata(chunks) {
381
- const lastChunkWithMetadata = chunks
382
- .slice()
383
- .reverse()
384
- .find((chunk) => chunk.usageMetadata);
385
- return lastChunkWithMetadata?.usageMetadata;
362
+ async maybeIncludeSchemaDepthContext(error) {
363
+ // Check for potentially problematic cyclic tools with cyclic schemas
364
+ // and include a recommendation to remove potentially problematic tools.
365
+ if (isSchemaDepthError(error.message) ||
366
+ isInvalidArgumentError(error.message)) {
367
+ const tools = (await this.config.getToolRegistry()).getAllTools();
368
+ const cyclicSchemaTools = [];
369
+ for (const tool of tools) {
370
+ if ((tool.schema.parametersJsonSchema &&
371
+ hasCycleInSchema(tool.schema.parametersJsonSchema)) ||
372
+ (tool.schema.parameters && hasCycleInSchema(tool.schema.parameters))) {
373
+ cyclicSchemaTools.push(tool.displayName);
374
+ }
375
+ }
376
+ if (cyclicSchemaTools.length > 0) {
377
+ const extraDetails = `\n\nThis error was probably caused by cyclic schema references in one of the following tools, try disabling them with excludeTools:\n\n - ` +
378
+ cyclicSchemaTools.join(`\n - `) +
379
+ `\n`;
380
+ error.message += extraDetails;
381
+ }
382
+ }
386
383
  }
387
- async *processStreamResponse(streamResponse, inputContent, startTime, prompt_id) {
384
+ async *processStreamResponse(streamResponse, inputContent) {
388
385
  const outputContent = [];
389
386
  const chunks = [];
390
387
  let errorOccurred = false;
@@ -406,19 +403,15 @@ export class GeminiChat {
406
403
  }
407
404
  catch (error) {
408
405
  errorOccurred = true;
409
- const durationMs = Date.now() - startTime;
410
- this._logApiError(durationMs, error, prompt_id);
411
406
  throw error;
412
407
  }
413
408
  if (!errorOccurred) {
414
- const durationMs = Date.now() - startTime;
415
409
  const allParts = [];
416
410
  for (const content of outputContent) {
417
411
  if (content.parts) {
418
412
  allParts.push(...content.parts);
419
413
  }
420
414
  }
421
- await this._logApiResponse(durationMs, prompt_id, this.getFinalUsageMetadata(chunks), JSON.stringify(chunks));
422
415
  }
423
416
  this.recordHistory(inputContent, outputContent);
424
417
  }
@@ -506,4 +499,11 @@ export class GeminiChat {
506
499
  content.parts[0].thought === true);
507
500
  }
508
501
  }
502
+ /** Visible for Testing */
503
+ export function isSchemaDepthError(errorMessage) {
504
+ return errorMessage.includes('maximum schema depth exceeded');
505
+ }
506
+ export function isInvalidArgumentError(errorMessage) {
507
+ return errorMessage.includes('Request contains an invalid argument');
508
+ }
509
509
  //# sourceMappingURL=geminiChat.js.map