@google/gemini-cli-core 0.3.0-nightly.20250822.15c62bad → 0.3.0-preview.1

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 (403) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +2 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/code_assist/codeAssist.d.ts +4 -3
  5. package/dist/src/code_assist/codeAssist.js.map +1 -1
  6. package/dist/src/code_assist/converter.d.ts +2 -1
  7. package/dist/src/code_assist/converter.js +36 -4
  8. package/dist/src/code_assist/converter.js.map +1 -1
  9. package/dist/src/code_assist/converter.test.js +83 -0
  10. package/dist/src/code_assist/converter.test.js.map +1 -1
  11. package/dist/src/code_assist/oauth2.d.ts +1 -1
  12. package/dist/src/code_assist/oauth2.js +8 -8
  13. package/dist/src/code_assist/oauth2.js.map +1 -1
  14. package/dist/src/code_assist/oauth2.test.js +5 -5
  15. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  16. package/dist/src/code_assist/server.d.ts +5 -5
  17. package/dist/src/code_assist/server.js +1 -1
  18. package/dist/src/code_assist/server.js.map +1 -1
  19. package/dist/src/code_assist/setup.d.ts +1 -1
  20. package/dist/src/code_assist/setup.js +1 -1
  21. package/dist/src/code_assist/setup.js.map +1 -1
  22. package/dist/src/code_assist/setup.test.js.map +1 -1
  23. package/dist/src/config/config.d.ts +27 -5
  24. package/dist/src/config/config.js +58 -12
  25. package/dist/src/config/config.js.map +1 -1
  26. package/dist/src/config/config.test.js +113 -2
  27. package/dist/src/config/config.test.js.map +1 -1
  28. package/dist/src/config/storage.js +3 -3
  29. package/dist/src/config/storage.js.map +1 -1
  30. package/dist/src/config/storage.test.js +1 -1
  31. package/dist/src/config/storage.test.js.map +1 -1
  32. package/dist/src/core/client.d.ts +15 -9
  33. package/dist/src/core/client.js +57 -14
  34. package/dist/src/core/client.js.map +1 -1
  35. package/dist/src/core/client.test.js +336 -82
  36. package/dist/src/core/client.test.js.map +1 -1
  37. package/dist/src/core/contentGenerator.d.ts +3 -3
  38. package/dist/src/core/contentGenerator.js +1 -1
  39. package/dist/src/core/contentGenerator.js.map +1 -1
  40. package/dist/src/core/contentGenerator.test.js.map +1 -1
  41. package/dist/src/core/coreToolScheduler.d.ts +12 -3
  42. package/dist/src/core/coreToolScheduler.js +99 -46
  43. package/dist/src/core/coreToolScheduler.js.map +1 -1
  44. package/dist/src/core/coreToolScheduler.test.js +196 -56
  45. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  46. package/dist/src/core/geminiChat.d.ts +18 -14
  47. package/dist/src/core/geminiChat.js +197 -159
  48. package/dist/src/core/geminiChat.js.map +1 -1
  49. package/dist/src/core/geminiChat.test.js +708 -257
  50. package/dist/src/core/geminiChat.test.js.map +1 -1
  51. package/dist/src/core/geminiRequest.js +1 -0
  52. package/dist/src/core/geminiRequest.js.map +1 -1
  53. package/dist/src/core/logger.d.ts +2 -2
  54. package/dist/src/core/logger.test.js.map +1 -1
  55. package/dist/src/core/loggingContentGenerator.d.ts +3 -3
  56. package/dist/src/core/loggingContentGenerator.js +3 -1
  57. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  58. package/dist/src/core/nonInteractiveToolExecutor.d.ts +1 -1
  59. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  60. package/dist/src/core/nonInteractiveToolExecutor.test.js +54 -35
  61. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  62. package/dist/src/core/subagent.d.ts +24 -18
  63. package/dist/src/core/subagent.js +122 -84
  64. package/dist/src/core/subagent.js.map +1 -1
  65. package/dist/src/core/subagent.test.js +28 -23
  66. package/dist/src/core/subagent.test.js.map +1 -1
  67. package/dist/src/core/turn.d.ts +16 -5
  68. package/dist/src/core/turn.js +12 -1
  69. package/dist/src/core/turn.js.map +1 -1
  70. package/dist/src/core/turn.test.js +1 -1
  71. package/dist/src/core/turn.test.js.map +1 -1
  72. package/dist/src/generated/git-commit.d.ts +2 -2
  73. package/dist/src/generated/git-commit.js +2 -2
  74. package/dist/src/generated/git-commit.js.map +1 -1
  75. package/dist/src/ide/detect-ide.d.ts +8 -3
  76. package/dist/src/ide/detect-ide.js +29 -11
  77. package/dist/src/ide/detect-ide.js.map +1 -1
  78. package/dist/src/ide/detect-ide.test.js +96 -52
  79. package/dist/src/ide/detect-ide.test.js.map +1 -1
  80. package/dist/src/ide/ide-client.d.ts +6 -5
  81. package/dist/src/ide/ide-client.js +19 -17
  82. package/dist/src/ide/ide-client.js.map +1 -1
  83. package/dist/src/ide/ide-client.test.js +14 -10
  84. package/dist/src/ide/ide-client.test.js.map +1 -1
  85. package/dist/src/ide/ide-installer.d.ts +1 -1
  86. package/dist/src/ide/ide-installer.js +29 -20
  87. package/dist/src/ide/ide-installer.js.map +1 -1
  88. package/dist/src/ide/ide-installer.test.js +82 -22
  89. package/dist/src/ide/ide-installer.test.js.map +1 -1
  90. package/dist/src/ide/ideContext.d.ts +11 -11
  91. package/dist/src/ide/process-utils.d.ts +7 -4
  92. package/dist/src/ide/process-utils.js +47 -34
  93. package/dist/src/ide/process-utils.js.map +1 -1
  94. package/dist/src/ide/process-utils.test.d.ts +6 -0
  95. package/dist/src/ide/process-utils.test.js +72 -0
  96. package/dist/src/ide/process-utils.test.js.map +1 -0
  97. package/dist/src/index.d.ts +8 -2
  98. package/dist/src/index.js +6 -1
  99. package/dist/src/index.js.map +1 -1
  100. package/dist/src/mcp/google-auth-provider.d.ts +3 -3
  101. package/dist/src/mcp/google-auth-provider.test.js.map +1 -1
  102. package/dist/src/mcp/oauth-provider.d.ts +2 -2
  103. package/dist/src/mcp/oauth-provider.js.map +1 -1
  104. package/dist/src/mcp/oauth-provider.test.js +1 -1
  105. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  106. package/dist/src/mcp/oauth-token-storage.d.ts +5 -25
  107. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  108. package/dist/src/mcp/oauth-token-storage.test.js +1 -1
  109. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  110. package/dist/src/mcp/oauth-utils.d.ts +9 -1
  111. package/dist/src/mcp/oauth-utils.js +41 -27
  112. package/dist/src/mcp/oauth-utils.js.map +1 -1
  113. package/dist/src/mcp/oauth-utils.test.js +41 -1
  114. package/dist/src/mcp/oauth-utils.test.js.map +1 -1
  115. package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
  116. package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
  117. package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
  118. package/dist/src/mcp/token-storage/base-token-storage.test.d.ts +6 -0
  119. package/dist/src/mcp/token-storage/base-token-storage.test.js +160 -0
  120. package/dist/src/mcp/token-storage/base-token-storage.test.js.map +1 -0
  121. package/dist/src/mcp/token-storage/types.d.ts +34 -0
  122. package/dist/src/mcp/token-storage/types.js +7 -0
  123. package/dist/src/mcp/token-storage/types.js.map +1 -0
  124. package/dist/src/prompts/mcp-prompts.d.ts +2 -2
  125. package/dist/src/prompts/prompt-registry.d.ts +1 -1
  126. package/dist/src/services/chatRecordingService.d.ts +1 -1
  127. package/dist/src/services/chatRecordingService.js +3 -0
  128. package/dist/src/services/chatRecordingService.js.map +1 -1
  129. package/dist/src/services/chatRecordingService.test.js +2 -2
  130. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  131. package/dist/src/services/fileDiscoveryService.js +1 -1
  132. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  133. package/dist/src/services/fileDiscoveryService.test.js +3 -3
  134. package/dist/src/services/fileDiscoveryService.test.js.map +1 -1
  135. package/dist/src/services/fileSystemService.js +1 -1
  136. package/dist/src/services/fileSystemService.js.map +1 -1
  137. package/dist/src/services/fileSystemService.test.js +1 -1
  138. package/dist/src/services/fileSystemService.test.js.map +1 -1
  139. package/dist/src/services/gitService.d.ts +1 -1
  140. package/dist/src/services/gitService.js +17 -7
  141. package/dist/src/services/gitService.js.map +1 -1
  142. package/dist/src/services/gitService.test.js +3 -3
  143. package/dist/src/services/gitService.test.js.map +1 -1
  144. package/dist/src/services/loopDetectionService.d.ts +2 -2
  145. package/dist/src/services/loopDetectionService.js +9 -3
  146. package/dist/src/services/loopDetectionService.js.map +1 -1
  147. package/dist/src/services/loopDetectionService.test.js +23 -1
  148. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  149. package/dist/src/services/shellExecutionService.js +5 -4
  150. package/dist/src/services/shellExecutionService.js.map +1 -1
  151. package/dist/src/services/shellExecutionService.test.js +4 -3
  152. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  153. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +13 -3
  154. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +127 -2
  155. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  156. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +11 -3
  157. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  158. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +22 -1
  159. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +55 -1
  160. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  161. package/dist/src/telemetry/constants.d.ts +8 -0
  162. package/dist/src/telemetry/constants.js +8 -0
  163. package/dist/src/telemetry/constants.js.map +1 -1
  164. package/dist/src/telemetry/file-exporters.d.ts +5 -4
  165. package/dist/src/telemetry/file-exporters.js +1 -1
  166. package/dist/src/telemetry/file-exporters.js.map +1 -1
  167. package/dist/src/telemetry/index.d.ts +5 -2
  168. package/dist/src/telemetry/index.js +3 -2
  169. package/dist/src/telemetry/index.js.map +1 -1
  170. package/dist/src/telemetry/loggers.d.ts +8 -2
  171. package/dist/src/telemetry/loggers.js +102 -2
  172. package/dist/src/telemetry/loggers.js.map +1 -1
  173. package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
  174. package/dist/src/telemetry/loggers.test.js +65 -9
  175. package/dist/src/telemetry/loggers.test.js.map +1 -1
  176. package/dist/src/telemetry/metrics.d.ts +16 -4
  177. package/dist/src/telemetry/metrics.js +47 -3
  178. package/dist/src/telemetry/metrics.js.map +1 -1
  179. package/dist/src/telemetry/sdk.d.ts +1 -1
  180. package/dist/src/telemetry/telemetry-utils.d.ts +6 -0
  181. package/dist/src/telemetry/telemetry-utils.js +14 -0
  182. package/dist/src/telemetry/telemetry-utils.js.map +1 -0
  183. package/dist/src/telemetry/telemetry-utils.test.d.ts +6 -0
  184. package/dist/src/telemetry/telemetry-utils.test.js +40 -0
  185. package/dist/src/telemetry/telemetry-utils.test.js.map +1 -0
  186. package/dist/src/telemetry/types.d.ts +50 -6
  187. package/dist/src/telemetry/types.js +75 -1
  188. package/dist/src/telemetry/types.js.map +1 -1
  189. package/dist/src/telemetry/uiTelemetry.d.ts +2 -2
  190. package/dist/src/telemetry/uiTelemetry.js +1 -1
  191. package/dist/src/telemetry/uiTelemetry.js.map +1 -1
  192. package/dist/src/telemetry/uiTelemetry.test.js +16 -12
  193. package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
  194. package/dist/src/test-utils/config.d.ts +2 -1
  195. package/dist/src/test-utils/config.js.map +1 -1
  196. package/dist/src/test-utils/mockWorkspaceContext.d.ts +1 -1
  197. package/dist/src/test-utils/tools.d.ts +3 -2
  198. package/dist/src/test-utils/tools.js.map +1 -1
  199. package/dist/src/tools/diffOptions.d.ts +1 -1
  200. package/dist/src/tools/edit.d.ts +4 -3
  201. package/dist/src/tools/edit.js +28 -7
  202. package/dist/src/tools/edit.js.map +1 -1
  203. package/dist/src/tools/edit.test.js +27 -3
  204. package/dist/src/tools/edit.test.js.map +1 -1
  205. package/dist/src/tools/glob.d.ts +3 -2
  206. package/dist/src/tools/glob.js +4 -4
  207. package/dist/src/tools/glob.js.map +1 -1
  208. package/dist/src/tools/glob.test.js +6 -3
  209. package/dist/src/tools/glob.test.js.map +1 -1
  210. package/dist/src/tools/grep.d.ts +3 -2
  211. package/dist/src/tools/grep.js +30 -15
  212. package/dist/src/tools/grep.js.map +1 -1
  213. package/dist/src/tools/grep.test.js +15 -3
  214. package/dist/src/tools/grep.test.js.map +1 -1
  215. package/dist/src/tools/ls.d.ts +3 -2
  216. package/dist/src/tools/ls.js +3 -3
  217. package/dist/src/tools/ls.js.map +1 -1
  218. package/dist/src/tools/ls.test.js +2 -2
  219. package/dist/src/tools/ls.test.js.map +1 -1
  220. package/dist/src/tools/mcp-client-manager.d.ts +4 -4
  221. package/dist/src/tools/mcp-client.d.ts +7 -7
  222. package/dist/src/tools/mcp-client.js +2 -2
  223. package/dist/src/tools/mcp-client.js.map +1 -1
  224. package/dist/src/tools/mcp-tool.d.ts +3 -2
  225. package/dist/src/tools/mcp-tool.js +1 -1
  226. package/dist/src/tools/mcp-tool.js.map +1 -1
  227. package/dist/src/tools/mcp-tool.test.js +7 -3
  228. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  229. package/dist/src/tools/memoryTool.d.ts +3 -2
  230. package/dist/src/tools/memoryTool.js +2 -2
  231. package/dist/src/tools/memoryTool.js.map +1 -1
  232. package/dist/src/tools/memoryTool.test.js +4 -4
  233. package/dist/src/tools/memoryTool.test.js.map +1 -1
  234. package/dist/src/tools/modifiable-tool.d.ts +2 -2
  235. package/dist/src/tools/modifiable-tool.js +3 -3
  236. package/dist/src/tools/modifiable-tool.js.map +1 -1
  237. package/dist/src/tools/modifiable-tool.test.js +4 -4
  238. package/dist/src/tools/modifiable-tool.test.js.map +1 -1
  239. package/dist/src/tools/read-file.d.ts +3 -2
  240. package/dist/src/tools/read-file.js +10 -4
  241. package/dist/src/tools/read-file.js.map +1 -1
  242. package/dist/src/tools/read-file.test.js +8 -5
  243. package/dist/src/tools/read-file.test.js.map +1 -1
  244. package/dist/src/tools/read-many-files.d.ts +3 -2
  245. package/dist/src/tools/read-many-files.js +28 -51
  246. package/dist/src/tools/read-many-files.js.map +1 -1
  247. package/dist/src/tools/read-many-files.test.js +39 -7
  248. package/dist/src/tools/read-many-files.test.js.map +1 -1
  249. package/dist/src/tools/ripGrep.d.ts +47 -0
  250. package/dist/src/tools/ripGrep.js +368 -0
  251. package/dist/src/tools/ripGrep.js.map +1 -0
  252. package/dist/src/tools/ripGrep.test.d.ts +6 -0
  253. package/dist/src/tools/ripGrep.test.js +874 -0
  254. package/dist/src/tools/ripGrep.test.js.map +1 -0
  255. package/dist/src/tools/shell.d.ts +3 -2
  256. package/dist/src/tools/shell.js +17 -6
  257. package/dist/src/tools/shell.js.map +1 -1
  258. package/dist/src/tools/shell.test.js +22 -5
  259. package/dist/src/tools/shell.test.js.map +1 -1
  260. package/dist/src/tools/tool-error.d.ts +1 -0
  261. package/dist/src/tools/tool-error.js +2 -0
  262. package/dist/src/tools/tool-error.js.map +1 -1
  263. package/dist/src/tools/tool-registry.d.ts +8 -3
  264. package/dist/src/tools/tool-registry.js +7 -1
  265. package/dist/src/tools/tool-registry.js.map +1 -1
  266. package/dist/src/tools/tool-registry.test.js +15 -2
  267. package/dist/src/tools/tool-registry.test.js.map +1 -1
  268. package/dist/src/tools/tools.d.ts +8 -2
  269. package/dist/src/tools/tools.js +12 -0
  270. package/dist/src/tools/tools.js.map +1 -1
  271. package/dist/src/tools/tools.test.js +1 -1
  272. package/dist/src/tools/tools.test.js.map +1 -1
  273. package/dist/src/tools/web-fetch.d.ts +3 -2
  274. package/dist/src/tools/web-fetch.js +1 -1
  275. package/dist/src/tools/web-fetch.js.map +1 -1
  276. package/dist/src/tools/web-fetch.test.js.map +1 -1
  277. package/dist/src/tools/web-search.d.ts +4 -3
  278. package/dist/src/tools/web-search.js +23 -7
  279. package/dist/src/tools/web-search.js.map +1 -1
  280. package/dist/src/tools/web-search.test.js +66 -0
  281. package/dist/src/tools/web-search.test.js.map +1 -1
  282. package/dist/src/tools/write-file.d.ts +4 -3
  283. package/dist/src/tools/write-file.js +9 -5
  284. package/dist/src/tools/write-file.js.map +1 -1
  285. package/dist/src/tools/write-file.test.js +9 -5
  286. package/dist/src/tools/write-file.test.js.map +1 -1
  287. package/dist/src/utils/bfsFileSearch.d.ts +2 -2
  288. package/dist/src/utils/bfsFileSearch.js +2 -2
  289. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  290. package/dist/src/utils/bfsFileSearch.test.js +3 -3
  291. package/dist/src/utils/bfsFileSearch.test.js.map +1 -1
  292. package/dist/src/utils/editCorrector.d.ts +2 -2
  293. package/dist/src/utils/editCorrector.js +1 -1
  294. package/dist/src/utils/editCorrector.js.map +1 -1
  295. package/dist/src/utils/editCorrector.test.js +2 -3
  296. package/dist/src/utils/editCorrector.test.js.map +1 -1
  297. package/dist/src/utils/editor.js +2 -2
  298. package/dist/src/utils/editor.js.map +1 -1
  299. package/dist/src/utils/editor.test.js +2 -2
  300. package/dist/src/utils/editor.test.js.map +1 -1
  301. package/dist/src/utils/environmentContext.d.ts +2 -2
  302. package/dist/src/utils/errorReporting.d.ts +1 -1
  303. package/dist/src/utils/errors.d.ts +19 -0
  304. package/dist/src/utils/errors.js +32 -0
  305. package/dist/src/utils/errors.js.map +1 -1
  306. package/dist/src/utils/fetch.js +1 -1
  307. package/dist/src/utils/fetch.js.map +1 -1
  308. package/dist/src/utils/fileUtils.d.ts +2 -2
  309. package/dist/src/utils/fileUtils.js +2 -30
  310. package/dist/src/utils/fileUtils.js.map +1 -1
  311. package/dist/src/utils/filesearch/crawler.d.ts +1 -1
  312. package/dist/src/utils/filesearch/crawler.test.js +2 -2
  313. package/dist/src/utils/filesearch/crawler.test.js.map +1 -1
  314. package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
  315. package/dist/src/utils/filesearch/fileSearch.js +12 -8
  316. package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
  317. package/dist/src/utils/filesearch/fileSearch.test.js +68 -0
  318. package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
  319. package/dist/src/utils/generateContentResponseUtilities.d.ts +1 -2
  320. package/dist/src/utils/generateContentResponseUtilities.js +1 -13
  321. package/dist/src/utils/generateContentResponseUtilities.js.map +1 -1
  322. package/dist/src/utils/generateContentResponseUtilities.test.js +2 -40
  323. package/dist/src/utils/generateContentResponseUtilities.test.js.map +1 -1
  324. package/dist/src/utils/getFolderStructure.d.ts +2 -2
  325. package/dist/src/utils/getFolderStructure.js +2 -2
  326. package/dist/src/utils/getFolderStructure.js.map +1 -1
  327. package/dist/src/utils/getFolderStructure.test.js +4 -4
  328. package/dist/src/utils/getFolderStructure.test.js.map +1 -1
  329. package/dist/src/utils/gitIgnoreParser.js +3 -3
  330. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  331. package/dist/src/utils/gitIgnoreParser.test.js +3 -3
  332. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  333. package/dist/src/utils/gitUtils.js +2 -2
  334. package/dist/src/utils/gitUtils.js.map +1 -1
  335. package/dist/src/utils/ignorePatterns.d.ts +103 -0
  336. package/dist/src/utils/ignorePatterns.js +220 -0
  337. package/dist/src/utils/ignorePatterns.js.map +1 -0
  338. package/dist/src/utils/ignorePatterns.test.d.ts +6 -0
  339. package/dist/src/utils/ignorePatterns.test.js +250 -0
  340. package/dist/src/utils/ignorePatterns.test.js.map +1 -0
  341. package/dist/src/utils/installationManager.js +2 -2
  342. package/dist/src/utils/installationManager.js.map +1 -1
  343. package/dist/src/utils/installationManager.test.js +1 -1
  344. package/dist/src/utils/installationManager.test.js.map +1 -1
  345. package/dist/src/utils/language-detection.d.ts +6 -0
  346. package/dist/src/utils/language-detection.js +101 -0
  347. package/dist/src/utils/language-detection.js.map +1 -0
  348. package/dist/src/utils/memoryDiscovery.d.ts +2 -2
  349. package/dist/src/utils/memoryDiscovery.js +5 -5
  350. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  351. package/dist/src/utils/memoryDiscovery.test.js +3 -3
  352. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  353. package/dist/src/utils/memoryImportProcessor.js +2 -2
  354. package/dist/src/utils/memoryImportProcessor.js.map +1 -1
  355. package/dist/src/utils/memoryImportProcessor.test.js +2 -141
  356. package/dist/src/utils/memoryImportProcessor.test.js.map +1 -1
  357. package/dist/src/utils/messageInspectors.d.ts +1 -1
  358. package/dist/src/utils/nextSpeakerChecker.d.ts +2 -2
  359. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  360. package/dist/src/utils/partUtils.d.ts +22 -1
  361. package/dist/src/utils/partUtils.js +68 -0
  362. package/dist/src/utils/partUtils.js.map +1 -1
  363. package/dist/src/utils/partUtils.test.js +112 -1
  364. package/dist/src/utils/partUtils.test.js.map +1 -1
  365. package/dist/src/utils/pathReader.d.ts +17 -0
  366. package/dist/src/utils/pathReader.js +92 -0
  367. package/dist/src/utils/pathReader.js.map +1 -0
  368. package/dist/src/utils/pathReader.test.d.ts +6 -0
  369. package/dist/src/utils/pathReader.test.js +363 -0
  370. package/dist/src/utils/pathReader.test.js.map +1 -0
  371. package/dist/src/utils/paths.js +2 -2
  372. package/dist/src/utils/paths.js.map +1 -1
  373. package/dist/src/utils/quotaErrorDetection.d.ts +1 -1
  374. package/dist/src/utils/retry.test.js +4 -1
  375. package/dist/src/utils/retry.test.js.map +1 -1
  376. package/dist/src/utils/schemaValidator.js +4 -0
  377. package/dist/src/utils/schemaValidator.js.map +1 -1
  378. package/dist/src/utils/session.js +1 -1
  379. package/dist/src/utils/session.js.map +1 -1
  380. package/dist/src/utils/shell-utils.d.ts +1 -1
  381. package/dist/src/utils/shell-utils.js +23 -29
  382. package/dist/src/utils/shell-utils.js.map +1 -1
  383. package/dist/src/utils/shell-utils.test.js +4 -0
  384. package/dist/src/utils/shell-utils.test.js.map +1 -1
  385. package/dist/src/utils/summarizer.d.ts +2 -2
  386. package/dist/src/utils/summarizer.test.js.map +1 -1
  387. package/dist/src/utils/systemEncoding.js +2 -2
  388. package/dist/src/utils/systemEncoding.js.map +1 -1
  389. package/dist/src/utils/systemEncoding.test.js +2 -2
  390. package/dist/src/utils/systemEncoding.test.js.map +1 -1
  391. package/dist/src/utils/tool-utils.d.ts +19 -0
  392. package/dist/src/utils/tool-utils.js +58 -0
  393. package/dist/src/utils/tool-utils.js.map +1 -0
  394. package/dist/src/utils/tool-utils.test.d.ts +6 -0
  395. package/dist/src/utils/tool-utils.test.js +61 -0
  396. package/dist/src/utils/tool-utils.test.js.map +1 -0
  397. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  398. package/dist/src/utils/workspaceContext.js +13 -7
  399. package/dist/src/utils/workspaceContext.js.map +1 -1
  400. package/dist/src/utils/workspaceContext.test.js +41 -16
  401. package/dist/src/utils/workspaceContext.test.js.map +1 -1
  402. package/dist/tsconfig.tsbuildinfo +1 -1
  403. package/package.json +10 -7
