@machina.ai/cell-cli 1.36.0-rc1 → 1.38.1-rc2

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 (580) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/package.json +4 -4
  4. package/dist/src/acp/acpClient.js +297 -32
  5. package/dist/src/acp/acpClient.js.map +1 -1
  6. package/dist/src/acp/acpClient.test.js +419 -19
  7. package/dist/src/acp/acpClient.test.js.map +1 -1
  8. package/dist/src/acp/acpResume.test.js +8 -0
  9. package/dist/src/acp/acpResume.test.js.map +1 -1
  10. package/dist/src/acp/commandHandler.js +4 -0
  11. package/dist/src/acp/commandHandler.js.map +1 -1
  12. package/dist/src/acp/commandHandler.test.js +4 -0
  13. package/dist/src/acp/commandHandler.test.js.map +1 -1
  14. package/dist/src/acp/commands/about.d.ts +11 -0
  15. package/dist/src/acp/commands/about.js +53 -0
  16. package/dist/src/acp/commands/about.js.map +1 -0
  17. package/dist/src/acp/commands/extensions.js +1 -1
  18. package/dist/src/acp/commands/extensions.js.map +1 -1
  19. package/dist/src/acp/commands/help.d.ts +14 -0
  20. package/dist/src/acp/commands/help.js +35 -0
  21. package/dist/src/acp/commands/help.js.map +1 -0
  22. package/dist/src/acp/commands/help.test.d.ts +6 -0
  23. package/dist/src/acp/commands/help.test.js +40 -0
  24. package/dist/src/acp/commands/help.test.js.map +1 -0
  25. package/dist/src/acp/commands/restore.js +2 -2
  26. package/dist/src/acp/commands/restore.js.map +1 -1
  27. package/dist/src/commands/extensions/new.js +1 -1
  28. package/dist/src/commands/extensions/new.js.map +1 -1
  29. package/dist/src/commands/mcp/list.js +2 -2
  30. package/dist/src/commands/mcp/list.js.map +1 -1
  31. package/dist/src/commands/mcp.test.js +1 -1
  32. package/dist/src/commands/mcp.test.js.map +1 -1
  33. package/dist/src/commands/skills/list.js +5 -8
  34. package/dist/src/commands/skills/list.js.map +1 -1
  35. package/dist/src/commands/skills/list.test.js +17 -13
  36. package/dist/src/commands/skills/list.test.js.map +1 -1
  37. package/dist/src/config/config.js +22 -9
  38. package/dist/src/config/config.js.map +1 -1
  39. package/dist/src/config/config.test.js +121 -36
  40. package/dist/src/config/config.test.js.map +1 -1
  41. package/dist/src/config/extension-manager-permissions.test.js +1 -1
  42. package/dist/src/config/extension-manager-permissions.test.js.map +1 -1
  43. package/dist/src/config/extension-manager-themes.spec.js +1 -0
  44. package/dist/src/config/extension-manager-themes.spec.js.map +1 -1
  45. package/dist/src/config/extension-manager.test.js +1 -1
  46. package/dist/src/config/extension-manager.test.js.map +1 -1
  47. package/dist/src/config/extension.js +1 -1
  48. package/dist/src/config/extension.js.map +1 -1
  49. package/dist/src/config/extensions/github.js +1 -1
  50. package/dist/src/config/extensions/github.js.map +1 -1
  51. package/dist/src/config/footerItems.d.ts +4 -0
  52. package/dist/src/config/footerItems.js +12 -2
  53. package/dist/src/config/footerItems.js.map +1 -1
  54. package/dist/src/config/footerItems.test.js +129 -72
  55. package/dist/src/config/footerItems.test.js.map +1 -1
  56. package/dist/src/config/policy-engine.integration.test.js +1 -3
  57. package/dist/src/config/policy-engine.integration.test.js.map +1 -1
  58. package/dist/src/config/policy.d.ts +1 -1
  59. package/dist/src/config/policy.js +2 -2
  60. package/dist/src/config/policy.js.map +1 -1
  61. package/dist/src/config/settings.js +19 -3
  62. package/dist/src/config/settings.js.map +1 -1
  63. package/dist/src/config/settingsSchema.d.ts +272 -53
  64. package/dist/src/config/settingsSchema.js +262 -48
  65. package/dist/src/config/settingsSchema.js.map +1 -1
  66. package/dist/src/config/settingsSchema.test.js +22 -4
  67. package/dist/src/config/settingsSchema.test.js.map +1 -1
  68. package/dist/src/config/workspace-policy-cli.test.js +7 -7
  69. package/dist/src/config/workspace-policy-cli.test.js.map +1 -1
  70. package/dist/src/gemini.js +24 -7
  71. package/dist/src/gemini.js.map +1 -1
  72. package/dist/src/gemini.test.js +74 -4
  73. package/dist/src/gemini.test.js.map +1 -1
  74. package/dist/src/gemini_cleanup.test.js +69 -4
  75. package/dist/src/gemini_cleanup.test.js.map +1 -1
  76. package/dist/src/generated/git-commit.d.ts +2 -2
  77. package/dist/src/generated/git-commit.js +2 -2
  78. package/dist/src/integration-tests/modelSteering.test.js +1 -1
  79. package/dist/src/integration-tests/modelSteering.test.js.map +1 -1
  80. package/dist/src/interactiveCli.js +4 -2
  81. package/dist/src/interactiveCli.js.map +1 -1
  82. package/dist/src/nonInteractiveCli.d.ts +1 -1
  83. package/dist/src/nonInteractiveCli.js +11 -2
  84. package/dist/src/nonInteractiveCli.js.map +1 -1
  85. package/dist/src/nonInteractiveCli.test.js +4 -2
  86. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  87. package/dist/src/nonInteractiveCliAgentSession.d.ts +16 -0
  88. package/dist/src/nonInteractiveCliAgentSession.js +484 -0
  89. package/dist/src/nonInteractiveCliAgentSession.js.map +1 -0
  90. package/dist/src/nonInteractiveCliAgentSession.test.js +1837 -0
  91. package/dist/src/nonInteractiveCliAgentSession.test.js.map +1 -0
  92. package/dist/src/services/BuiltinCommandLoader.js +4 -2
  93. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  94. package/dist/src/test-utils/mockCommandContext.js +1 -0
  95. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  96. package/dist/src/test-utils/mockConfig.js +16 -0
  97. package/dist/src/test-utils/mockConfig.js.map +1 -1
  98. package/dist/src/test-utils/mockSpinner.d.ts +6 -0
  99. package/dist/src/test-utils/mockSpinner.js +21 -0
  100. package/dist/src/test-utils/mockSpinner.js.map +1 -0
  101. package/dist/src/test-utils/render.d.ts +8 -1
  102. package/dist/src/test-utils/render.js +37 -11
  103. package/dist/src/test-utils/render.js.map +1 -1
  104. package/dist/src/ui/App.test.js +1 -1
  105. package/dist/src/ui/App.test.js.map +1 -1
  106. package/dist/src/ui/AppContainer.js +225 -99
  107. package/dist/src/ui/AppContainer.js.map +1 -1
  108. package/dist/src/ui/AppContainer.test.js +50 -38
  109. package/dist/src/ui/AppContainer.test.js.map +1 -1
  110. package/dist/src/ui/commands/chatCommand.js +15 -5
  111. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  112. package/dist/src/ui/commands/clearCommand.js +3 -1
  113. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  114. package/dist/src/ui/commands/directoryCommand.js +1 -1
  115. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  116. package/dist/src/ui/commands/extensionsCommand.js +22 -11
  117. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  118. package/dist/src/ui/commands/marketplaceCommand.d.ts +7 -0
  119. package/dist/src/ui/commands/marketplaceCommand.js +135 -0
  120. package/dist/src/ui/commands/marketplaceCommand.js.map +1 -0
  121. package/dist/src/ui/commands/mcpCommand.js +26 -7
  122. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  123. package/dist/src/ui/commands/mcpCommand.test.js +26 -0
  124. package/dist/src/ui/commands/mcpCommand.test.js.map +1 -1
  125. package/dist/src/ui/commands/planCommand.js +9 -0
  126. package/dist/src/ui/commands/planCommand.js.map +1 -1
  127. package/dist/src/ui/commands/planCommand.test.js +29 -0
  128. package/dist/src/ui/commands/planCommand.test.js.map +1 -1
  129. package/dist/src/ui/commands/restoreCommand.js +1 -1
  130. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  131. package/dist/src/ui/commands/rewindCommand.js +3 -1
  132. package/dist/src/ui/commands/rewindCommand.js.map +1 -1
  133. package/dist/src/ui/commands/rewindCommand.test.js +1 -1
  134. package/dist/src/ui/commands/rewindCommand.test.js.map +1 -1
  135. package/dist/src/ui/commands/setupGithubCommand.js +5 -5
  136. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  137. package/dist/src/ui/commands/skillsCommand.js +11 -1
  138. package/dist/src/ui/commands/skillsCommand.js.map +1 -1
  139. package/dist/src/ui/commands/skillsCommand.test.js +1 -0
  140. package/dist/src/ui/commands/skillsCommand.test.js.map +1 -1
  141. package/dist/src/ui/commands/{shellsCommand.d.ts → tasksCommand.d.ts} +1 -1
  142. package/dist/src/ui/commands/{shellsCommand.js → tasksCommand.js} +6 -6
  143. package/dist/src/ui/commands/tasksCommand.js.map +1 -0
  144. package/dist/src/ui/commands/tasksCommand.test.js +30 -0
  145. package/dist/src/ui/commands/tasksCommand.test.js.map +1 -0
  146. package/dist/src/ui/commands/types.d.ts +9 -1
  147. package/dist/src/ui/components/AnsiOutput.js +7 -5
  148. package/dist/src/ui/components/AnsiOutput.js.map +1 -1
  149. package/dist/src/ui/components/AnsiOutput.test.js +13 -0
  150. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
  151. package/dist/src/ui/components/AppHeader.js +11 -11
  152. package/dist/src/ui/components/AppHeader.js.map +1 -1
  153. package/dist/src/ui/components/AppHeader.test.js +6 -2
  154. package/dist/src/ui/components/AppHeader.test.js.map +1 -1
  155. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  156. package/dist/src/ui/components/AsciiArt.js +6 -6
  157. package/dist/src/ui/components/AskUserDialog.js +13 -13
  158. package/dist/src/ui/components/AskUserDialog.js.map +1 -1
  159. package/dist/src/ui/components/AskUserDialog.test.js +31 -0
  160. package/dist/src/ui/components/AskUserDialog.test.js.map +1 -1
  161. package/dist/src/ui/components/BackgroundTaskDisplay.d.ts +16 -0
  162. package/dist/src/ui/components/{BackgroundShellDisplay.js → BackgroundTaskDisplay.js} +12 -12
  163. package/dist/src/ui/components/BackgroundTaskDisplay.js.map +1 -0
  164. package/dist/src/ui/components/{BackgroundShellDisplay.test.js → BackgroundTaskDisplay.test.js} +26 -26
  165. package/dist/src/ui/components/BackgroundTaskDisplay.test.js.map +1 -0
  166. package/dist/src/ui/components/Composer.js +20 -208
  167. package/dist/src/ui/components/Composer.js.map +1 -1
  168. package/dist/src/ui/components/Composer.test.js +22 -17
  169. package/dist/src/ui/components/Composer.test.js.map +1 -1
  170. package/dist/src/ui/components/ContextSummaryDisplay.js +3 -1
  171. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  172. package/dist/src/ui/components/CopyModeWarning.js +3 -6
  173. package/dist/src/ui/components/CopyModeWarning.js.map +1 -1
  174. package/dist/src/ui/components/CopyModeWarning.test.js +7 -8
  175. package/dist/src/ui/components/CopyModeWarning.test.js.map +1 -1
  176. package/dist/src/ui/components/ExitPlanModeDialog.js +9 -0
  177. package/dist/src/ui/components/ExitPlanModeDialog.js.map +1 -1
  178. package/dist/src/ui/components/ExitPlanModeDialog.test.js +15 -3
  179. package/dist/src/ui/components/ExitPlanModeDialog.test.js.map +1 -1
  180. package/dist/src/ui/components/FolderTrustDialog.test.js +7 -8
  181. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  182. package/dist/src/ui/components/Footer.js +36 -9
  183. package/dist/src/ui/components/Footer.js.map +1 -1
  184. package/dist/src/ui/components/Footer.test.js +85 -6
  185. package/dist/src/ui/components/Footer.test.js.map +1 -1
  186. package/dist/src/ui/components/FooterConfigDialog.js +1 -0
  187. package/dist/src/ui/components/FooterConfigDialog.js.map +1 -1
  188. package/dist/src/ui/components/FooterConfigDialog.test.js +1 -1
  189. package/dist/src/ui/components/Help.test.js +1 -1
  190. package/dist/src/ui/components/Help.test.js.map +1 -1
  191. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -0
  192. package/dist/src/ui/components/HistoryItemDisplay.js +14 -12
  193. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  194. package/dist/src/ui/components/InputPrompt.d.ts +10 -5
  195. package/dist/src/ui/components/InputPrompt.js +195 -90
  196. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  197. package/dist/src/ui/components/InputPrompt.test.d.ts +12 -1
  198. package/dist/src/ui/components/InputPrompt.test.js +370 -160
  199. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  200. package/dist/src/ui/components/LoadingIndicator.js +1 -2
  201. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  202. package/dist/src/ui/components/LoadingIndicator.test.js +7 -0
  203. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  204. package/dist/src/ui/components/MainContent.d.ts +1 -1
  205. package/dist/src/ui/components/MainContent.js +105 -34
  206. package/dist/src/ui/components/MainContent.js.map +1 -1
  207. package/dist/src/ui/components/MainContent.test.js +12 -9
  208. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  209. package/dist/src/ui/components/MemoryUsageDisplay.d.ts +1 -0
  210. package/dist/src/ui/components/MemoryUsageDisplay.js +5 -2
  211. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  212. package/dist/src/ui/components/ModelDialog.js +50 -72
  213. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  214. package/dist/src/ui/components/ModelDialog.test.js +1 -0
  215. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  216. package/dist/src/ui/components/ModelQuotaDisplay.d.ts +18 -0
  217. package/dist/src/ui/components/ModelQuotaDisplay.js +104 -0
  218. package/dist/src/ui/components/ModelQuotaDisplay.js.map +1 -0
  219. package/dist/src/ui/components/ModelQuotaDisplay.test.d.ts +6 -0
  220. package/dist/src/ui/components/ModelQuotaDisplay.test.js +62 -0
  221. package/dist/src/ui/components/ModelQuotaDisplay.test.js.map +1 -0
  222. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +1 -1
  223. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
  224. package/dist/src/ui/components/ProgressBar.d.ts +13 -0
  225. package/dist/src/ui/components/ProgressBar.js +17 -0
  226. package/dist/src/ui/components/ProgressBar.js.map +1 -0
  227. package/dist/src/ui/components/ProgressBar.test.d.ts +6 -0
  228. package/dist/src/ui/components/ProgressBar.test.js +28 -0
  229. package/dist/src/ui/components/ProgressBar.test.js.map +1 -0
  230. package/dist/src/ui/components/StatsDisplay.d.ts +2 -2
  231. package/dist/src/ui/components/StatsDisplay.js +47 -128
  232. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  233. package/dist/src/ui/components/StatsDisplay.test.js +65 -136
  234. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
  235. package/dist/src/ui/components/StatusDisplay.js +1 -1
  236. package/dist/src/ui/components/StatusDisplay.js.map +1 -1
  237. package/dist/src/ui/components/StatusDisplay.test.js +3 -3
  238. package/dist/src/ui/components/StatusDisplay.test.js.map +1 -1
  239. package/dist/src/ui/components/StatusRow.d.ts +32 -0
  240. package/dist/src/ui/components/StatusRow.js +180 -0
  241. package/dist/src/ui/components/StatusRow.js.map +1 -0
  242. package/dist/src/ui/components/StatusRow.test.d.ts +6 -0
  243. package/dist/src/ui/components/StatusRow.test.js +99 -0
  244. package/dist/src/ui/components/StatusRow.test.js.map +1 -0
  245. package/dist/src/ui/components/ToastDisplay.d.ts +2 -1
  246. package/dist/src/ui/components/ToastDisplay.js +7 -5
  247. package/dist/src/ui/components/ToastDisplay.js.map +1 -1
  248. package/dist/src/ui/components/ToastDisplay.test.js +34 -20
  249. package/dist/src/ui/components/ToastDisplay.test.js.map +1 -1
  250. package/dist/src/ui/components/ToolConfirmationQueue.js +24 -9
  251. package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
  252. package/dist/src/ui/components/ToolConfirmationQueue.test.js +4 -6
  253. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
  254. package/dist/src/ui/components/UserIdentity.js +8 -5
  255. package/dist/src/ui/components/UserIdentity.js.map +1 -1
  256. package/dist/src/ui/components/messages/DenseToolMessage.d.ts +13 -0
  257. package/dist/src/ui/components/messages/DenseToolMessage.js +270 -0
  258. package/dist/src/ui/components/messages/DenseToolMessage.js.map +1 -0
  259. package/dist/src/ui/components/messages/DenseToolMessage.test.d.ts +6 -0
  260. package/dist/src/ui/components/messages/DenseToolMessage.test.js +383 -0
  261. package/dist/src/ui/components/messages/DenseToolMessage.test.js.map +1 -0
  262. package/dist/src/ui/components/messages/DiffRenderer.d.ts +18 -0
  263. package/dist/src/ui/components/messages/DiffRenderer.js +54 -34
  264. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  265. package/dist/src/ui/components/messages/DiffRenderer.test.js +12 -6
  266. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  267. package/dist/src/ui/components/messages/InfoMessage.d.ts +1 -0
  268. package/dist/src/ui/components/messages/InfoMessage.js +2 -2
  269. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  270. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js +1 -1
  271. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js.map +1 -1
  272. package/dist/src/ui/components/messages/ShellToolMessage.test.js +44 -33
  273. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -1
  274. package/dist/src/ui/components/messages/SubagentGroupDisplay.js +3 -2
  275. package/dist/src/ui/components/messages/SubagentGroupDisplay.js.map +1 -1
  276. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js +1 -1
  277. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js.map +1 -1
  278. package/dist/src/ui/components/messages/SubagentHistoryMessage.d.ts +13 -0
  279. package/dist/src/ui/components/messages/SubagentHistoryMessage.js +4 -0
  280. package/dist/src/ui/components/messages/SubagentHistoryMessage.js.map +1 -0
  281. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.d.ts +6 -0
  282. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js +68 -0
  283. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js.map +1 -0
  284. package/dist/src/ui/components/messages/SubagentProgressDisplay.d.ts +2 -1
  285. package/dist/src/ui/components/messages/SubagentProgressDisplay.js +2 -2
  286. package/dist/src/ui/components/messages/SubagentProgressDisplay.js.map +1 -1
  287. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js +0 -4
  288. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js.map +1 -1
  289. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +1 -0
  290. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +108 -70
  291. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  292. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +40 -25
  293. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  294. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.d.ts +6 -0
  295. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.js +147 -0
  296. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.js.map +1 -0
  297. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -0
  298. package/dist/src/ui/components/messages/ToolGroupMessage.js +219 -52
  299. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  300. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +55 -3
  301. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  302. package/dist/src/ui/components/messages/ToolMessage.test.js +8 -7
  303. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  304. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js +1 -1
  305. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js.map +1 -1
  306. package/dist/src/ui/components/messages/ToolResultDisplay.js +57 -15
  307. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  308. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +66 -3
  309. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
  310. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js +5 -4
  311. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js.map +1 -1
  312. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +3 -3
  313. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +1 -1
  314. package/dist/src/ui/components/messages/TopicMessage.d.ts +15 -0
  315. package/dist/src/ui/components/messages/TopicMessage.js +56 -0
  316. package/dist/src/ui/components/messages/TopicMessage.js.map +1 -0
  317. package/dist/src/ui/components/messages/TopicMessage.test.d.ts +6 -0
  318. package/dist/src/ui/components/messages/TopicMessage.test.js +77 -0
  319. package/dist/src/ui/components/messages/TopicMessage.test.js.map +1 -0
  320. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +1 -0
  321. package/dist/src/ui/components/shared/MaxSizedBox.js +10 -7
  322. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  323. package/dist/src/ui/components/shared/Scrollable.d.ts +3 -0
  324. package/dist/src/ui/components/shared/Scrollable.js +6 -2
  325. package/dist/src/ui/components/shared/Scrollable.js.map +1 -1
  326. package/dist/src/ui/components/shared/ScrollableList.d.ts +9 -12
  327. package/dist/src/ui/components/shared/ScrollableList.js +2 -2
  328. package/dist/src/ui/components/shared/ScrollableList.js.map +1 -1
  329. package/dist/src/ui/components/shared/VirtualizedList.d.ts +13 -1
  330. package/dist/src/ui/components/shared/VirtualizedList.js +148 -37
  331. package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -1
  332. package/dist/src/ui/components/shared/VirtualizedList.test.js +1 -10
  333. package/dist/src/ui/components/shared/VirtualizedList.test.js.map +1 -1
  334. package/dist/src/ui/components/shared/text-buffer.d.ts +1 -0
  335. package/dist/src/ui/components/shared/text-buffer.js +19 -21
  336. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  337. package/dist/src/ui/components/views/ExtensionDetails.d.ts +4 -1
  338. package/dist/src/ui/components/views/ExtensionDetails.js +14 -4
  339. package/dist/src/ui/components/views/ExtensionDetails.js.map +1 -1
  340. package/dist/src/ui/components/views/ExtensionDetails.test.js +25 -1
  341. package/dist/src/ui/components/views/ExtensionDetails.test.js.map +1 -1
  342. package/dist/src/ui/components/views/ExtensionRegistryView.js +19 -5
  343. package/dist/src/ui/components/views/ExtensionRegistryView.js.map +1 -1
  344. package/dist/src/ui/components/views/ExtensionRegistryView.test.js +38 -0
  345. package/dist/src/ui/components/views/ExtensionRegistryView.test.js.map +1 -1
  346. package/dist/src/ui/components/views/SkillsList.js +2 -1
  347. package/dist/src/ui/components/views/SkillsList.js.map +1 -1
  348. package/dist/src/ui/components/views/SkillsList.test.js +3 -1
  349. package/dist/src/ui/components/views/SkillsList.test.js.map +1 -1
  350. package/dist/src/ui/constants/tips.js +2 -2
  351. package/dist/src/ui/constants/tips.js.map +1 -1
  352. package/dist/src/ui/constants.d.ts +6 -0
  353. package/dist/src/ui/constants.js +15 -0
  354. package/dist/src/ui/constants.js.map +1 -1
  355. package/dist/src/ui/contexts/InputContext.d.ts +17 -0
  356. package/dist/src/ui/contexts/InputContext.js +15 -0
  357. package/dist/src/ui/contexts/InputContext.js.map +1 -0
  358. package/dist/src/ui/contexts/KeypressContext.js +1 -1
  359. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  360. package/dist/src/ui/contexts/KeypressContext.test.js +25 -1
  361. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  362. package/dist/src/ui/contexts/ScrollProvider.js +25 -3
  363. package/dist/src/ui/contexts/ScrollProvider.js.map +1 -1
  364. package/dist/src/ui/contexts/ScrollProvider.test.js +100 -0
  365. package/dist/src/ui/contexts/ScrollProvider.test.js.map +1 -1
  366. package/dist/src/ui/contexts/SessionContext.d.ts +2 -2
  367. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  368. package/dist/src/ui/contexts/ToolActionsContext.d.ts +6 -0
  369. package/dist/src/ui/contexts/ToolActionsContext.js +19 -11
  370. package/dist/src/ui/contexts/ToolActionsContext.js.map +1 -1
  371. package/dist/src/ui/contexts/ToolActionsContext.test.js +90 -7
  372. package/dist/src/ui/contexts/ToolActionsContext.test.js.map +1 -1
  373. package/dist/src/ui/contexts/UIActionsContext.d.ts +4 -3
  374. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  375. package/dist/src/ui/contexts/UIStateContext.d.ts +10 -16
  376. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  377. package/dist/src/ui/hooks/atCommandProcessor.test.js +2 -1
  378. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  379. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js +2 -1
  380. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js.map +1 -1
  381. package/dist/src/ui/hooks/shellReducer.d.ts +12 -10
  382. package/dist/src/ui/hooks/shellReducer.js +67 -37
  383. package/dist/src/ui/hooks/shellReducer.js.map +1 -1
  384. package/dist/src/ui/hooks/shellReducer.test.js +207 -36
  385. package/dist/src/ui/hooks/shellReducer.test.js.map +1 -1
  386. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  387. package/dist/src/ui/hooks/slashCommandProcessor.js +1 -1
  388. package/dist/src/ui/hooks/slashCommandProcessor.test.js +1 -1
  389. package/dist/src/ui/hooks/toolMapping.js +7 -0
  390. package/dist/src/ui/hooks/toolMapping.js.map +1 -1
  391. package/dist/src/ui/hooks/useAlternateBuffer.js +6 -1
  392. package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -1
  393. package/dist/src/ui/hooks/useAlternateBuffer.test.js +5 -0
  394. package/dist/src/ui/hooks/useAlternateBuffer.test.js.map +1 -1
  395. package/dist/src/ui/hooks/useAnimatedScrollbar.js +2 -2
  396. package/dist/src/ui/hooks/useAnimatedScrollbar.js.map +1 -1
  397. package/dist/src/ui/hooks/useAtCompletion.js +1 -1
  398. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  399. package/dist/src/ui/hooks/useBackgroundTaskManager.d.ts +22 -0
  400. package/dist/src/ui/hooks/useBackgroundTaskManager.js +58 -0
  401. package/dist/src/ui/hooks/useBackgroundTaskManager.js.map +1 -0
  402. package/dist/src/ui/hooks/{useBackgroundShellManager.test.js → useBackgroundTaskManager.test.js} +50 -50
  403. package/dist/src/ui/hooks/useBackgroundTaskManager.test.js.map +1 -0
  404. package/dist/src/ui/hooks/useBanner.d.ts +1 -0
  405. package/dist/src/ui/hooks/useBanner.js +16 -9
  406. package/dist/src/ui/hooks/useBanner.js.map +1 -1
  407. package/dist/src/ui/hooks/useBanner.test.js +7 -4
  408. package/dist/src/ui/hooks/useBanner.test.js.map +1 -1
  409. package/dist/src/ui/hooks/useBatchedScroll.js +2 -2
  410. package/dist/src/ui/hooks/useBatchedScroll.js.map +1 -1
  411. package/dist/src/ui/hooks/useCommandCompletion.d.ts +2 -1
  412. package/dist/src/ui/hooks/useCommandCompletion.js +13 -3
  413. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  414. package/dist/src/ui/hooks/useCommandCompletion.test.d.ts +1 -1
  415. package/dist/src/ui/hooks/useCommandCompletion.test.js +82 -6
  416. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  417. package/dist/src/ui/hooks/useComposerStatus.d.ts +21 -0
  418. package/dist/src/ui/hooks/useComposerStatus.js +78 -0
  419. package/dist/src/ui/hooks/useComposerStatus.js.map +1 -0
  420. package/dist/src/ui/hooks/useConsoleMessages.test.js +2 -2
  421. package/dist/src/ui/hooks/useConsoleMessages.test.js.map +1 -1
  422. package/dist/src/ui/hooks/useExecutionLifecycle.d.ts +28 -0
  423. package/dist/src/ui/hooks/{shellCommandProcessor.js → useExecutionLifecycle.js} +140 -58
  424. package/dist/src/ui/hooks/useExecutionLifecycle.js.map +1 -0
  425. package/dist/src/ui/hooks/useExecutionLifecycle.test.d.ts +6 -0
  426. package/dist/src/ui/hooks/{shellCommandProcessor.test.js → useExecutionLifecycle.test.js} +123 -81
  427. package/dist/src/ui/hooks/useExecutionLifecycle.test.js.map +1 -0
  428. package/dist/src/ui/hooks/useFolderTrust.js +1 -1
  429. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  430. package/dist/src/ui/hooks/useFolderTrust.test.js +1 -1
  431. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  432. package/dist/src/ui/hooks/useGeminiStream.d.ts +6 -6
  433. package/dist/src/ui/hooks/useGeminiStream.js +140 -38
  434. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  435. package/dist/src/ui/hooks/useGeminiStream.test.js +176 -22
  436. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  437. package/dist/src/ui/hooks/useGitBranchName.js +2 -2
  438. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  439. package/dist/src/ui/hooks/useLoadingIndicator.js +1 -1
  440. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  441. package/dist/src/ui/hooks/useLoadingIndicator.test.js +10 -0
  442. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  443. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +2 -2
  444. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
  445. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +1 -1
  446. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
  447. package/dist/src/ui/hooks/usePhraseCycler.js +4 -2
  448. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  449. package/dist/src/ui/hooks/useSessionBrowser.d.ts +1 -1
  450. package/dist/src/ui/hooks/useSessionBrowser.js +2 -2
  451. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  452. package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
  453. package/dist/src/ui/hooks/useSlashCompletion.js +37 -63
  454. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  455. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +1 -1
  456. package/dist/src/ui/hooks/useSlashCompletion.test.js +57 -47
  457. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  458. package/dist/src/ui/hooks/useToolScheduler.d.ts +2 -1
  459. package/dist/src/ui/hooks/useToolScheduler.js +55 -1
  460. package/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
  461. package/dist/src/ui/hooks/useToolScheduler.test.js +107 -9
  462. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  463. package/dist/src/ui/key/keyBindings.d.ts +9 -1
  464. package/dist/src/ui/key/keyBindings.js +40 -3
  465. package/dist/src/ui/key/keyBindings.js.map +1 -1
  466. package/dist/src/ui/key/keyMatchers.test.js +12 -2
  467. package/dist/src/ui/key/keyMatchers.test.js.map +1 -1
  468. package/dist/src/ui/layouts/DefaultAppLayout.js +8 -6
  469. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  470. package/dist/src/ui/layouts/DefaultAppLayout.test.js +27 -22
  471. package/dist/src/ui/layouts/DefaultAppLayout.test.js.map +1 -1
  472. package/dist/src/ui/noninteractive/nonInteractiveUi.js +1 -1
  473. package/dist/src/ui/themes/builtin/dark/tokyonight-dark.d.ts +7 -0
  474. package/dist/src/ui/themes/builtin/dark/tokyonight-dark.js +147 -0
  475. package/dist/src/ui/themes/builtin/dark/tokyonight-dark.js.map +1 -0
  476. package/dist/src/ui/themes/theme-manager.js +2 -0
  477. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  478. package/dist/src/ui/themes/theme.js +1 -1
  479. package/dist/src/ui/themes/theme.js.map +1 -1
  480. package/dist/src/ui/types.d.ts +10 -2
  481. package/dist/src/ui/types.js.map +1 -1
  482. package/dist/src/ui/utils/CodeColorizer.d.ts +1 -0
  483. package/dist/src/ui/utils/CodeColorizer.js +17 -18
  484. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  485. package/dist/src/ui/utils/ConsolePatcher.d.ts +1 -0
  486. package/dist/src/ui/utils/ConsolePatcher.js +12 -5
  487. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  488. package/dist/src/ui/utils/ConsolePatcher.test.d.ts +6 -0
  489. package/dist/src/ui/utils/ConsolePatcher.test.js +199 -0
  490. package/dist/src/ui/utils/ConsolePatcher.test.js.map +1 -0
  491. package/dist/src/ui/utils/TableRenderer.js +3 -3
  492. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  493. package/dist/src/ui/utils/borderStyles.d.ts +2 -2
  494. package/dist/src/ui/utils/borderStyles.js +2 -2
  495. package/dist/src/ui/utils/borderStyles.js.map +1 -1
  496. package/dist/src/ui/utils/directoryUtils.js +1 -1
  497. package/dist/src/ui/utils/directoryUtils.js.map +1 -1
  498. package/dist/src/ui/utils/fileUtils.d.ts +10 -0
  499. package/dist/src/ui/utils/fileUtils.js +17 -0
  500. package/dist/src/ui/utils/fileUtils.js.map +1 -0
  501. package/dist/src/ui/utils/terminalCapabilityManager.d.ts +1 -0
  502. package/dist/src/ui/utils/terminalCapabilityManager.js +8 -0
  503. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
  504. package/dist/src/ui/utils/terminalCapabilityManager.test.js +38 -0
  505. package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -1
  506. package/dist/src/ui/utils/toolLayoutUtils.d.ts +1 -1
  507. package/dist/src/ui/utils/toolLayoutUtils.js +1 -1
  508. package/dist/src/ui/utils/ui-sizing.test.js +1 -0
  509. package/dist/src/ui/utils/ui-sizing.test.js.map +1 -1
  510. package/dist/src/ui/utils/updateCheck.d.ts +1 -0
  511. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  512. package/dist/src/utils/activityLogger.js +16 -0
  513. package/dist/src/utils/activityLogger.js.map +1 -1
  514. package/dist/src/utils/cleanup.js +12 -5
  515. package/dist/src/utils/cleanup.js.map +1 -1
  516. package/dist/src/utils/commands.js +15 -0
  517. package/dist/src/utils/commands.js.map +1 -1
  518. package/dist/src/utils/commands.test.js +79 -0
  519. package/dist/src/utils/commands.test.js.map +1 -1
  520. package/dist/src/utils/envVarResolver.d.ts +5 -2
  521. package/dist/src/utils/envVarResolver.js +15 -6
  522. package/dist/src/utils/envVarResolver.js.map +1 -1
  523. package/dist/src/utils/envVarResolver.test.js +41 -24
  524. package/dist/src/utils/envVarResolver.test.js.map +1 -1
  525. package/dist/src/utils/errors.js +4 -4
  526. package/dist/src/utils/errors.js.map +1 -1
  527. package/dist/src/utils/events.d.ts +3 -1
  528. package/dist/src/utils/events.js +1 -0
  529. package/dist/src/utils/events.js.map +1 -1
  530. package/dist/src/utils/gitUtils.js +4 -4
  531. package/dist/src/utils/gitUtils.js.map +1 -1
  532. package/dist/src/utils/handleAutoUpdate.js +10 -3
  533. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  534. package/dist/src/utils/handleAutoUpdate.test.js +8 -2
  535. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  536. package/dist/src/utils/installationInfo.js +1 -1
  537. package/dist/src/utils/installationInfo.js.map +1 -1
  538. package/dist/src/utils/jsonoutput.js +1 -1
  539. package/dist/src/utils/jsonoutput.js.map +1 -1
  540. package/dist/src/utils/sandboxUtils.js +1 -1
  541. package/dist/src/utils/sandboxUtils.js.map +1 -1
  542. package/dist/src/utils/sessionCleanup.js +7 -30
  543. package/dist/src/utils/sessionCleanup.js.map +1 -1
  544. package/dist/src/utils/sessionCleanup.test.js +3 -0
  545. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  546. package/dist/src/utils/sessionUtils.js +1 -0
  547. package/dist/src/utils/sessionUtils.js.map +1 -1
  548. package/dist/src/utils/sessionUtils.test.js +179 -3
  549. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  550. package/dist/src/utils/sessions.js +1 -1
  551. package/dist/src/utils/sessions.js.map +1 -1
  552. package/dist/src/utils/skillUtils.js +3 -1
  553. package/dist/src/utils/skillUtils.js.map +1 -1
  554. package/dist/src/utils/skillUtils.test.js +4 -6
  555. package/dist/src/utils/skillUtils.test.js.map +1 -1
  556. package/dist/src/utils/terminalNotifications.js +2 -4
  557. package/dist/src/utils/terminalNotifications.js.map +1 -1
  558. package/dist/src/utils/terminalNotifications.test.js +5 -3
  559. package/dist/src/utils/terminalNotifications.test.js.map +1 -1
  560. package/dist/src/utils/userStartupWarnings.js +2 -2
  561. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  562. package/dist/tsconfig.tsbuildinfo +1 -1
  563. package/package.json +4 -4
  564. package/dist/src/ui/commands/shellsCommand.js.map +0 -1
  565. package/dist/src/ui/commands/shellsCommand.test.js +0 -29
  566. package/dist/src/ui/commands/shellsCommand.test.js.map +0 -1
  567. package/dist/src/ui/components/BackgroundShellDisplay.d.ts +0 -16
  568. package/dist/src/ui/components/BackgroundShellDisplay.js.map +0 -1
  569. package/dist/src/ui/components/BackgroundShellDisplay.test.js.map +0 -1
  570. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +0 -28
  571. package/dist/src/ui/hooks/shellCommandProcessor.js.map +0 -1
  572. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +0 -1
  573. package/dist/src/ui/hooks/useBackgroundShellManager.d.ts +0 -22
  574. package/dist/src/ui/hooks/useBackgroundShellManager.js +0 -58
  575. package/dist/src/ui/hooks/useBackgroundShellManager.js.map +0 -1
  576. package/dist/src/ui/hooks/useBackgroundShellManager.test.js.map +0 -1
  577. /package/dist/src/{ui/commands/shellsCommand.test.d.ts → nonInteractiveCliAgentSession.test.d.ts} +0 -0
  578. /package/dist/src/ui/{components/BackgroundShellDisplay.test.d.ts → commands/tasksCommand.test.d.ts} +0 -0
  579. /package/dist/src/ui/{hooks/shellCommandProcessor.test.d.ts → components/BackgroundTaskDisplay.test.d.ts} +0 -0
  580. /package/dist/src/ui/hooks/{useBackgroundShellManager.test.d.ts → useBackgroundTaskManager.test.d.ts} +0 -0
