@machina.ai/cell-cli 1.16.0-rc1 → 1.18.4-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 (406) hide show
  1. package/dist/index.js +8 -6
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +8 -7
  4. package/dist/src/commands/extensions/disable.js +2 -0
  5. package/dist/src/commands/extensions/disable.js.map +1 -1
  6. package/dist/src/commands/extensions/disable.test.d.ts +6 -0
  7. package/dist/src/commands/extensions/disable.test.js +169 -0
  8. package/dist/src/commands/extensions/disable.test.js.map +1 -0
  9. package/dist/src/commands/extensions/enable.js +2 -0
  10. package/dist/src/commands/extensions/enable.js.map +1 -1
  11. package/dist/src/commands/extensions/enable.test.d.ts +6 -0
  12. package/dist/src/commands/extensions/enable.test.js +150 -0
  13. package/dist/src/commands/extensions/enable.test.js.map +1 -0
  14. package/dist/src/commands/extensions/examples/mcp-server/example.test.d.ts +6 -0
  15. package/dist/src/commands/extensions/examples/mcp-server/example.test.js +111 -0
  16. package/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +1 -0
  17. package/dist/src/commands/extensions/examples/mcp-server/example.test.ts +143 -0
  18. package/dist/src/commands/extensions/examples/mcp-server/package.json +1 -1
  19. package/dist/src/commands/extensions/install.js +2 -0
  20. package/dist/src/commands/extensions/install.js.map +1 -1
  21. package/dist/src/commands/extensions/install.test.js +3 -0
  22. package/dist/src/commands/extensions/install.test.js.map +1 -1
  23. package/dist/src/commands/extensions/link.js +2 -0
  24. package/dist/src/commands/extensions/link.js.map +1 -1
  25. package/dist/src/commands/extensions/link.test.d.ts +6 -0
  26. package/dist/src/commands/extensions/link.test.js +131 -0
  27. package/dist/src/commands/extensions/link.test.js.map +1 -0
  28. package/dist/src/commands/extensions/list.js +2 -0
  29. package/dist/src/commands/extensions/list.js.map +1 -1
  30. package/dist/src/commands/extensions/list.test.d.ts +6 -0
  31. package/dist/src/commands/extensions/list.test.js +112 -0
  32. package/dist/src/commands/extensions/list.test.js.map +1 -0
  33. package/dist/src/commands/extensions/new.js +2 -0
  34. package/dist/src/commands/extensions/new.js.map +1 -1
  35. package/dist/src/commands/extensions/new.test.js +3 -0
  36. package/dist/src/commands/extensions/new.test.js.map +1 -1
  37. package/dist/src/commands/extensions/uninstall.d.ts +1 -1
  38. package/dist/src/commands/extensions/uninstall.js +26 -9
  39. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  40. package/dist/src/commands/extensions/uninstall.test.js +190 -9
  41. package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
  42. package/dist/src/commands/extensions/update.js +2 -0
  43. package/dist/src/commands/extensions/update.js.map +1 -1
  44. package/dist/src/commands/extensions/update.test.d.ts +6 -0
  45. package/dist/src/commands/extensions/update.test.js +170 -0
  46. package/dist/src/commands/extensions/update.test.js.map +1 -0
  47. package/dist/src/commands/extensions/validate.js +2 -0
  48. package/dist/src/commands/extensions/validate.js.map +1 -1
  49. package/dist/src/commands/extensions/validate.test.js +3 -0
  50. package/dist/src/commands/extensions/validate.test.js.map +1 -1
  51. package/dist/src/commands/extensions.js +2 -0
  52. package/dist/src/commands/extensions.js.map +1 -1
  53. package/dist/src/commands/mcp/add.js +2 -0
  54. package/dist/src/commands/mcp/add.js.map +1 -1
  55. package/dist/src/commands/mcp/add.test.js +11 -3
  56. package/dist/src/commands/mcp/add.test.js.map +1 -1
  57. package/dist/src/commands/mcp/list.js +2 -0
  58. package/dist/src/commands/mcp/list.js.map +1 -1
  59. package/dist/src/commands/mcp/list.test.js +4 -6
  60. package/dist/src/commands/mcp/list.test.js.map +1 -1
  61. package/dist/src/commands/mcp/remove.js +2 -0
  62. package/dist/src/commands/mcp/remove.js.map +1 -1
  63. package/dist/src/commands/mcp/remove.test.js +26 -12
  64. package/dist/src/commands/mcp/remove.test.js.map +1 -1
  65. package/dist/src/commands/mcp.js +2 -0
  66. package/dist/src/commands/mcp.js.map +1 -1
  67. package/dist/src/commands/mcp.test.js +1 -0
  68. package/dist/src/commands/mcp.test.js.map +1 -1
  69. package/dist/src/commands/utils.d.ts +6 -0
  70. package/dist/src/commands/utils.js +11 -0
  71. package/dist/src/commands/utils.js.map +1 -0
  72. package/dist/src/config/config.d.ts +2 -1
  73. package/dist/src/config/config.js +36 -23
  74. package/dist/src/config/config.js.map +1 -1
  75. package/dist/src/config/config.test.js +69 -12
  76. package/dist/src/config/config.test.js.map +1 -1
  77. package/dist/src/config/extension.test.js +131 -125
  78. package/dist/src/config/extension.test.js.map +1 -1
  79. package/dist/src/config/keyBindings.d.ts +1 -1
  80. package/dist/src/config/keyBindings.js +4 -4
  81. package/dist/src/config/keyBindings.js.map +1 -1
  82. package/dist/src/config/settingsSchema.d.ts +12 -3
  83. package/dist/src/config/settingsSchema.js +13 -4
  84. package/dist/src/config/settingsSchema.js.map +1 -1
  85. package/dist/src/config/settingsSchema.test.js +1 -1
  86. package/dist/src/config/settingsSchema.test.js.map +1 -1
  87. package/dist/src/config/trustedFolders.d.ts +1 -1
  88. package/dist/src/config/trustedFolders.js +24 -17
  89. package/dist/src/config/trustedFolders.js.map +1 -1
  90. package/dist/src/gemini.d.ts +2 -1
  91. package/dist/src/gemini.js +73 -15
  92. package/dist/src/gemini.js.map +1 -1
  93. package/dist/src/gemini.test.js +56 -15
  94. package/dist/src/gemini.test.js.map +1 -1
  95. package/dist/src/generated/git-commit.d.ts +2 -2
  96. package/dist/src/generated/git-commit.js +2 -2
  97. package/dist/src/nonInteractiveCli.js +4 -1
  98. package/dist/src/nonInteractiveCli.js.map +1 -1
  99. package/dist/src/nonInteractiveCli.test.js +2 -2
  100. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  101. package/dist/src/services/CommandService.test.js +3 -2
  102. package/dist/src/services/CommandService.test.js.map +1 -1
  103. package/dist/src/services/McpPromptLoader.js +5 -3
  104. package/dist/src/services/McpPromptLoader.js.map +1 -1
  105. package/dist/src/services/McpPromptLoader.test.js +29 -1
  106. package/dist/src/services/McpPromptLoader.test.js.map +1 -1
  107. package/dist/src/test-utils/render.d.ts +26 -2
  108. package/dist/src/test-utils/render.js +76 -3
  109. package/dist/src/test-utils/render.js.map +1 -1
  110. package/dist/src/ui/AppContainer.js +112 -42
  111. package/dist/src/ui/AppContainer.js.map +1 -1
  112. package/dist/src/ui/AppContainer.test.js +181 -103
  113. package/dist/src/ui/AppContainer.test.js.map +1 -1
  114. package/dist/src/ui/auth/AuthDialog.js +17 -10
  115. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  116. package/dist/src/ui/auth/AuthDialog.test.js +7 -4
  117. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  118. package/dist/src/ui/commands/aboutCommand.js +8 -1
  119. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  120. package/dist/src/ui/commands/aboutCommand.test.js +4 -0
  121. package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
  122. package/dist/src/ui/commands/clearCommand.js +12 -0
  123. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  124. package/dist/src/ui/commands/clearCommand.test.js +5 -0
  125. package/dist/src/ui/commands/clearCommand.test.js.map +1 -1
  126. package/dist/src/ui/commands/directoryCommand.d.ts +0 -1
  127. package/dist/src/ui/commands/directoryCommand.js +104 -43
  128. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  129. package/dist/src/ui/commands/directoryCommand.test.js +91 -2
  130. package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
  131. package/dist/src/ui/commands/memoryCommand.js +1 -0
  132. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  133. package/dist/src/ui/commands/memoryCommand.test.js +3 -0
  134. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
  135. package/dist/src/ui/commands/permissionsCommand.js +62 -5
  136. package/dist/src/ui/commands/permissionsCommand.js.map +1 -1
  137. package/dist/src/ui/commands/permissionsCommand.test.js +60 -4
  138. package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -1
  139. package/dist/src/ui/commands/setupGithubCommand.d.ts +1 -0
  140. package/dist/src/ui/commands/setupGithubCommand.js +82 -45
  141. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  142. package/dist/src/ui/commands/setupGithubCommand.test.js +35 -5
  143. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
  144. package/dist/src/ui/commands/types.d.ts +7 -1
  145. package/dist/src/ui/commands/types.js.map +1 -1
  146. package/dist/src/ui/components/AboutBox.d.ts +1 -0
  147. package/dist/src/ui/components/AboutBox.js +1 -1
  148. package/dist/src/ui/components/AboutBox.js.map +1 -1
  149. package/dist/src/ui/components/AppHeader.js +3 -22
  150. package/dist/src/ui/components/AppHeader.js.map +1 -1
  151. package/dist/src/ui/components/AppHeader.test.js +10 -4
  152. package/dist/src/ui/components/AppHeader.test.js.map +1 -1
  153. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  154. package/dist/src/ui/components/AsciiArt.js +16 -15
  155. package/dist/src/ui/components/AsciiArt.js.map +1 -1
  156. package/dist/src/ui/components/Banner.d.ts +4 -2
  157. package/dist/src/ui/components/Banner.js +18 -4
  158. package/dist/src/ui/components/Banner.js.map +1 -1
  159. package/dist/src/ui/components/DebugProfiler.d.ts +1 -0
  160. package/dist/src/ui/components/DebugProfiler.js +23 -34
  161. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  162. package/dist/src/ui/components/DebugProfiler.test.js +1 -0
  163. package/dist/src/ui/components/DebugProfiler.test.js.map +1 -1
  164. package/dist/src/ui/components/DialogManager.js +7 -2
  165. package/dist/src/ui/components/DialogManager.js.map +1 -1
  166. package/dist/src/ui/components/GradientRegression.test.js +22 -1
  167. package/dist/src/ui/components/GradientRegression.test.js.map +1 -1
  168. package/dist/src/ui/components/Header.test.js +27 -2
  169. package/dist/src/ui/components/Header.test.js.map +1 -1
  170. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  171. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  172. package/dist/src/ui/components/InputPrompt.js +29 -35
  173. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  174. package/dist/src/ui/components/InputPrompt.test.js +104 -24
  175. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  176. package/dist/src/ui/components/LoadingIndicator.js +6 -1
  177. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  178. package/dist/src/ui/components/ModelDialog.js +2 -2
  179. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  180. package/dist/src/ui/components/MultiFolderTrustDialog.d.ts +23 -0
  181. package/dist/src/ui/components/MultiFolderTrustDialog.js +90 -0
  182. package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -0
  183. package/dist/src/ui/components/MultiFolderTrustDialog.test.d.ts +6 -0
  184. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +161 -0
  185. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -0
  186. package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +5 -2
  187. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +12 -7
  188. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
  189. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +2 -2
  190. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
  191. package/dist/src/ui/components/ProQuotaDialog.js +2 -2
  192. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  193. package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
  194. package/dist/src/ui/components/SettingsDialog.js +4 -1
  195. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  196. package/dist/src/ui/components/ThemedGradient.js +2 -1
  197. package/dist/src/ui/components/ThemedGradient.js.map +1 -1
  198. package/dist/src/ui/components/messages/ModelMessage.d.ts +11 -0
  199. package/dist/src/ui/components/messages/ModelMessage.js +5 -0
  200. package/dist/src/ui/components/messages/ModelMessage.js.map +1 -0
  201. package/dist/src/ui/components/messages/ShellToolMessage.d.ts +14 -0
  202. package/dist/src/ui/components/messages/ShellToolMessage.js +76 -0
  203. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -0
  204. package/dist/src/ui/components/messages/ShellToolMessage.test.d.ts +6 -0
  205. package/dist/src/ui/components/messages/ShellToolMessage.test.js +123 -0
  206. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -0
  207. package/dist/src/ui/components/messages/ToolGroupMessage.js +19 -1
  208. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  209. package/dist/src/ui/components/messages/ToolMessage.d.ts +6 -4
  210. package/dist/src/ui/components/messages/ToolMessage.js +15 -102
  211. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  212. package/dist/src/ui/components/messages/ToolMessage.test.js +13 -5
  213. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  214. package/dist/src/ui/components/messages/ToolResultDisplay.d.ts +13 -0
  215. package/dist/src/ui/components/messages/ToolResultDisplay.js +54 -0
  216. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -0
  217. package/dist/src/ui/components/messages/ToolShared.d.ts +23 -0
  218. package/dist/src/ui/components/messages/ToolShared.js +40 -0
  219. package/dist/src/ui/components/messages/ToolShared.js.map +1 -0
  220. package/dist/src/ui/components/shared/text-buffer.d.ts +1 -0
  221. package/dist/src/ui/components/shared/text-buffer.js +7 -1
  222. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  223. package/dist/src/ui/constants/tips.d.ts +6 -0
  224. package/dist/src/ui/constants/tips.js +168 -0
  225. package/dist/src/ui/constants/tips.js.map +1 -0
  226. package/dist/src/ui/constants/wittyPhrases.d.ts +6 -0
  227. package/dist/src/ui/constants/wittyPhrases.js +137 -0
  228. package/dist/src/ui/constants/wittyPhrases.js.map +1 -0
  229. package/dist/src/ui/constants.d.ts +1 -0
  230. package/dist/src/ui/constants.js +1 -0
  231. package/dist/src/ui/constants.js.map +1 -1
  232. package/dist/src/ui/contexts/KeypressContext.js +21 -11
  233. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  234. package/dist/src/ui/contexts/KeypressContext.test.js +29 -10
  235. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  236. package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
  237. package/dist/src/ui/contexts/UIActionsContext.js +1 -0
  238. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  239. package/dist/src/ui/contexts/UIStateContext.d.ts +4 -0
  240. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  241. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
  242. package/dist/src/ui/hooks/shellCommandProcessor.js +11 -5
  243. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  244. package/dist/src/ui/hooks/shellCommandProcessor.test.js +4 -3
  245. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  246. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +5 -3
  247. package/dist/src/ui/hooks/slashCommandProcessor.js +14 -5
  248. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  249. package/dist/src/ui/hooks/slashCommandProcessor.test.js +1 -0
  250. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
  251. package/dist/src/ui/hooks/useAlternateBuffer.js +1 -1
  252. package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -1
  253. package/dist/src/ui/hooks/useBanner.d.ts +14 -0
  254. package/dist/src/ui/hooks/useBanner.js +48 -0
  255. package/dist/src/ui/hooks/useBanner.js.map +1 -0
  256. package/dist/src/ui/hooks/useBanner.test.d.ts +6 -0
  257. package/dist/src/ui/hooks/useBanner.test.js +92 -0
  258. package/dist/src/ui/hooks/useBanner.test.js.map +1 -0
  259. package/dist/src/ui/hooks/useBracketedPaste.js +3 -2
  260. package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -1
  261. package/dist/src/ui/hooks/useCommandCompletion.test.js +5 -5
  262. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  263. package/dist/src/ui/hooks/useConsoleMessages.d.ts +0 -1
  264. package/dist/src/ui/hooks/useConsoleMessages.js +26 -1
  265. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  266. package/dist/src/ui/hooks/useConsoleMessages.test.js +37 -5
  267. package/dist/src/ui/hooks/useConsoleMessages.test.js.map +1 -1
  268. package/dist/src/ui/hooks/useEditorSettings.d.ts +2 -2
  269. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
  270. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
  271. package/dist/src/ui/hooks/useFolderTrust.js +11 -1
  272. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  273. package/dist/src/ui/hooks/useFolderTrust.test.js +22 -0
  274. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  275. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
  276. package/dist/src/ui/hooks/useGeminiStream.js +69 -12
  277. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  278. package/dist/src/ui/hooks/useGeminiStream.test.js +20 -21
  279. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  280. package/dist/src/ui/hooks/useHistoryManager.d.ts +5 -2
  281. package/dist/src/ui/hooks/useHistoryManager.js +39 -3
  282. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  283. package/dist/src/ui/hooks/useInactivityTimer.d.ts +14 -0
  284. package/dist/src/ui/hooks/useInactivityTimer.js +30 -0
  285. package/dist/src/ui/hooks/useInactivityTimer.js.map +1 -0
  286. package/dist/src/ui/hooks/useIncludeDirsTrust.d.ts +8 -0
  287. package/dist/src/ui/hooks/useIncludeDirsTrust.js +119 -0
  288. package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -0
  289. package/dist/src/ui/hooks/useIncludeDirsTrust.test.d.ts +6 -0
  290. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +151 -0
  291. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -0
  292. package/dist/src/ui/hooks/useInputHistoryStore.test.js +4 -1
  293. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -1
  294. package/dist/src/ui/hooks/useKittyKeyboardProtocol.d.ts +0 -1
  295. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +1 -2
  296. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -1
  297. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  298. package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
  299. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  300. package/dist/src/ui/hooks/useLoadingIndicator.test.js +21 -9
  301. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  302. package/dist/src/ui/hooks/useMouseClick.d.ts +12 -0
  303. package/dist/src/ui/hooks/useMouseClick.js +28 -0
  304. package/dist/src/ui/hooks/useMouseClick.js.map +1 -0
  305. package/dist/src/ui/hooks/useMouseClick.test.d.ts +6 -0
  306. package/dist/src/ui/hooks/useMouseClick.test.js +59 -0
  307. package/dist/src/ui/hooks/useMouseClick.test.js.map +1 -0
  308. package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +2 -2
  309. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +44 -7
  310. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
  311. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +191 -89
  312. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
  313. package/dist/src/ui/hooks/usePhraseCycler.d.ts +4 -3
  314. package/dist/src/ui/hooks/usePhraseCycler.js +54 -305
  315. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  316. package/dist/src/ui/hooks/usePhraseCycler.test.js +109 -30
  317. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
  318. package/dist/src/ui/hooks/useQuotaAndFallback.js +9 -3
  319. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  320. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +25 -3
  321. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
  322. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
  323. package/dist/src/ui/hooks/useReactToolScheduler.js +4 -8
  324. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  325. package/dist/src/ui/hooks/useReactToolScheduler.test.js +1 -8
  326. package/dist/src/ui/hooks/useReactToolScheduler.test.js.map +1 -1
  327. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +18 -12
  328. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -1
  329. package/dist/src/ui/hooks/useSessionBrowser.js +13 -4
  330. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  331. package/dist/src/ui/hooks/useSessionBrowser.test.js +37 -0
  332. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
  333. package/dist/src/ui/hooks/useSessionResume.js +1 -1
  334. package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
  335. package/dist/src/ui/hooks/useSessionResume.test.js +4 -4
  336. package/dist/src/ui/hooks/useSessionResume.test.js.map +1 -1
  337. package/dist/src/ui/hooks/useThemeCommand.d.ts +2 -2
  338. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  339. package/dist/src/ui/hooks/useToolScheduler.test.js +2 -2
  340. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  341. package/dist/src/ui/keyMatchers.test.js +2 -2
  342. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  343. package/dist/src/ui/layouts/DefaultAppLayout.js +1 -1
  344. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  345. package/dist/src/ui/noninteractive/nonInteractiveUi.js +1 -0
  346. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -1
  347. package/dist/src/ui/themes/theme-manager.test.js +2 -1
  348. package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
  349. package/dist/src/ui/types.d.ts +7 -1
  350. package/dist/src/ui/types.js.map +1 -1
  351. package/dist/src/ui/utils/ConsolePatcher.js +6 -9
  352. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  353. package/dist/src/ui/utils/commandUtils.js +3 -86
  354. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  355. package/dist/src/ui/utils/commandUtils.test.js +21 -273
  356. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  357. package/dist/src/ui/utils/directoryUtils.d.ts +6 -0
  358. package/dist/src/ui/utils/directoryUtils.js +21 -0
  359. package/dist/src/ui/utils/directoryUtils.js.map +1 -0
  360. package/dist/src/ui/utils/directoryUtils.test.d.ts +6 -0
  361. package/dist/src/ui/utils/directoryUtils.test.js +52 -0
  362. package/dist/src/ui/utils/directoryUtils.test.js.map +1 -0
  363. package/dist/src/ui/utils/kittyProtocolDetector.d.ts +6 -2
  364. package/dist/src/ui/utils/kittyProtocolDetector.js +47 -43
  365. package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
  366. package/dist/src/ui/utils/mouse.d.ts +2 -2
  367. package/dist/src/ui/utils/mouse.js +2 -11
  368. package/dist/src/ui/utils/mouse.js.map +1 -1
  369. package/dist/src/utils/cleanup.d.ts +2 -0
  370. package/dist/src/utils/cleanup.js +16 -0
  371. package/dist/src/utils/cleanup.js.map +1 -1
  372. package/dist/src/utils/errors.js +10 -0
  373. package/dist/src/utils/errors.js.map +1 -1
  374. package/dist/src/utils/events.d.ts +0 -2
  375. package/dist/src/utils/events.js +0 -1
  376. package/dist/src/utils/events.js.map +1 -1
  377. package/dist/src/utils/installationInfo.test.js +8 -9
  378. package/dist/src/utils/installationInfo.test.js.map +1 -1
  379. package/dist/src/utils/persistentState.d.ts +1 -1
  380. package/dist/src/utils/sessionCleanup.test.js +4 -2
  381. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  382. package/dist/src/utils/sessionUtils.d.ts +5 -0
  383. package/dist/src/utils/sessionUtils.js +6 -1
  384. package/dist/src/utils/sessionUtils.js.map +1 -1
  385. package/dist/src/utils/sessions.test.d.ts +6 -0
  386. package/dist/src/utils/sessions.test.js +516 -0
  387. package/dist/src/utils/sessions.test.js.map +1 -0
  388. package/dist/src/validateNonInterActiveAuth.js +2 -0
  389. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  390. package/dist/src/zed-integration/acp.d.ts +2 -24
  391. package/dist/src/zed-integration/acp.js +2 -156
  392. package/dist/src/zed-integration/acp.js.map +1 -1
  393. package/dist/src/zed-integration/acp.test.d.ts +6 -0
  394. package/dist/src/zed-integration/acp.test.js +227 -0
  395. package/dist/src/zed-integration/acp.test.js.map +1 -0
  396. package/dist/src/zed-integration/connection.d.ts +28 -0
  397. package/dist/src/zed-integration/connection.js +163 -0
  398. package/dist/src/zed-integration/connection.js.map +1 -0
  399. package/dist/src/zed-integration/schema.d.ts +69 -13
  400. package/dist/src/zed-integration/schema.js +6 -5
  401. package/dist/src/zed-integration/schema.js.map +1 -1
  402. package/dist/src/zed-integration/zedIntegration.d.ts +0 -7
  403. package/dist/src/zed-integration/zedIntegration.js +9 -21
  404. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  405. package/dist/tsconfig.tsbuildinfo +1 -1
  406. package/package.json +8 -7