@@ -3,10 +3,17 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { GenerateContentResponse, Content, GenerateContentConfig, SendMessageParameters, Tool } from '@google/genai';
7
- import { ContentGenerator } from './contentGenerator.js';
8
- import { Config } from '../config/config.js';
9
- import { StructuredError } from './turn.js';
6
+ import type { GenerateContentResponse, Content, GenerateContentConfig, SendMessageParameters, Tool } from '@google/genai';
7
+ import type { ContentGenerator } from './contentGenerator.js';
8
+ import type { Config } from '../config/config.js';
9
+ import type { StructuredError } from './turn.js';
10
+ /**
11
+ * Custom error to signal that a stream completed without valid content,
12
+ * which should trigger a retry.
13
+ */
14
+ export declare class EmptyStreamError extends Error {
15
+ constructor(message: string);
16
+ }
10
17
  /**
11
18
  * Chat session that enables sending messages to the model with previous
12
19
  * conversation context.
@@ -42,7 +49,7 @@ export declare class GeminiChat {
42
49
  * ```ts
43
50
  * const chat = ai.chats.create({model: 'gemini-2.0-flash'});
44
51
  * const response = await chat.sendMessage({
45
- * message: 'Why is the sky blue?'
52
+ * message: 'Why is the sky blue?'
46
53
  * });
47
54
  * console.log(response.text);
48
55
  * ```
@@ -63,14 +70,15 @@ export declare class GeminiChat {
63
70
  * ```ts
64
71
  * const chat = ai.chats.create({model: 'gemini-2.0-flash'});
65
72
  * const response = await chat.sendMessageStream({
66
- * message: 'Why is the sky blue?'
73
+ * message: 'Why is the sky blue?'
67
74
  * });
68
75
  * for await (const chunk of response) {
69
- * console.log(chunk.text);
76
+ * console.log(chunk.text);
70
77
  * }
71
78
  * ```
72
79
  */
