@machina.ai/cell-cli 1.59.0-rc2 → 1.64.0-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 (327) hide show
  1. package/dist/index.js +11 -14
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +3 -3
  4. package/dist/src/acp/acpResume.test.js +50 -0
  5. package/dist/src/acp/acpResume.test.js.map +1 -1
  6. package/dist/src/acp/acpRpcDispatcher.d.ts +1 -1
  7. package/dist/src/acp/acpRpcDispatcher.js +2 -2
  8. package/dist/src/acp/acpRpcDispatcher.js.map +1 -1
  9. package/dist/src/acp/acpRpcDispatcher.test.js +9 -0
  10. package/dist/src/acp/acpRpcDispatcher.test.js.map +1 -1
  11. package/dist/src/acp/acpSession.d.ts +1 -1
  12. package/dist/src/acp/acpSession.js +90 -80
  13. package/dist/src/acp/acpSession.js.map +1 -1
  14. package/dist/src/acp/acpSession.test.js +279 -2
  15. package/dist/src/acp/acpSession.test.js.map +1 -1
  16. package/dist/src/acp/acpSessionManager.d.ts +2 -2
  17. package/dist/src/acp/acpSessionManager.js +165 -73
  18. package/dist/src/acp/acpSessionManager.js.map +1 -1
  19. package/dist/src/acp/acpSessionManager.test.js +204 -1
  20. package/dist/src/acp/acpSessionManager.test.js.map +1 -1
  21. package/dist/src/acp/acpUtils.js +5 -3
  22. package/dist/src/acp/acpUtils.js.map +1 -1
  23. package/dist/src/commands/extensions/validate.js +7 -3
  24. package/dist/src/commands/extensions/validate.js.map +1 -1
  25. package/dist/src/commands/extensions/validate.test.js +51 -0
  26. package/dist/src/commands/extensions/validate.test.js.map +1 -1
  27. package/dist/src/config/config.js +3 -0
  28. package/dist/src/config/config.js.map +1 -1
  29. package/dist/src/config/config.test.js +6 -1
  30. package/dist/src/config/config.test.js.map +1 -1
  31. package/dist/src/config/extension-manager.d.ts +25 -0
  32. package/dist/src/config/extension-manager.js +96 -15
  33. package/dist/src/config/extension-manager.js.map +1 -1
  34. package/dist/src/config/extension-manager.test.js +263 -1
  35. package/dist/src/config/extension-manager.test.js.map +1 -1
  36. package/dist/src/config/extension.test.js +10 -7
  37. package/dist/src/config/extension.test.js.map +1 -1
  38. package/dist/src/config/extensionRegistryClient.js +1 -1
  39. package/dist/src/config/extensionRegistryClient.js.map +1 -1
  40. package/dist/src/config/extensions/consent.js +98 -1
  41. package/dist/src/config/extensions/consent.js.map +1 -1
  42. package/dist/src/config/extensions/consent.test.js +89 -0
  43. package/dist/src/config/extensions/consent.test.js.map +1 -1
  44. package/dist/src/config/extensions/update.js +7 -2
  45. package/dist/src/config/extensions/update.js.map +1 -1
  46. package/dist/src/config/extensions/update.test.js +21 -0
  47. package/dist/src/config/extensions/update.test.js.map +1 -1
  48. package/dist/src/config/mcp/mcpServerEnablement.d.ts +5 -0
  49. package/dist/src/config/mcp/mcpServerEnablement.js +26 -3
  50. package/dist/src/config/mcp/mcpServerEnablement.js.map +1 -1
  51. package/dist/src/config/mcp/mcpServerEnablement.test.js +27 -0
  52. package/dist/src/config/mcp/mcpServerEnablement.test.js.map +1 -1
  53. package/dist/src/config/settings.js +20 -4
  54. package/dist/src/config/settings.js.map +1 -1
  55. package/dist/src/config/settings.test.js +121 -0
  56. package/dist/src/config/settings.test.js.map +1 -1
  57. package/dist/src/config/settingsSchema.d.ts +27 -0
  58. package/dist/src/config/settingsSchema.js +55 -1
  59. package/dist/src/config/settingsSchema.js.map +1 -1
  60. package/dist/src/core/auth.test.js +1 -1
  61. package/dist/src/core/auth.test.js.map +1 -1
  62. package/dist/src/gemini.js +110 -18
  63. package/dist/src/gemini.js.map +1 -1
  64. package/dist/src/gemini_uncaught.test.d.ts +6 -0
  65. package/dist/src/gemini_uncaught.test.js +91 -0
  66. package/dist/src/gemini_uncaught.test.js.map +1 -0
  67. package/dist/src/generated/git-commit.d.ts +2 -2
  68. package/dist/src/generated/git-commit.js +2 -2
  69. package/dist/src/patches/http-proxy-agent.d.ts +4 -1
  70. package/dist/src/patches/http-proxy-agent.js +38 -2
  71. package/dist/src/patches/http-proxy-agent.js.map +1 -1
  72. package/dist/src/patches/https-proxy-agent.d.ts +4 -1
  73. package/dist/src/patches/https-proxy-agent.js +38 -2
  74. package/dist/src/patches/https-proxy-agent.js.map +1 -1
  75. package/dist/src/services/FeedbackService.integration.test.d.ts +6 -0
  76. package/dist/src/services/FeedbackService.integration.test.js +212 -0
  77. package/dist/src/services/FeedbackService.integration.test.js.map +1 -0
  78. package/dist/src/services/FeedbackService.js +62 -6
  79. package/dist/src/services/FeedbackService.js.map +1 -1
  80. package/dist/src/services/FeedbackService.test.d.ts +6 -0
  81. package/dist/src/services/FeedbackService.test.js +282 -0
  82. package/dist/src/services/FeedbackService.test.js.map +1 -0
  83. package/dist/src/services/FileCommandLoader.js +3 -5
  84. package/dist/src/services/FileCommandLoader.js.map +1 -1
  85. package/dist/src/services/FileCommandLoader.test.js +68 -6
  86. package/dist/src/services/FileCommandLoader.test.js.map +1 -1
  87. package/dist/src/test-utils/createExtension.d.ts +1 -1
  88. package/dist/src/test-utils/createExtension.js +15 -1
  89. package/dist/src/test-utils/createExtension.js.map +1 -1
  90. package/dist/src/ui/AppContainer.js +42 -39
  91. package/dist/src/ui/AppContainer.js.map +1 -1
  92. package/dist/src/ui/AppContainer.test.js +30 -0
  93. package/dist/src/ui/AppContainer.test.js.map +1 -1
  94. package/dist/src/ui/auth/AuthDialog.js +11 -3
  95. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  96. package/dist/src/ui/auth/useAuth.test.js +1 -1
  97. package/dist/src/ui/auth/useAuth.test.js.map +1 -1
  98. package/dist/src/ui/commands/bugCommand.js +3 -3
  99. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  100. package/dist/src/ui/commands/bugCommand.test.js +44 -0
  101. package/dist/src/ui/commands/bugCommand.test.js.map +1 -1
  102. package/dist/src/ui/commands/bugMemoryCommand.js +2 -2
  103. package/dist/src/ui/commands/bugMemoryCommand.js.map +1 -1
  104. package/dist/src/ui/commands/bugMemoryCommand.test.js +12 -0
  105. package/dist/src/ui/commands/bugMemoryCommand.test.js.map +1 -1
  106. package/dist/src/ui/commands/statsCommand.js +17 -2
  107. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  108. package/dist/src/ui/commands/statsCommand.test.js +2 -0
  109. package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
  110. package/dist/src/ui/components/AboutBox.js +1 -1
  111. package/dist/src/ui/components/AboutBox.js.map +1 -1
  112. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  113. package/dist/src/ui/components/AsciiArt.js +6 -6
  114. package/dist/src/ui/components/AskUserDialog.js +7 -2
  115. package/dist/src/ui/components/AskUserDialog.js.map +1 -1
  116. package/dist/src/ui/components/AskUserDialog.test.js +33 -0
  117. package/dist/src/ui/components/AskUserDialog.test.js.map +1 -1
  118. package/dist/src/ui/components/Composer.js +4 -4
  119. package/dist/src/ui/components/Composer.js.map +1 -1
  120. package/dist/src/ui/components/Composer.test.js +50 -2
  121. package/dist/src/ui/components/Composer.test.js.map +1 -1
  122. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  123. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  124. package/dist/src/ui/components/InputPrompt.js +16 -10
  125. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  126. package/dist/src/ui/components/InputPrompt.test.js +103 -7
  127. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  128. package/dist/src/ui/components/LoadingIndicator.d.ts +1 -0
  129. package/dist/src/ui/components/LoadingIndicator.js +13 -11
  130. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  131. package/dist/src/ui/components/LoadingIndicator.test.js +29 -0
  132. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  133. package/dist/src/ui/components/MainContent.js +79 -14
  134. package/dist/src/ui/components/MainContent.js.map +1 -1
  135. package/dist/src/ui/components/MainContent.test.js +218 -5
  136. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  137. package/dist/src/ui/components/ModelDialog.js +11 -13
  138. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  139. package/dist/src/ui/components/ModelDialog.test.js +28 -24
  140. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  141. package/dist/src/ui/components/ModelStatsDisplay.test.js +2 -2
  142. package/dist/src/ui/components/ProgressBar.js +4 -3
  143. package/dist/src/ui/components/ProgressBar.js.map +1 -1
  144. package/dist/src/ui/components/ProgressBar.test.js +12 -0
  145. package/dist/src/ui/components/ProgressBar.test.js.map +1 -1
  146. package/dist/src/ui/components/RewindViewer.js +2 -1
  147. package/dist/src/ui/components/RewindViewer.js.map +1 -1
  148. package/dist/src/ui/components/RewindViewer.test.js +38 -0
  149. package/dist/src/ui/components/RewindViewer.test.js.map +1 -1
  150. package/dist/src/ui/components/SessionSummaryDisplay.js +28 -2
  151. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  152. package/dist/src/ui/components/SessionSummaryDisplay.test.js +41 -2
  153. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -1
  154. package/dist/src/ui/components/StatsDisplay.d.ts +2 -1
  155. package/dist/src/ui/components/StatsDisplay.js +66 -4
  156. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  157. package/dist/src/ui/components/StatsDisplay.test.js +120 -3
  158. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
  159. package/dist/src/ui/components/StatusRow.d.ts +2 -0
  160. package/dist/src/ui/components/StatusRow.js +11 -6
  161. package/dist/src/ui/components/StatusRow.js.map +1 -1
  162. package/dist/src/ui/components/StatusRow.test.js +158 -0
  163. package/dist/src/ui/components/StatusRow.test.js.map +1 -1
  164. package/dist/src/ui/components/ToolConfirmationQueue.js +4 -2
  165. package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
  166. package/dist/src/ui/components/ToolConfirmationQueue.test.js +30 -0
  167. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
  168. package/dist/src/ui/components/messages/DenseToolMessage.js +5 -5
  169. package/dist/src/ui/components/messages/DenseToolMessage.js.map +1 -1
  170. package/dist/src/ui/components/messages/DenseToolMessage.test.js +13 -0
  171. package/dist/src/ui/components/messages/DenseToolMessage.test.js.map +1 -1
  172. package/dist/src/ui/components/messages/DiffRenderer.d.ts +1 -0
  173. package/dist/src/ui/components/messages/DiffRenderer.js +16 -8
  174. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  175. package/dist/src/ui/components/messages/DiffRenderer.test.js +42 -0
  176. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  177. package/dist/src/ui/components/messages/ShellToolMessage.js +4 -3
  178. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  179. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +74 -16
  180. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  181. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +80 -7
  182. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  183. package/dist/src/ui/components/messages/ToolGroupMessage.js +6 -5
  184. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  185. package/dist/src/ui/components/messages/ToolMessage.js +2 -1
  186. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  187. package/dist/src/ui/components/messages/ToolResultDisplay.js +11 -8
  188. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  189. package/dist/src/ui/components/messages/ToolShared.js +5 -4
  190. package/dist/src/ui/components/messages/ToolShared.js.map +1 -1
  191. package/dist/src/ui/components/shared/HalfLinePaddedBox.js +4 -2
  192. package/dist/src/ui/components/shared/HalfLinePaddedBox.js.map +1 -1
  193. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js +8 -0
  194. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js.map +1 -1
  195. package/dist/src/ui/components/shared/SearchableList.js +1 -1
  196. package/dist/src/ui/components/shared/SearchableList.js.map +1 -1
  197. package/dist/src/ui/components/shared/SearchableList.test.js +13 -0
  198. package/dist/src/ui/components/shared/SearchableList.test.js.map +1 -1
  199. package/dist/src/ui/components/shared/TextInput.js +2 -2
  200. package/dist/src/ui/components/shared/TextInput.js.map +1 -1
  201. package/dist/src/ui/components/views/ExtensionRegistryView.test.js +2 -0
  202. package/dist/src/ui/components/views/ExtensionRegistryView.test.js.map +1 -1
  203. package/dist/src/ui/contexts/KeypressContext.js +20 -2
  204. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  205. package/dist/src/ui/contexts/KeypressContext.test.js +24 -0
  206. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  207. package/dist/src/ui/contexts/SessionContext.js +12 -0
  208. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  209. package/dist/src/ui/contexts/SessionContext.test.js +5 -0
  210. package/dist/src/ui/contexts/SessionContext.test.js.map +1 -1
  211. package/dist/src/ui/contexts/UIStateContext.d.ts +1 -0
  212. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  213. package/dist/src/ui/emergency-stop.test.d.ts +6 -0
  214. package/dist/src/ui/emergency-stop.test.js +116 -0
  215. package/dist/src/ui/emergency-stop.test.js.map +1 -0
  216. package/dist/src/ui/hooks/atCommandProcessor.d.ts +8 -5
  217. package/dist/src/ui/hooks/atCommandProcessor.js +47 -16
  218. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  219. package/dist/src/ui/hooks/atCommandProcessor.test.js +160 -0
  220. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  221. package/dist/src/ui/hooks/useComposerStatus.d.ts +1 -0
  222. package/dist/src/ui/hooks/useComposerStatus.js +1 -0
  223. package/dist/src/ui/hooks/useComposerStatus.js.map +1 -1
  224. package/dist/src/ui/hooks/useFocus.js +1 -0
  225. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  226. package/dist/src/ui/hooks/useFolderTrust.js +16 -16
  227. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  228. package/dist/src/ui/hooks/useFolderTrust.test.js +186 -3
  229. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  230. package/dist/src/ui/hooks/useGeminiStream.js +21 -15
  231. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  232. package/dist/src/ui/hooks/useGeminiStream.test.js +141 -3
  233. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  234. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -0
  235. package/dist/src/ui/hooks/useLoadingIndicator.js +1 -0
  236. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  237. package/dist/src/ui/hooks/useLoadingIndicator.test.js +2 -0
  238. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  239. package/dist/src/ui/hooks/useQuotaAndFallback.js +2 -2
  240. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  241. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +3 -3
  242. package/dist/src/ui/hooks/useSelectionList.js +24 -1
  243. package/dist/src/ui/hooks/useSelectionList.js.map +1 -1
  244. package/dist/src/ui/hooks/useSelectionList.test.js +63 -1
  245. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -1
  246. package/dist/src/ui/types.d.ts +2 -1
  247. package/dist/src/ui/types.js.map +1 -1
  248. package/dist/src/ui/utils/CodeColorizer.d.ts +1 -0
  249. package/dist/src/ui/utils/CodeColorizer.js +13 -7
  250. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  251. package/dist/src/ui/utils/TableRenderer.js +3 -2
  252. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  253. package/dist/src/ui/utils/borderStyles.d.ts +1 -0
  254. package/dist/src/ui/utils/borderStyles.js +1 -0
  255. package/dist/src/ui/utils/borderStyles.js.map +1 -1
  256. package/dist/src/ui/utils/fileUtils.d.ts +4 -0
  257. package/dist/src/ui/utils/fileUtils.js +13 -0
  258. package/dist/src/ui/utils/fileUtils.js.map +1 -1
  259. package/dist/src/ui/utils/renderBorder.d.ts +27 -0
  260. package/dist/src/ui/utils/renderBorder.js +46 -0
  261. package/dist/src/ui/utils/renderBorder.js.map +1 -0
  262. package/dist/src/ui/utils/renderBorder.test.d.ts +6 -0
  263. package/dist/src/ui/utils/renderBorder.test.js +74 -0
  264. package/dist/src/ui/utils/renderBorder.test.js.map +1 -0
  265. package/dist/src/ui/utils/rewindFileOps.d.ts +9 -0
  266. package/dist/src/ui/utils/rewindFileOps.js +25 -1
  267. package/dist/src/ui/utils/rewindFileOps.js.map +1 -1
  268. package/dist/src/ui/utils/rewindFileOps.test.js +94 -1
  269. package/dist/src/ui/utils/rewindFileOps.test.js.map +1 -1
  270. package/dist/src/ui/utils/terminalCapabilityManager.js +7 -0
  271. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
  272. package/dist/src/ui/utils/terminalCapabilityManager.stdin-flow.test.d.ts +6 -0
  273. package/dist/src/ui/utils/terminalCapabilityManager.stdin-flow.test.js +105 -0
  274. package/dist/src/ui/utils/terminalCapabilityManager.stdin-flow.test.js.map +1 -0
  275. package/dist/src/utils/commentJson.js +66 -5
  276. package/dist/src/utils/commentJson.js.map +1 -1
  277. package/dist/src/utils/commentJson.test.js +21 -0
  278. package/dist/src/utils/commentJson.test.js.map +1 -1
  279. package/dist/src/utils/handleAutoUpdate.test.js +2 -2
  280. package/dist/src/utils/persistentState.js +84 -15
  281. package/dist/src/utils/persistentState.js.map +1 -1
  282. package/dist/src/utils/persistentState.test.js +66 -9
  283. package/dist/src/utils/persistentState.test.js.map +1 -1
  284. package/dist/src/utils/persistentStateRecovery.test.d.ts +6 -0
  285. package/dist/src/utils/persistentStateRecovery.test.js +84 -0
  286. package/dist/src/utils/persistentStateRecovery.test.js.map +1 -0
  287. package/dist/src/utils/processUtils.d.ts +10 -1
  288. package/dist/src/utils/processUtils.js +55 -1
  289. package/dist/src/utils/processUtils.js.map +1 -1
  290. package/dist/src/utils/processUtils.test.js +90 -2
  291. package/dist/src/utils/processUtils.test.js.map +1 -1
  292. package/dist/src/utils/relaunch.js +7 -0
  293. package/dist/src/utils/relaunch.js.map +1 -1
  294. package/dist/src/utils/relaunch.test.js +16 -0
  295. package/dist/src/utils/relaunch.test.js.map +1 -1
  296. package/dist/src/utils/retry.d.ts +22 -0
  297. package/dist/src/utils/retry.js +54 -0
  298. package/dist/src/utils/retry.js.map +1 -0
  299. package/dist/src/utils/retry.test.d.ts +6 -0
  300. package/dist/src/utils/retry.test.js +141 -0
  301. package/dist/src/utils/retry.test.js.map +1 -0
  302. package/dist/src/utils/sandbox-macos-permissive-open.sb +36 -1
  303. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +36 -1
  304. package/dist/src/utils/sandbox-macos-profiles.test.js +93 -0
  305. package/dist/src/utils/sandbox-macos-profiles.test.js.map +1 -1
  306. package/dist/src/utils/sandbox-macos-restrictive-open.sb +39 -1
  307. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +40 -1
  308. package/dist/src/utils/sandbox-macos-strict-open.sb +38 -2
  309. package/dist/src/utils/sandbox-macos-strict-proxied.sb +38 -2
  310. package/dist/src/utils/sandbox.js +149 -36
  311. package/dist/src/utils/sandbox.js.map +1 -1
  312. package/dist/src/utils/sandbox.test.js +410 -2
  313. package/dist/src/utils/sandbox.test.js.map +1 -1
  314. package/dist/src/utils/sandboxBuiltinProfiles.js +198 -8
  315. package/dist/src/utils/sandboxBuiltinProfiles.js.map +1 -1
  316. package/dist/src/utils/sandboxUtils.d.ts +25 -0
  317. package/dist/src/utils/sandboxUtils.js +225 -1
  318. package/dist/src/utils/sandboxUtils.js.map +1 -1
  319. package/dist/src/utils/sandboxUtils.test.js +341 -1
  320. package/dist/src/utils/sandboxUtils.test.js.map +1 -1
  321. package/dist/src/utils/sessionUtils.d.ts +21 -1
  322. package/dist/src/utils/sessionUtils.js +66 -2
  323. package/dist/src/utils/sessionUtils.js.map +1 -1
  324. package/dist/src/utils/sessionUtils.test.js +143 -0
  325. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  326. package/dist/tsconfig.tsbuildinfo +1 -1
  327. package/package.json +3 -3