@@ -6,7 +6,8 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
6
6
  */
7
7
  import { render as inkRender } from 'ink-testing-library';
8
8
  import { Box } from 'ink';
9
- import { act } from 'react';
9
+ import { vi } from 'vitest';
10
+ import { act, useState } from 'react';
10
11
  import { LoadedSettings } from '../config/settings.js';
11
12
  import { KeypressProvider } from '../ui/contexts/KeypressContext.js';
12
13
  import { SettingsContext } from '../ui/contexts/SettingsContext.js';
@@ -19,6 +20,7 @@ import { VimModeProvider } from '../ui/contexts/VimModeContext.js';
19
20
  import { MouseProvider } from '../ui/contexts/MouseContext.js';
20
21
  import { ScrollProvider } from '../ui/contexts/ScrollProvider.js';
21
22
  import { StreamingContext } from '../ui/contexts/StreamingContext.js';
23
+ import { UIActionsContext, } from '../ui/contexts/UIActionsContext.js';
22
24
  import {} from '@google/gemini-cli-core';
23
25
  // Wrapper around ink-testing-library's render that ensures act() is called
24
26
  export const render = (tree, terminalWidth) => {
@@ -53,6 +55,13 @@ export const render = (tree, terminalWidth) => {
53
55
  },
54
56
  };