73
80
  sendMessageStream(params: SendMessageParameters, prompt_id: string): Promise<AsyncGenerator<GenerateContentResponse>>;
81
+ private makeApiCallAndProcessStream;
74
82
  /**
75
83
  * Returns the chat history.
76
84
  *
@@ -81,7 +89,7 @@ export declare class GeminiChat {
81
89
  * - The `curated history` contains only the valid turns between user and
82
90
  * model, which will be included in the subsequent requests sent to the model.
83
91
  * - The `comprehensive history` contains all turns, including invalid or
84
- * empty model outputs, providing a complete record of the history.
92
+ * empty model outputs, providing a complete record of the history.
85
93
  *
86
94
  * The history is updated after receiving the response from the model,
87
95
  * for streaming response, it means receiving the last chunk of the response.
@@ -90,9 +98,9 @@ export declare class GeminiChat {
90
98
  * history`, set the `curated` parameter to `true`.
91
99
  *
92
100
  * @param curated - whether to return the curated history or the comprehensive
93
- * history.
101
+ * history.
94
102
  * @return History contents alternating between user and model for the entire
95
- * chat session.
103
+ * chat session.
96
104
  */
97
105
  getHistory(curated?: boolean): Content[];
98
106
  /**
@@ -101,8 +109,6 @@ export declare class GeminiChat {
101
109
  clearHistory(): void;
102
110
  /**
103
111
  * Adds a new entry to the chat history.
104
- *
105
- * @param content - The content to add to the history.
106
112
  */