@@ -4,18 +4,19 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  * Copyright 2026 Google LLC
5
5
  * SPDX-License-Identifier: Apache-2.0
6
6
  */
7
- import { useMemo, useState, useCallback, useEffect, useRef } from 'react';
8
- import { ResizeObserver, useApp, useStdout, useStdin, } from 'ink';
7
+ import { useMemo, useState, useCallback, useEffect, useRef, useLayoutEffect, useContext, } from 'react';
8
+ import { ResizeObserver, useApp, useStdout, useStdin, AppContext as InkAppContext, } from 'ink';
9
9
  import { App } from './App.js';
10
10
  import { AppContext } from './contexts/AppContext.js';
11
11
  import { UIStateContext } from './contexts/UIStateContext.js';
12
12
  import { UIActionsContext, } from './contexts/UIActionsContext.js';
13
13
  import { ConfigContext } from './contexts/ConfigContext.js';
14
- import { AuthState, } from './types.js';
14
+ import { AuthState, MessageType, StreamingState, } from './types.js';
15
15
  import { checkPermissions } from './hooks/atCommandProcessor.js';
16
- import { MessageType, StreamingState } from './types.js';
17
16
  import { ToolActionsProvider } from './contexts/ToolActionsContext.js';
18
- import { IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, flattenMemory, writeToStdout, disableMouseEvents, enterAlternateScreen, enableMouseEvents, disableLineWrapping, shouldEnterAlternateScreen, startupProfiler, SessionStartSource, SessionEndReason, generateSummary, ChangeAuthRequestedError, ProjectIdRequiredError, buildUserSteeringHintPrompt, logBillingEvent, ApiKeyUpdatedEvent, } from '@google/gemini-cli-core';
17
+ import { MouseProvider } from './contexts/MouseContext.js';
18
+ import { ScrollProvider } from './contexts/ScrollProvider.js';
19
+ import { IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, flattenMemory, writeToStdout, disableMouseEvents, enterAlternateScreen, enableMouseEvents, disableLineWrapping, shouldEnterAlternateScreen, startupProfiler, SessionStartSource, SessionEndReason, generateSummary, ChangeAuthRequestedError, ProjectIdRequiredError, buildUserSteeringHintPrompt, logBillingEvent, ApiKeyUpdatedEvent, startMemoryService, } from '@google/gemini-cli-core';
19
20
  import { validateAuthMethod } from '../config/auth.js';
