@machina.ai/cell-cli-core 1.5.5-rc1 → 1.6.1-rc1

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 (347) hide show
  1. package/dist/index.d.ts +4 -4
  2. package/dist/index.js +4 -4
  3. package/dist/index.js.map +1 -1
  4. package/dist/package.json +5 -1
  5. package/dist/src/code_assist/converter.d.ts +1 -0
  6. package/dist/src/code_assist/converter.js +1 -0
  7. package/dist/src/code_assist/converter.js.map +1 -1
  8. package/dist/src/code_assist/converter.test.js +10 -0
  9. package/dist/src/code_assist/converter.test.js.map +1 -1
  10. package/dist/src/code_assist/oauth-credential-storage.d.ts +5 -7
  11. package/dist/src/code_assist/oauth-credential-storage.js +8 -11
  12. package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
  13. package/dist/src/code_assist/oauth-credential-storage.test.js +35 -33
  14. package/dist/src/code_assist/oauth-credential-storage.test.js.map +1 -1
  15. package/dist/src/code_assist/oauth2.js +28 -2
  16. package/dist/src/code_assist/oauth2.js.map +1 -1
  17. package/dist/src/code_assist/oauth2.test.js +674 -536
  18. package/dist/src/code_assist/oauth2.test.js.map +1 -1
  19. package/dist/src/config/config.d.ts +37 -1
  20. package/dist/src/config/config.js +73 -16
  21. package/dist/src/config/config.js.map +1 -1
  22. package/dist/src/config/config.test.js +104 -16
  23. package/dist/src/config/config.test.js.map +1 -1
  24. package/dist/src/config/models.d.ts +15 -0
  25. package/dist/src/config/models.js +27 -0
  26. package/dist/src/config/models.js.map +1 -1
  27. package/dist/src/config/models.test.d.ts +6 -0
  28. package/dist/src/config/models.test.js +55 -0
  29. package/dist/src/config/models.test.js.map +1 -0
  30. package/dist/src/confirmation-bus/index.d.ts +7 -0
  31. package/dist/src/confirmation-bus/index.js +8 -0
  32. package/dist/src/confirmation-bus/index.js.map +1 -0
  33. package/dist/src/confirmation-bus/message-bus.d.ts +17 -0
  34. package/dist/src/confirmation-bus/message-bus.js +81 -0
  35. package/dist/src/confirmation-bus/message-bus.js.map +1 -0
  36. package/dist/src/confirmation-bus/message-bus.test.d.ts +6 -0
  37. package/dist/src/confirmation-bus/message-bus.test.js +164 -0
  38. package/dist/src/confirmation-bus/message-bus.test.js.map +1 -0
  39. package/dist/src/confirmation-bus/types.d.ts +38 -0
  40. package/dist/src/confirmation-bus/types.js +15 -0
  41. package/dist/src/confirmation-bus/types.js.map +1 -0
  42. package/dist/src/core/baseLlmClient.d.ts +1 -0
  43. package/dist/src/core/baseLlmClient.js +24 -0
  44. package/dist/src/core/baseLlmClient.js.map +1 -1
  45. package/dist/src/core/baseLlmClient.test.js +63 -0
  46. package/dist/src/core/baseLlmClient.test.js.map +1 -1
  47. package/dist/src/core/client.d.ts +4 -3
  48. package/dist/src/core/client.js +76 -151
  49. package/dist/src/core/client.js.map +1 -1
  50. package/dist/src/core/client.test.js +218 -220
  51. package/dist/src/core/client.test.js.map +1 -1
  52. package/dist/src/core/contentGenerator.d.ts +0 -1
  53. package/dist/src/core/contentGenerator.js +0 -4
  54. package/dist/src/core/contentGenerator.js.map +1 -1
  55. package/dist/src/core/contentGenerator.test.js +0 -3
  56. package/dist/src/core/contentGenerator.test.js.map +1 -1
  57. package/dist/src/core/coreToolScheduler.d.ts +4 -3
  58. package/dist/src/core/coreToolScheduler.js +54 -8
  59. package/dist/src/core/coreToolScheduler.js.map +1 -1
  60. package/dist/src/core/coreToolScheduler.test.js +142 -0
  61. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  62. package/dist/src/core/geminiChat.d.ts +13 -30
  63. package/dist/src/core/geminiChat.js +88 -233
  64. package/dist/src/core/geminiChat.js.map +1 -1
  65. package/dist/src/core/geminiChat.test.js +268 -489
  66. package/dist/src/core/geminiChat.test.js.map +1 -1
  67. package/dist/src/core/loggingContentGenerator.js +5 -5
  68. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  69. package/dist/src/core/nonInteractiveToolExecutor.test.js +49 -0
  70. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  71. package/dist/src/core/subagent.js +1 -1
  72. package/dist/src/core/subagent.js.map +1 -1
  73. package/dist/src/core/subagent.test.js +9 -8
  74. package/dist/src/core/subagent.test.js.map +1 -1
  75. package/dist/src/core/turn.d.ts +2 -1
  76. package/dist/src/core/turn.js +2 -2
  77. package/dist/src/core/turn.js.map +1 -1
  78. package/dist/src/core/turn.test.js +18 -18
  79. package/dist/src/core/turn.test.js.map +1 -1
  80. package/dist/src/generated/git-commit.d.ts +2 -2
  81. package/dist/src/generated/git-commit.js +2 -2
  82. package/dist/src/ide/constants.d.ts +1 -0
  83. package/dist/src/ide/constants.js +1 -0
  84. package/dist/src/ide/constants.js.map +1 -1
  85. package/dist/src/ide/ide-client.d.ts +51 -13
  86. package/dist/src/ide/ide-client.js +184 -37
  87. package/dist/src/ide/ide-client.js.map +1 -1
  88. package/dist/src/ide/ide-client.test.js +86 -15
  89. package/dist/src/ide/ide-client.test.js.map +1 -1
  90. package/dist/src/ide/ide-installer.js +8 -2
  91. package/dist/src/ide/ide-installer.js.map +1 -1
  92. package/dist/src/ide/ide-installer.test.js +13 -2
  93. package/dist/src/ide/ide-installer.test.js.map +1 -1
  94. package/dist/src/ide/ideContext.d.ts +34 -113
  95. package/dist/src/ide/ideContext.js +20 -78
  96. package/dist/src/ide/ideContext.js.map +1 -1
  97. package/dist/src/ide/ideContext.test.js +37 -39
  98. package/dist/src/ide/ideContext.test.js.map +1 -1
  99. package/dist/src/ide/types.d.ts +141 -0
  100. package/dist/src/ide/types.js +73 -0
  101. package/dist/src/ide/types.js.map +1 -1
  102. package/dist/src/index.d.ts +3 -1
  103. package/dist/src/index.js +3 -1
  104. package/dist/src/index.js.map +1 -1
  105. package/dist/src/mcp/oauth-provider.d.ts +1 -0
  106. package/dist/src/mcp/oauth-provider.js +19 -14
  107. package/dist/src/mcp/oauth-provider.js.map +1 -1
  108. package/dist/src/mcp/oauth-provider.test.js +137 -1
  109. package/dist/src/mcp/oauth-provider.test.js.map +1 -1
  110. package/dist/src/mcp/oauth-token-storage.d.ts +2 -0
  111. package/dist/src/mcp/oauth-token-storage.js +25 -0
  112. package/dist/src/mcp/oauth-token-storage.js.map +1 -1
  113. package/dist/src/mcp/oauth-token-storage.test.js +251 -160
  114. package/dist/src/mcp/oauth-token-storage.test.js.map +1 -1
  115. package/dist/src/mcp/oauth-utils.js +1 -0
  116. package/dist/src/mcp/oauth-utils.js.map +1 -1
  117. package/dist/src/mcp/token-storage/index.d.ts +11 -0
  118. package/dist/src/mcp/token-storage/index.js +12 -0
  119. package/dist/src/mcp/token-storage/index.js.map +1 -0
  120. package/dist/src/output/json-formatter.d.ts +11 -0
  121. package/dist/src/output/json-formatter.js +30 -0
  122. package/dist/src/output/json-formatter.js.map +1 -0
  123. package/dist/src/output/json-formatter.test.d.ts +6 -0
  124. package/dist/src/output/json-formatter.test.js +266 -0
  125. package/dist/src/output/json-formatter.test.js.map +1 -0
  126. package/dist/src/output/types.d.ts +20 -0
  127. package/dist/src/output/types.js +11 -0
  128. package/dist/src/output/types.js.map +1 -0
  129. package/dist/src/policy/index.d.ts +7 -0
  130. package/dist/src/policy/index.js +8 -0
  131. package/dist/src/policy/index.js.map +1 -0
  132. package/dist/src/policy/policy-engine.d.ts +30 -0
  133. package/dist/src/policy/policy-engine.js +83 -0
  134. package/dist/src/policy/policy-engine.js.map +1 -0
  135. package/dist/src/policy/policy-engine.test.d.ts +6 -0
  136. package/dist/src/policy/policy-engine.test.js +470 -0
  137. package/dist/src/policy/policy-engine.test.js.map +1 -0
  138. package/dist/src/policy/stable-stringify.d.ts +58 -0
  139. package/dist/src/policy/stable-stringify.js +122 -0
  140. package/dist/src/policy/stable-stringify.js.map +1 -0
  141. package/dist/src/policy/types.d.ts +47 -0
  142. package/dist/src/policy/types.js +12 -0
  143. package/dist/src/policy/types.js.map +1 -0
  144. package/dist/src/routing/modelRouterService.d.ts +23 -0
  145. package/dist/src/routing/modelRouterService.js +70 -0
  146. package/dist/src/routing/modelRouterService.js.map +1 -0
  147. package/dist/src/routing/modelRouterService.test.d.ts +6 -0
  148. package/dist/src/routing/modelRouterService.test.js +98 -0
  149. package/dist/src/routing/modelRouterService.test.js.map +1 -0
  150. package/dist/src/routing/routingStrategy.d.ts +62 -0
  151. package/dist/src/routing/routingStrategy.js +7 -0
  152. package/dist/src/routing/routingStrategy.js.map +1 -0
  153. package/dist/src/routing/strategies/classifierStrategy.d.ts +12 -0
  154. package/dist/src/routing/strategies/classifierStrategy.js +173 -0
  155. package/dist/src/routing/strategies/classifierStrategy.js.map +1 -0
  156. package/dist/src/routing/strategies/classifierStrategy.test.d.ts +6 -0
  157. package/dist/src/routing/strategies/classifierStrategy.test.js +192 -0
  158. package/dist/src/routing/strategies/classifierStrategy.test.js.map +1 -0
  159. package/dist/src/routing/strategies/compositeStrategy.d.ts +26 -0
  160. package/dist/src/routing/strategies/compositeStrategy.js +67 -0
  161. package/dist/src/routing/strategies/compositeStrategy.js.map +1 -0
  162. package/dist/src/routing/strategies/compositeStrategy.test.d.ts +6 -0
  163. package/dist/src/routing/strategies/compositeStrategy.test.js +123 -0
  164. package/dist/src/routing/strategies/compositeStrategy.test.js.map +1 -0
  165. package/dist/src/routing/strategies/defaultStrategy.d.ts +12 -0
  166. package/dist/src/routing/strategies/defaultStrategy.js +20 -0
  167. package/dist/src/routing/strategies/defaultStrategy.js.map +1 -0
  168. package/dist/src/routing/strategies/defaultStrategy.test.d.ts +6 -0
  169. package/dist/src/routing/strategies/defaultStrategy.test.js +26 -0
  170. package/dist/src/routing/strategies/defaultStrategy.test.js.map +1 -0
  171. package/dist/src/routing/strategies/fallbackStrategy.d.ts +12 -0
  172. package/dist/src/routing/strategies/fallbackStrategy.js +25 -0
  173. package/dist/src/routing/strategies/fallbackStrategy.js.map +1 -0
  174. package/dist/src/routing/strategies/fallbackStrategy.test.d.ts +6 -0
  175. package/dist/src/routing/strategies/fallbackStrategy.test.js +55 -0
  176. package/dist/src/routing/strategies/fallbackStrategy.test.js.map +1 -0
  177. package/dist/src/routing/strategies/overrideStrategy.d.ts +15 -0
  178. package/dist/src/routing/strategies/overrideStrategy.js +28 -0
  179. package/dist/src/routing/strategies/overrideStrategy.js.map +1 -0
  180. package/dist/src/routing/strategies/overrideStrategy.test.d.ts +6 -0
  181. package/dist/src/routing/strategies/overrideStrategy.test.js +42 -0
  182. package/dist/src/routing/strategies/overrideStrategy.test.js.map +1 -0
  183. package/dist/src/services/chatRecordingService.d.ts +2 -1
  184. package/dist/src/services/chatRecordingService.js +3 -3
  185. package/dist/src/services/chatRecordingService.js.map +1 -1
  186. package/dist/src/services/chatRecordingService.test.js +8 -3
  187. package/dist/src/services/chatRecordingService.test.js.map +1 -1
  188. package/dist/src/services/fileDiscoveryService.d.ts +10 -0
  189. package/dist/src/services/fileDiscoveryService.js +31 -17
  190. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  191. package/dist/src/services/gitService.js +9 -12
  192. package/dist/src/services/gitService.js.map +1 -1
  193. package/dist/src/services/gitService.test.js +10 -20
  194. package/dist/src/services/gitService.test.js.map +1 -1
  195. package/dist/src/services/loopDetectionService.d.ts +5 -0
  196. package/dist/src/services/loopDetectionService.js +36 -20
  197. package/dist/src/services/loopDetectionService.js.map +1 -1
  198. package/dist/src/services/loopDetectionService.test.js +41 -12
  199. package/dist/src/services/loopDetectionService.test.js.map +1 -1
  200. package/dist/src/services/shellExecutionService.d.ts +34 -2
  201. package/dist/src/services/shellExecutionService.js +192 -43
  202. package/dist/src/services/shellExecutionService.js.map +1 -1
  203. package/dist/src/services/shellExecutionService.test.js +184 -55
  204. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  205. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +12 -2
  206. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +100 -5
  207. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  208. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +63 -5
  209. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  210. package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +13 -2
  211. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +33 -2
  212. package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
  213. package/dist/src/telemetry/constants.d.ts +6 -0
  214. package/dist/src/telemetry/constants.js +6 -0
  215. package/dist/src/telemetry/constants.js.map +1 -1
  216. package/dist/src/telemetry/gcp-exporters.d.ts +34 -0
  217. package/dist/src/telemetry/gcp-exporters.js +117 -0
  218. package/dist/src/telemetry/gcp-exporters.js.map +1 -0
  219. package/dist/src/telemetry/gcp-exporters.test.d.ts +6 -0
  220. package/dist/src/telemetry/gcp-exporters.test.js +318 -0
  221. package/dist/src/telemetry/gcp-exporters.test.js.map +1 -0
  222. package/dist/src/telemetry/index.d.ts +3 -2
  223. package/dist/src/telemetry/index.js +3 -2
  224. package/dist/src/telemetry/index.js.map +1 -1
  225. package/dist/src/telemetry/loggers.d.ts +7 -1
  226. package/dist/src/telemetry/loggers.js +97 -7
  227. package/dist/src/telemetry/loggers.js.map +1 -1
  228. package/dist/src/telemetry/loggers.test.js +171 -37
  229. package/dist/src/telemetry/loggers.test.js.map +1 -1
  230. package/dist/src/telemetry/metrics.d.ts +3 -1
  231. package/dist/src/telemetry/metrics.js +32 -3
  232. package/dist/src/telemetry/metrics.js.map +1 -1
  233. package/dist/src/telemetry/metrics.test.js +42 -0
  234. package/dist/src/telemetry/metrics.test.js.map +1 -1
  235. package/dist/src/telemetry/sdk.js +19 -1
  236. package/dist/src/telemetry/sdk.js.map +1 -1
  237. package/dist/src/telemetry/sdk.test.js +95 -0
  238. package/dist/src/telemetry/sdk.test.js.map +1 -1
  239. package/dist/src/telemetry/types.d.ts +54 -3
  240. package/dist/src/telemetry/types.js +79 -3
  241. package/dist/src/telemetry/types.js.map +1 -1
  242. package/dist/src/tools/edit.js +12 -5
  243. package/dist/src/tools/edit.js.map +1 -1
  244. package/dist/src/tools/edit.test.js +120 -9
  245. package/dist/src/tools/edit.test.js.map +1 -1
  246. package/dist/src/tools/glob.d.ts +5 -1
  247. package/dist/src/tools/glob.js +24 -17
  248. package/dist/src/tools/glob.js.map +1 -1
  249. package/dist/src/tools/glob.test.js +51 -0
  250. package/dist/src/tools/glob.test.js.map +1 -1
  251. package/dist/src/tools/ls.js +19 -32
  252. package/dist/src/tools/ls.js.map +1 -1
  253. package/dist/src/tools/ls.test.js +140 -280
  254. package/dist/src/tools/ls.test.js.map +1 -1
  255. package/dist/src/tools/mcp-tool.js +30 -2
  256. package/dist/src/tools/mcp-tool.js.map +1 -1
  257. package/dist/src/tools/mcp-tool.test.js +117 -0
  258. package/dist/src/tools/mcp-tool.test.js.map +1 -1
  259. package/dist/src/tools/read-many-files.d.ts +1 -1
  260. package/dist/src/tools/read-many-files.js +17 -49
  261. package/dist/src/tools/read-many-files.js.map +1 -1
  262. package/dist/src/tools/ripGrep.d.ts +4 -0
  263. package/dist/src/tools/ripGrep.js +11 -1
  264. package/dist/src/tools/ripGrep.js.map +1 -1
  265. package/dist/src/tools/ripGrep.test.js +51 -1
  266. package/dist/src/tools/ripGrep.test.js.map +1 -1
  267. package/dist/src/tools/shell.d.ts +12 -2
  268. package/dist/src/tools/shell.js +20 -27
  269. package/dist/src/tools/shell.js.map +1 -1
  270. package/dist/src/tools/shell.test.js +33 -68
  271. package/dist/src/tools/shell.test.js.map +1 -1
  272. package/dist/src/tools/smart-edit.d.ts +0 -1
  273. package/dist/src/tools/smart-edit.js +11 -18
  274. package/dist/src/tools/smart-edit.js.map +1 -1
  275. package/dist/src/tools/smart-edit.test.js +63 -9
  276. package/dist/src/tools/smart-edit.test.js.map +1 -1
  277. package/dist/src/tools/tool-registry.js +1 -0
  278. package/dist/src/tools/tool-registry.js.map +1 -1
  279. package/dist/src/tools/tools.d.ts +8 -5
  280. package/dist/src/tools/tools.js +9 -2
  281. package/dist/src/tools/tools.js.map +1 -1
  282. package/dist/src/tools/write-file.js +4 -5
  283. package/dist/src/tools/write-file.js.map +1 -1
  284. package/dist/src/tools/write-file.test.js +94 -10
  285. package/dist/src/tools/write-file.test.js.map +1 -1
  286. package/dist/src/utils/bfsFileSearch.js +11 -5
  287. package/dist/src/utils/bfsFileSearch.js.map +1 -1
  288. package/dist/src/utils/editCorrector.d.ts +7 -6
  289. package/dist/src/utils/editCorrector.js +61 -18
  290. package/dist/src/utils/editCorrector.js.map +1 -1
  291. package/dist/src/utils/editCorrector.test.js +30 -79
  292. package/dist/src/utils/editCorrector.test.js.map +1 -1
  293. package/dist/src/utils/editor.js +31 -44
  294. package/dist/src/utils/editor.js.map +1 -1
  295. package/dist/src/utils/editor.test.js +61 -75
  296. package/dist/src/utils/editor.test.js.map +1 -1
  297. package/dist/src/utils/errorParsing.js +2 -2
  298. package/dist/src/utils/errorParsing.js.map +1 -1
  299. package/dist/src/utils/errorParsing.test.js +7 -7
  300. package/dist/src/utils/errorParsing.test.js.map +1 -1
  301. package/dist/src/utils/errors.d.ts +6 -0
  302. package/dist/src/utils/errors.js +10 -0
  303. package/dist/src/utils/errors.js.map +1 -1
  304. package/dist/src/utils/fileUtils.test.js +17 -8
  305. package/dist/src/utils/fileUtils.test.js.map +1 -1
  306. package/dist/src/utils/geminiIgnoreParser.d.ts +18 -0
  307. package/dist/src/utils/geminiIgnoreParser.js +61 -0
  308. package/dist/src/utils/geminiIgnoreParser.js.map +1 -0
  309. package/dist/src/utils/geminiIgnoreParser.test.d.ts +6 -0
  310. package/dist/src/utils/geminiIgnoreParser.test.js +50 -0
  311. package/dist/src/utils/geminiIgnoreParser.test.js.map +1 -0
  312. package/dist/src/utils/gitIgnoreParser.d.ts +3 -9
  313. package/dist/src/utils/gitIgnoreParser.js +60 -69
  314. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  315. package/dist/src/utils/gitIgnoreParser.test.js +18 -53
  316. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  317. package/dist/src/utils/installationManager.test.js +1 -1
  318. package/dist/src/utils/installationManager.test.js.map +1 -1
  319. package/dist/src/utils/memoryDiscovery.test.js +12 -6
  320. package/dist/src/utils/memoryDiscovery.test.js.map +1 -1
  321. package/dist/src/utils/nextSpeakerChecker.d.ts +2 -2
  322. package/dist/src/utils/nextSpeakerChecker.js +8 -2
  323. package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
  324. package/dist/src/utils/nextSpeakerChecker.test.js +40 -33
  325. package/dist/src/utils/nextSpeakerChecker.test.js.map +1 -1
  326. package/dist/src/utils/shell-utils.d.ts +5 -0
  327. package/dist/src/utils/shell-utils.js +23 -0
  328. package/dist/src/utils/shell-utils.js.map +1 -1
  329. package/dist/src/utils/terminalSerializer.d.ts +28 -0
  330. package/dist/src/utils/terminalSerializer.js +432 -0
  331. package/dist/src/utils/terminalSerializer.js.map +1 -0
  332. package/dist/src/utils/terminalSerializer.test.d.ts +6 -0
  333. package/dist/src/utils/terminalSerializer.test.js +176 -0
  334. package/dist/src/utils/terminalSerializer.test.js.map +1 -0
  335. package/dist/src/utils/textUtils.d.ts +5 -0
  336. package/dist/src/utils/textUtils.js +14 -0
  337. package/dist/src/utils/textUtils.js.map +1 -1
  338. package/dist/src/utils/textUtils.test.d.ts +6 -0
  339. package/dist/src/utils/textUtils.test.js +59 -0
  340. package/dist/src/utils/textUtils.test.js.map +1 -0
  341. package/dist/src/utils/userAccountManager.test.js +1 -1
  342. package/dist/src/utils/userAccountManager.test.js.map +1 -1
  343. package/dist/tsconfig.tsbuildinfo +1 -1
  344. package/package.json +5 -1
  345. package/dist/src/utils/ide-trust.d.ts +0 -10
  346. package/dist/src/utils/ide-trust.js +0 -14
  347. package/dist/src/utils/ide-trust.js.map +0 -1