@@ -68,6 +68,7 @@ export const useComposerStatus = () => {
68
68
  const shouldCollapseDuringApproval = settings.merged.ui.collapseDrawerDuringApproval !== false;
69
69
  return {
70
70
  hasPendingActionRequired,
71
+ hasPendingToolConfirmation,
71
72
  shouldCollapseDuringApproval,
72
73
  isInteractiveShellWaiting,
73
74
  showLoadingIndicator,
@@ -1 +1 @@
1
- {"version":3,"file":"useComposerStatus.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useComposerStatus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useComposerStatus.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useComposerStatus.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ export const useFocus = () => {
34
34
  // Enable focus reporting
35
35
  stdout?.write(ENABLE_FOCUS_REPORTING);
36
36
  stdin?.on('data', handleData);
37
+ stdin?.resume?.();
37
38
  return () => {
38
39
  // Disable focus reporting on cleanup
39
40
  stdout?.write(DISABLE_FOCUS_REPORTING);
@@ -1 +1 @@
1
- {"version":3,"file":"useFocus.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useFocus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAErD,qCAAqC;AACrC,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAElC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAGtB,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErD,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;gBAC/B,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBAC/B,YAAY,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,YAAY,GAAG,WAAW,EAAE,CAAC;gBACtC,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,yBAAyB;QACzB,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAE9B,OAAO,GAAG,EAAE;YACV,qCAAqC;YACrC,MAAM,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACvC,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpB,WAAW,CACT,CAAC,CAAC,EAAE,EAAE;QACJ,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,sEAAsE;YACtE,sEAAsE;YACtE,qEAAqE;YACrE,mDAAmD;YACnD,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IAEF,OAAO;QACL,SAAS;QACT,qBAAqB;KACtB,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"useFocus.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useFocus.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,+DAA+D;AAC/D,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,aAAa,CAAC;AAErD,qCAAqC;AACrC,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC;AACjC,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAElC,MAAM,CAAC,MAAM,QAAQ,GAAG,GAGtB,EAAE;IACF,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1E,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAErD,IAAI,WAAW,GAAG,YAAY,EAAE,CAAC;gBAC/B,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBAC/B,YAAY,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;iBAAM,IAAI,YAAY,GAAG,WAAW,EAAE,CAAC;gBACtC,wBAAwB,CAAC,IAAI,CAAC,CAAC;gBAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,yBAAyB;QACzB,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACtC,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC9B,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;QAElB,OAAO,GAAG,EAAE;YACV,qCAAqC;YACrC,MAAM,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACvC,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5C,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpB,WAAW,CACT,CAAC,CAAC,EAAE,EAAE;QACJ,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,sEAAsE;YACtE,sEAAsE;YACtE,qEAAqE;YACrE,mDAAmD;YACnD,YAAY,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IAEF,OAAO;QACL,SAAS;QACT,qBAAqB;KACtB,CAAC;AACJ,CAAC,CAAC"}
@@ -16,10 +16,18 @@ export const useFolderTrust = (settings, onTrustChange, addItem) => {
16
16
  const [discoveryResults, setDiscoveryResults] = useState(null);
17
17
  const [isRestarting, setIsRestarting] = useState(false);
18
18
  const startupMessageSent = useRef(false);
19
+ const onTrustChangeRef = useRef(onTrustChange);
20
+ const addItemRef = useRef(addItem);
21
+ const settingsRef = useRef(settings);
22
+ useEffect(() => {
23
+ onTrustChangeRef.current = onTrustChange;
24
+ addItemRef.current = addItem;
25
+ settingsRef.current = settings;
26
+ }, [onTrustChange, addItem, settings]);
19
27
  const folderTrust = settings.merged.security.folderTrust.enabled ?? true;
20
28
  useEffect(() => {
21
29
  let isMounted = true;
22
- const { isTrusted: trusted } = isWorkspaceTrusted(settings.merged);
30
+ const { isTrusted: trusted } = isWorkspaceTrusted(settingsRef.current.merged);
23
31
  if (trusted === undefined || trusted === false) {
24
32
  void FolderTrustDiscoveryService.discover(process.cwd())
25
33
  .then((results) => {
@@ -34,31 +42,23 @@ export const useFolderTrust = (settings, onTrustChange, addItem) => {
34
42
  }
35
43
  const showUntrustedMessage = () => {
36
44
  if (trusted === false && !startupMessageSent.current) {
37
- addItem({
45
+ addItemRef.current({
38
46
  type: MessageType.INFO,
39
47
  text: 'This folder is untrusted, project settings, hooks, MCPs, and GEMINI.md files will not be applied for this folder.\nUse the `/permissions` command to change the trust level.',
40
48
  }, Date.now());
41
49
  startupMessageSent.current = true;
42
50
  }
43
51
  };
44
- if (isHeadlessMode()) {
45
- if (isMounted) {
46
- setIsTrusted(trusted);
47
- setIsFolderTrustDialogOpen(false);
48
- onTrustChange(true);
49
- showUntrustedMessage();
50
- }
51
- }
52
- else if (isMounted) {
52
+ if (isMounted) {
53
53
  setIsTrusted(trusted);
54
- setIsFolderTrustDialogOpen(trusted === undefined);
55
- onTrustChange(trusted);
54
+ setIsFolderTrustDialogOpen(!isHeadlessMode() && trusted === undefined);
55
+ onTrustChangeRef.current(trusted);
56
56
  showUntrustedMessage();
57
57
  }
58
58
  return () => {
59
59
  isMounted = false;
60
60
  };
61
- }, [folderTrust, onTrustChange, settings.merged, addItem]);
61
+ }, [folderTrust]);
62
62
  const handleFolderTrustSelect = useCallback(async (choice) => {
63
63
  const trustLevelMap = {
64
64
  [FolderTrustChoice.TRUST_FOLDER]: TrustLevel.TRUST_FOLDER,
@@ -83,7 +83,7 @@ export const useFolderTrust = (settings, onTrustChange, addItem) => {
83
83
  }
84
84
  const currentIsTrusted = trustLevel === TrustLevel.TRUST_FOLDER ||
85
85
  trustLevel === TrustLevel.TRUST_PARENT;
86
- onTrustChange(currentIsTrusted);
86
+ onTrustChangeRef.current(currentIsTrusted);
87
87
  setIsTrusted(currentIsTrusted);
88
88
  const wasTrusted = isTrusted ?? false;
89
89
  if (wasTrusted !== currentIsTrusted) {
@@ -93,7 +93,7 @@ export const useFolderTrust = (settings, onTrustChange, addItem) => {
93
93
  else {
94
94
  setIsFolderTrustDialogOpen(false);
95
95
  }
96
- }, [onTrustChange, isTrusted]);
96
+ }, [isTrusted]);
97
97
  return {
98
98
  isTrusted,
99
99
  isFolderTrustDialogOpen,
@@ -1 +1 @@
1
- {"version":3,"file":"useFolderTrust.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useFolderTrust.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useFolderTrust.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useFolderTrust.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ import { useFolderTrust } from './useFolderTrust.js';
11
11
  import { FolderTrustChoice } from '../components/FolderTrustDialog.js';
12
12
  import { TrustLevel, } from '../../config/trustedFolders.js';
13
13
  import * as trustedFolders from '../../config/trustedFolders.js';
14
- import { coreEvents, ExitCodes, isHeadlessMode } from '@google/gemini-cli-core';
14
+ import { coreEvents, ExitCodes, isHeadlessMode, FolderTrustDiscoveryService, } from '@google/gemini-cli-core';
15
15
  import { MessageType } from '../types.js';
16
16
  const mockedCwd = vi.hoisted(() => vi.fn().mockReturnValue('/mock/cwd'));
17
17
  const mockedExit = vi.hoisted(() => vi.fn());
@@ -249,7 +249,7 @@ describe('useFolderTrust', () => {
249
249
  expect(mockedExit).toHaveBeenCalledWith(ExitCodes.FATAL_CONFIG_ERROR);
250
250
  });
251
251
  describe('headless mode', () => {
252
- it('should force trust and hide dialog in headless mode', async () => {
252
+ it('should propagate false to onTrustChange, hide dialog, and show warning when folder is untrusted', async () => {
253
253
  vi.mocked(isHeadlessMode).mockReturnValue(true);
254
254
  isWorkspaceTrustedSpy.mockReturnValue({
255
255
  isTrusted: false,
@@ -257,12 +257,195 @@ describe('useFolderTrust', () => {
257
257
  });
258
258
  const { result } = await renderHook(() => useFolderTrust(mockSettings, onTrustChange, addItem));
259
259
  expect(result.current.isFolderTrustDialogOpen).toBe(false);
260
- expect(onTrustChange).toHaveBeenCalledWith(true);
260
+ expect(result.current.isTrusted).toBe(false);
261
+ expect(onTrustChange).toHaveBeenCalledWith(false);
261
262
  expect(addItem).toHaveBeenCalledWith(expect.objectContaining({
262
263
  type: MessageType.INFO,
263
264
  text: expect.stringContaining('This folder is untrusted'),
264
265
  }), expect.any(Number));
265
266
  });
267
+ it('should propagate true to onTrustChange, hide dialog, and not show warning when folder is trusted', async () => {
268
+ vi.mocked(isHeadlessMode).mockReturnValue(true);
269
+ isWorkspaceTrustedSpy.mockReturnValue({
270
+ isTrusted: true,
271
+ source: 'file',
272
+ });
273
+ const { result } = await renderHook(() => useFolderTrust(mockSettings, onTrustChange, addItem));
274
+ expect(result.current.isFolderTrustDialogOpen).toBe(false);
275
+ expect(result.current.isTrusted).toBe(true);
276
+ expect(onTrustChange).toHaveBeenCalledWith(true);
277
+ expect(addItem).not.toHaveBeenCalled();
278
+ });
279
+ it('should propagate undefined to onTrustChange and hide dialog when folder trust is undefined', async () => {
280
+ vi.mocked(isHeadlessMode).mockReturnValue(true);
281
+ isWorkspaceTrustedSpy.mockReturnValue({
282
+ isTrusted: undefined,
283
+ source: undefined,
284
+ });
285
+ const { result } = await renderHook(() => useFolderTrust(mockSettings, onTrustChange, addItem));
286
+ expect(result.current.isFolderTrustDialogOpen).toBe(false);
287
+ expect(result.current.isTrusted).toBeUndefined();
288
+ expect(onTrustChange).toHaveBeenCalledWith(undefined);
289
+ expect(addItem).not.toHaveBeenCalled();
290
+ });
291
+ });
292
+ describe('callback stability', () => {
293
+ it('should not re-run effect or trigger onTrustChange again when callback references change', async () => {
294
+ isWorkspaceTrustedSpy.mockReturnValue({
295
+ isTrusted: true,
296
+ source: 'file',
297
+ });
298
+ const initialOnTrustChange = vi.fn();
299
+ const initialAddItem = vi.fn();
300
+ const { rerender } = await renderHook(({ onTrustChangeCb, addItemCb }) => useFolderTrust(mockSettings, onTrustChangeCb, addItemCb), {
301
+ initialProps: {
302
+ onTrustChangeCb: initialOnTrustChange,
303
+ addItemCb: initialAddItem,
304
+ },
305
+ });
306
+ expect(initialOnTrustChange).toHaveBeenCalledTimes(1);
307
+ expect(initialOnTrustChange).toHaveBeenCalledWith(true);
308
+ const newOnTrustChange = vi.fn();
309
+ const newAddItem = vi.fn();
310
+ rerender({
311
+ onTrustChangeCb: newOnTrustChange,
312
+ addItemCb: newAddItem,
313
+ });
314
+ expect(newOnTrustChange).not.toHaveBeenCalled();
315
+ expect(initialOnTrustChange).toHaveBeenCalledTimes(1);
316
+ });
317
+ it('should not re-trigger FolderTrustDiscoveryService.discover when callback references change', async () => {
318
+ isWorkspaceTrustedSpy.mockReturnValue({
319
+ isTrusted: false,
320
+ source: 'file',
321
+ });
322
+ const discoverSpy = vi.spyOn(FolderTrustDiscoveryService, 'discover');
323
+ discoverSpy.mockClear();
324
+ const initialOnTrustChange = vi.fn();
325
+ const initialAddItem = vi.fn();
326
+ const { rerender } = await renderHook(({ onTrustChangeCb, addItemCb }) => useFolderTrust(mockSettings, onTrustChangeCb, addItemCb), {
327
+ initialProps: {
328
+ onTrustChangeCb: initialOnTrustChange,
329
+ addItemCb: initialAddItem,
330
+ },
331
+ });
332
+ expect(discoverSpy).toHaveBeenCalledTimes(1);
333
+ const newOnTrustChange = vi.fn();
334
+ const newAddItem = vi.fn();
335
+ rerender({
336
+ onTrustChangeCb: newOnTrustChange,
337
+ addItemCb: newAddItem,
338
+ });
339
+ expect(discoverSpy).toHaveBeenCalledTimes(1);
340
+ });
341
+ it('should use updated onTrustChange callback in handleFolderTrustSelect when callback reference changes', async () => {
342
+ isWorkspaceTrustedSpy.mockReturnValue({
343
+ isTrusted: undefined,
344
+ source: undefined,
345
+ });
346
+ const initialOnTrustChange = vi.fn();
347
+ const initialAddItem = vi.fn();
348
+ const { result, rerender } = await renderHook(({ onTrustChangeCb, addItemCb }) => useFolderTrust(mockSettings, onTrustChangeCb, addItemCb), {
349
+ initialProps: {
350
+ onTrustChangeCb: initialOnTrustChange,
351
+ addItemCb: initialAddItem,
352
+ },
353
+ });
354
+ expect(initialOnTrustChange).toHaveBeenCalledWith(undefined);
355
+ const newOnTrustChange = vi.fn();
356
+ const newAddItem = vi.fn();
357
+ rerender({
358
+ onTrustChangeCb: newOnTrustChange,
359
+ addItemCb: newAddItem,
360
+ });
361
+ await act(async () => {
362
+ await result.current.handleFolderTrustSelect(FolderTrustChoice.TRUST_FOLDER);
363
+ });
364
+ expect(newOnTrustChange).toHaveBeenCalledWith(true);
365
+ expect(initialOnTrustChange).not.toHaveBeenCalledWith(true);
366
+ });
367
+ it('should not re-run discovery effect when unrelated settings change', async () => {
368
+ isWorkspaceTrustedSpy.mockReturnValue({
369
+ isTrusted: true,
370
+ source: 'file',
371
+ });
372
+ const onTrustChangeCb = vi.fn();
373
+ const addItemCb = vi.fn();
374
+ const initialSettings = {
375
+ merged: {
376
+ security: {
377
+ folderTrust: {
378
+ enabled: true,
379
+ },
380
+ },
381
+ ui: {
382
+ theme: 'default',
383
+ },
384
+ },
385
+ setValue: vi.fn(),
386
+ };
387
+ const { rerender } = await renderHook(({ settings }) => useFolderTrust(settings, onTrustChangeCb, addItemCb), {
388
+ initialProps: {
389
+ settings: initialSettings,
390
+ },
391
+ });
392
+ expect(onTrustChangeCb).toHaveBeenCalledTimes(1);
393
+ const updatedSettings = {
394
+ merged: {
395
+ security: {
396
+ folderTrust: {
397
+ enabled: true,
398
+ },
399
+ },
400
+ ui: {
401
+ theme: 'dark',
402
+ },
403
+ },
404
+ setValue: vi.fn(),
405
+ };
406
+ rerender({
407
+ settings: updatedSettings,
408
+ });
409
+ expect(onTrustChangeCb).toHaveBeenCalledTimes(1);
410
+ });
411
+ it('should re-run discovery effect when folderTrust setting changes', async () => {
412
+ isWorkspaceTrustedSpy.mockReturnValue({
413
+ isTrusted: true,
414
+ source: 'file',
415
+ });
416
+ const onTrustChangeCb = vi.fn();
417
+ const addItemCb = vi.fn();
418
+ const initialSettings = {
419
+ merged: {
420
+ security: {
421
+ folderTrust: {
422
+ enabled: true,
423
+ },
424
+ },
425
+ },
426
+ setValue: vi.fn(),
427
+ };
428
+ const { rerender } = await renderHook(({ settings }) => useFolderTrust(settings, onTrustChangeCb, addItemCb), {
429
+ initialProps: {
430
+ settings: initialSettings,
431
+ },
432
+ });
433
+ expect(onTrustChangeCb).toHaveBeenCalledTimes(1);
434
+ const updatedSettings = {
435
+ merged: {
436
+ security: {
437
+ folderTrust: {
438
+ enabled: false,
439
+ },
440
+ },
441
+ },
442
+ setValue: vi.fn(),
443
+ };
444
+ rerender({
445
+ settings: updatedSettings,
446
+ });
447
+ expect(onTrustChangeCb).toHaveBeenCalledTimes(2);
448
+ });
266
449
  });
267
450
  });
268
451
  //# sourceMappingURL=useFolderTrust.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFolderTrust.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useFolderTrust.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useFolderTrust.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useFolderTrust.test.ts"],"names":[],"mappings":"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"}
@@ -102,7 +102,6 @@ export const useGeminiStream = (geminiClient, history, addItem, config, settings
102
102
  const abortControllerRef = useRef(null);
103
103
  const turnCancelledRef = useRef(false);
104
104
  const activeQueryIdRef = useRef(null);
105
- const historyLengthAfterUserPromptRef = useRef(undefined);
106
105
  const previousApprovalModeRef = useRef(config.getApprovalMode());
107
106
  const [isResponding, isRespondingRef, setIsResponding] = useStateAndRef(false);
108
107
  const [thought, thoughtRef, setThought] = useStateAndRef(null);
@@ -889,8 +888,16 @@ export const useGeminiStream = (geminiClient, history, addItem, config, settings
889
888
  setPendingHistoryItem(null);
890
889
  }
891
890
  const limit = tokenLimit(config.getModel());
892
- const originalPercentage = Math.round(((eventValue?.originalTokenCount ?? 0) / limit) * 100);
893
- const newPercentage = Math.round(((eventValue?.newTokenCount ?? 0) / limit) * 100);
891
+ const originalTokenCount = eventValue?.originalTokenCount ?? 0;
892
+ const newTokenCount = eventValue?.newTokenCount ?? 0;
893
+ const originalPercentage = Math.round((originalTokenCount / limit) * 100);
894
+ const newPercentage = Math.round((newTokenCount / limit) * 100);
895
+ uiTelemetryService.recordCompression({
896
+ tokensBefore: originalTokenCount,
897
+ tokensAfter: newTokenCount,
898
+ turnIndex: getPromptCount(),
899
+ timestamp: new Date().toISOString(),
900
+ });
894
901
  addItem({
895
902
  type: MessageType.INFO,
896
903
  text: `Context compressed from ${originalPercentage}% to ${newPercentage}%.`,
@@ -898,7 +905,13 @@ export const useGeminiStream = (geminiClient, history, addItem, config, settings
898
905
  color: theme.status.warning,
899
906
  marginBottom: 1,
900
907
  }, userMessageTimestamp);
901
- }, [addItem, pendingHistoryItemRef, setPendingHistoryItem, config]);
908
+ }, [
909
+ addItem,
910
+ pendingHistoryItemRef,
911
+ setPendingHistoryItem,
912
+ config,
913
+ getPromptCount,
914
+ ]);
902
915
  const handleMaxSessionTurnsEvent = useCallback(() => addItem({
903
916
  type: 'info',
904
917
  text: `The session has reached the maximum number of turns: ${config.getMaxSessionTurns()}. ` +
@@ -1126,10 +1139,6 @@ export const useGeminiStream = (geminiClient, history, addItem, config, settings
1126
1139
  if (!shouldProceed || queryToSend === null) {
1127
1140
  return;
1128
1141
  }
1129
- if (geminiClient) {
1130
- historyLengthAfterUserPromptRef.current =
1131
- geminiClient.getHistory().length;
1132
- }
1133
1142
  if (!options?.isContinuation) {
1134
1143
  if (typeof queryToSend === 'string') {
1135
1144
  // logging the text prompts only for now
@@ -1400,13 +1409,10 @@ export const useGeminiStream = (geminiClient, history, addItem, config, settings
1400
1409
  });
1401
1410
  }
1402
1411
  setIsResponding(false);
1403
- if (geminiClient &&
1404
- historyLengthAfterUserPromptRef.current !== undefined) {
1405
- const targetLength = historyLengthAfterUserPromptRef.current;
1406
- if (geminiClient.getHistory().length > targetLength) {
1407
- geminiClient.setHistory(geminiClient.getHistory().slice(0, targetLength));
1408
- }
1409
- }
1412
+ // Only roll back the unanswered model function call turn for this
1413
+ // cancelled batch. The originating user prompt and any tool rounds
1414
+ // that already completed (and may have changed files) stay in history.
1415
+ geminiClient?.discardTrailingUnansweredToolCallTurn();
1410
1416
  const callIdsToMarkAsSubmitted = geminiTools.map((toolCall) => toolCall.request.callId);
1411
1417
  markToolsAsSubmitted(callIdsToMarkAsSubmitted);
1412
1418
  return;