20
21
  import process from 'node:process';
21
22
  import { useHistory } from './hooks/useHistoryManager.js';
@@ -39,7 +40,7 @@ import { computeTerminalTitle } from '../utils/windowTitle.js';
39
40
  import { useTextBuffer } from './components/shared/text-buffer.js';
40
41
  import { useLogger } from './hooks/useLogger.js';
41
42
  import { useGeminiStream } from './hooks/useGeminiStream.js';
42
- import {} from './hooks/shellCommandProcessor.js';
43
+ import {} from './hooks/useExecutionLifecycle.js';
43
44
  import { useVim } from './hooks/vim.js';
44
45
  import { SettingScope } from '../config/settings.js';
45
46
  import {} from '../core/initializer.js';
@@ -77,7 +78,7 @@ import { useInputHistoryStore } from './hooks/useInputHistoryStore.js';
77
78
  import { useBanner } from './hooks/useBanner.js';
78
79
  import { useTerminalSetupPrompt } from './utils/terminalSetup.js';
79
80
  import { useHookDisplayState } from './hooks/useHookDisplayState.js';
80
- import { useBackgroundShellManager } from './hooks/useBackgroundShellManager.js';
81
+ import { useBackgroundTaskManager } from './hooks/useBackgroundTaskManager.js';
81
82
  import { WARNING_PROMPT_DURATION_MS, QUEUE_ERROR_DISPLAY_DURATION_MS, EXPAND_HINT_DURATION_MS, } from './constants.js';