@@ -3,10 +3,9 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { GenerateContentResponse, Content, GenerateContentConfig, SendMessageParameters, Tool } from '@google/genai';
6
+ import { GenerateContentResponse, type Content, type GenerateContentConfig, type SendMessageParameters, type Part, type Tool } from '@google/genai';
7
7
  import type { Config } from '../config/config.js';
8
8
  import type { StructuredError } from './turn.js';
9
- import type { CompletedToolCall } from './coreToolScheduler.js';
10
9
  import { ChatRecordingService } from '../services/chatRecordingService.js';
11
10
  export declare enum StreamEventType {
12
11
  /** A regular content chunk from the API. */
@@ -21,6 +20,7 @@ export type StreamEvent = {
21
20
  } | {
22
21
  type: StreamEventType.RETRY;
23
22
  };
23
+ export declare function isValidNonThoughtTextPart(part: Part): boolean;
24
24
  /**
25
25
  * Custom error to signal that a stream completed without valid content,
26
26
  * which should trigger a retry.
@@ -43,27 +43,6 @@ export declare class GeminiChat {
43
43
  private readonly chatRecordingService;
44
44
  constructor(config: Config, generationConfig?: GenerateContentConfig, history?: Content[]);
45
45
  setSystemInstruction(sysInstr: string): void;
46
- /**
47
- * Sends a message to the model and returns the response.
48
- *
49
- * @remarks
50
- * This method will wait for the previous message to be processed before
51
- * sending the next message.
52
- *
53
- * @see {@link Chat#sendMessageStream} for streaming method.
54
- * @param params - parameters for sending messages within a chat session.
55
- * @returns The model's response.
56
- *
57
- * @example
58
- * ```ts
59
- * const chat = ai.chats.create({model: 'gemini-2.0-flash'});
60
- * const response = await chat.sendMessage({
61
- * message: 'Why is the sky blue?'
62
- * });
63
- * console.log(response.text);
64
- * ```
65
- */
66
- sendMessage(params: SendMessageParameters, prompt_id: string): Promise<GenerateContentResponse>;
67
46
  /**
68
47
  * Sends a message to the model and returns the response in chunks.
69
48
  *
@@ -86,7 +65,7 @@ export declare class GeminiChat {
86
65
  * }
87
66
  * ```
88
67
  */
89
- sendMessageStream(params: SendMessageParameters, prompt_id: string): Promise<AsyncGenerator<StreamEvent>>;
68
+ sendMessageStream(model: string, params: SendMessageParameters, prompt_id: string): Promise<AsyncGenerator<StreamEvent>>;
90
69
  private makeApiCallAndProcessStream;
91
70
  /**
92
71
  * Returns the chat history.
@@ -125,20 +104,24 @@ export declare class GeminiChat {
125
104
  setTools(tools: Tool[]): void;
126
105
  maybeIncludeSchemaDepthContext(error: StructuredError): Promise<void>;
127
106
  private processStreamResponse;
128
- private recordHistory;
129
107
  /**
130
108
  * Gets the chat recording service instance.
131
109
  */
132
110
  getChatRecordingService(): ChatRecordingService;
133
- /**
134
- * Records completed tool calls with full metadata.
135
- * This is called by external components when tool calls complete, before sending responses to Gemini.
136
- */
137
- recordCompletedToolCalls(toolCalls: CompletedToolCall[]): void;
138
111
  /**
139
112
  * Extracts and records thought from thought content.
140
113
  */
141
114
  private recordThoughtFromContent;
115
+ /**
116
+ * Truncates the chunkStream right before the second function call to a
117
+ * function that mutates state. This may involve trimming parts from a chunk
118
+ * as well as omtting some chunks altogether.
119
+ *
120
+ * We do this because it improves tool call quality if the model gets
121
+ * feedback from one mutating function call before it makes the next one.
122
+ */
123
+ private stopBeforeSecondMutator;
124
+ private isMutatorFunctionCall;
142
125
  }