107
113
  addHistory(content: Content): void;
108
114
  setHistory(history: Content[]): void;
@@ -110,8 +116,6 @@ export declare class GeminiChat {
110
116
  maybeIncludeSchemaDepthContext(error: StructuredError): Promise<void>;
111
117
  private processStreamResponse;
112
118
  private recordHistory;
113
- private isTextContent;
114
- private isThoughtContent;
115
119
  }
116
120
  /** Visible for Testing */
117
121
  export declare function isSchemaDepthError(errorMessage: string): boolean;
@@ -3,14 +3,17 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- // DISCLAIMER: This is a copied version of https://github.com/googleapis/js-genai/blob/main/src/chats.ts with the intention of working around a key bug
7
- // where function responses are not treated as "valid" responses: https://b.corp.google.com/issues/420354090
8
- import { createUserContent, } from '@google/genai';
6
+ import { createUserContent } from '@google/genai';
9
7
  import { retryWithBackoff } from '../utils/retry.js';
10
- import { isFunctionResponse } from '../utils/messageInspectors.js';
11
8
  import { AuthType } from './contentGenerator.js';
12
9
  import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
13
10
  import { hasCycleInSchema } from '../tools/tools.js';
11
+ import { logContentRetry, logContentRetryFailure, logInvalidChunk, } from '../telemetry/loggers.js';
12
+ import { ContentRetryEvent, ContentRetryFailureEvent, InvalidChunkEvent, } from '../telemetry/types.js';
13
+ const INVALID_CONTENT_RETRY_OPTIONS = {
14
+ maxAttempts: 3, // 1 initial call + 2 retries
15
+ initialDelayMs: 500,
16
+ };
14
17
  /**
15
18
  * Returns true if the response is valid, false otherwise.
16
19
  */