82
83
  import { LoginWithGoogleRestartDialog } from './auth/LoginWithGoogleRestartDialog.js';
83
84
  import { NewAgentsChoice } from './components/NewAgentsNotification.js';
@@ -89,10 +90,11 @@ import { useIsHelpDismissKey } from './utils/shortcutsHelp.js';
89
90
  import { useSuspend } from './hooks/useSuspend.js';
90
91
  import { useRunEventNotifications } from './hooks/useRunEventNotifications.js';
91
92
  import { isNotificationsEnabled } from '../utils/terminalNotifications.js';
92
- import { isToolExecuting, isToolAwaitingConfirmation, getAllToolCalls, } from './utils/historyUtils.js';
93
+ import { getLastTurnToolCallIds, isToolExecuting, isToolAwaitingConfirmation, getAllToolCalls, } from './utils/historyUtils.js';
93
94
  import { useRepeatedKeyPress } from './hooks/useRepeatedKeyPress.js';
94
95
  import { useVisibilityToggle, APPROVAL_MODE_REVEAL_DURATION_MS, } from './hooks/useVisibilityToggle.js';
95
96
  import { useKeyMatchers } from './hooks/useKeyMatchers.js';
97
+ import { InputContext } from './contexts/InputContext.js';
96
98
  /**
97
99
  * The fraction of the terminal width to allocate to the shell.
98
100
  * This provides horizontal padding.
@@ -110,11 +112,25 @@ export const AppContainer = (props) => {
110
112
  const settings = useSettings();
111
113
  const { reset } = useOverflowActions();
112
114
  const notificationsEnabled = isNotificationsEnabled(settings);
115
+ const { setOptions, dumpCurrentFrame, startRecording, stopRecording } = useContext(InkAppContext);
116
+ const recordingFilenameRef = useRef(null);
113
117
  const historyManager = useHistory({
114
118
  chatRecordingService: config.getGeminiClient()?.getChatRecordingService(),
115
119
  });
116
120
  useMemoryMonitor(historyManager);
117
121
  const isAlternateBuffer = config.getUseAlternateBuffer();
122
+ const [mouseMode, setMouseMode] = useState(() => config.getUseAlternateBuffer());
123
+ useEffect(() => {
124
+ setOptions({
125
+ stickyHeadersInBackbuffer: mouseMode,
126
+ });
127
+ if (mouseMode) {
128
+ enableMouseEvents();
129
+ }
130
+ else {
131
+ disableMouseEvents();
132
+ }
133
+ }, [mouseMode, setOptions]);
118
134
  const [corgiMode, setCorgiMode] = useState(false);
119
135
  const [forceRerenderKey, setForceRerenderKey] = useState(0);
120
136
  const [debugMessage, setDebugMessage] = useState('');
@@ -128,10 +144,37 @@ export const AppContainer = (props) => {
128
144
  const [customDialog, setCustomDialog] = useState(null);
129
145
  const [copyModeEnabled, setCopyModeEnabled] = useState(false);
130
146
  const [pendingRestorePrompt, setPendingRestorePrompt] = useState(false);
131
- const toggleBackgroundShellRef = useRef(() => { });
132
- const isBackgroundShellVisibleRef = useRef(false);
133
- const backgroundShellsRef = useRef(new Map());
147
+ const toggleBackgroundTasksRef = useRef(() => { });
148
+ const isBackgroundTaskVisibleRef = useRef(false);
149
+ const backgroundTasksRef = useRef(new Map());
134
150
  const [adminSettingsChanged, setAdminSettingsChanged] = useState(false);
151
+ const [expandedTools, setExpandedTools] = useState(new Set());
152
+ const toggleExpansion = useCallback((callId) => {
153
+ setExpandedTools((prev) => {
154
+ const next = new Set(prev);
155
+ if (next.has(callId)) {
156
+ next.delete(callId);
157
+ }
158
+ else {
159
+ next.add(callId);
160
+ }
161
+ return next;
162
+ });
163
+ }, []);
164
+ const toggleAllExpansion = useCallback((callIds) => {
165
+ setExpandedTools((prev) => {
166
+ const next = new Set(prev);
167
+ const anyCollapsed = callIds.some((id) => !next.has(id));
168
+ if (anyCollapsed) {
169
+ callIds.forEach((id) => next.add(id));
170
+ }
171
+ else {
172
+ callIds.forEach((id) => next.delete(id));
173
+ }
174
+ return next;
175
+ });
176
+ }, []);
177
+ const isExpanded = useCallback((callId) => expandedTools.has(callId), [expandedTools]);
135
178
  const [shellModeActive, setShellModeActive] = useState(false);
136
179
  const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] = useState(false);
137
180
  const [historyRemountKey, setHistoryRemountKey] = useState(0);
@@ -246,6 +289,12 @@ export const AppContainer = (props) => {
246
289
  }
247
290
  setConfigInitialized(true);
248
291
  startupProfiler.flush(config);
292
+ // Fire-and-forget memory service (skill extraction from past sessions)
293
+ if (config.isMemoryManagerEnabled()) {
294
+ startMemoryService(config).catch((e) => {
295
+ debugLogger.error('Failed to start memory service:', e);
296
+ });
297
+ }
249
298
  const sessionStartSource = resumedSessionData
250
299
  ? SessionStartSource.Resume
251
300
  : SessionStartSource.Startup;
@@ -279,7 +328,7 @@ export const AppContainer = (props) => {
279
328
  // Turn off mouse scroll.
280
329
  disableMouseEvents();
281
330
  // Kill all background shells
282
- await Promise.all(Array.from(backgroundShellsRef.current.keys()).map((pid) => ShellExecutionService.kill(pid)));
331
+ await Promise.all(Array.from(backgroundTasksRef.current.keys()).map((pid) => ShellExecutionService.kill(pid)));
283
332
  const ideClient = await IdeClient.getInstance();
284
333
  await ideClient.disconnect();
285
334
  // Fire SessionEnd hook on cleanup (only if hooks are enabled)
@@ -369,11 +418,11 @@ export const AppContainer = (props) => {
369
418
  addItem: historyManager.addItem,
370
419
  });
371
420
  const refreshStatic = useCallback(() => {
372
- if (!isAlternateBuffer) {
421
+ if (!isAlternateBuffer && !config.getUseTerminalBuffer()) {
373
422
  stdout.write(ansiEscapes.clearTerminal);
423
+ setHistoryRemountKey((prev) => prev + 1);
374
424
  }
375
- setHistoryRemountKey((prev) => prev + 1);
376
- }, [setHistoryRemountKey, isAlternateBuffer, stdout]);
425
+ }, [setHistoryRemountKey, isAlternateBuffer, stdout, config]);
377
426
  const shouldUseAlternateScreen = shouldEnterAlternateScreen(isAlternateBuffer, config.getScreenReader());
378
427
  const handleEditorClose = useCallback(() => {
379
428
  if (shouldUseAlternateScreen) {
@@ -449,7 +498,7 @@ export const AppContainer = (props) => {
449
498
  const { isSessionBrowserOpen, openSessionBrowser, closeSessionBrowser, handleResumeSession, handleDeleteSession: handleDeleteSessionSync, } = useSessionBrowser(config, loadHistoryForResume);
450
499
  // Wrap handleDeleteSession to return a Promise for UIActions interface
451
500
  const handleDeleteSession = useCallback(async (session) => {
452
- handleDeleteSessionSync(session);
501
+ await handleDeleteSessionSync(session);
453
502
  }, [handleDeleteSessionSync]);
454
503
  // Create handleAuthSelect wrapper for backward compatibility
455
504
  const handleAuthSelect = useCallback(async (authType, scope) => {
@@ -553,7 +602,7 @@ Logging in with Google... Restarting Cell CLI to continue.
553
602
  ]);
554
603
  const { isModelDialogOpen, openModelDialog, closeModelDialog } = useModelCommand();
555
604
  const { toggleVimEnabled } = useVimMode();
556
- const setIsBackgroundShellListOpenRef = useRef(() => { });
605
+ const setIsBackgroundTaskListOpenRef = useRef(() => { });
557
606
  const [shortcutsHelpVisible, setShortcutsHelpVisible] = useState(false);
558
607
  const { cleanUiDetailsVisible, setCleanUiDetailsVisible, toggleCleanUiDetailsVisible, revealCleanUiDetailsTemporarily, } = useVisibilityToggle();
559
608
  const slashCommandActions = useMemo(() => ({
@@ -600,15 +649,15 @@ Logging in with Google... Restarting Cell CLI to continue.
600
649
  toggleDebugProfiler,
601
650
  dispatchExtensionStateUpdate,
602
651
  addConfirmUpdateExtensionRequest,
603
- toggleBackgroundShell: () => {
604
- toggleBackgroundShellRef.current();
605
- if (!isBackgroundShellVisibleRef.current) {
652
+ toggleBackgroundTasks: () => {
653
+ toggleBackgroundTasksRef.current();
654
+ if (!isBackgroundTaskVisibleRef.current) {
606
655
  setEmbeddedShellFocused(true);
607
- if (backgroundShellsRef.current.size > 1) {
608
- setIsBackgroundShellListOpenRef.current(true);
656
+ if (backgroundTasksRef.current.size > 1) {
657
+ setIsBackgroundTaskListOpenRef.current(true);
609
658
  }
610
659
  else {
611
- setIsBackgroundShellListOpenRef.current(false);
660
+ setIsBackgroundTaskListOpenRef.current(false);
612
661
  }
613
662
  }
614
663
  },
@@ -662,7 +711,8 @@ Logging in with Google... Restarting Cell CLI to continue.
662
711
  let flattenedMemory;
663
712
  let fileCount;
664
713
  if (config.isJitContextEnabled()) {
665
- await config.getContextManager()?.refresh();
714
+ await config.getMemoryContextManager()?.refresh();
715
+ config.updateSystemInstructionIfInitialized();
666
716
  flattenedMemory = flattenMemory(config.getUserMemory());
667
717
  fileCount = config.getGeminiMdFileCount();
668
718
  }
@@ -725,7 +775,7 @@ Logging in with Google... Restarting Cell CLI to continue.
725
775
  }, []);
726
776
  useEffect(() => {
727
777
  const hintListener = (text, source) => {
728
- if (source !== 'user_steering') {
778
+ if (source !== 'user_steering' && source !== 'background_completion') {
729
779
  return;
730
780
  }
731
781
  pendingHintsRef.current.push(text);
@@ -736,22 +786,21 @@ Logging in with Google... Restarting Cell CLI to continue.
736
786
  config.injectionService.offInjection(hintListener);
737
787
  };
738
788
  }, [config]);
739
- const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, pendingToolCalls, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, lastOutputTime, backgroundShellCount, isBackgroundShellVisible, toggleBackgroundShell, backgroundCurrentShell, backgroundShells, dismissBackgroundShell, retryStatus, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused, consumePendingHints);
789
+ const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, pendingToolCalls, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, lastOutputTime, backgroundTaskCount, isBackgroundTaskVisible, toggleBackgroundTasks, backgroundCurrentExecution, backgroundTasks, dismissBackgroundTask, retryStatus, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused, consumePendingHints);
740
790
  const pendingHistoryItems = useMemo(() => [...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems], [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
741
- const hasPendingToolConfirmation = useMemo(() => isToolAwaitingConfirmation(pendingHistoryItems), [pendingHistoryItems]);
742
- toggleBackgroundShellRef.current = toggleBackgroundShell;
743
- isBackgroundShellVisibleRef.current = isBackgroundShellVisible;
744
- backgroundShellsRef.current = backgroundShells;
745
- const { activeBackgroundShellPid, setIsBackgroundShellListOpen, isBackgroundShellListOpen, setActiveBackgroundShellPid, backgroundShellHeight, } = useBackgroundShellManager({
746
- backgroundShells,
747
- backgroundShellCount,
748
- isBackgroundShellVisible,
791
+ toggleBackgroundTasksRef.current = toggleBackgroundTasks;
792
+ isBackgroundTaskVisibleRef.current = isBackgroundTaskVisible;
793
+ backgroundTasksRef.current = backgroundTasks;
794
+ const { activeBackgroundTaskPid, setIsBackgroundTaskListOpen, isBackgroundTaskListOpen, setActiveBackgroundTaskPid, backgroundTaskHeight, } = useBackgroundTaskManager({
795
+ backgroundTasks,
796
+ backgroundTaskCount,
797
+ isBackgroundTaskVisible,
749
798
  activePtyId,
750
799
  embeddedShellFocused,
751
800
  setEmbeddedShellFocused,
752
801
  terminalHeight,
753
802
  });
754
- setIsBackgroundShellListOpenRef.current = setIsBackgroundShellListOpen;
803
+ setIsBackgroundTaskListOpenRef.current = setIsBackgroundTaskListOpen;
755
804
  const lastOutputTimeRef = useRef(0);
756
805
  useEffect(() => {
757
806
  lastOutputTimeRef.current = lastOutputTime;
@@ -935,7 +984,19 @@ Logging in with Google... Restarting Cell CLI to continue.
935
984
  streamingState === StreamingState.WaitingForConfirmation) &&
936
985
  !proQuotaRequest;
937
986
  const observerRef = useRef(null);
987
+ useEffect(() => () => {
988
+ observerRef.current?.disconnect();
989
+ }, []);
938
990
  const [controlsHeight, setControlsHeight] = useState(0);
991
+ const [lastNonCopyControlsHeight, setLastNonCopyControlsHeight] = useState(0);
992
+ useLayoutEffect(() => {
993
+ if (!copyModeEnabled && controlsHeight > 0) {
994
+ setLastNonCopyControlsHeight(controlsHeight);
995
+ }
996
+ }, [copyModeEnabled, controlsHeight]);
997
+ const stableControlsHeight = copyModeEnabled && lastNonCopyControlsHeight > 0
998
+ ? lastNonCopyControlsHeight
999
+ : controlsHeight;
939
1000
  const mainControlsRef = useCallback((node) => {
940
1001
  if (observerRef.current) {
941
1002
  observerRef.current.disconnect();
@@ -953,8 +1014,8 @@ Logging in with Google... Restarting Cell CLI to continue.
953
1014
  observerRef.current = observer;
954
1015
  }
955
1016
  }, []);
956
- // Compute available terminal height based on controls measurement
957
- const availableTerminalHeight = Math.max(0, terminalHeight - controlsHeight - backgroundShellHeight - 1);
1017
+ // Compute available terminal height based on stable controls measurement
1018
+ const availableTerminalHeight = Math.max(0, terminalHeight - stableControlsHeight - backgroundTaskHeight - 1);
958
1019
  config.setShellExecutionConfig({
959
1020
  terminalWidth: Math.floor(terminalWidth * SHELL_WIDTH_FRACTION),
960
1021
  terminalHeight: Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1),
@@ -1142,6 +1203,13 @@ Logging in with Google... Restarting Cell CLI to continue.
1142
1203
  if (shortcutsHelpVisible && isHelpDismissKey(key)) {
1143
1204
  setShortcutsHelpVisible(false);
1144
1205
  }
1206
+ if (keyMatchers[Command.TOGGLE_MOUSE_MODE](key)) {
1207
+ setMouseMode((prev) => !prev);
1208
+ if (mouseMode && !isAlternateBuffer) {
1209
+ appEvents.emit(AppEvent.ScrollToBottom);
1210
+ }
1211
+ return true;
1212
+ }
1145
1213
  if (isAlternateBuffer && keyMatchers[Command.TOGGLE_COPY_MODE](key)) {
1146
1214
  setCopyModeEnabled(true);
1147
1215
  disableMouseEvents();
@@ -1166,6 +1234,33 @@ Logging in with Google... Restarting Cell CLI to continue.
1166
1234
  else if (keyMatchers[Command.SUSPEND_APP](key)) {
1167
1235
  handleSuspend();
1168
1236
  }
1237
+ else if (keyMatchers[Command.DUMP_FRAME](key)) {
1238
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
1239
+ const filename = `snapshot-${timestamp}.json`;
1240
+ if (dumpCurrentFrame) {
1241
+ dumpCurrentFrame(filename);
1242
+ debugLogger.log(`Dumped frame to: ${filename}`);
1243
+ }
1244
+ return true;
1245
+ }
1246
+ else if (keyMatchers[Command.START_RECORDING](key)) {
1247
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
1248
+ const filename = `recording-${timestamp}.json`;
1249
+ if (startRecording) {
1250
+ startRecording(filename);
1251
+ recordingFilenameRef.current = filename;
1252
+ debugLogger.log(`Started recording to: ${filename}`);
1253
+ }
1254
+ return true;
1255
+ }
1256
+ else if (keyMatchers[Command.STOP_RECORDING](key)) {
1257
+ if (stopRecording) {
1258
+ stopRecording();
1259
+ debugLogger.log(`Stopped recording, saved to: ${recordingFilenameRef.current ?? 'unknown'}`);
1260
+ recordingFilenameRef.current = null;
1261
+ }
1262
+ return true;
1263
+ }
1169
1264
  else if (keyMatchers[Command.TOGGLE_COPY_MODE](key) &&
1170
1265
  !isAlternateBuffer) {
1171
1266
  showTransientMessage({
@@ -1174,13 +1269,19 @@ Logging in with Google... Restarting Cell CLI to continue.
1174
1269
  });
1175
1270
  return true;
1176
1271
  }
1272
+ const toggleLastTurnTools = () => {
1273
+ triggerExpandHint(true);
1274
+ const targetToolCallIds = getLastTurnToolCallIds(historyManager.history, pendingHistoryItems);
1275
+ if (targetToolCallIds.length > 0) {
1276
+ toggleAllExpansion(targetToolCallIds);
1277
+ }
1278
+ };
1177
1279
  let enteringConstrainHeightMode = false;
1178
1280
  if (!constrainHeight) {
1179
1281
  enteringConstrainHeightMode = true;
1180
1282
  setConstrainHeight(true);
1181
1283
  if (keyMatchers[Command.SHOW_MORE_LINES](key)) {
1182
- // If the user manually collapses the view, show the hint and reset the x-second timer.
1183
- triggerExpandHint(true);
1284
+ toggleLastTurnTools();
1184
1285
  }
1185
1286
  if (!isAlternateBuffer) {
1186
1287
  refreshStatic();
@@ -1221,16 +1322,13 @@ Logging in with Google... Restarting Cell CLI to continue.
1221
1322
  else if (keyMatchers[Command.SHOW_MORE_LINES](key) &&
1222
1323
  !enteringConstrainHeightMode) {
1223
1324
  setConstrainHeight(false);
1224
- // If the user manually expands the view, show the hint and reset the x-second timer.
1225
- triggerExpandHint(true);
1226
- if (!isAlternateBuffer) {
1227
- refreshStatic();
1228
- }
1325
+ toggleLastTurnTools();
1326
+ refreshStatic();
1229
1327
  return true;
1230
1328
  }
1231
1329
  else if ((keyMatchers[Command.FOCUS_SHELL_INPUT](key) ||
1232
1330
  keyMatchers[Command.UNFOCUS_BACKGROUND_SHELL_LIST](key)) &&
1233
- (activePtyId || (isBackgroundShellVisible && backgroundShells.size > 0))) {
1331
+ (activePtyId || (isBackgroundTaskVisible && backgroundTasks.size > 0))) {
1234
1332
  if (embeddedShellFocused) {
1235
1333
  const capturedTime = lastOutputTimeRef.current;
1236
1334
  if (tabFocusTimeoutRef.current)
@@ -1249,13 +1347,13 @@ Logging in with Google... Restarting Cell CLI to continue.
1249
1347
  return false;
1250
1348
  }
1251
1349
  const isIdle = Date.now() - lastOutputTimeRef.current >= 100;
1252
- if (isIdle && !activePtyId && !isBackgroundShellVisible) {
1350
+ if (isIdle && !activePtyId && !isBackgroundTaskVisible) {
1253
1351
  if (tabFocusTimeoutRef.current)
1254
1352
  clearTimeout(tabFocusTimeoutRef.current);
1255
- toggleBackgroundShell();
1353
+ toggleBackgroundTasks();
1256
1354
  setEmbeddedShellFocused(true);
1257
- if (backgroundShells.size > 1)
1258
- setIsBackgroundShellListOpen(true);
1355
+ if (backgroundTasks.size > 1)
1356
+ setIsBackgroundTaskListOpen(true);
1259
1357
  return true;
1260
1358
  }
1261
1359
  setEmbeddedShellFocused(true);
@@ -1271,16 +1369,16 @@ Logging in with Google... Restarting Cell CLI to continue.
1271
1369
  }
1272
1370
  else if (keyMatchers[Command.TOGGLE_BACKGROUND_SHELL](key)) {
1273
1371
  if (activePtyId) {
1274
- backgroundCurrentShell();
1372
+ backgroundCurrentExecution();
1275
1373
  // After backgrounding, we explicitly do NOT show or focus the background UI.
1276
1374
  }
1277
1375
  else {
1278
- toggleBackgroundShell();
1376
+ toggleBackgroundTasks();
1279
1377
  // Toggle focus based on intent: if we were hiding, unfocus; if showing, focus.
1280
- if (!isBackgroundShellVisible && backgroundShells.size > 0) {
1378
+ if (!isBackgroundTaskVisible && backgroundTasks.size > 0) {
1281
1379
  setEmbeddedShellFocused(true);
1282
- if (backgroundShells.size > 1) {
1283
- setIsBackgroundShellListOpen(true);
1380
+ if (backgroundTasks.size > 1) {
1381
+ setIsBackgroundTaskListOpen(true);
1284
1382
  }
1285
1383
  }
1286
1384
  else {
@@ -1290,11 +1388,11 @@ Logging in with Google... Restarting Cell CLI to continue.
1290
1388
  return true;
1291
1389
  }
1292
1390
  else if (keyMatchers[Command.TOGGLE_BACKGROUND_SHELL_LIST](key)) {
1293
- if (backgroundShells.size > 0 && isBackgroundShellVisible) {
1391
+ if (backgroundTasks.size > 0 && isBackgroundTaskVisible) {
1294
1392
  if (!embeddedShellFocused) {
1295
1393
  setEmbeddedShellFocused(true);
1296
1394
  }
1297
- setIsBackgroundShellListOpen(true);
1395
+ setIsBackgroundTaskListOpen(true);
1298
1396
  }
1299
1397
  return true;
1300
1398
  }
@@ -1318,11 +1416,11 @@ Logging in with Google... Restarting Cell CLI to continue.
1318
1416
  tabFocusTimeoutRef,
1319
1417
  isAlternateBuffer,
1320
1418
  shortcutsHelpVisible,
1321
- backgroundCurrentShell,
1322
- toggleBackgroundShell,
1323
- backgroundShells,
1324
- isBackgroundShellVisible,
1325
- setIsBackgroundShellListOpen,
1419
+ backgroundCurrentExecution,
1420
+ toggleBackgroundTasks,
1421
+ backgroundTasks,
1422
+ isBackgroundTaskVisible,
1423
+ setIsBackgroundTaskListOpen,
1326
1424
  lastOutputTimeRef,
1327
1425
  showTransientMessage,
1328
1426
  settings.merged.general.devtools,
@@ -1330,6 +1428,13 @@ Logging in with Google... Restarting Cell CLI to continue.
1330
1428
  triggerExpandHint,
1331
1429
  keyMatchers,
1332
1430
  isHelpDismissKey,
1431
+ historyManager.history,
1432
+ pendingHistoryItems,
1433
+ toggleAllExpansion,
1434
+ dumpCurrentFrame,
1435
+ startRecording,
1436
+ stopRecording,
1437
+ mouseMode,
1333
1438
  ]);
1334
1439
  useKeypress(handleGlobalKeypress, { isActive: true, priority: true });
1335
1440
  useKeypress((key) => {
@@ -1342,7 +1447,9 @@ Logging in with Google... Restarting Cell CLI to continue.
1342
1447
  return false;
1343
1448
  }
1344
1449
  setCopyModeEnabled(false);
1345
- enableMouseEvents();
1450
+ if (mouseMode) {
1451
+ enableMouseEvents();
1452
+ }
1346
1453
  return true;
1347
1454
  }, {
1348
1455
  isActive: copyModeEnabled,
@@ -1406,12 +1513,21 @@ Logging in with Google... Restarting Cell CLI to continue.
1406
1513
  debugLogger.warn(`[Feedback Details for "${payload.message}"]`, payload.error);
1407
1514
  }
1408
1515
  };
1516
+ const handleHookSystemMessage = (payload) => {
1517
+ historyManager.addItem({
1518
+ type: MessageType.INFO,
1519
+ text: payload.message,
1520
+ source: payload.hookName,
1521
+ }, Date.now());
1522
+ };
1409
1523
  coreEvents.on(CoreEvent.UserFeedback, handleUserFeedback);
1524
+ coreEvents.on(CoreEvent.HookSystemMessage, handleHookSystemMessage);
1410
1525
  // Flush any messages that happened during startup before this component
1411
1526
  // mounted.
1412
1527
  coreEvents.drainBacklogs();
1413
1528
  return () => {
1414
1529
  coreEvents.off(CoreEvent.UserFeedback, handleUserFeedback);
1530
+ coreEvents.off(CoreEvent.HookSystemMessage, handleHookSystemMessage);
1415
1531
  };
1416
1532
  }, [historyManager]);
1417
1533
  const nightly = props.version.includes('nightly');
@@ -1443,6 +1559,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1443
1559
  isSessionBrowserOpen ||
1444
1560
  authState === AuthState.AwaitingApiKeyInput ||
1445
1561
  !!newAgents;
1562
+ const hasPendingToolConfirmation = useMemo(() => isToolAwaitingConfirmation(pendingHistoryItems), [pendingHistoryItems]);
1446
1563
  const hasConfirmUpdateExtensionRequests = confirmUpdateExtensionRequests.length > 0;
1447
1564
  const hasLoopDetectionConfirmationRequest = !!loopDetectionConfirmationRequest;
1448
1565
  const hasPendingActionRequired = hasPendingToolConfirmation ||
@@ -1458,7 +1575,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1458
1575
  const loadingPhrases = settings.merged.ui.loadingPhrases;
1459
1576
  const showStatusTips = loadingPhrases === 'tips' || loadingPhrases === 'all';
1460
1577
  const showStatusWit = loadingPhrases === 'witty' || loadingPhrases === 'all';
1461
- const showLoadingIndicator = (!embeddedShellFocused || isBackgroundShellVisible) &&
1578
+ const showLoadingIndicator = (!embeddedShellFocused || isBackgroundTaskVisible) &&
1462
1579
  streamingState === StreamingState.Responding &&
1463
1580
  !hasPendingActionRequired;
1464
1581
  let estimatedStatusLength = 0;
@@ -1577,6 +1694,23 @@ Logging in with Google... Restarting Cell CLI to continue.
1577
1694
  isMounted = false;
1578
1695
  };
1579
1696
  }, [config, refreshStatic]);
1697
+ const inputState = useMemo(() => ({
1698
+ buffer,
1699
+ userMessages: inputHistory,
1700
+ shellModeActive,
1701
+ showEscapePrompt,
1702
+ copyModeEnabled,
1703
+ inputWidth,
1704
+ suggestionsWidth,
1705
+ }), [
1706
+ buffer,
1707
+ inputHistory,
1708
+ shellModeActive,
1709
+ showEscapePrompt,
1710
+ copyModeEnabled,
1711
+ inputWidth,
1712
+ suggestionsWidth,
1713
+ ]);
1580
1714
  const uiState = useMemo(() => ({
1581
1715
  history: historyManager.history,
1582
1716
  historyManager,
@@ -1593,6 +1727,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1593
1727
  editorError,
1594
1728
  isEditorDialogOpen,
1595
1729
  showPrivacyNotice,
1730
+ mouseMode,
1596
1731
  corgiMode,
1597
1732
  debugMessage,
1598
1733
  awaitingFeedback,
@@ -1623,11 +1758,6 @@ Logging in with Google... Restarting Cell CLI to continue.
1623
1758
  initError,
1624
1759
  pendingGeminiHistoryItems,
1625
1760
  thought,
1626
- shellModeActive,
1627
- userMessages: inputHistory,
1628
- buffer,
1629
- inputWidth,
1630
- suggestionsWidth,
1631
1761
  isInputActive,
1632
1762
  isResuming,
1633
1763
  shouldShowIdePrompt,
@@ -1643,7 +1773,6 @@ Logging in with Google... Restarting Cell CLI to continue.
1643
1773
  renderMarkdown,
1644
1774
  ctrlCPressedOnce: ctrlCPressCount >= 1,
1645
1775
  ctrlDPressedOnce: ctrlDPressCount >= 1,
1646
- showEscapePrompt,
1647
1776
  shortcutsHelpVisible,
1648
1777
  cleanUiDetailsVisible,
1649
1778
  isFocused,
@@ -1670,6 +1799,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1670
1799
  contextFileNames,
1671
1800
  errorCount,
1672
1801
  availableTerminalHeight,
1802
+ stableControlsHeight,
1673
1803
  mainAreaWidth,
1674
1804
  staticAreaMaxItemHeight,
1675
1805
  staticExtraHeight,
@@ -1689,21 +1819,20 @@ Logging in with Google... Restarting Cell CLI to continue.
1689
1819
  isRestarting,
1690
1820
  extensionsUpdateState,
1691
1821
  activePtyId,
1692
- backgroundShellCount,
1693
- isBackgroundShellVisible,
1822
+ backgroundTaskCount,
1823
+ isBackgroundTaskVisible,
1694
1824
  embeddedShellFocused,
1695
1825
  showDebugProfiler,
1696
1826
  customDialog,
1697
- copyModeEnabled,
1698
1827
  transientMessage,
1699
1828
  bannerData,
1700
1829
  bannerVisible,
1701
1830
  terminalBackgroundColor: config.getTerminalBackground(),
1702
1831
  settingsNonce,
1703
- backgroundShells,
1704
- activeBackgroundShellPid,
1705
- backgroundShellHeight,
1706
- isBackgroundShellListOpen,
1832
+ backgroundTasks,
1833
+ activeBackgroundTaskPid,
1834
+ backgroundTaskHeight,
1835
+ isBackgroundTaskListOpen,
1707
1836
  adminSettingsChanged,
1708
1837
  newAgents,
1709
1838
  showIsExpandableHint,
@@ -1721,6 +1850,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1721
1850
  editorError,
1722
1851
  isEditorDialogOpen,
1723
1852
  showPrivacyNotice,
1853
+ mouseMode,
1724
1854
  corgiMode,
1725
1855
  debugMessage,
1726
1856
  quittingMessages,
@@ -1746,11 +1876,6 @@ Logging in with Google... Restarting Cell CLI to continue.
1746
1876
  initError,
1747
1877
  pendingGeminiHistoryItems,
1748
1878
  thought,
1749
- shellModeActive,
1750
- inputHistory,
1751
- buffer,
1752
- inputWidth,
1753
- suggestionsWidth,
1754
1879
  isInputActive,
1755
1880
  isResuming,
1756
1881
  shouldShowIdePrompt,
@@ -1766,7 +1891,6 @@ Logging in with Google... Restarting Cell CLI to continue.
1766
1891
  renderMarkdown,
1767
1892
  ctrlCPressCount,
1768
1893
  ctrlDPressCount,
1769
- showEscapePrompt,
1770
1894
  shortcutsHelpVisible,
1771
1895
  cleanUiDetailsVisible,
1772
1896
  isFocused,
@@ -1789,6 +1913,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1789
1913
  contextFileNames,
1790
1914
  errorCount,
1791
1915
  availableTerminalHeight,
1916
+ stableControlsHeight,
1792
1917
  mainAreaWidth,
1793
1918
  staticAreaMaxItemHeight,
1794
1919
  staticExtraHeight,
@@ -1809,8 +1934,8 @@ Logging in with Google... Restarting Cell CLI to continue.
1809
1934
  currentModel,
1810
1935
  extensionsUpdateState,
1811
1936
  activePtyId,
1812
- backgroundShellCount,
1813
- isBackgroundShellVisible,
1937
+ backgroundTaskCount,
1938
+ isBackgroundTaskVisible,
1814
1939
  historyManager,
1815
1940
  embeddedShellFocused,
1816
1941
  awaitingFeedback,
@@ -1818,16 +1943,15 @@ Logging in with Google... Restarting Cell CLI to continue.
1818
1943
  customDialog,
1819
1944
  apiKeyDefaultValue,
1820
1945
  authState,
1821
- copyModeEnabled,
1822
1946
  transientMessage,
1823
1947
  bannerData,
1824
1948
  bannerVisible,
1825
1949
  config,
1826
1950
  settingsNonce,
1827
- backgroundShellHeight,
1828
- isBackgroundShellListOpen,
1829
- activeBackgroundShellPid,
1830
- backgroundShells,
1951
+ backgroundTaskHeight,
1952
+ isBackgroundTaskListOpen,
1953
+ activeBackgroundTaskPid,
1954
+ backgroundTasks,
1831
1955
  adminSettingsChanged,
1832
1956
  newAgents,
1833
1957
  showIsExpandableHint,
@@ -1869,6 +1993,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1869
1993
  handleResumeSession,
1870
1994
  handleDeleteSession,
1871
1995
  setQueueErrorMessage,
1996
+ addMessage,
1872
1997
  popAllMessages,
1873
1998
  handleApiKeySubmit,
1874
1999
  handleApiKeyCancel,
@@ -1879,9 +2004,9 @@ Logging in with Google... Restarting Cell CLI to continue.
1879
2004
  revealCleanUiDetailsTemporarily,
1880
2005
  handleWarning,
1881
2006
  setEmbeddedShellFocused,
1882
- dismissBackgroundShell,
1883
- setActiveBackgroundShellPid,
1884
- setIsBackgroundShellListOpen,
2007
+ dismissBackgroundTask,
2008
+ setActiveBackgroundTaskPid,
2009
+ setIsBackgroundTaskListOpen,
1885
2010
  setAuthContext,
1886
2011
  onHintInput: () => { },
1887
2012
  onHintBackspace: () => { },
@@ -1955,6 +2080,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1955
2080
  handleResumeSession,
1956
2081
  handleDeleteSession,
1957
2082
  setQueueErrorMessage,
2083
+ addMessage,
1958
2084
  popAllMessages,
1959
2085
  handleApiKeySubmit,
1960
2086
  handleApiKeyCancel,
@@ -1965,9 +2091,9 @@ Logging in with Google... Restarting Cell CLI to continue.
1965
2091
  revealCleanUiDetailsTemporarily,
1966
2092
  handleWarning,
1967
2093
  setEmbeddedShellFocused,
1968
- dismissBackgroundShell,
1969
- setActiveBackgroundShellPid,
1970
- setIsBackgroundShellListOpen,
2094
+ dismissBackgroundTask,
2095
+ setActiveBackgroundTaskPid,
2096
+ setIsBackgroundTaskListOpen,
1971
2097
  setAuthContext,
1972
2098
  setAccountSuspensionInfo,
1973
2099
  newAgents,
@@ -1981,9 +2107,9 @@ Logging in with Google... Restarting Cell CLI to continue.
1981
2107
  setAuthState(AuthState.Updating);
1982
2108
  }, config: config }));
1983
2109
  }
1984
- return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
1985
- version: props.version,
1986
- startupWarnings: props.startupWarnings || [],
1987
- }, children: _jsx(ToolActionsProvider, { config: config, toolCalls: allToolCalls, children: _jsx(ShellFocusContext.Provider, { value: isFocused, children: _jsx(App, {}, `app-${forceRerenderKey}`) }) }) }) }) }) }));
2110
+ return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(InputContext.Provider, { value: inputState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
2111
+ version: props.version,
2112
+ startupWarnings: props.startupWarnings || [],
2113
+ }, children: _jsx(ToolActionsProvider, { config: config, toolCalls: allToolCalls, isExpanded: isExpanded, toggleExpansion: toggleExpansion, toggleAllExpansion: toggleAllExpansion, children: _jsx(ShellFocusContext.Provider, { value: isFocused, children: _jsx(MouseProvider, { mouseEventsEnabled: mouseMode, children: _jsx(ScrollProvider, { children: _jsx(App, {}, `app-${forceRerenderKey}`) }) }) }) }) }) }) }) }) }));
1988
2114
  };
1989
2115
  //# sourceMappingURL=AppContainer.js.map