143
126
  /** Visible for Testing */
144
127
  export declare function isSchemaDepthError(errorMessage: string): boolean;
@@ -3,11 +3,14 @@
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 { GenerateContentResponse, FinishReason, } from '@google/genai';
6
9
  import { toParts } from '../code_assist/converter.js';
7
10
  import { createUserContent } from '@google/genai';
8
11
  import { retryWithBackoff } from '../utils/retry.js';
9
- import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
10
- import { hasCycleInSchema } from '../tools/tools.js';
12
+ import { DEFAULT_GEMINI_FLASH_MODEL, getEffectiveModel, } from '../config/models.js';
13
+ import { hasCycleInSchema, MUTATOR_KINDS } from '../tools/tools.js';
11
14
  import { logContentRetry, logContentRetryFailure, logInvalidChunk, } from '../telemetry/loggers.js';
12
15
  import { ChatRecordingService } from '../services/chatRecordingService.js';
13
16
  import { ContentRetryEvent, ContentRetryFailureEvent, InvalidChunkEvent, } from '../telemetry/types.js';
@@ -39,6 +42,16 @@ function isValidResponse(response) {
39
42
  }
40
43
  return isValidContent(content);
41
44
  }
45
+ export function isValidNonThoughtTextPart(part) {
46
+ return (typeof part.text === 'string' &&
47
+ !part.thought &&
48
+ // Technically, the model should never generate parts that have text and
49
+ // any of these but we don't trust them so check anyways.
50
+ !part.functionCall &&
51
+ !part.functionResponse &&
52
+ !part.inlineData &&
53
+ !part.fileData);
54
+ }
42
55
  function isValidContent(content) {
43
56
  if (content.parts === undefined || content.parts.length === 0) {
44
57
  return false;
@@ -139,109 +152,6 @@ export class GeminiChat {
139
152
  setSystemInstruction(sysInstr) {
140
153
  this.generationConfig.systemInstruction = sysInstr;
141
154
  }
142
- /**
143
- * Sends a message to the model and returns the response.
144
- *
145
- * @remarks
146
- * This method will wait for the previous message to be processed before
147
- * sending the next message.
148
- *
149
- * @see {@link Chat#sendMessageStream} for streaming method.
150
- * @param params - parameters for sending messages within a chat session.
151
- * @returns The model's response.
152
- *
153
- * @example
154
- * ```ts
155
- * const chat = ai.chats.create({model: 'gemini-2.0-flash'});
156
- * const response = await chat.sendMessage({
157
- * message: 'Why is the sky blue?'
158
- * });
159
- * console.log(response.text);
160
- * ```
161
- */
162
- async sendMessage(params, prompt_id) {
163
- await this.sendPromise;
164
- const userContent = createUserContent(params.message);
165
- // Record user input - capture complete message with all parts (text, files, images, etc.)
166
- // but skip recording function responses (tool call results) as they should be stored in tool call records
167
- if (!isFunctionResponse(userContent)) {
168
- const userMessage = Array.isArray(params.message)
169
- ? params.message
170
- : [params.message];
171
- this.chatRecordingService.recordMessage({
172
- type: 'user',
173
- content: userMessage,
174
- });
175
- }
176
- const requestContents = this.getHistory(true).concat(userContent);
177
- let response;
178
- try {
179
- let currentAttemptModel;
180
- const apiCall = () => {
181
- const modelToUse = this.config.isInFallbackMode()
182
- ? DEFAULT_GEMINI_FLASH_MODEL
183
- : this.config.getModel();
184
- currentAttemptModel = modelToUse;
185
- // Prevent Flash model calls immediately after quota error
186
- if (this.config.getQuotaErrorOccurred() &&
187
- modelToUse === DEFAULT_GEMINI_FLASH_MODEL) {
188
- throw new Error('Please submit a new query to continue with the Flash model.');
189
- }
190
- return this.config.getContentGenerator().generateContent({
191
- model: modelToUse,
192
- contents: requestContents,
193
- config: { ...this.generationConfig, ...params.config },
194
- }, prompt_id);
195
- };
196
- const onPersistent429Callback = async (authType, error) => {
197
- if (!currentAttemptModel)
198
- return null;
199
- return await handleFallback(this.config, currentAttemptModel, authType, error);
200
- };
201
- response = await retryWithBackoff(apiCall, {
202
- shouldRetry: (error) => {
203
- // Check for known error messages and codes.
204
- if (error instanceof Error && error.message) {
205
- if (isSchemaDepthError(error.message))
206
- return false;
207
- if (error.message.includes('429'))
208
- return true;
209
- if (error.message.match(/5\d{2}/))
210
- return true;
211
- }
212
- return false; // Don't retry other errors by default
213
- },
214
- onPersistent429: onPersistent429Callback,
215
- authType: this.config.getContentGeneratorConfig()?.authType,
216
- });
217
- this.sendPromise = (async () => {
218
- const outputContent = response.candidates?.[0]?.content;
219
- const modelOutput = outputContent ? [outputContent] : [];
220
- // Because the AFC input contains the entire curated chat history in
221
- // addition to the new user input, we need to truncate the AFC history
222
- // to deduplicate the existing chat history.
223
- const fullAutomaticFunctionCallingHistory = response.automaticFunctionCallingHistory;
224
- const index = this.getHistory(true).length;
225
- let automaticFunctionCallingHistory = [];
226
- if (fullAutomaticFunctionCallingHistory != null) {
227
- automaticFunctionCallingHistory =
228
- fullAutomaticFunctionCallingHistory.slice(index) ?? [];
229
- }
230
- this.recordHistory(userContent, modelOutput, automaticFunctionCallingHistory);
231
- })();
232
- await this.sendPromise.catch((error) => {
233
- // Resets sendPromise to avoid subsequent calls failing
234
- this.sendPromise = Promise.resolve();
235
- // Re-throw the error so the caller knows something went wrong.
236
- throw error;
237
- });
238
- return response;
239
- }
240
- catch (error) {
241
- this.sendPromise = Promise.resolve();
242
- throw error;
243
- }
244
- }
245
155
  /**
246
156
  * Sends a message to the model and returns the response in chunks.
247
157
  *
@@ -264,7 +174,7 @@ export class GeminiChat {
264
174
  * }
265
175
  * ```
266
176
  */
267
- async sendMessageStream(params, prompt_id) {
177
+ async sendMessageStream(model, params, prompt_id) {
268
178
  await this.sendPromise;
269
179
  let streamDoneResolver;
270
180
  const streamDonePromise = new Promise((resolve) => {
@@ -280,6 +190,7 @@ export class GeminiChat {
280
190
  : [params.message];
281
191
  const userMessageContent = partListUnionToString(toParts(userMessage));
282
192
  this.chatRecordingService.recordMessage({
193
+ model,
283
194
  type: 'user',
284
195
  content: userMessageContent,
285
196
  });
@@ -297,7 +208,7 @@ export class GeminiChat {
297
208
  if (attempt > 0) {
298
209
  yield { type: StreamEventType.RETRY };
299
210
  }
300
- const stream = await self.makeApiCallAndProcessStream(requestContents, params, prompt_id, userContent);
211
+ const stream = await self.makeApiCallAndProcessStream(model, requestContents, params, prompt_id);
301
212
  for await (const chunk of stream) {
302
213
  yield { type: StreamEventType.CHUNK, value: chunk };
303
214
  }
@@ -335,13 +246,9 @@ export class GeminiChat {
335
246
  }
336
247
  })();
337
248
  }
338
- async makeApiCallAndProcessStream(requestContents, params, prompt_id, userContent) {
339
- let currentAttemptModel;
249
+ async makeApiCallAndProcessStream(model, requestContents, params, prompt_id) {
340
250
  const apiCall = () => {
341
- const modelToUse = this.config.isInFallbackMode()
342
- ? DEFAULT_GEMINI_FLASH_MODEL
343
- : this.config.getModel();
344
- currentAttemptModel = modelToUse;
251
+ const modelToUse = getEffectiveModel(this.config.isInFallbackMode(), model);
345
252
  if (this.config.getQuotaErrorOccurred() &&
346
253
  modelToUse === DEFAULT_GEMINI_FLASH_MODEL) {
347
254
  throw new Error('Please submit a new query to continue with the Flash model.');
@@ -352,11 +259,7 @@ export class GeminiChat {
352
259
  config: { ...this.generationConfig, ...params.config },
353
260
  }, prompt_id);
354
261
  };
355
- const onPersistent429Callback = async (authType, error) => {
356
- if (!currentAttemptModel)
357
- return null;
358
- return await handleFallback(this.config, currentAttemptModel, authType, error);
359
- };
262
+ const onPersistent429Callback = async (authType, error) => await handleFallback(this.config, model, authType, error);
360
263
  const streamResponse = await retryWithBackoff(apiCall, {
361
264
  shouldRetry: (error) => {
362
265
  if (error instanceof Error && error.message) {
@@ -372,7 +275,7 @@ export class GeminiChat {
372
275
  onPersistent429: onPersistent429Callback,
373
276
  authType: this.config.getContentGeneratorConfig()?.authType,
374
277
  });
375
- return this.processStreamResponse(streamResponse, userContent);
278
+ return this.processStreamResponse(model, streamResponse);
376
279
  }
377
280
  /**
378
281
  * Returns the chat history.
@@ -461,14 +364,14 @@ export class GeminiChat {
461
364
  }
462
365
  }
463
366
  }
464
- async *processStreamResponse(streamResponse, userInput) {
367
+ async *processStreamResponse(model, streamResponse) {
465
368
  const modelResponseParts = [];
466
369
  let hasReceivedAnyChunk = false;
467
370
  let hasReceivedValidChunk = false;
468
371
  let hasToolCall = false;
469
372
  let lastChunk = null;
470
373
  let lastChunkIsInvalid = false;
471
- for await (const chunk of streamResponse) {
374
+ for await (const chunk of this.stopBeforeSecondMutator(streamResponse)) {
472
375
  hasReceivedAnyChunk = true;
473
376
  lastChunk = chunk;
474
377
  if (isValidResponse(chunk)) {
@@ -483,11 +386,7 @@ export class GeminiChat {
483
386
  if (content.parts.some((part) => part.functionCall)) {
484
387
  hasToolCall = true;
485
388
  }
486
- // Always add parts - thoughts will be filtered out later in recordHistory
487
- modelResponseParts.push(...content.parts);
488
- if (content.parts.some((part) => part.functionCall)) {
489
- hasToolCall = true;
490
- }
389
+ modelResponseParts.push(...content.parts.filter((part) => !part.thought));
491
390
  }
492
391
  }
493
392
  else {
@@ -518,106 +417,31 @@ export class GeminiChat {
518
417
  // Record model response text from the collected parts
519
418
  if (modelResponseParts.length > 0) {
520
419
  const responseText = modelResponseParts
521
- .filter((part) => part.text && !part.thought)
420
+ .filter((part) => part.text)
522
421
  .map((part) => part.text)
523
422
  .join('');
524
423
  if (responseText.trim()) {
525
424
  this.chatRecordingService.recordMessage({
425
+ model,
526
426
  type: 'gemini',
527
427
  content: responseText,
528
428
  });
529
429
  }
530
430
  }
531
- // Bundle all streamed parts into a single Content object
532
- const modelOutput = modelResponseParts.length > 0
533
- ? [{ role: 'model', parts: modelResponseParts }]
534
- : [];
535
- // Pass the raw, bundled data to the new, robust recordHistory
536
- this.recordHistory(userInput, modelOutput);
537
- }
538
- recordHistory(userInput, modelOutput, automaticFunctionCallingHistory) {
539
- // Part 1: Handle the user's turn.
540
- if (automaticFunctionCallingHistory &&
541
- automaticFunctionCallingHistory.length > 0) {
542
- this.history.push(...extractCuratedHistory(automaticFunctionCallingHistory));
543
- }
544
- else {
545
- if (this.history.length === 0 ||
546
- this.history[this.history.length - 1] !== userInput) {
547
- const lastTurn = this.history[this.history.length - 1];
548
- // The only time we don't push is if it's the *exact same* object,
549
- // which happens in streaming where we add it preemptively.
550
- if (lastTurn !== userInput) {
551
- if (lastTurn?.role === 'user') {
552
- // This is an invalid sequence.
553
- throw new Error('Cannot add a user turn after another user turn.');
554
- }
555
- this.history.push(userInput);
556
- }
557
- }
558
- }
559
- // Part 2: Process the model output into a final, consolidated list of turns.
560
- const finalModelTurns = [];
561
- for (const content of modelOutput) {
562
- // A. Preserve malformed content that has no 'parts' array.
563
- if (!content.parts) {
564
- finalModelTurns.push(content);
565
- continue;
566
- }
567
- // B. Filter out 'thought' parts.
568
- const visibleParts = content.parts.filter((part) => !part.thought);
569
- const newTurn = { ...content, parts: visibleParts };
570
- const lastTurnInFinal = finalModelTurns[finalModelTurns.length - 1];
571
- // Consolidate this new turn with the PREVIOUS turn if they are adjacent model turns.
572
- if (lastTurnInFinal &&
573
- lastTurnInFinal.role === 'model' &&
574
- newTurn.role === 'model' &&
575
- lastTurnInFinal.parts && // SAFETY CHECK: Ensure the destination has a parts array.
576
- newTurn.parts) {
577
- lastTurnInFinal.parts.push(...newTurn.parts);
431
+ // String thoughts and consolidate text parts.
432
+ const consolidatedParts = [];
433
+ for (const part of modelResponseParts) {
434
+ const lastPart = consolidatedParts[consolidatedParts.length - 1];
435
+ if (lastPart?.text &&
436
+ isValidNonThoughtTextPart(lastPart) &&
437
+ isValidNonThoughtTextPart(part)) {
438
+ lastPart.text += part.text;
578
439
  }
579
440
  else {
580
- finalModelTurns.push(newTurn);
441
+ consolidatedParts.push(part);
581
442
  }
582
443
  }
583
- // Part 3: Add the processed model turns to the history, with one final consolidation pass.
584
- if (finalModelTurns.length > 0) {
585
- // Re-consolidate parts within any turns that were merged in the previous step.
586
- for (const turn of finalModelTurns) {
587
- if (turn.parts && turn.parts.length > 1) {
588
- const consolidatedParts = [];
589
- for (const part of turn.parts) {
590
- const lastPart = consolidatedParts[consolidatedParts.length - 1];
591
- if (lastPart &&
592
- // Ensure lastPart is a pure text part
593
- typeof lastPart.text === 'string' &&
594
- !lastPart.functionCall &&
595
- !lastPart.functionResponse &&
596
- !lastPart.inlineData &&
597
- !lastPart.fileData &&
598
- !lastPart.thought &&
599
- // Ensure current part is a pure text part
600
- typeof part.text === 'string' &&
601
- !part.functionCall &&
602
- !part.functionResponse &&
603
- !part.inlineData &&
604
- !part.fileData &&
605
- !part.thought) {
606
- lastPart.text += part.text;
607
- }
608
- else {
609
- consolidatedParts.push({ ...part });
610
- }
611
- }
612
- turn.parts = consolidatedParts;
613
- }
614
- }
615
- this.history.push(...finalModelTurns);
616
- }
617
- else {
618
- // If, after all processing, there's NO model output, add the placeholder.
619
- this.history.push({ role: 'model', parts: [] });
620
- }
444
+ this.history.push({ role: 'model', parts: consolidatedParts });
621
445
  }
622
446
  /**
623
447
  * Gets the chat recording service instance.
@@ -625,26 +449,6 @@ export class GeminiChat {
625
449
  getChatRecordingService() {
626
450
  return this.chatRecordingService;
627
451
  }
628
- /**
629
- * Records completed tool calls with full metadata.
630
- * This is called by external components when tool calls complete, before sending responses to Gemini.
631
- */
632
- recordCompletedToolCalls(toolCalls) {
633
- const toolCallRecords = toolCalls.map((call) => {
634
- const resultDisplayRaw = call.response?.resultDisplay;
635
- const resultDisplay = typeof resultDisplayRaw === 'string' ? resultDisplayRaw : undefined;
636
- return {
637
- id: call.request.callId,
638
- name: call.request.name,
639
- args: call.request.args,
640
- result: call.response?.responseParts || null,
641
- status: call.status,
642
- timestamp: new Date().toISOString(),
643
- resultDisplay,
644
- };
645
- });
646
- this.chatRecordingService.recordToolCalls(toolCallRecords);
647
- }
648
452
  /**
649
453
  * Extracts and records thought from thought content.
650
454
  */
@@ -667,6 +471,57 @@ export class GeminiChat {
667
471
  });
668
472
  }
669
473
  }
474
+ /**
475
+ * Truncates the chunkStream right before the second function call to a
476
+ * function that mutates state. This may involve trimming parts from a chunk
477
+ * as well as omtting some chunks altogether.
478
+ *
479
+ * We do this because it improves tool call quality if the model gets
480
+ * feedback from one mutating function call before it makes the next one.
481
+ */
482
+ async *stopBeforeSecondMutator(chunkStream) {
483
+ let foundMutatorFunctionCall = false;
484
+ for await (const chunk of chunkStream) {
485
+ const candidate = chunk.candidates?.[0];
486
+ const content = candidate?.content;
487
+ if (!candidate || !content?.parts) {
488
+ yield chunk;
489
+ continue;
490
+ }
491
+ const truncatedParts = [];
492
+ for (const part of content.parts) {
493
+ if (this.isMutatorFunctionCall(part)) {
494
+ if (foundMutatorFunctionCall) {
495
+ // This is the second mutator call.
496
+ // Truncate and return immedaitely.
497
+ const newChunk = new GenerateContentResponse();
498
+ newChunk.candidates = [
499
+ {
500
+ ...candidate,
501
+ content: {
502
+ ...content,
503
+ parts: truncatedParts,
504
+ },
505
+ finishReason: FinishReason.STOP,
506
+ },
507
+ ];
508
+ yield newChunk;
509
+ return;
510
+ }
511
+ foundMutatorFunctionCall = true;
512
+ }
513
+ truncatedParts.push(part);
514
+ }
515
+ yield chunk;
516
+ }
517
+ }
518
+ isMutatorFunctionCall(part) {
519
+ if (!part?.functionCall?.name) {
520
+ return false;
521
+ }
522
+ const tool = this.config.getToolRegistry().getTool(part.functionCall.name);
523
+ return !!tool && MUTATOR_KINDS.includes(tool.kind);
524
+ }
670
525
  }
671
526
  /** Visible for Testing */
672
527
  export function isSchemaDepthError(errorMessage) {
@@ -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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"}