@@ -84,14 +87,20 @@ function extractCuratedHistory(comprehensiveHistory) {
84
87
  if (isValid) {
85
88
  curatedHistory.push(...modelOutput);
86
89
  }
87
- else {
88
- // Remove the last user input when model content is invalid.
89
- curatedHistory.pop();
90
- }
91
90
  }
92
91
  }
93
92
  return curatedHistory;
94
93
  }
94
+ /**
95
+ * Custom error to signal that a stream completed without valid content,
96
+ * which should trigger a retry.
97
+ */
98
+ export class EmptyStreamError extends Error {
99
+ constructor(message) {
100
+ super(message);
101
+ this.name = 'EmptyStreamError';
102
+ }
103
+ }
95
104
  /**
96
105
  * Chat session that enables sending messages to the model with previous
97
106
  * conversation context.
@@ -168,7 +177,7 @@ export class GeminiChat {
168
177
  * ```ts
169
178
  * const chat = ai.chats.create({model: 'gemini-2.0-flash'});
170
179
  * const response = await chat.sendMessage({
171
- * message: 'Why is the sky blue?'
180
+ * message: 'Why is the sky blue?'
172
181
  * });
173
182
  * console.log(response.text);
174
183
  * ```
@@ -210,6 +219,7 @@ export class GeminiChat {
210
219
  });
211
220
  this.sendPromise = (async () => {
212
221
  const outputContent = response.candidates?.[0]?.content;
222
+ const modelOutput = outputContent ? [outputContent] : [];
213
223
  // Because the AFC input contains the entire curated chat history in
214
224
  // addition to the new user input, we need to truncate the AFC history
215
225
  // to deduplicate the existing chat history.
@@ -220,12 +230,13 @@ export class GeminiChat {
220
230
  automaticFunctionCallingHistory =
221
231
  fullAutomaticFunctionCallingHistory.slice(index) ?? [];
222
232
  }
223
- const modelOutput = outputContent ? [outputContent] : [];
224
233
  this.recordHistory(userContent, modelOutput, automaticFunctionCallingHistory);
225
234
  })();
226
- await this.sendPromise.catch(() => {
235
+ await this.sendPromise.catch((error) => {
227
236
  // Resets sendPromise to avoid subsequent calls failing
228
237
  this.sendPromise = Promise.resolve();
238
+ // Re-throw the error so the caller knows something went wrong.
239
+ throw error;
229
240
  });
230
241
  return response;
231
242
  }
@@ -249,64 +260,98 @@ export class GeminiChat {
249
260
  * ```ts
250
261
  * const chat = ai.chats.create({model: 'gemini-2.0-flash'});
251
262
  * const response = await chat.sendMessageStream({
252
- * message: 'Why is the sky blue?'
263
+ * message: 'Why is the sky blue?'
253
264
  * });
254
265
  * for await (const chunk of response) {
255
- * console.log(chunk.text);
266
+ * console.log(chunk.text);
256
267
  * }
257
268
  * ```
258
269
  */