55
57
  };
58
+ export const simulateClick = async (stdin, col, row, button = 0) => {
59
+ // Terminal mouse events are 1-based, so convert if necessary.
60
+ const mouseEventString = `\x1b[<${button};${col};${row}M`;
61
+ await act(async () => {
62
+ stdin.write(mouseEventString);
63
+ });
64
+ };
56
65
  const mockConfig = {
57
66
  getModel: () => 'gemini-pro',
58
67
  getTargetDir: () => '/Users/test/project/foo/bar/and/some/more/directories/to/make/it/long',
@@ -83,7 +92,38 @@ const baseMockUiState = {
83
92
  terminalWidth: 120,
84
93
  currentModel: 'gemini-pro',
85
94
  };
86
- export const renderWithProviders = (component, { shellFocus = true, settings = mockSettings, uiState: providedUiState, width, mouseEventsEnabled = false, config = configProxy, useAlternateBuffer, } = {}) => {
95
+ const mockUIActions = {
96
+ handleThemeSelect: vi.fn(),
97
+ closeThemeDialog: vi.fn(),
98
+ handleThemeHighlight: vi.fn(),
99
+ handleAuthSelect: vi.fn(),
100
+ setAuthState: vi.fn(),
101
+ onAuthError: vi.fn(),
102
+ handleEditorSelect: vi.fn(),
103
+ exitEditorDialog: vi.fn(),
104
+ exitPrivacyNotice: vi.fn(),
105
+ closeSettingsDialog: vi.fn(),
106
+ closeModelDialog: vi.fn(),
107
+ openPermissionsDialog: vi.fn(),
108
+ closePermissionsDialog: vi.fn(),
109
+ setShellModeActive: vi.fn(),
110
+ vimHandleInput: vi.fn(),
111
+ handleIdePromptComplete: vi.fn(),
112
+ handleFolderTrustSelect: vi.fn(),
113
+ setConstrainHeight: vi.fn(),
114
+ onEscapePromptChange: vi.fn(),
115
+ refreshStatic: vi.fn(),
116
+ handleFinalSubmit: vi.fn(),
117
+ handleClearScreen: vi.fn(),
118
+ handleProQuotaChoice: vi.fn(),
119
+ setQueueErrorMessage: vi.fn(),
120
+ popAllMessages: vi.fn(),
121
+ handleApiKeySubmit: vi.fn(),
122
+ handleApiKeyCancel: vi.fn(),
123
+ setBannerVisible: vi.fn(),
124
+ setEmbeddedShellFocused: vi.fn(),
125
+ };
126
+ export const renderWithProviders = (component, { shellFocus = true, settings = mockSettings, uiState: providedUiState, width, mouseEventsEnabled = false, config = configProxy, useAlternateBuffer = true, uiActions, } = {}) => {
87
127
  const baseState = new Proxy({ ...baseMockUiState, ...providedUiState }, {
88
128
  get(target, prop) {
89
129
  if (prop in target) {
@@ -115,7 +155,9 @@ export const renderWithProviders = (component, { shellFocus = true, settings = m
115
155
  terminalWidth,
116
156
  mainAreaWidth,
117
157
  };
118
- return render(_jsx(ConfigContext.Provider, { value: config, children: _jsx(SettingsContext.Provider, { value: finalSettings, children: _jsx(UIStateContext.Provider, { value: finalUiState, children: _jsx(VimModeProvider, { settings: finalSettings, children: _jsx(ShellFocusContext.Provider, { value: shellFocus, children: _jsx(StreamingContext.Provider, { value: finalUiState.streamingState, children: _jsx(KeypressProvider, { children: _jsx(MouseProvider, { mouseEventsEnabled: mouseEventsEnabled, children: _jsx(ScrollProvider, { children: _jsx(Box, { width: terminalWidth, flexShrink: 0, flexGrow: 0, flexDirection: "column", children: component }) }) }) }) }) }) }) }) }) }), terminalWidth);
158
+ const finalUIActions = { ...mockUIActions, ...uiActions };
159
+ const renderResult = render(_jsx(ConfigContext.Provider, { value: config, children: _jsx(SettingsContext.Provider, { value: finalSettings, children: _jsx(UIStateContext.Provider, { value: finalUiState, children: _jsx(VimModeProvider, { settings: finalSettings, children: _jsx(ShellFocusContext.Provider, { value: shellFocus, children: _jsx(StreamingContext.Provider, { value: finalUiState.streamingState, children: _jsx(UIActionsContext.Provider, { value: finalUIActions, children: _jsx(KeypressProvider, { children: _jsx(MouseProvider, { mouseEventsEnabled: mouseEventsEnabled, children: _jsx(ScrollProvider, { children: _jsx(Box, { width: terminalWidth, flexShrink: 0, flexGrow: 0, flexDirection: "column", children: component }) }) }) }) }) }) }) }) }) }) }), terminalWidth);
160
+ return { ...renderResult, simulateClick };
119
161
  };
120
162
  export function renderHook(renderCallback, options) {
121
163
  const result = { current: undefined };
@@ -142,4 +184,35 @@ export function renderHook(renderCallback, options) {
142
184
  }
143
185
  return { result, rerender, unmount };
144
186
  }
187
+ export function renderHookWithProviders(renderCallback, options = {}) {
188
+ const result = { current: undefined };
189
+ let setPropsFn;
190
+ function TestComponent({ initialProps }) {
191
+ const [props, setProps] = useState(initialProps);
192
+ setPropsFn = setProps;
193
+ result.current = renderCallback(props);
194
+ return null;
195
+ }
196
+ const Wrapper = options.wrapper || (({ children }) => _jsx(_Fragment, { children: children }));
197
+ let renderResult;
198
+ act(() => {
199
+ renderResult = renderWithProviders(_jsx(Wrapper, { children: _jsx(TestComponent, { initialProps: options.initialProps }) }), options);
200
+ });
201
+ function rerender(newProps) {
202
+ act(() => {
203
+ if (setPropsFn && newProps) {
204
+ setPropsFn(newProps);
205
+ }
206
+ });
207
+ }
208
+ return {
209
+ result,
210
+ rerender,
211
+ unmount: () => {
212
+ act(() => {
213
+ renderResult.unmount();
214
+ });
215
+ },
216
+ };
217
+ }
145
218
  //# sourceMappingURL=render.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/test-utils/render.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/test-utils/render.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,cAAc,EAAiB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAgB,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAEL,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAe,MAAM,yBAAyB,CAAC;AAEtD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,IAAwB,EACxB,aAAsB,EACQ,EAAE;IAChC,IAAI,YAAY,GACd,SAAoD,CAAC;IACvD,GAAG,CAAC,GAAG,EAAE;QACP,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,IAAI,aAAa,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,EAAE,CAAC;QACxD,qFAAqF;QACrF,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE;YACpD,GAAG,EAAE,GAAG,EAAE,CAAC,aAAa;YACxB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,+DAA+D;QAC/D,GAAG,CAAC,GAAG,EAAE;YACP,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC;IAC7C,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC;IAE/C,OAAO;QACL,GAAG,YAAY;QACf,OAAO,EAAE,GAAG,EAAE;YACZ,GAAG,CAAC,GAAG,EAAE;gBACP,eAAe,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,QAAQ,EAAE,CAAC,OAA2B,EAAE,EAAE;YACxC,GAAG,CAAC,GAAG,EAAE;gBACP,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,KAA4C,EAC5C,GAAW,EACX,GAAW,EACX,SAAoB,CAAC,EACrB,EAAE;IACF,8DAA8D;IAC9D,MAAM,gBAAgB,GAAG,SAAS,MAAM,IAAI,GAAG,IAAI,GAAG,GAAG,CAAC;IAC1D,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE;QACnB,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY;IAC5B,YAAY,EAAE,GAAG,EAAE,CACjB,uEAAuE;IACzE,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK;IACzB,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI;IAC3B,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK;IACvB,yBAAyB,EAAE,GAAG,EAAE,CAAC,IAAI;CACtC,CAAC;AAEF,MAAM,WAAW,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE;IACxC,GAAG,CAAC,MAAM,EAAE,IAAI;QACd,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC,IAA2B,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,cAAc,CAC5C,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAChD,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAChD,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAChD,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAChD,IAAI,EACJ,IAAI,GAAG,EAAE,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,SAA4B,EACZ,EAAE;IAClB,MAAM,QAAQ,GAAG,SAAqB,CAAC;IACvC,OAAO,IAAI,cAAc,CACvB,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAChD,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAChD,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,EAClD,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAChD,IAAI,EACJ,IAAI,GAAG,EAAE,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,0DAA0D;AAC1D,oEAAoE;AACpE,MAAM,eAAe,GAAG;IACtB,cAAc,EAAE,IAAI;IACpB,cAAc,EAAE,cAAc,CAAC,IAAI;IACnC,aAAa,EAAE,GAAG;IAClB,aAAa,EAAE,GAAG;IAClB,YAAY,EAAE,YAAY;CAC3B,CAAC;AAEF,MAAM,aAAa,GAAc;IAC/B,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC1B,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;IACzB,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC7B,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;IACzB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;IACrB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;IACpB,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC3B,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;IACzB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC1B,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC5B,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;IACzB,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC9B,sBAAsB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC/B,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC3B,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;IACvB,uBAAuB,EAAE,EAAE,CAAC,EAAE,EAAE;IAChC,uBAAuB,EAAE,EAAE,CAAC,EAAE,EAAE;IAChC,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC3B,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC7B,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC1B,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC1B,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC7B,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC7B,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;IACvB,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC3B,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE;IAC3B,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;IACzB,uBAAuB,EAAE,EAAE,CAAC,EAAE,EAAE;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,SAA6B,EAC7B,EACE,UAAU,GAAG,IAAI,EACjB,QAAQ,GAAG,YAAY,EACvB,OAAO,EAAE,eAAe,EACxB,KAAK,EACL,kBAAkB,GAAG,KAAK,EAC1B,MAAM,GAAG,WAAgC,EACzC,kBAAkB,GAAG,IAAI,EACzB,SAAS,MAUP,EAAE,EAC+D,EAAE;IACvE,MAAM,SAAS,GAAY,IAAI,KAAK,CAClC,EAAE,GAAG,eAAe,EAAE,GAAG,eAAe,EAAE,EAC1C;QACE,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;gBACnB,OAAO,MAAM,CAAC,IAA2B,CAAC,CAAC;YAC7C,CAAC;YACD,yDAAyD;YACzD,8DAA8D;YAC9D,0CAA0C;YAC1C,IAAI,IAAI,IAAI,eAAe,EAAE,CAAC;gBAC5B,OAAO,eAAe,CAAC,IAAoC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;KACF,CACS,CAAC;IAEb,MAAM,aAAa,GAAG,KAAK,IAAI,SAAS,CAAC,aAAa,CAAC;IACvD,IAAI,aAAa,GAAG,QAAQ,CAAC;IAC7B,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;QACrC,aAAa,GAAG,kBAAkB,CAAC;YACjC,GAAG,QAAQ,CAAC,MAAM;YAClB,EAAE,EAAE;gBACF,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE;gBACrB,kBAAkB;aACnB;SACF,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,sBAAsB,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAE3E,MAAM,YAAY,GAAG;QACnB,GAAG,SAAS;QACZ,aAAa;QACb,aAAa;KACd,CAAC;IAEF,MAAM,cAAc,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,SAAS,EAAE,CAAC;IAE1D,MAAM,YAAY,GAAG,MAAM,CACzB,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YACnC,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa,YAC5C,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC1C,KAAC,eAAe,IAAC,QAAQ,EAAE,aAAa,YACtC,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU,YAC3C,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,CAAC,cAAc,YAC3D,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,cAAc,YAC9C,KAAC,gBAAgB,cACf,KAAC,aAAa,IAAC,kBAAkB,EAAE,kBAAkB,YACnD,KAAC,cAAc,cACb,KAAC,GAAG,IACF,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,CAAC,EACb,QAAQ,EAAE,CAAC,EACX,aAAa,EAAC,QAAQ,YAErB,SAAS,GACN,GACS,GACH,GACC,GACO,GACF,GACD,GACb,GACM,GACD,GACJ,EACzB,aAAa,CACd,CAAC;IAEF,OAAO,EAAE,GAAG,YAAY,EAAE,aAAa,EAAE,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,UAAU,UAAU,CACxB,cAAwC,EACxC,OAGC;IAMD,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAA8B,EAAE,CAAC;IAC3D,IAAI,YAAY,GAAG,OAAO,EAAE,YAAqB,CAAC;IAElD,SAAS,aAAa,CAAC,EACrB,cAAc,EACd,KAAK,GAIN;QACC,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,4BAAG,QAAQ,GAAI,CAAC,CAAC;IAExE,IAAI,WAAW,GAAuC,GAAG,EAAE,GAAE,CAAC,CAAC;IAC/D,IAAI,OAAO,GAAe,GAAG,EAAE,GAAE,CAAC,CAAC;IAEnC,GAAG,CAAC,GAAG,EAAE;QACP,MAAM,YAAY,GAAG,MAAM,CACzB,KAAC,OAAO,cACN,KAAC,aAAa,IAAC,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAI,GAC9D,CACX,CAAC;QACF,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC;QACpC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,SAAS,QAAQ,CAAC,KAAa;QAC7B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,YAAY,GAAG,KAAc,CAAC;QAChC,CAAC;QACD,GAAG,CAAC,GAAG,EAAE;YACP,WAAW,CACT,KAAC,OAAO,cACN,KAAC,aAAa,IAAC,cAAc,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAI,GAC9D,CACX,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,cAAwC,EACxC,UAWI,EAAE;IAMN,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAA8B,EAAE,CAAC;IAE3D,IAAI,UAAgD,CAAC;IAErD,SAAS,aAAa,CAAC,EAAE,YAAY,EAA2B;QAC9D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;QACjD,UAAU,GAAG,QAAQ,CAAC;QACtB,MAAM,CAAC,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,4BAAG,QAAQ,GAAI,CAAC,CAAC;IAEvE,IAAI,YAAuC,CAAC;IAE5C,GAAG,CAAC,GAAG,EAAE;QACP,YAAY,GAAG,mBAAmB,CAChC,KAAC,OAAO,cACN,KAAC,aAAa,IAAC,YAAY,EAAE,OAAO,CAAC,YAAqB,GAAI,GACtD,EACV,OAAO,CACR,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,QAAQ,CAAC,QAAgB;QAChC,GAAG,CAAC,GAAG,EAAE;YACP,IAAI,UAAU,IAAI,QAAQ,EAAE,CAAC;gBAC3B,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,MAAM;QACN,QAAQ;QACR,OAAO,EAAE,GAAG,EAAE;YACZ,GAAG,CAAC,GAAG,EAAE;gBACP,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -13,7 +13,7 @@ import { UIActionsContext, } from './contexts/UIActionsContext.js';
13
13
  import { ConfigContext } from './contexts/ConfigContext.js';
14
14
  import { ToolCallStatus, AuthState, } from './types.js';
15
15
  import { MessageType, StreamingState } from './types.js';
16
- import { DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, PREVIEW_GEMINI_MODEL, resolveModel, IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, } from '@google/gemini-cli-core';
16
+ import { DEFAULT_GEMINI_FLASH_MODEL, DEFAULT_GEMINI_MODEL, PREVIEW_GEMINI_MODEL, resolveModel, IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, writeToStdout, disableMouseEvents, enterAlternateScreen, enableMouseEvents, disableLineWrapping, shouldEnterAlternateScreen, } from '@google/gemini-cli-core';
17
17
  import { validateAuthMethod } from '../config/auth.js';
18
18
  import process from 'node:process';
19
19
  import { useHistory } from './hooks/useHistoryManager.js';
@@ -29,7 +29,7 @@ import { useVimMode } from './contexts/VimModeContext.js';
29
29
  import { useConsoleMessages } from './hooks/useConsoleMessages.js';
30
30
  import { useTerminalSize } from './hooks/useTerminalSize.js';
31
31
  import { calculatePromptWidths } from './components/InputPrompt.js';
32
- import { useStdout, useStdin } from 'ink';
32
+ import { useApp, useStdout, useStdin } from 'ink';
33
33
  import { calculateMainAreaWidth } from './utils/ui-sizing.js';
34
34
  import ansiEscapes from 'ansi-escapes';
35
35
  import * as fs from 'node:fs';
@@ -52,8 +52,8 @@ import {} from './IdeIntegrationNudge.js';
52
52
  import { appEvents, AppEvent } from '../utils/events.js';
53
53
  import {} from './utils/updateCheck.js';
54
54
  import { setUpdateHandler } from '../utils/handleAutoUpdate.js';
55
- import { ConsolePatcher } from './utils/ConsolePatcher.js';
56
55
  import { registerCleanup, runExitCleanup } from '../utils/cleanup.js';
56
+ import { RELAUNCH_EXIT_CODE } from '../utils/processUtils.js';
57
57
  import { useMessageQueue } from './hooks/useMessageQueue.js';
58
58
  import { useAutoAcceptIndicator } from './hooks/useAutoAcceptIndicator.js';
59
59
  import { useSessionStats } from './contexts/SessionContext.js';
@@ -64,9 +64,11 @@ import { ShellFocusContext } from './contexts/ShellFocusContext.js';
64
64
  import { useSessionResume } from './hooks/useSessionResume.js';
65
65
  import {} from '../config/extension-manager.js';
66
66
  import { requestConsentInteractive } from '../config/extensions/consent.js';
67
- import { disableMouseEvents, enableMouseEvents } from './utils/mouse.js';
67
+ import { useIncludeDirsTrust } from './hooks/useIncludeDirsTrust.js';
68
+ import { isWorkspaceTrusted } from '../config/trustedFolders.js';
68
69
  import { useAlternateBuffer } from './hooks/useAlternateBuffer.js';
69
70
  import { useSettings } from './contexts/SettingsContext.js';
71
+ import { enableSupportedProtocol } from './utils/kittyProtocolDetector.js';
70
72
  const WARNING_PROMPT_DURATION_MS = 1000;
71
73
  const QUEUE_ERROR_DISPLAY_DURATION_MS = 3000;
72
74
  function isToolExecuting(pendingHistoryItems) {
@@ -89,7 +91,9 @@ const SHELL_WIDTH_FRACTION = 0.89;
89
91
  const SHELL_HEIGHT_PADDING = 10;
90
92
  export const AppContainer = (props) => {
91
93
  const { config, initializationResult, resumedSessionData } = props;
92
- const historyManager = useHistory();
94
+ const historyManager = useHistory({
95
+ chatRecordingService: config.getGeminiClient()?.getChatRecordingService(),
96
+ });
93
97
  useMemoryMonitor(historyManager);
94
98
  const settings = useSettings();
95
99
  const isAlternateBuffer = useAlternateBuffer();
@@ -102,12 +106,14 @@ export const AppContainer = (props) => {
102
106
  const [isProcessing, setIsProcessing] = useState(false);
103
107
  const [embeddedShellFocused, setEmbeddedShellFocused] = useState(false);
104
108
  const [showDebugProfiler, setShowDebugProfiler] = useState(false);
109
+ const [customDialog, setCustomDialog] = useState(null);
105
110
  const [copyModeEnabled, setCopyModeEnabled] = useState(false);
111
+ const [pendingRestorePrompt, setPendingRestorePrompt] = useState(false);
106
112
  const [shellModeActive, setShellModeActive] = useState(false);
107
113
  const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] = useState(false);
108
114
  const [historyRemountKey, setHistoryRemountKey] = useState(0);
109
115
  const [updateInfo, setUpdateInfo] = useState(null);
110
- const [isTrustedFolder, setIsTrustedFolder] = useState(config.isTrustedFolder());
116
+ const [isTrustedFolder, setIsTrustedFolder] = useState(isWorkspaceTrusted(settings.merged).isTrusted);
111
117
  const [queueErrorMessage, setQueueErrorMessage] = useState(null);
112
118
  const [defaultBannerText, setDefaultBannerText] = useState('');
113
119
  const [warningBannerText, setWarningBannerText] = useState('');
@@ -119,8 +125,15 @@ export const AppContainer = (props) => {
119
125
  const { addConfirmUpdateExtensionRequest, confirmUpdateExtensionRequests } = useConfirmUpdateRequests();
120
126
  const { extensionsUpdateState, extensionsUpdateStateInternal, dispatchExtensionStateUpdate, } = useExtensionUpdates(extensionManager, historyManager.addItem, config.getEnableExtensionReloading());
121
127
  const [isPermissionsDialogOpen, setPermissionsDialogOpen] = useState(false);
122
- const openPermissionsDialog = useCallback(() => setPermissionsDialogOpen(true), []);
123
- const closePermissionsDialog = useCallback(() => setPermissionsDialogOpen(false), []);
128
+ const [permissionsDialogProps, setPermissionsDialogProps] = useState(null);
129
+ const openPermissionsDialog = useCallback((props) => {
130
+ setPermissionsDialogOpen(true);
131
+ setPermissionsDialogProps(props ?? null);
132
+ }, []);
133
+ const closePermissionsDialog = useCallback(() => {
134
+ setPermissionsDialogOpen(false);
135
+ setPermissionsDialogProps(null);
136
+ }, []);
124
137
  const toggleDebugProfiler = useCallback(() => setShowDebugProfiler((prev) => !prev), []);
125
138
  // Helper to determine the effective model, considering the fallback state.
126
139
  const getEffectiveModel = useCallback(() => {
@@ -146,6 +159,7 @@ export const AppContainer = (props) => {
146
159
  const { columns: terminalWidth, rows: terminalHeight } = useTerminalSize();
147
160
  const { stdin, setRawMode } = useStdin();
148
161
  const { stdout } = useStdout();
162
+ const app = useApp();
149
163
  // Additional hooks moved from App.tsx
150
164
  const { stats: sessionStats } = useSessionStats();
151
165
  const branchName = useGitBranchName(config.getTargetDir());
@@ -189,15 +203,7 @@ export const AppContainer = (props) => {
189
203
  coreEvents.off(CoreEvent.ModelChanged, handleModelChanged);
190
204
  };
191
205
  }, [getEffectiveModel]);
192
- const { consoleMessages, handleNewMessage, clearConsoleMessages: clearConsoleMessagesState, } = useConsoleMessages();
193
- useEffect(() => {
194
- const consolePatcher = new ConsolePatcher({
195
- onNewMessage: handleNewMessage,
196
- debugMode: config.getDebugMode(),
197
- });
198
- consolePatcher.patch();
199
- registerCleanup(consolePatcher.cleanup);
200
- }, [handleNewMessage, config]);
206
+ const { consoleMessages, clearConsoleMessages: clearConsoleMessagesState } = useConsoleMessages();
201
207
  const mainAreaWidth = calculateMainAreaWidth(terminalWidth, settings);
202
208
  // Derive widths for InputPrompt using shared helper
203
209
  const { inputWidth, suggestionsWidth } = useMemo(() => {
@@ -252,7 +258,25 @@ export const AppContainer = (props) => {
252
258
  stdout.write(ansiEscapes.clearTerminal);
253
259
  }
254
260
  setHistoryRemountKey((prev) => prev + 1);
255
- }, [setHistoryRemountKey, stdout, isAlternateBuffer]);
261
+ }, [setHistoryRemountKey, isAlternateBuffer, stdout]);
262
+ const handleEditorClose = useCallback(() => {
263
+ if (shouldEnterAlternateScreen(isAlternateBuffer, config.getScreenReader())) {
264
+ // The editor may have exited alternate buffer mode so we need to
265
+ // enter it again to be safe.
266
+ enterAlternateScreen();
267
+ enableMouseEvents();
268
+ disableLineWrapping();
269
+ app.rerender();
270
+ }
271
+ enableSupportedProtocol();
272
+ refreshStatic();
273
+ }, [refreshStatic, isAlternateBuffer, app, config]);
274
+ useEffect(() => {
275
+ coreEvents.on(CoreEvent.ExternalEditorClosed, handleEditorClose);
276
+ return () => {
277
+ coreEvents.off(CoreEvent.ExternalEditorClosed, handleEditorClose);
278
+ };
279
+ }, [handleEditorClose]);
256
280
  const { isThemeDialogOpen, openThemeDialog, closeThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, historyManager.addItem, initializationResult.themeError);
257
281
  const { authState, setAuthState, authError, onAuthError, apiKeyDefaultValue, reloadApiKey, } = useAuthCommand(settings, config);
258
282
  const { proQuotaRequest, handleProQuotaChoice } = useQuotaAndFallback({
@@ -291,12 +315,12 @@ export const AppContainer = (props) => {
291
315
  if (authType === AuthType.LOGIN_WITH_GOOGLE &&
292
316
  config.isBrowserLaunchSuppressed()) {
293
317
  await runExitCleanup();
294
- debugLogger.log(`
318
+ writeToStdout(`
295
319
  ----------------------------------------------------------------
296
- Logging in with Google... Please restart Cell CLI to continue.
320
+ Logging in with Google... Restarting Cell CLI to continue.
297
321
  ----------------------------------------------------------------
298
322
  `);
299
- process.exit(0);
323
+ process.exit(RELAUNCH_EXIT_CODE);
300
324
  }
301
325
  }
302
326
  setAuthState(AuthState.Authenticated);
@@ -413,7 +437,7 @@ Logging in with Google... Please restart Cell CLI to continue.
413
437
  feedbackService,
414
438
  toggleDebugProfiler,
415
439
  ]);
416
- const { handleSlashCommand, slashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, commandContext, shellConfirmationRequest, confirmationRequest, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, slashCommandActions, extensionsUpdateStateInternal, isConfigInitialized, setBannerVisible);
440
+ const { handleSlashCommand, slashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, commandContext, shellConfirmationRequest, confirmationRequest, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, slashCommandActions, extensionsUpdateStateInternal, isConfigInitialized, setBannerVisible, setCustomDialog);
417
441
  const performMemoryRefresh = useCallback(async () => {
418
442
  historyManager.addItem({
419
443
  type: MessageType.INFO,
@@ -442,10 +466,28 @@ Logging in with Google... Please restart Cell CLI to continue.
442
466
  }, [config, historyManager]);
443
467
  const cancelHandlerRef = useRef(() => { });
444
468
  const getPreferredEditor = useCallback(() => settings.merged.general?.preferredEditor, [settings.merged.general?.preferredEditor]);
445
- const onCancelSubmit = useCallback(() => {
446
- cancelHandlerRef.current();
469
+ const onCancelSubmit = useCallback((shouldRestorePrompt) => {
470
+ if (shouldRestorePrompt) {
471
+ setPendingRestorePrompt(true);
472
+ }
473
+ else {
474
+ setPendingRestorePrompt(false);
475
+ cancelHandlerRef.current(false);
476
+ }
447
477
  }, []);
448
- const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, refreshStatic, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused);
478
+ useEffect(() => {
479
+ if (pendingRestorePrompt) {
480
+ const lastHistoryUserMsg = historyManager.history.findLast((h) => h.type === 'user');
481
+ const lastUserMsg = userMessages.at(-1);
482
+ if (!lastHistoryUserMsg ||
483
+ (typeof lastHistoryUserMsg.text === 'string' &&
484
+ lastHistoryUserMsg.text === lastUserMsg)) {
485
+ cancelHandlerRef.current(true);
486
+ setPendingRestorePrompt(false);
487
+ }
488
+ }
489
+ }, [pendingRestorePrompt, userMessages, historyManager.history]);
490
+ const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, lastOutputTime, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused);
449
491
  // Auto-accept indicator
450
492
  const showAutoAcceptIndicator = useAutoAcceptIndicator({
451
493
  config,
@@ -457,7 +499,7 @@ Logging in with Google... Please restart Cell CLI to continue.
457
499
  streamingState,
458
500
  submitQuery,
459
501
  });
460
- cancelHandlerRef.current = useCallback(() => {
502
+ cancelHandlerRef.current = useCallback((shouldRestorePrompt = true) => {
461
503
  const pendingHistoryItems = [
462
504
  ...pendingSlashCommandHistoryItems,
463
505
  ...pendingGeminiHistoryItems,
@@ -467,13 +509,13 @@ Logging in with Google... Please restart Cell CLI to continue.
467
509
  return;
468
510
  }
469
511
  const lastUserMessage = userMessages.at(-1);
470
- let textToSet = lastUserMessage || '';
512
+ let textToSet = shouldRestorePrompt ? lastUserMessage || '' : '';
471
513
  const queuedText = getQueuedMessagesText();
472
514
  if (queuedText) {
473
515
  textToSet = textToSet ? `${textToSet}\n\n${queuedText}` : queuedText;
474
516
  clearQueue();
475
517
  }
476
- if (textToSet) {
518
+ if (textToSet || !shouldRestorePrompt) {
477
519
  buffer.setText(textToSet);
478
520
  }
479
521
  }, [
@@ -615,6 +657,34 @@ Logging in with Google... Please restart Cell CLI to continue.
615
657
  const { isFolderTrustDialogOpen, handleFolderTrustSelect, isRestarting } = useFolderTrust(settings, setIsTrustedFolder, historyManager.addItem);
616
658
  const { needsRestart: ideNeedsRestart, restartReason: ideTrustRestartReason, } = useIdeTrustListener();
617
659
  const isInitialMount = useRef(true);
660
+ useIncludeDirsTrust(config, isTrustedFolder, historyManager, setCustomDialog);
661
+ useEffect(() => {
662
+ let timeoutId;
663
+ const handleWarning = (message) => {
664
+ setWarningMessage(message);
665
+ if (timeoutId) {
666
+ clearTimeout(timeoutId);
667
+ }
668
+ timeoutId = setTimeout(() => {
669
+ setWarningMessage(null);
670
+ }, WARNING_PROMPT_DURATION_MS);
671
+ };
672
+ const handleSelectionWarning = () => {
673
+ handleWarning('Press Ctrl-S to enter selection mode to copy text.');
674
+ };
675
+ const handlePasteTimeout = () => {
676
+ handleWarning('Paste Timed out. Possibly due to slow connection.');
677
+ };
678
+ appEvents.on(AppEvent.SelectionWarning, handleSelectionWarning);
679
+ appEvents.on(AppEvent.PasteTimeout, handlePasteTimeout);
680
+ return () => {
681
+ appEvents.off(AppEvent.SelectionWarning, handleSelectionWarning);
682
+ appEvents.off(AppEvent.PasteTimeout, handlePasteTimeout);
683
+ if (timeoutId) {
684
+ clearTimeout(timeoutId);
685
+ }
686
+ };
687
+ }, []);
618
688
  useEffect(() => {
619
689
  let timeoutId;
620
690
  const handleWarning = (message) => {
@@ -680,19 +750,10 @@ Logging in with Google... Please restart Cell CLI to continue.
680
750
  setConstrainHeight(false);
681
751
  };
682
752
  appEvents.on(AppEvent.OpenDebugConsole, openDebugConsole);
683
- const logErrorHandler = (errorMessage) => {
684
- handleNewMessage({
685
- type: 'error',
686
- content: String(errorMessage),
687
- count: 1,
688
- });
689
- };
690
- appEvents.on(AppEvent.LogError, logErrorHandler);
691
753
  return () => {
692
754
  appEvents.off(AppEvent.OpenDebugConsole, openDebugConsole);
693
- appEvents.off(AppEvent.LogError, logErrorHandler);
694
755
  };
695
- }, [handleNewMessage, config]);
756
+ }, [config]);
696
757
  useEffect(() => {
697
758
  if (ctrlCTimerRef.current) {
698
759
  clearTimeout(ctrlCTimerRef.current);
@@ -702,7 +763,7 @@ Logging in with Google... Please restart Cell CLI to continue.
702
763
  recordExitFail(config);
703
764
  }
704
765
  if (ctrlCPressCount > 1) {
705
- handleSlashCommand('/quit');
766
+ handleSlashCommand('/quit', undefined, undefined, false);
706
767
  }
707
768
  else {
708
769
  ctrlCTimerRef.current = setTimeout(() => {
@@ -720,7 +781,7 @@ Logging in with Google... Please restart Cell CLI to continue.
720
781
  recordExitFail(config);
721
782
  }
722
783
  if (ctrlDPressCount > 1) {
723
- handleSlashCommand('/quit');
784
+ handleSlashCommand('/quit', undefined, undefined, false);
724
785
  }
725
786
  else {
726
787
  ctrlDTimerRef.current = setTimeout(() => {
@@ -742,7 +803,7 @@ Logging in with Google... Please restart Cell CLI to continue.
742
803
  }
743
804
  setIdePromptAnswered(true);
744
805
  }, [handleSlashCommand, settings]);
745
- const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases);
806
+ const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases, !!activePtyId && !embeddedShellFocused, lastOutputTime);
746
807
  const handleGlobalKeypress = useCallback((key) => {
747
808
  if (copyModeEnabled) {
748
809
  setCopyModeEnabled(false);
@@ -885,7 +946,7 @@ Logging in with Google... Please restart Cell CLI to continue.
885
946
  coreEvents.on(CoreEvent.UserFeedback, handleUserFeedback);
886
947
  // Flush any messages that happened during startup before this component
887
948
  // mounted.
888
- coreEvents.drainFeedbackBacklog();
949
+ coreEvents.drainBacklogs();
889
950
  return () => {
890
951
  coreEvents.off(CoreEvent.UserFeedback, handleUserFeedback);
891
952
  };
@@ -905,6 +966,7 @@ Logging in with Google... Please restart Cell CLI to continue.
905
966
  isFolderTrustDialogOpen ||
906
967
  !!shellConfirmationRequest ||
907
968
  !!confirmationRequest ||
969
+ !!customDialog ||
908
970
  confirmUpdateExtensionRequests.length > 0 ||
909
971
  !!loopDetectionConfirmationRequest ||
910
972
  isThemeDialogOpen ||
@@ -980,6 +1042,7 @@ Logging in with Google... Please restart Cell CLI to continue.
980
1042
  isSettingsDialogOpen,
981
1043
  isModelDialogOpen,
982
1044
  isPermissionsDialogOpen,
1045
+ permissionsDialogProps,
983
1046
  slashCommands,
984
1047
  pendingSlashCommandHistoryItems,
985
1048
  commandContext,
@@ -1044,6 +1107,7 @@ Logging in with Google... Please restart Cell CLI to continue.
1044
1107
  activePtyId,
1045
1108
  embeddedShellFocused,
1046
1109
  showDebugProfiler,
1110
+ customDialog,
1047
1111
  copyModeEnabled,
1048
1112
  warningMessage,
1049
1113
  bannerData: {
@@ -1067,6 +1131,7 @@ Logging in with Google... Please restart Cell CLI to continue.
1067
1131
  isSettingsDialogOpen,
1068
1132
  isModelDialogOpen,
1069
1133
  isPermissionsDialogOpen,
1134
+ permissionsDialogProps,
1070
1135
  slashCommands,
1071
1136
  pendingSlashCommandHistoryItems,
1072
1137
  commandContext,
@@ -1133,6 +1198,7 @@ Logging in with Google... Please restart Cell CLI to continue.
1133
1198
  embeddedShellFocused,
1134
1199
  awaitingFeedback,
1135
1200
  showDebugProfiler,
1201
+ customDialog,
1136
1202
  apiKeyDefaultValue,
1137
1203
  authState,
1138
1204
  copyModeEnabled,
@@ -1154,6 +1220,7 @@ Logging in with Google... Please restart Cell CLI to continue.
1154
1220
  exitPrivacyNotice,
1155
1221
  closeSettingsDialog,
1156
1222
  closeModelDialog,
1223
+ openPermissionsDialog,
1157
1224
  closePermissionsDialog,
1158
1225
  setShellModeActive,
1159
1226
  vimHandleInput,
@@ -1170,6 +1237,7 @@ Logging in with Google... Please restart Cell CLI to continue.
1170
1237
  handleApiKeySubmit,
1171
1238
  handleApiKeyCancel,
1172
1239
  setBannerVisible,
1240
+ setEmbeddedShellFocused,
1173
1241
  }), [
1174
1242
  handleThemeSelect,
1175
1243
  closeThemeDialog,
@@ -1182,6 +1250,7 @@ Logging in with Google... Please restart Cell CLI to continue.
1182
1250
  exitPrivacyNotice,
1183
1251
  closeSettingsDialog,
1184
1252
  closeModelDialog,
1253
+ openPermissionsDialog,
1185
1254
  closePermissionsDialog,
1186
1255
  setShellModeActive,
1187
1256
  vimHandleInput,
@@ -1198,6 +1267,7 @@ Logging in with Google... Please restart Cell CLI to continue.
1198
1267
  handleApiKeySubmit,
1199
1268
  handleApiKeyCancel,
1200
1269
  setBannerVisible,
1270
+ setEmbeddedShellFocused,
1201
1271
  ]);
1202
1272
  return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
1203
1273
  version: props.version,