259
270
  async sendMessageStream(params, prompt_id) {
260
271
  await this.sendPromise;
272
+ let streamDoneResolver;
273
+ const streamDonePromise = new Promise((resolve) => {
274
+ streamDoneResolver = resolve;
275
+ });
276
+ this.sendPromise = streamDonePromise;
261
277
  const userContent = createUserContent(params.message);
262
- const requestContents = this.getHistory(true).concat(userContent);
263
- try {
264
- const apiCall = () => {
265
- const modelToUse = this.config.getModel();
266
- // Prevent Flash model calls immediately after quota error
267
- if (this.config.getQuotaErrorOccurred() &&
268
- modelToUse === DEFAULT_GEMINI_FLASH_MODEL) {
269
- throw new Error('Please submit a new query to continue with the Flash model.');
278
+ // Add user content to history ONCE before any attempts.
279
+ this.history.push(userContent);
280
+ const requestContents = this.getHistory(true);
281
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
282
+ const self = this;
283
+ return (async function* () {
284
+ try {
285
+ let lastError = new Error('Request failed after all retries.');
286
+ for (let attempt = 0; attempt < INVALID_CONTENT_RETRY_OPTIONS.maxAttempts; attempt++) {
287
+ try {
288
+ const stream = await self.makeApiCallAndProcessStream(requestContents, params, prompt_id, userContent);
289
+ for await (const chunk of stream) {
290
+ yield chunk;
291
+ }
292
+ lastError = null;
293
+ break;
294
+ }
295
+ catch (error) {
296
+ lastError = error;
297
+ const isContentError = error instanceof EmptyStreamError;
298
+ if (isContentError) {
299
+ // Check if we have more attempts left.
300
+ if (attempt < INVALID_CONTENT_RETRY_OPTIONS.maxAttempts - 1) {
301
+ logContentRetry(self.config, new ContentRetryEvent(attempt, 'EmptyStreamError', INVALID_CONTENT_RETRY_OPTIONS.initialDelayMs));
302
+ await new Promise((res) => setTimeout(res, INVALID_CONTENT_RETRY_OPTIONS.initialDelayMs *
303
+ (attempt + 1)));
304
+ continue;
305
+ }
306
+ }
307
+ break;
308
+ }
270
309
  }
271
- return this.contentGenerator.generateContentStream({
272
- model: modelToUse,
273
- contents: requestContents,
274
- config: { ...this.generationConfig, ...params.config },
275
- }, prompt_id);
276
- };
277
- // Note: Retrying streams can be complex. If generateContentStream itself doesn't handle retries
278
- // for transient issues internally before yielding the async generator, this retry will re-initiate
279
- // the stream. For simple 429/500 errors on initial call, this is fine.
280
- // If errors occur mid-stream, this setup won't resume the stream; it will restart it.
281
- const streamResponse = await retryWithBackoff(apiCall, {
282
- shouldRetry: (error) => {
283
- // Check for known error messages and codes.
284
- if (error instanceof Error && error.message) {
285
- if (isSchemaDepthError(error.message))
286
- return false;
287
- if (error.message.includes('429'))
288
- return true;
289
- if (error.message.match(/5\d{2}/))
290
- return true;
310
+ if (lastError) {
311
+ if (lastError instanceof EmptyStreamError) {
312
+ logContentRetryFailure(self.config, new ContentRetryFailureEvent(INVALID_CONTENT_RETRY_OPTIONS.maxAttempts, 'EmptyStreamError'));
291
313
  }
292
- return false; // Don't retry other errors by default
293
- },
294
- onPersistent429: async (authType, error) => await this.handleFlashFallback(authType, error),
295
- authType: this.config.getContentGeneratorConfig()?.authType,
296
- });
297
- // Resolve the internal tracking of send completion promise - `sendPromise`
298
- // for both success and failure response. The actual failure is still
299
- // propagated by the `await streamResponse`.
300
- this.sendPromise = Promise.resolve(streamResponse)
301
- .then(() => undefined)
302
- .catch(() => undefined);
303
- const result = this.processStreamResponse(streamResponse, userContent);
304
- return result;
305
- }
306
- catch (error) {
307
- this.sendPromise = Promise.resolve();
308
- throw error;
309
- }
314
+ // If the stream fails, remove the user message that was added.
315
+ if (self.history[self.history.length - 1] === userContent) {
316
+ self.history.pop();
317
+ }
318
+ throw lastError;
319
+ }
320
+ }
321
+ finally {
322
+ streamDoneResolver();
323
+ }
324
+ })();
325
+ }
326
+ async makeApiCallAndProcessStream(requestContents, params, prompt_id, userContent) {
327
+ const apiCall = () => {
328
+ const modelToUse = this.config.getModel();
329
+ if (this.config.getQuotaErrorOccurred() &&
330
+ modelToUse === DEFAULT_GEMINI_FLASH_MODEL) {
331
+ throw new Error('Please submit a new query to continue with the Flash model.');
332
+ }
333
+ return this.contentGenerator.generateContentStream({
334
+ model: modelToUse,
335
+ contents: requestContents,
336
+ config: { ...this.generationConfig, ...params.config },
337
+ }, prompt_id);
338
+ };
339
+ const streamResponse = await retryWithBackoff(apiCall, {
340
+ shouldRetry: (error) => {
341
+ if (error instanceof Error && error.message) {
342
+ if (isSchemaDepthError(error.message))
343
+ return false;
344
+ if (error.message.includes('429'))
345
+ return true;
346
+ if (error.message.match(/5\d{2}/))
347
+ return true;
348
+ }
349
+ return false;
350
+ },
351
+ onPersistent429: async (authType, error) => await this.handleFlashFallback(authType, error),
352
+ authType: this.config.getContentGeneratorConfig()?.authType,
353
+ });
354
+ return this.processStreamResponse(streamResponse, userContent);
310
355
  }
311
356
  /**
312
357
  * Returns the chat history.
@@ -318,7 +363,7 @@ export class GeminiChat {
318
363
  * - The `curated history` contains only the valid turns between user and
319
364
  * model, which will be included in the subsequent requests sent to the model.
320
365
  * - The `comprehensive history` contains all turns, including invalid or
321
- * empty model outputs, providing a complete record of the history.
366
+ * empty model outputs, providing a complete record of the history.
322
367
  *
323
368
  * The history is updated after receiving the response from the model,
324
369
  * for streaming response, it means receiving the last chunk of the response.
@@ -327,9 +372,9 @@ export class GeminiChat {
327
372
  * history`, set the `curated` parameter to `true`.
328
373
  *
329
374
  * @param curated - whether to return the curated history or the comprehensive
330
- * history.
375
+ * history.
331
376
  * @return History contents alternating between user and model for the entire
332
- * chat session.
377
+ * chat session.
333
378
  */
334
379
  getHistory(curated = false) {
335
380
  const history = curated
@@ -347,8 +392,6 @@ export class GeminiChat {
347
392
  }
348
393
  /**
349
394
  * Adds a new entry to the chat history.
350
- *
351
- * @param content - The content to add to the history.
352
395
  */
353
396
  addHistory(content) {
354
397
  this.history.push(content);
@@ -381,122 +424,117 @@ export class GeminiChat {
381
424
  }
382
425
  }
383
426
  }
384
- async *processStreamResponse(streamResponse, inputContent) {
385
- const outputContent = [];
386
- const chunks = [];
387
- let errorOccurred = false;
388
- try {
389
- for await (const chunk of streamResponse) {
390
- if (isValidResponse(chunk)) {
391
- chunks.push(chunk);
392
- const content = chunk.candidates?.[0]?.content;
393
- if (content !== undefined) {
394
- if (this.isThoughtContent(content)) {
395
- yield chunk;
396
- continue;
397
- }
398
- outputContent.push(content);
399
- }
427
+ async *processStreamResponse(streamResponse, userInput) {
428
+ const modelResponseParts = [];
429
+ let isStreamInvalid = false;
430
+ let hasReceivedAnyChunk = false;
431
+ for await (const chunk of streamResponse) {
432
+ hasReceivedAnyChunk = true;
433
+ if (isValidResponse(chunk)) {
434
+ const content = chunk.candidates?.[0]?.content;
435
+ if (content?.parts) {
436
+ modelResponseParts.push(...content.parts);
400
437
  }
401
- yield chunk;
402
438
  }
403
- }
404
- catch (error) {
405
- errorOccurred = true;
406
- throw error;
407
- }
408
- if (!errorOccurred) {
409
- const allParts = [];
410
- for (const content of outputContent) {
411
- if (content.parts) {
412
- allParts.push(...content.parts);
413
- }
439
+ else {
440
+ logInvalidChunk(this.config, new InvalidChunkEvent('Invalid chunk received from stream.'));
441
+ isStreamInvalid = true;
414
442
  }
443
+ yield chunk;
415
444
  }
416
- this.recordHistory(inputContent, outputContent);
445
+ if (isStreamInvalid || !hasReceivedAnyChunk) {
446
+ throw new EmptyStreamError('Model stream was invalid or completed without valid content.');
447
+ }
448
+ // Bundle all streamed parts into a single Content object
449
+ const modelOutput = modelResponseParts.length > 0
450
+ ? [{ role: 'model', parts: modelResponseParts }]
451
+ : [];
452
+ // Pass the raw, bundled data to the new, robust recordHistory
453
+ this.recordHistory(userInput, modelOutput);
417
454
  }
418
455
  recordHistory(userInput, modelOutput, automaticFunctionCallingHistory) {
419
- const nonThoughtModelOutput = modelOutput.filter((content) => !this.isThoughtContent(content));
420
- let outputContents = [];
421
- if (nonThoughtModelOutput.length > 0 &&
422
- nonThoughtModelOutput.every((content) => content.role !== undefined)) {
423
- outputContents = nonThoughtModelOutput;
424
- }
425
- else if (nonThoughtModelOutput.length === 0 && modelOutput.length > 0) {
426
- // This case handles when the model returns only a thought.
427
- // We don't want to add an empty model response in this case.
428
- }
429
- else {
430
- // When not a function response appends an empty content when model returns empty response, so that the
431
- // history is always alternating between user and model.
432
- // Workaround for: https://b.corp.google.com/issues/420354090
433
- if (!isFunctionResponse(userInput)) {
434
- outputContents.push({
435
- role: 'model',
436
- parts: [],
437
- });
438
- }
439
- }
456
+ // Part 1: Handle the user's turn.
440
457
  if (automaticFunctionCallingHistory &&
441
458
  automaticFunctionCallingHistory.length > 0) {
442
459
  this.history.push(...extractCuratedHistory(automaticFunctionCallingHistory));
443
460
  }
444
461
  else {
445
- this.history.push(userInput);
462
+ if (this.history.length === 0 ||
463
+ this.history[this.history.length - 1] !== userInput) {
464
+ const lastTurn = this.history[this.history.length - 1];
465
+ // The only time we don't push is if it's the *exact same* object,
466
+ // which happens in streaming where we add it preemptively.
467
+ if (lastTurn !== userInput) {
468
+ if (lastTurn?.role === 'user') {
469
+ // This is an invalid sequence.
470
+ throw new Error('Cannot add a user turn after another user turn.');
471
+ }
472
+ this.history.push(userInput);
473
+ }
474
+ }
446
475
  }
447
- // Consolidate adjacent model roles in outputContents
448
- const consolidatedOutputContents = [];
449
- for (const content of outputContents) {
450
- if (this.isThoughtContent(content)) {
476
+ // Part 2: Process the model output into a final, consolidated list of turns.
477
+ const finalModelTurns = [];
478
+ for (const content of modelOutput) {
479
+ // A. Preserve malformed content that has no 'parts' array.
480
+ if (!content.parts) {
481
+ finalModelTurns.push(content);
451
482
  continue;
452
483
  }
453
- const lastContent = consolidatedOutputContents[consolidatedOutputContents.length - 1];
454
- if (this.isTextContent(lastContent) && this.isTextContent(content)) {
455
- // If both current and last are text, combine their text into the lastContent's first part
456
- // and append any other parts from the current content.
457
- lastContent.parts[0].text += content.parts[0].text || '';
458
- if (content.parts.length > 1) {
459
- lastContent.parts.push(...content.parts.slice(1));
460
- }
484
+ // B. Filter out 'thought' parts.
485
+ const visibleParts = content.parts.filter((part) => !part.thought);
486
+ const newTurn = { ...content, parts: visibleParts };
487
+ const lastTurnInFinal = finalModelTurns[finalModelTurns.length - 1];
488
+ // Consolidate this new turn with the PREVIOUS turn if they are adjacent model turns.
489
+ if (lastTurnInFinal &&
490
+ lastTurnInFinal.role === 'model' &&
491
+ newTurn.role === 'model' &&
492
+ lastTurnInFinal.parts && // SAFETY CHECK: Ensure the destination has a parts array.
493
+ newTurn.parts) {
494
+ lastTurnInFinal.parts.push(...newTurn.parts);
461
495
  }
462
496
  else {
463
- consolidatedOutputContents.push(content);
497
+ finalModelTurns.push(newTurn);
464
498
  }
465
499
  }
466
- if (consolidatedOutputContents.length > 0) {
467
- const lastHistoryEntry = this.history[this.history.length - 1];
468
- const canMergeWithLastHistory = !automaticFunctionCallingHistory ||
469
- automaticFunctionCallingHistory.length === 0;
470
- if (canMergeWithLastHistory &&
471
- this.isTextContent(lastHistoryEntry) &&
472
- this.isTextContent(consolidatedOutputContents[0])) {
473
- // If both current and last are text, combine their text into the lastHistoryEntry's first part
474
- // and append any other parts from the current content.
475
- lastHistoryEntry.parts[0].text +=
476
- consolidatedOutputContents[0].parts[0].text || '';
477
- if (consolidatedOutputContents[0].parts.length > 1) {
478
- lastHistoryEntry.parts.push(...consolidatedOutputContents[0].parts.slice(1));
500
+ // Part 3: Add the processed model turns to the history, with one final consolidation pass.
501
+ if (finalModelTurns.length > 0) {
502
+ // Re-consolidate parts within any turns that were merged in the previous step.
503
+ for (const turn of finalModelTurns) {
504
+ if (turn.parts && turn.parts.length > 1) {
505
+ const consolidatedParts = [];
506
+ for (const part of turn.parts) {
507
+ const lastPart = consolidatedParts[consolidatedParts.length - 1];
508
+ if (lastPart &&
509
+ // Ensure lastPart is a pure text part
510
+ typeof lastPart.text === 'string' &&
511
+ !lastPart.functionCall &&
512
+ !lastPart.functionResponse &&
513
+ !lastPart.inlineData &&
514
+ !lastPart.fileData &&
515
+ !lastPart.thought &&
516
+ // Ensure current part is a pure text part
517
+ typeof part.text === 'string' &&
518
+ !part.functionCall &&
519
+ !part.functionResponse &&
520
+ !part.inlineData &&
521
+ !part.fileData &&
522
+ !part.thought) {
523
+ lastPart.text += part.text;
524
+ }
525
+ else {
526
+ consolidatedParts.push({ ...part });
527
+ }
528
+ }
529
+ turn.parts = consolidatedParts;
479
530
  }
480
- consolidatedOutputContents.shift(); // Remove the first element as it's merged
481
531
  }
482
- this.history.push(...consolidatedOutputContents);
532
+ this.history.push(...finalModelTurns);
533
+ }
534
+ else {
535
+ // If, after all processing, there's NO model output, add the placeholder.
536
+ this.history.push({ role: 'model', parts: [] });
483
537
  }
484
- }
485
- isTextContent(content) {
486
- return !!(content &&
487
- content.role === 'model' &&
488
- content.parts &&
489
- content.parts.length > 0 &&
490
- typeof content.parts[0].text === 'string' &&
491
- content.parts[0].text !== '');
492
- }
493
- isThoughtContent(content) {
494
- return !!(content &&
495
- content.role === 'model' &&
496
- content.parts &&
497
- content.parts.length > 0 &&
498
- typeof content.parts[0].thought === 'boolean' &&
499
- content.parts[0].thought === true);
500
538
  }
501
539
  }
502
540
  /** Visible for Testing */
@@ -1 +1 @@
1
- {"version":3,"file":"geminiChat.js","sourceRoot":"","sources":["../../../src/core/geminiChat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"geminiChat.js","sourceRoot":"","sources":["../../../src/core/geminiChat.ts"],"names":[],"mappings":"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"}