@machina.ai/cell-cli 1.20.2-rc1 → 1.25.0-rc3

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 (873) hide show
  1. package/dist/package.json +5 -4
  2. package/dist/src/commands/extensions/configure.d.ts +13 -0
  3. package/dist/src/commands/extensions/configure.js +131 -0
  4. package/dist/src/commands/extensions/configure.js.map +1 -0
  5. package/dist/src/commands/extensions/configure.test.d.ts +1 -0
  6. package/dist/src/commands/extensions/configure.test.js +197 -0
  7. package/dist/src/commands/extensions/configure.test.js.map +1 -0
  8. package/dist/src/commands/extensions/disable.js.map +1 -1
  9. package/dist/src/commands/extensions/disable.test.js.map +1 -1
  10. package/dist/src/commands/extensions/enable.js.map +1 -1
  11. package/dist/src/commands/extensions/enable.test.js.map +1 -1
  12. package/dist/src/commands/extensions/examples/mcp-server/example.test.js +1 -1
  13. package/dist/src/commands/extensions/examples/mcp-server/example.test.js.map +1 -1
  14. package/dist/src/commands/extensions/examples/mcp-server/example.test.ts +4 -12
  15. package/dist/src/commands/extensions/install.js +7 -31
  16. package/dist/src/commands/extensions/install.js.map +1 -1
  17. package/dist/src/commands/extensions/install.test.js +21 -3
  18. package/dist/src/commands/extensions/install.test.js.map +1 -1
  19. package/dist/src/commands/extensions/link.test.js.map +1 -1
  20. package/dist/src/commands/extensions/list.test.js +0 -1
  21. package/dist/src/commands/extensions/list.test.js.map +1 -1
  22. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  23. package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
  24. package/dist/src/commands/extensions/update.test.js.map +1 -1
  25. package/dist/src/commands/extensions/utils.d.ts +14 -0
  26. package/dist/src/commands/extensions/utils.js +33 -0
  27. package/dist/src/commands/extensions/utils.js.map +1 -0
  28. package/dist/src/commands/extensions/validate.js +1 -1
  29. package/dist/src/commands/extensions/validate.js.map +1 -1
  30. package/dist/src/commands/extensions/validate.test.js +1 -1
  31. package/dist/src/commands/extensions/validate.test.js.map +1 -1
  32. package/dist/src/commands/extensions.js +2 -0
  33. package/dist/src/commands/extensions.js.map +1 -1
  34. package/dist/src/commands/hooks/migrate.d.ts +11 -0
  35. package/dist/src/commands/hooks/migrate.js +206 -0
  36. package/dist/src/commands/hooks/migrate.js.map +1 -0
  37. package/dist/src/commands/hooks/migrate.test.js +389 -0
  38. package/dist/src/commands/hooks/migrate.test.js.map +1 -0
  39. package/dist/src/commands/hooks.d.ts +7 -0
  40. package/dist/src/commands/hooks.js +22 -0
  41. package/dist/src/commands/hooks.js.map +1 -0
  42. package/dist/src/commands/mcp/add.js +4 -2
  43. package/dist/src/commands/mcp/add.js.map +1 -1
  44. package/dist/src/commands/mcp/add.test.js +24 -2
  45. package/dist/src/commands/mcp/add.test.js.map +1 -1
  46. package/dist/src/commands/mcp/list.js +7 -1
  47. package/dist/src/commands/mcp/list.js.map +1 -1
  48. package/dist/src/commands/skills/disable.d.ts +14 -0
  49. package/dist/src/commands/skills/disable.js +45 -0
  50. package/dist/src/commands/skills/disable.js.map +1 -0
  51. package/dist/src/commands/skills/disable.test.d.ts +6 -0
  52. package/dist/src/commands/skills/disable.test.js +80 -0
  53. package/dist/src/commands/skills/disable.test.js.map +1 -0
  54. package/dist/src/commands/skills/enable.d.ts +12 -0
  55. package/dist/src/commands/skills/enable.js +35 -0
  56. package/dist/src/commands/skills/enable.js.map +1 -0
  57. package/dist/src/commands/skills/enable.test.d.ts +6 -0
  58. package/dist/src/commands/skills/enable.test.js +107 -0
  59. package/dist/src/commands/skills/enable.test.js.map +1 -0
  60. package/dist/src/commands/skills/install.d.ts +14 -0
  61. package/dist/src/commands/skills/install.js +61 -0
  62. package/dist/src/commands/skills/install.js.map +1 -0
  63. package/dist/src/commands/skills/install.test.d.ts +6 -0
  64. package/dist/src/commands/skills/install.test.js +57 -0
  65. package/dist/src/commands/skills/install.test.js.map +1 -0
  66. package/dist/src/commands/skills/list.d.ts +10 -0
  67. package/dist/src/commands/skills/list.js +60 -0
  68. package/dist/src/commands/skills/list.js.map +1 -0
  69. package/dist/src/commands/skills/list.test.d.ts +6 -0
  70. package/dist/src/commands/skills/list.test.js +136 -0
  71. package/dist/src/commands/skills/list.test.js.map +1 -0
  72. package/dist/src/commands/skills/uninstall.d.ts +13 -0
  73. package/dist/src/commands/skills/uninstall.js +56 -0
  74. package/dist/src/commands/skills/uninstall.js.map +1 -0
  75. package/dist/src/commands/skills/uninstall.test.d.ts +6 -0
  76. package/dist/src/commands/skills/uninstall.test.js +61 -0
  77. package/dist/src/commands/skills/uninstall.test.js.map +1 -0
  78. package/dist/src/commands/skills.d.ts +7 -0
  79. package/dist/src/commands/skills.js +30 -0
  80. package/dist/src/commands/skills.js.map +1 -0
  81. package/dist/src/commands/skills.test.d.ts +6 -0
  82. package/dist/src/commands/skills.test.js +49 -0
  83. package/dist/src/commands/skills.test.js.map +1 -0
  84. package/dist/src/config/config.d.ts +10 -3
  85. package/dist/src/config/config.js +101 -34
  86. package/dist/src/config/config.js.map +1 -1
  87. package/dist/src/config/config.test.js +225 -16
  88. package/dist/src/config/config.test.js.map +1 -1
  89. package/dist/src/config/extension-manager-agents.test.d.ts +6 -0
  90. package/dist/src/config/extension-manager-agents.test.js +115 -0
  91. package/dist/src/config/extension-manager-agents.test.js.map +1 -0
  92. package/dist/src/config/extension-manager-scope.test.js +164 -0
  93. package/dist/src/config/extension-manager-scope.test.js.map +1 -0
  94. package/dist/src/config/extension-manager-skills.test.js +150 -0
  95. package/dist/src/config/extension-manager-skills.test.js.map +1 -0
  96. package/dist/src/config/extension-manager.d.ts +7 -1
  97. package/dist/src/config/extension-manager.js +202 -37
  98. package/dist/src/config/extension-manager.js.map +1 -1
  99. package/dist/src/config/extension.test.js +178 -13
  100. package/dist/src/config/extension.test.js.map +1 -1
  101. package/dist/src/config/extensions/consent.d.ts +5 -3
  102. package/dist/src/config/extensions/consent.js +33 -7
  103. package/dist/src/config/extensions/consent.js.map +1 -1
  104. package/dist/src/config/extensions/consent.test.js +114 -10
  105. package/dist/src/config/extensions/consent.test.js.map +1 -1
  106. package/dist/src/config/extensions/extensionSettings.d.ts +9 -1
  107. package/dist/src/config/extensions/extensionSettings.js +107 -17
  108. package/dist/src/config/extensions/extensionSettings.js.map +1 -1
  109. package/dist/src/config/extensions/extensionSettings.test.js +189 -54
  110. package/dist/src/config/extensions/extensionSettings.test.js.map +1 -1
  111. package/dist/src/config/extensions/extensionUpdates.test.js +231 -0
  112. package/dist/src/config/extensions/extensionUpdates.test.js.map +1 -0
  113. package/dist/src/config/extensions/github.d.ts +4 -1
  114. package/dist/src/config/extensions/github.js +33 -7
  115. package/dist/src/config/extensions/github.js.map +1 -1
  116. package/dist/src/config/extensions/github.test.js +190 -2
  117. package/dist/src/config/extensions/github.test.js.map +1 -1
  118. package/dist/src/config/extensions/github_fetch.js.map +1 -1
  119. package/dist/src/config/extensions/storage.js +2 -2
  120. package/dist/src/config/extensions/storage.js.map +1 -1
  121. package/dist/src/config/extensions/update.js +1 -1
  122. package/dist/src/config/extensions/update.js.map +1 -1
  123. package/dist/src/config/extensions/update.test.js +8 -8
  124. package/dist/src/config/extensions/update.test.js.map +1 -1
  125. package/dist/src/config/keyBindings.d.ts +14 -2
  126. package/dist/src/config/keyBindings.js +89 -11
  127. package/dist/src/config/keyBindings.js.map +1 -1
  128. package/dist/src/config/policy-engine.integration.test.js +13 -1
  129. package/dist/src/config/policy-engine.integration.test.js.map +1 -1
  130. package/dist/src/config/settings-validation.d.ts +23 -0
  131. package/dist/src/config/settings-validation.js +249 -0
  132. package/dist/src/config/settings-validation.js.map +1 -0
  133. package/dist/src/config/settings-validation.test.d.ts +6 -0
  134. package/dist/src/config/settings-validation.test.js +370 -0
  135. package/dist/src/config/settings-validation.test.js.map +1 -0
  136. package/dist/src/config/settings.d.ts +9 -7
  137. package/dist/src/config/settings.js +138 -233
  138. package/dist/src/config/settings.js.map +1 -1
  139. package/dist/src/config/settings.test.js +245 -571
  140. package/dist/src/config/settings.test.js.map +1 -1
  141. package/dist/src/config/settingsSchema.d.ts +459 -35
  142. package/dist/src/config/settingsSchema.js +541 -32
  143. package/dist/src/config/settingsSchema.js.map +1 -1
  144. package/dist/src/config/settingsSchema.test.js +22 -4
  145. package/dist/src/config/settingsSchema.test.js.map +1 -1
  146. package/dist/src/config/settings_repro.test.d.ts +6 -0
  147. package/dist/src/config/settings_repro.test.js +162 -0
  148. package/dist/src/config/settings_repro.test.js.map +1 -0
  149. package/dist/src/config/settings_validation_warning.test.d.ts +6 -0
  150. package/dist/src/config/settings_validation_warning.test.js +123 -0
  151. package/dist/src/config/settings_validation_warning.test.js.map +1 -0
  152. package/dist/src/config/trustedFolders.d.ts +1 -0
  153. package/dist/src/config/trustedFolders.js +18 -4
  154. package/dist/src/config/trustedFolders.js.map +1 -1
  155. package/dist/src/config/trustedFolders.test.js +45 -0
  156. package/dist/src/config/trustedFolders.test.js.map +1 -1
  157. package/dist/src/gemini.js +135 -69
  158. package/dist/src/gemini.js.map +1 -1
  159. package/dist/src/gemini.test.js +85 -99
  160. package/dist/src/gemini.test.js.map +1 -1
  161. package/dist/src/gemini_cleanup.test.js +7 -0
  162. package/dist/src/gemini_cleanup.test.js.map +1 -1
  163. package/dist/src/generated/git-commit.d.ts +3 -3
  164. package/dist/src/generated/git-commit.js +3 -3
  165. package/dist/src/nonInteractiveCli.js +59 -9
  166. package/dist/src/nonInteractiveCli.js.map +1 -1
  167. package/dist/src/nonInteractiveCli.test.js +114 -21
  168. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  169. package/dist/src/services/BuiltinCommandLoader.d.ts +1 -1
  170. package/dist/src/services/BuiltinCommandLoader.js +66 -8
  171. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  172. package/dist/src/services/BuiltinCommandLoader.test.js +70 -12
  173. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  174. package/dist/src/services/FeedbackService.js.map +1 -1
  175. package/dist/src/services/FileCommandLoader.js +6 -6
  176. package/dist/src/services/FileCommandLoader.js.map +1 -1
  177. package/dist/src/services/FileCommandLoader.test.js.map +1 -1
  178. package/dist/src/services/McpPromptLoader.js +1 -0
  179. package/dist/src/services/McpPromptLoader.js.map +1 -1
  180. package/dist/src/services/McpPromptLoader.test.js +40 -0
  181. package/dist/src/services/McpPromptLoader.test.js.map +1 -1
  182. package/dist/src/services/prompt-processors/shellProcessor.js +13 -11
  183. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  184. package/dist/src/services/prompt-processors/shellProcessor.test.js +93 -61
  185. package/dist/src/services/prompt-processors/shellProcessor.test.js.map +1 -1
  186. package/dist/src/test-utils/render.js +5 -2
  187. package/dist/src/test-utils/render.js.map +1 -1
  188. package/dist/src/ui/App.test.js +2 -2
  189. package/dist/src/ui/App.test.js.map +1 -1
  190. package/dist/src/ui/AppContainer.js +200 -94
  191. package/dist/src/ui/AppContainer.js.map +1 -1
  192. package/dist/src/ui/AppContainer.test.js +405 -69
  193. package/dist/src/ui/AppContainer.test.js.map +1 -1
  194. package/dist/src/ui/IdeIntegrationNudge.test.js +18 -7
  195. package/dist/src/ui/IdeIntegrationNudge.test.js.map +1 -1
  196. package/dist/src/ui/auth/ApiAuthDialog.js +36 -3
  197. package/dist/src/ui/auth/ApiAuthDialog.js.map +1 -1
  198. package/dist/src/ui/auth/ApiAuthDialog.test.js +26 -2
  199. package/dist/src/ui/auth/ApiAuthDialog.test.js.map +1 -1
  200. package/dist/src/ui/auth/AuthDialog.d.ts +4 -1
  201. package/dist/src/ui/auth/AuthDialog.js +11 -4
  202. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  203. package/dist/src/ui/auth/AuthDialog.test.js +19 -2
  204. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  205. package/dist/src/ui/auth/AuthInProgress.test.js +16 -6
  206. package/dist/src/ui/auth/AuthInProgress.test.js.map +1 -1
  207. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.d.ts +10 -0
  208. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js +27 -0
  209. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js.map +1 -0
  210. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.d.ts +6 -0
  211. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js +68 -0
  212. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +1 -0
  213. package/dist/src/ui/auth/useAuth.js +9 -4
  214. package/dist/src/ui/auth/useAuth.js.map +1 -1
  215. package/dist/src/ui/auth/useAuth.test.js +2 -2
  216. package/dist/src/ui/auth/useAuth.test.js.map +1 -1
  217. package/dist/src/ui/commands/aboutCommand.js +3 -4
  218. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  219. package/dist/src/ui/commands/aboutCommand.test.js +7 -10
  220. package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
  221. package/dist/src/ui/commands/agentsCommand.d.ts +7 -0
  222. package/dist/src/ui/commands/agentsCommand.js +79 -0
  223. package/dist/src/ui/commands/agentsCommand.js.map +1 -0
  224. package/dist/src/ui/commands/agentsCommand.test.d.ts +6 -0
  225. package/dist/src/ui/commands/agentsCommand.test.js +91 -0
  226. package/dist/src/ui/commands/agentsCommand.test.js.map +1 -0
  227. package/dist/src/ui/commands/authCommand.js +30 -3
  228. package/dist/src/ui/commands/authCommand.js.map +1 -1
  229. package/dist/src/ui/commands/authCommand.test.js +72 -4
  230. package/dist/src/ui/commands/authCommand.test.js.map +1 -1
  231. package/dist/src/ui/commands/bugCommand.js +37 -6
  232. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  233. package/dist/src/ui/commands/bugCommand.test.js +86 -5
  234. package/dist/src/ui/commands/bugCommand.test.js.map +1 -1
  235. package/dist/src/ui/commands/chatCommand.d.ts +1 -2
  236. package/dist/src/ui/commands/chatCommand.js +52 -52
  237. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  238. package/dist/src/ui/commands/chatCommand.test.js +95 -69
  239. package/dist/src/ui/commands/chatCommand.test.js.map +1 -1
  240. package/dist/src/ui/commands/clearCommand.js +22 -1
  241. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  242. package/dist/src/ui/commands/clearCommand.test.js +6 -0
  243. package/dist/src/ui/commands/clearCommand.test.js.map +1 -1
  244. package/dist/src/ui/commands/copyCommand.js +1 -1
  245. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  246. package/dist/src/ui/commands/directoryCommand.js +27 -10
  247. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  248. package/dist/src/ui/commands/directoryCommand.test.js +49 -11
  249. package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
  250. package/dist/src/ui/commands/extensionsCommand.js +194 -24
  251. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  252. package/dist/src/ui/commands/extensionsCommand.test.js +217 -27
  253. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
  254. package/dist/src/ui/commands/helpCommand.js +1 -1
  255. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  256. package/dist/src/ui/commands/helpCommand.test.js +1 -1
  257. package/dist/src/ui/commands/helpCommand.test.js.map +1 -1
  258. package/dist/src/ui/commands/hooksCommand.d.ts +7 -0
  259. package/dist/src/ui/commands/hooksCommand.js +342 -0
  260. package/dist/src/ui/commands/hooksCommand.js.map +1 -0
  261. package/dist/src/ui/commands/hooksCommand.test.d.ts +6 -0
  262. package/dist/src/ui/commands/hooksCommand.test.js +575 -0
  263. package/dist/src/ui/commands/hooksCommand.test.js.map +1 -0
  264. package/dist/src/ui/commands/ideCommand.test.js.map +1 -1
  265. package/dist/src/ui/commands/initCommand.js +10 -50
  266. package/dist/src/ui/commands/initCommand.js.map +1 -1
  267. package/dist/src/ui/commands/initCommand.test.js.map +1 -1
  268. package/dist/src/ui/commands/mcpCommand.js +34 -16
  269. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  270. package/dist/src/ui/commands/mcpCommand.test.js +43 -6
  271. package/dist/src/ui/commands/mcpCommand.test.js.map +1 -1
  272. package/dist/src/ui/commands/memoryCommand.js +19 -33
  273. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  274. package/dist/src/ui/commands/memoryCommand.test.js +112 -16
  275. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
  276. package/dist/src/ui/commands/modelCommand.js +10 -5
  277. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  278. package/dist/src/ui/commands/modelCommand.test.js +12 -1
  279. package/dist/src/ui/commands/modelCommand.test.js.map +1 -1
  280. package/dist/src/ui/commands/restoreCommand.d.ts +1 -1
  281. package/dist/src/ui/commands/restoreCommand.js +38 -33
  282. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  283. package/dist/src/ui/commands/restoreCommand.test.js +6 -6
  284. package/dist/src/ui/commands/restoreCommand.test.js.map +1 -1
  285. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
  286. package/dist/src/ui/commands/skillsCommand.d.ts +7 -0
  287. package/dist/src/ui/commands/skillsCommand.js +235 -0
  288. package/dist/src/ui/commands/skillsCommand.js.map +1 -0
  289. package/dist/src/ui/commands/skillsCommand.test.d.ts +6 -0
  290. package/dist/src/ui/commands/skillsCommand.test.js +405 -0
  291. package/dist/src/ui/commands/skillsCommand.test.js.map +1 -0
  292. package/dist/src/ui/commands/statsCommand.js +6 -10
  293. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  294. package/dist/src/ui/commands/statsCommand.test.js +20 -3
  295. package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
  296. package/dist/src/ui/commands/terminalSetupCommand.js +1 -0
  297. package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -1
  298. package/dist/src/ui/commands/toolsCommand.js +2 -2
  299. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  300. package/dist/src/ui/commands/toolsCommand.test.js +2 -2
  301. package/dist/src/ui/commands/toolsCommand.test.js.map +1 -1
  302. package/dist/src/ui/commands/types.d.ts +16 -38
  303. package/dist/src/ui/commands/types.js +1 -0
  304. package/dist/src/ui/commands/types.js.map +1 -1
  305. package/dist/src/ui/components/AnsiOutput.js +1 -1
  306. package/dist/src/ui/components/AnsiOutput.js.map +1 -1
  307. package/dist/src/ui/components/AppHeader.test.js +8 -0
  308. package/dist/src/ui/components/AppHeader.test.js.map +1 -1
  309. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  310. package/dist/src/ui/components/AsciiArt.js +6 -6
  311. package/dist/src/ui/components/Composer.js +7 -7
  312. package/dist/src/ui/components/Composer.js.map +1 -1
  313. package/dist/src/ui/components/Composer.test.js +23 -4
  314. package/dist/src/ui/components/Composer.test.js.map +1 -1
  315. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +1 -0
  316. package/dist/src/ui/components/ContextSummaryDisplay.js +12 -5
  317. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  318. package/dist/src/ui/components/ContextSummaryDisplay.test.js +56 -25
  319. package/dist/src/ui/components/ContextSummaryDisplay.test.js.map +1 -1
  320. package/dist/src/ui/components/DetailedMessagesDisplay.js +3 -3
  321. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  322. package/dist/src/ui/components/DetailedMessagesDisplay.test.js +2 -12
  323. package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -1
  324. package/dist/src/ui/components/DialogManager.js +3 -3
  325. package/dist/src/ui/components/DialogManager.js.map +1 -1
  326. package/dist/src/ui/components/EditorSettingsDialog.js +2 -1
  327. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  328. package/dist/src/ui/components/EditorSettingsDialog.test.js +10 -2
  329. package/dist/src/ui/components/EditorSettingsDialog.test.js.map +1 -1
  330. package/dist/src/ui/components/FolderTrustDialog.js +20 -14
  331. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  332. package/dist/src/ui/components/FolderTrustDialog.test.js +12 -2
  333. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  334. package/dist/src/ui/components/Footer.js +6 -6
  335. package/dist/src/ui/components/Footer.js.map +1 -1
  336. package/dist/src/ui/components/GeminiRespondingSpinner.test.js +3 -0
  337. package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +1 -1
  338. package/dist/src/ui/components/Header.js +3 -1
  339. package/dist/src/ui/components/Header.js.map +1 -1
  340. package/dist/src/ui/components/Header.test.js +3 -1
  341. package/dist/src/ui/components/Header.test.js.map +1 -1
  342. package/dist/src/ui/components/Help.js +1 -1
  343. package/dist/src/ui/components/Help.js.map +1 -1
  344. package/dist/src/ui/components/HistoryItemDisplay.js +4 -1
  345. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  346. package/dist/src/ui/components/HistoryItemDisplay.test.js +21 -0
  347. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  348. package/dist/src/ui/components/HookStatusDisplay.d.ts +12 -0
  349. package/dist/src/ui/components/HookStatusDisplay.js +20 -0
  350. package/dist/src/ui/components/HookStatusDisplay.js.map +1 -0
  351. package/dist/src/ui/components/HookStatusDisplay.test.d.ts +6 -0
  352. package/dist/src/ui/components/HookStatusDisplay.test.js +51 -0
  353. package/dist/src/ui/components/HookStatusDisplay.test.js.map +1 -0
  354. package/dist/src/ui/components/IdeTrustChangeDialog.js +3 -1
  355. package/dist/src/ui/components/IdeTrustChangeDialog.js.map +1 -1
  356. package/dist/src/ui/components/IdeTrustChangeDialog.test.js +4 -3
  357. package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -1
  358. package/dist/src/ui/components/InputPrompt.js +77 -26
  359. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  360. package/dist/src/ui/components/InputPrompt.test.js +307 -7
  361. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  362. package/dist/src/ui/components/LogoutConfirmationDialog.d.ts +15 -0
  363. package/dist/src/ui/components/LogoutConfirmationDialog.js +37 -0
  364. package/dist/src/ui/components/LogoutConfirmationDialog.js.map +1 -0
  365. package/dist/src/ui/components/LogoutConfirmationDialog.test.d.ts +6 -0
  366. package/dist/src/ui/components/LogoutConfirmationDialog.test.js +59 -0
  367. package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +1 -0
  368. package/dist/src/ui/components/MainContent.js +12 -10
  369. package/dist/src/ui/components/MainContent.js.map +1 -1
  370. package/dist/src/ui/components/MainContent.test.js +19 -9
  371. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  372. package/dist/src/ui/components/ModelDialog.js +122 -41
  373. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  374. package/dist/src/ui/components/ModelDialog.test.js +171 -148
  375. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  376. package/dist/src/ui/components/ModelStatsDisplay.js +68 -14
  377. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  378. package/dist/src/ui/components/ModelStatsDisplay.test.js +62 -4
  379. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -1
  380. package/dist/src/ui/components/MultiFolderTrustDialog.d.ts +2 -2
  381. package/dist/src/ui/components/MultiFolderTrustDialog.js +3 -2
  382. package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -1
  383. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +9 -9
  384. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -1
  385. package/dist/src/ui/components/Notifications.js +5 -4
  386. package/dist/src/ui/components/Notifications.js.map +1 -1
  387. package/dist/src/ui/components/Notifications.test.js +1 -0
  388. package/dist/src/ui/components/Notifications.test.js.map +1 -1
  389. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +1 -0
  390. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
  391. package/dist/src/ui/components/ProQuotaDialog.d.ts +1 -3
  392. package/dist/src/ui/components/ProQuotaDialog.js +16 -32
  393. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  394. package/dist/src/ui/components/ProQuotaDialog.test.js +43 -29
  395. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
  396. package/dist/src/ui/components/QuittingDisplay.test.js.map +1 -1
  397. package/dist/src/ui/components/SessionBrowser.js +2 -0
  398. package/dist/src/ui/components/SessionBrowser.js.map +1 -1
  399. package/dist/src/ui/components/SessionSummaryDisplay.test.js +1 -0
  400. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -1
  401. package/dist/src/ui/components/SettingsDialog.js +166 -77
  402. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  403. package/dist/src/ui/components/SettingsDialog.test.js +118 -13
  404. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  405. package/dist/src/ui/components/ShellConfirmationDialog.js +4 -4
  406. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  407. package/dist/src/ui/components/ShellConfirmationDialog.test.js +4 -4
  408. package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +1 -1
  409. package/dist/src/ui/components/StatsDisplay.d.ts +1 -1
  410. package/dist/src/ui/components/StatsDisplay.js +66 -21
  411. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  412. package/dist/src/ui/components/StatsDisplay.test.js +44 -7
  413. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
  414. package/dist/src/ui/components/StatusDisplay.d.ts +11 -0
  415. package/dist/src/ui/components/StatusDisplay.js +40 -0
  416. package/dist/src/ui/components/StatusDisplay.js.map +1 -0
  417. package/dist/src/ui/components/StatusDisplay.test.d.ts +6 -0
  418. package/dist/src/ui/components/StatusDisplay.test.js +144 -0
  419. package/dist/src/ui/components/StatusDisplay.test.js.map +1 -0
  420. package/dist/src/ui/components/StickyHeader.d.ts +2 -0
  421. package/dist/src/ui/components/StickyHeader.js +1 -1
  422. package/dist/src/ui/components/StickyHeader.js.map +1 -1
  423. package/dist/src/ui/components/SuggestionsDisplay.js +7 -2
  424. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  425. package/dist/src/ui/components/Table.d.ts +21 -0
  426. package/dist/src/ui/components/Table.js +7 -0
  427. package/dist/src/ui/components/Table.js.map +1 -0
  428. package/dist/src/ui/components/Table.test.d.ts +6 -0
  429. package/dist/src/ui/components/Table.test.js +53 -0
  430. package/dist/src/ui/components/Table.test.js.map +1 -0
  431. package/dist/src/ui/components/ThemeDialog.js +63 -17
  432. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  433. package/dist/src/ui/components/ThemeDialog.test.js +66 -1
  434. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
  435. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
  436. package/dist/src/ui/components/messages/DiffRenderer.js +5 -13
  437. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  438. package/dist/src/ui/components/messages/DiffRenderer.test.js +26 -17
  439. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  440. package/dist/src/ui/components/messages/ShellToolMessage.js +8 -5
  441. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  442. package/dist/src/ui/components/messages/Todo.js.map +1 -1
  443. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +55 -24
  444. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  445. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +40 -4
  446. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  447. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +45 -1
  448. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  449. package/dist/src/ui/components/messages/ToolMessage.js +6 -2
  450. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  451. package/dist/src/ui/components/messages/ToolMessage.test.js +1 -0
  452. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  453. package/dist/src/ui/components/messages/ToolResultDisplay.js +22 -16
  454. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  455. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +36 -18
  456. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
  457. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.d.ts +6 -0
  458. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +134 -0
  459. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +1 -0
  460. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +1 -1
  461. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +1 -1
  462. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -1
  463. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +2 -38
  464. package/dist/src/ui/components/shared/MaxSizedBox.js +34 -418
  465. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  466. package/dist/src/ui/components/shared/MaxSizedBox.test.js +48 -133
  467. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
  468. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +4 -1
  469. package/dist/src/ui/components/shared/RadioButtonSelect.js +11 -10
  470. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  471. package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -1
  472. package/dist/src/ui/components/shared/text-buffer.d.ts +40 -4
  473. package/dist/src/ui/components/shared/text-buffer.js +279 -102
  474. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  475. package/dist/src/ui/components/shared/text-buffer.test.js +247 -1
  476. package/dist/src/ui/components/shared/text-buffer.test.js.map +1 -1
  477. package/dist/src/ui/components/shared/vim-buffer-actions.test.js +3 -0
  478. package/dist/src/ui/components/shared/vim-buffer-actions.test.js.map +1 -1
  479. package/dist/src/ui/components/views/AgentsStatus.d.ts +13 -0
  480. package/dist/src/ui/components/views/AgentsStatus.js +23 -0
  481. package/dist/src/ui/components/views/AgentsStatus.js.map +1 -0
  482. package/dist/src/ui/components/views/ExtensionsList.js +3 -2
  483. package/dist/src/ui/components/views/ExtensionsList.js.map +1 -1
  484. package/dist/src/ui/components/views/ExtensionsList.test.js +37 -0
  485. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -1
  486. package/dist/src/ui/components/views/HooksList.d.ts +24 -0
  487. package/dist/src/ui/components/views/HooksList.js +28 -0
  488. package/dist/src/ui/components/views/HooksList.js.map +1 -0
  489. package/dist/src/ui/components/views/McpStatus.d.ts +2 -1
  490. package/dist/src/ui/components/views/McpStatus.js +18 -3
  491. package/dist/src/ui/components/views/McpStatus.js.map +1 -1
  492. package/dist/src/ui/components/views/McpStatus.test.js +23 -0
  493. package/dist/src/ui/components/views/McpStatus.test.js.map +1 -1
  494. package/dist/src/ui/components/views/SkillsList.d.ts +13 -0
  495. package/dist/src/ui/components/views/SkillsList.js +17 -0
  496. package/dist/src/ui/components/views/SkillsList.js.map +1 -0
  497. package/dist/src/ui/components/views/SkillsList.test.d.ts +6 -0
  498. package/dist/src/ui/components/views/SkillsList.test.js +97 -0
  499. package/dist/src/ui/components/views/SkillsList.test.js.map +1 -0
  500. package/dist/src/ui/constants/tips.js +1 -5
  501. package/dist/src/ui/constants/tips.js.map +1 -1
  502. package/dist/src/ui/constants.d.ts +4 -3
  503. package/dist/src/ui/constants.js +5 -6
  504. package/dist/src/ui/constants.js.map +1 -1
  505. package/dist/src/ui/contexts/KeypressContext.d.ts +1 -0
  506. package/dist/src/ui/contexts/KeypressContext.js +84 -6
  507. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  508. package/dist/src/ui/contexts/KeypressContext.test.js +136 -9
  509. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  510. package/dist/src/ui/contexts/SessionContext.d.ts +1 -0
  511. package/dist/src/ui/contexts/SessionContext.js +2 -1
  512. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  513. package/dist/src/ui/contexts/SessionContext.test.js +3 -0
  514. package/dist/src/ui/contexts/SessionContext.test.js.map +1 -1
  515. package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
  516. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  517. package/dist/src/ui/contexts/UIStateContext.d.ts +5 -1
  518. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  519. package/dist/src/ui/contexts/VimModeContext.js +1 -1
  520. package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
  521. package/dist/src/ui/hooks/atCommandProcessor.d.ts +7 -6
  522. package/dist/src/ui/hooks/atCommandProcessor.js +156 -29
  523. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  524. package/dist/src/ui/hooks/atCommandProcessor.test.js +133 -35
  525. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  526. package/dist/src/ui/hooks/atCommandProcessor_agents.test.d.ts +6 -0
  527. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js +183 -0
  528. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js.map +1 -0
  529. package/dist/src/ui/hooks/shellCommandProcessor.js +2 -0
  530. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  531. package/dist/src/ui/hooks/slashCommandProcessor.js +21 -7
  532. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  533. package/dist/src/ui/hooks/slashCommandProcessor.test.js +2 -3
  534. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
  535. package/dist/src/ui/hooks/useAtCompletion.js +83 -2
  536. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  537. package/dist/src/ui/hooks/useAtCompletion.test.js +21 -0
  538. package/dist/src/ui/hooks/useAtCompletion.test.js.map +1 -1
  539. package/dist/src/ui/hooks/useAtCompletion_agents.test.d.ts +6 -0
  540. package/dist/src/ui/hooks/useAtCompletion_agents.test.js +85 -0
  541. package/dist/src/ui/hooks/useAtCompletion_agents.test.js.map +1 -0
  542. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +2 -1
  543. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +5 -4
  544. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  545. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +1 -1
  546. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
  547. package/dist/src/ui/hooks/useCommandCompletion.d.ts +3 -0
  548. package/dist/src/ui/hooks/useCommandCompletion.js +13 -8
  549. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  550. package/dist/src/ui/hooks/useCommandCompletion.test.js +88 -2
  551. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  552. package/dist/src/ui/hooks/useExtensionUpdates.js +7 -7
  553. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -1
  554. package/dist/src/ui/hooks/useExtensionUpdates.test.js +20 -4
  555. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -1
  556. package/dist/src/ui/hooks/useFolderTrust.js +14 -19
  557. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  558. package/dist/src/ui/hooks/useFolderTrust.test.js +31 -23
  559. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  560. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -1
  561. package/dist/src/ui/hooks/useGeminiStream.js +102 -71
  562. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  563. package/dist/src/ui/hooks/useGeminiStream.test.js +294 -10
  564. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  565. package/dist/src/ui/hooks/useGitBranchName.js +3 -0
  566. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  567. package/dist/src/ui/hooks/useHistoryManager.d.ts +1 -1
  568. package/dist/src/ui/hooks/useHistoryManager.js +1 -1
  569. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  570. package/dist/src/ui/hooks/useHistoryManager.test.js +16 -0
  571. package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -1
  572. package/dist/src/ui/hooks/useHookDisplayState.d.ts +7 -0
  573. package/dist/src/ui/hooks/useHookDisplayState.js +83 -0
  574. package/dist/src/ui/hooks/useHookDisplayState.js.map +1 -0
  575. package/dist/src/ui/hooks/useHookDisplayState.test.d.ts +6 -0
  576. package/dist/src/ui/hooks/useHookDisplayState.test.js +180 -0
  577. package/dist/src/ui/hooks/useHookDisplayState.test.js.map +1 -0
  578. package/dist/src/ui/hooks/useIdeTrustListener.js +2 -0
  579. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -1
  580. package/dist/src/ui/hooks/useIncludeDirsTrust.js +6 -4
  581. package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -1
  582. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +2 -2
  583. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -1
  584. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +2 -2
  585. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -1
  586. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +2 -1
  587. package/dist/src/ui/hooks/useLoadingIndicator.js +7 -3
  588. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  589. package/dist/src/ui/hooks/useLoadingIndicator.test.js +15 -4
  590. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  591. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +10 -3
  592. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
  593. package/dist/src/ui/hooks/usePhraseCycler.d.ts +1 -1
  594. package/dist/src/ui/hooks/usePhraseCycler.js +2 -2
  595. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  596. package/dist/src/ui/hooks/usePrivacySettings.js +5 -16
  597. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  598. package/dist/src/ui/hooks/usePrivacySettings.test.js +3 -9
  599. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +1 -1
  600. package/dist/src/ui/hooks/usePromptCompletion.js +1 -2
  601. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -1
  602. package/dist/src/ui/hooks/useQuotaAndFallback.js +19 -18
  603. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  604. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +29 -23
  605. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
  606. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +1 -1
  607. package/dist/src/ui/hooks/useReactToolScheduler.js +1 -1
  608. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  609. package/dist/src/ui/hooks/useRewind.d.ts +14 -0
  610. package/dist/src/ui/hooks/useRewind.js +31 -0
  611. package/dist/src/ui/hooks/useRewind.js.map +1 -0
  612. package/dist/src/ui/hooks/useRewind.test.d.ts +6 -0
  613. package/dist/src/ui/hooks/useRewind.test.js +100 -0
  614. package/dist/src/ui/hooks/useRewind.test.js.map +1 -0
  615. package/dist/src/ui/hooks/useSelectionList.js +2 -1
  616. package/dist/src/ui/hooks/useSelectionList.js.map +1 -1
  617. package/dist/src/ui/hooks/useSelectionList.test.js +2 -0
  618. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -1
  619. package/dist/src/ui/hooks/useSessionBrowser.js +3 -3
  620. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  621. package/dist/src/ui/hooks/useSessionBrowser.test.js +4 -10
  622. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
  623. package/dist/src/ui/hooks/useSessionResume.js +1 -0
  624. package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
  625. package/dist/src/ui/hooks/useShellHistory.js +5 -3
  626. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  627. package/dist/src/ui/hooks/useSlashCompletion.d.ts +2 -0
  628. package/dist/src/ui/hooks/useSlashCompletion.js +29 -11
  629. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  630. package/dist/src/ui/hooks/useSlashCompletion.test.js +115 -5
  631. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  632. package/dist/src/{utils/version.d.ts → ui/hooks/useSnowfall.d.ts} +1 -1
  633. package/dist/src/ui/hooks/useSnowfall.js +126 -0
  634. package/dist/src/ui/hooks/useSnowfall.js.map +1 -0
  635. package/dist/src/ui/hooks/useSnowfall.test.d.ts +6 -0
  636. package/dist/src/ui/hooks/useSnowfall.test.js +88 -0
  637. package/dist/src/ui/hooks/useSnowfall.test.js.map +1 -0
  638. package/dist/src/ui/hooks/useToolScheduler.test.js +86 -53
  639. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  640. package/dist/src/ui/hooks/vim.test.js +7 -0
  641. package/dist/src/ui/hooks/vim.test.js.map +1 -1
  642. package/dist/src/ui/keyMatchers.test.js +79 -53
  643. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  644. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +1 -0
  645. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  646. package/dist/src/ui/themes/ansi-light.js +1 -1
  647. package/dist/src/ui/themes/ansi-light.js.map +1 -1
  648. package/dist/src/ui/themes/ansi.js +1 -1
  649. package/dist/src/ui/themes/ansi.js.map +1 -1
  650. package/dist/src/ui/themes/color-utils.d.ts +1 -0
  651. package/dist/src/ui/themes/color-utils.js +13 -0
  652. package/dist/src/ui/themes/color-utils.js.map +1 -1
  653. package/dist/src/ui/themes/color-utils.test.js +20 -1
  654. package/dist/src/ui/themes/color-utils.test.js.map +1 -1
  655. package/dist/src/ui/themes/shades-of-purple.js +1 -1
  656. package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
  657. package/dist/src/ui/themes/theme-manager.d.ts +5 -0
  658. package/dist/src/ui/themes/theme-manager.js +9 -3
  659. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  660. package/dist/src/ui/themes/theme-manager.test.js +7 -0
  661. package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
  662. package/dist/src/ui/themes/theme.d.ts +12 -0
  663. package/dist/src/ui/themes/theme.js +34 -4
  664. package/dist/src/ui/themes/theme.js.map +1 -1
  665. package/dist/src/ui/themes/theme.test.js +23 -0
  666. package/dist/src/ui/themes/theme.test.js.map +1 -1
  667. package/dist/src/ui/types.d.ts +48 -5
  668. package/dist/src/ui/types.js +5 -0
  669. package/dist/src/ui/types.js.map +1 -1
  670. package/dist/src/ui/utils/CodeColorizer.js +2 -2
  671. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  672. package/dist/src/ui/utils/CodeColorizer.test.js +1 -1
  673. package/dist/src/ui/utils/CodeColorizer.test.js.map +1 -1
  674. package/dist/src/ui/utils/ConsolePatcher.js +1 -0
  675. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  676. package/dist/src/ui/utils/InlineMarkdownRenderer.js +2 -1
  677. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  678. package/dist/src/ui/utils/MarkdownDisplay.test.js +1 -1
  679. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  680. package/dist/src/ui/utils/clipboardUtils.d.ts +27 -2
  681. package/dist/src/ui/utils/clipboardUtils.js +148 -16
  682. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  683. package/dist/src/ui/utils/clipboardUtils.test.js +135 -13
  684. package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -1
  685. package/dist/src/ui/utils/clipboardUtils.windows.test.d.ts +6 -0
  686. package/dist/src/ui/utils/clipboardUtils.windows.test.js +52 -0
  687. package/dist/src/ui/utils/clipboardUtils.windows.test.js.map +1 -0
  688. package/dist/src/ui/utils/commandUtils.d.ts +1 -1
  689. package/dist/src/ui/utils/commandUtils.js +111 -1
  690. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  691. package/dist/src/ui/utils/commandUtils.test.js +200 -6
  692. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  693. package/dist/src/ui/utils/computeStats.js +2 -0
  694. package/dist/src/ui/utils/computeStats.js.map +1 -1
  695. package/dist/src/ui/utils/computeStats.test.js +9 -0
  696. package/dist/src/ui/utils/computeStats.test.js.map +1 -1
  697. package/dist/src/ui/utils/directoryUtils.d.ts +8 -0
  698. package/dist/src/ui/utils/directoryUtils.js +95 -3
  699. package/dist/src/ui/utils/directoryUtils.js.map +1 -1
  700. package/dist/src/ui/utils/directoryUtils.test.js +193 -3
  701. package/dist/src/ui/utils/directoryUtils.test.js.map +1 -1
  702. package/dist/src/ui/utils/highlight.d.ts +3 -2
  703. package/dist/src/ui/utils/highlight.js +51 -37
  704. package/dist/src/ui/utils/highlight.js.map +1 -1
  705. package/dist/src/ui/utils/highlight.test.js +75 -0
  706. package/dist/src/ui/utils/highlight.test.js.map +1 -1
  707. package/dist/src/ui/utils/historyExportUtils.d.ts +21 -0
  708. package/dist/src/ui/utils/historyExportUtils.js +59 -0
  709. package/dist/src/ui/utils/historyExportUtils.js.map +1 -0
  710. package/dist/src/ui/utils/rewindFileOps.d.ts +47 -0
  711. package/dist/src/ui/utils/rewindFileOps.js +190 -0
  712. package/dist/src/ui/utils/rewindFileOps.js.map +1 -0
  713. package/dist/src/ui/utils/rewindFileOps.test.d.ts +6 -0
  714. package/dist/src/ui/utils/rewindFileOps.test.js +375 -0
  715. package/dist/src/ui/utils/rewindFileOps.test.js.map +1 -0
  716. package/dist/src/ui/utils/terminalCapabilityManager.d.ts +41 -0
  717. package/dist/src/ui/utils/terminalCapabilityManager.js +209 -0
  718. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -0
  719. package/dist/src/ui/utils/terminalCapabilityManager.test.d.ts +6 -0
  720. package/dist/src/ui/utils/terminalCapabilityManager.test.js +221 -0
  721. package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -0
  722. package/dist/src/ui/utils/terminalSetup.d.ts +1 -1
  723. package/dist/src/ui/utils/terminalSetup.js +21 -6
  724. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  725. package/dist/src/ui/utils/terminalSetup.test.js +16 -2
  726. package/dist/src/ui/utils/terminalSetup.test.js.map +1 -1
  727. package/dist/src/ui/utils/textUtils.js +9 -1
  728. package/dist/src/ui/utils/textUtils.js.map +1 -1
  729. package/dist/src/ui/utils/textUtils.test.js +12 -1
  730. package/dist/src/ui/utils/textUtils.test.js.map +1 -1
  731. package/dist/src/ui/utils/ui-sizing.js +1 -1
  732. package/dist/src/ui/utils/ui-sizing.js.map +1 -1
  733. package/dist/src/ui/utils/ui-sizing.test.js +2 -2
  734. package/dist/src/ui/utils/ui-sizing.test.js.map +1 -1
  735. package/dist/src/utils/activityLogger.d.ts +47 -0
  736. package/dist/src/utils/activityLogger.js +297 -0
  737. package/dist/src/utils/activityLogger.js.map +1 -0
  738. package/dist/src/utils/cleanup.d.ts +11 -0
  739. package/dist/src/utils/cleanup.js +36 -1
  740. package/dist/src/utils/cleanup.js.map +1 -1
  741. package/dist/src/utils/cleanup.test.js +21 -31
  742. package/dist/src/utils/cleanup.test.js.map +1 -1
  743. package/dist/src/utils/deepMerge.js +7 -2
  744. package/dist/src/utils/deepMerge.js.map +1 -1
  745. package/dist/src/utils/deepMerge.test.js +58 -0
  746. package/dist/src/utils/deepMerge.test.js.map +1 -1
  747. package/dist/src/utils/envVarResolver.js.map +1 -1
  748. package/dist/src/utils/envVarResolver.test.js.map +1 -1
  749. package/dist/src/utils/errors.js +13 -14
  750. package/dist/src/utils/errors.js.map +1 -1
  751. package/dist/src/utils/errors.test.js +115 -39
  752. package/dist/src/utils/errors.test.js.map +1 -1
  753. package/dist/src/utils/handleAutoUpdate.d.ts +1 -1
  754. package/dist/src/utils/handleAutoUpdate.js +7 -10
  755. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  756. package/dist/src/utils/handleAutoUpdate.test.js +12 -10
  757. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  758. package/dist/src/utils/installationInfo.js +1 -1
  759. package/dist/src/utils/installationInfo.js.map +1 -1
  760. package/dist/src/utils/installationInfo.test.js +1 -1
  761. package/dist/src/utils/installationInfo.test.js.map +1 -1
  762. package/dist/src/utils/processUtils.d.ts +1 -1
  763. package/dist/src/utils/processUtils.js +1 -1
  764. package/dist/src/utils/processUtils.js.map +1 -1
  765. package/dist/src/utils/readStdin.js +7 -0
  766. package/dist/src/utils/readStdin.js.map +1 -1
  767. package/dist/src/utils/readStdin.test.js +4 -0
  768. package/dist/src/utils/readStdin.test.js.map +1 -1
  769. package/dist/src/utils/readStdin_safety.test.d.ts +6 -0
  770. package/dist/src/utils/readStdin_safety.test.js +68 -0
  771. package/dist/src/utils/readStdin_safety.test.js.map +1 -0
  772. package/dist/src/utils/relaunch.js +3 -1
  773. package/dist/src/utils/relaunch.js.map +1 -1
  774. package/dist/src/utils/relaunch.test.js +13 -7
  775. package/dist/src/utils/relaunch.test.js.map +1 -1
  776. package/dist/src/utils/resolvePath.js +3 -3
  777. package/dist/src/utils/resolvePath.js.map +1 -1
  778. package/dist/src/utils/resolvePath.test.js +3 -0
  779. package/dist/src/utils/resolvePath.test.js.map +1 -1
  780. package/dist/src/utils/sandbox.js +27 -17
  781. package/dist/src/utils/sandbox.js.map +1 -1
  782. package/dist/src/utils/sandbox.test.js +17 -5
  783. package/dist/src/utils/sandbox.test.js.map +1 -1
  784. package/dist/src/utils/sandboxUtils.js +3 -2
  785. package/dist/src/utils/sandboxUtils.js.map +1 -1
  786. package/dist/src/utils/sandboxUtils.test.js +3 -0
  787. package/dist/src/utils/sandboxUtils.test.js.map +1 -1
  788. package/dist/src/utils/sessionCleanup.integration.test.js +2 -2
  789. package/dist/src/utils/sessionCleanup.integration.test.js.map +1 -1
  790. package/dist/src/utils/sessionCleanup.js +16 -4
  791. package/dist/src/utils/sessionCleanup.js.map +1 -1
  792. package/dist/src/utils/sessionCleanup.test.js +18 -68
  793. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  794. package/dist/src/utils/sessionUtils.d.ts +22 -0
  795. package/dist/src/utils/sessionUtils.js +37 -5
  796. package/dist/src/utils/sessionUtils.js.map +1 -1
  797. package/dist/src/utils/sessionUtils.test.js +3 -3
  798. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  799. package/dist/src/utils/sessions.js +14 -12
  800. package/dist/src/utils/sessions.js.map +1 -1
  801. package/dist/src/utils/sessions.test.js +62 -39
  802. package/dist/src/utils/sessions.test.js.map +1 -1
  803. package/dist/src/utils/settingsUtils.js +0 -5
  804. package/dist/src/utils/settingsUtils.js.map +1 -1
  805. package/dist/src/utils/skillSettings.d.ts +33 -0
  806. package/dist/src/utils/skillSettings.js +101 -0
  807. package/dist/src/utils/skillSettings.js.map +1 -0
  808. package/dist/src/utils/skillUtils.d.ts +29 -0
  809. package/dist/src/utils/skillUtils.js +144 -0
  810. package/dist/src/utils/skillUtils.js.map +1 -0
  811. package/dist/src/utils/skillUtils.test.d.ts +6 -0
  812. package/dist/src/utils/skillUtils.test.js +57 -0
  813. package/dist/src/utils/skillUtils.test.js.map +1 -0
  814. package/dist/src/utils/terminalTheme.d.ts +15 -0
  815. package/dist/src/utils/terminalTheme.js +50 -0
  816. package/dist/src/utils/terminalTheme.js.map +1 -0
  817. package/dist/src/utils/userStartupWarnings.d.ts +2 -1
  818. package/dist/src/utils/userStartupWarnings.js +17 -7
  819. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  820. package/dist/src/utils/userStartupWarnings.test.js +37 -6
  821. package/dist/src/utils/userStartupWarnings.test.js.map +1 -1
  822. package/dist/src/utils/windowTitle.d.ts +13 -4
  823. package/dist/src/utils/windowTitle.js +65 -7
  824. package/dist/src/utils/windowTitle.js.map +1 -1
  825. package/dist/src/utils/windowTitle.test.js +183 -40
  826. package/dist/src/utils/windowTitle.test.js.map +1 -1
  827. package/dist/src/validateNonInterActiveAuth.d.ts +1 -1
  828. package/dist/src/validateNonInterActiveAuth.js +1 -2
  829. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  830. package/dist/src/zed-integration/fileSystemService.d.ts +3 -4
  831. package/dist/src/zed-integration/fileSystemService.js +5 -10
  832. package/dist/src/zed-integration/fileSystemService.js.map +1 -1
  833. package/dist/src/zed-integration/fileSystemService.test.js +11 -21
  834. package/dist/src/zed-integration/fileSystemService.test.js.map +1 -1
  835. package/dist/src/zed-integration/zedIntegration.d.ts +5 -5
  836. package/dist/src/zed-integration/zedIntegration.js +54 -24
  837. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  838. package/dist/src/zed-integration/zedIntegration.test.js +29 -18
  839. package/dist/src/zed-integration/zedIntegration.test.js.map +1 -1
  840. package/dist/tsconfig.tsbuildinfo +1 -1
  841. package/package.json +5 -4
  842. package/dist/src/ui/hooks/useBracketedPaste.d.ts +0 -12
  843. package/dist/src/ui/hooks/useBracketedPaste.js +0 -31
  844. package/dist/src/ui/hooks/useBracketedPaste.js.map +0 -1
  845. package/dist/src/ui/utils/bracketedPaste.d.ts +0 -7
  846. package/dist/src/ui/utils/bracketedPaste.js +0 -15
  847. package/dist/src/ui/utils/bracketedPaste.js.map +0 -1
  848. package/dist/src/ui/utils/kittyProtocolDetector.d.ts +0 -17
  849. package/dist/src/ui/utils/kittyProtocolDetector.js +0 -111
  850. package/dist/src/ui/utils/kittyProtocolDetector.js.map +0 -1
  851. package/dist/src/ui/utils/kittyProtocolDetector.test.js +0 -113
  852. package/dist/src/ui/utils/kittyProtocolDetector.test.js.map +0 -1
  853. package/dist/src/utils/version.js +0 -15
  854. package/dist/src/utils/version.js.map +0 -1
  855. package/dist/src/utils/version.test.js +0 -39
  856. package/dist/src/utils/version.test.js.map +0 -1
  857. package/dist/src/zed-integration/acp.d.ts +0 -41
  858. package/dist/src/zed-integration/acp.js +0 -72
  859. package/dist/src/zed-integration/acp.js.map +0 -1
  860. package/dist/src/zed-integration/acp.test.js +0 -222
  861. package/dist/src/zed-integration/acp.test.js.map +0 -1
  862. package/dist/src/zed-integration/connection.d.ts +0 -28
  863. package/dist/src/zed-integration/connection.js +0 -163
  864. package/dist/src/zed-integration/connection.js.map +0 -1
  865. package/dist/src/zed-integration/connection.test.js +0 -175
  866. package/dist/src/zed-integration/connection.test.js.map +0 -1
  867. package/dist/src/zed-integration/schema.d.ts +0 -11792
  868. package/dist/src/zed-integration/schema.js +0 -311
  869. package/dist/src/zed-integration/schema.js.map +0 -1
  870. /package/dist/src/{ui/utils/kittyProtocolDetector.test.d.ts → commands/hooks/migrate.test.d.ts} +0 -0
  871. /package/dist/src/{utils/version.test.d.ts → config/extension-manager-scope.test.d.ts} +0 -0
  872. /package/dist/src/{zed-integration/acp.test.d.ts → config/extension-manager-skills.test.d.ts} +0 -0
  873. /package/dist/src/{zed-integration/connection.test.d.ts → config/extensions/extensionUpdates.test.d.ts} +0 -0
@@ -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, writeToStdout, disableMouseEvents, enterAlternateScreen, enableMouseEvents, disableLineWrapping, shouldEnterAlternateScreen, startupProfiler, } from '@google/gemini-cli-core';
16
+ import { IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, writeToStdout, disableMouseEvents, enterAlternateScreen, enableMouseEvents, disableLineWrapping, shouldEnterAlternateScreen, startupProfiler, SessionStartSource, SessionEndReason, generateSummary, } 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';
@@ -34,7 +34,7 @@ import { calculateMainAreaWidth } from './utils/ui-sizing.js';
34
34
  import ansiEscapes from 'ansi-escapes';
35
35
  import * as fs from 'node:fs';
36
36
  import { basename } from 'node:path';
37
- import { computeWindowTitle } from '../utils/windowTitle.js';
37
+ import { computeTerminalTitle } from '../utils/windowTitle.js';
38
38
  import { useTextBuffer } from './components/shared/text-buffer.js';
39
39
  import { useLogger } from './hooks/useLogger.js';
40
40
  import { useGeminiStream } from './hooks/useGeminiStream.js';
@@ -42,7 +42,6 @@ import { useVim } from './hooks/vim.js';
42
42
  import { SettingScope } from '../config/settings.js';
43
43
  import {} from '../core/initializer.js';
44
44
  import { useFocus } from './hooks/useFocus.js';
45
- import { useBracketedPaste } from './hooks/useBracketedPaste.js';
46
45
  import { useKeypress } from './hooks/useKeypress.js';
47
46
  import { keyMatchers, Command } from './keyMatchers.js';
48
47
  import { useLoadingIndicator } from './hooks/useLoadingIndicator.js';
@@ -69,11 +68,13 @@ import { useIncludeDirsTrust } from './hooks/useIncludeDirsTrust.js';
69
68
  import { isWorkspaceTrusted } from '../config/trustedFolders.js';
70
69
  import { useAlternateBuffer } from './hooks/useAlternateBuffer.js';
71
70
  import { useSettings } from './contexts/SettingsContext.js';
72
- import { enableSupportedProtocol } from './utils/kittyProtocolDetector.js';
71
+ import { terminalCapabilityManager } from './utils/terminalCapabilityManager.js';
73
72
  import { useInputHistoryStore } from './hooks/useInputHistoryStore.js';
74
- import { enableBracketedPaste } from './utils/bracketedPaste.js';
75
- const WARNING_PROMPT_DURATION_MS = 1000;
76
- const QUEUE_ERROR_DISPLAY_DURATION_MS = 3000;
73
+ import { useBanner } from './hooks/useBanner.js';
74
+ import { useHookDisplayState } from './hooks/useHookDisplayState.js';
75
+ import { WARNING_PROMPT_DURATION_MS, QUEUE_ERROR_DISPLAY_DURATION_MS, SHELL_ACTION_REQUIRED_TITLE_DELAY_MS, } from './constants.js';
76
+ import { LoginWithGoogleRestartDialog } from './auth/LoginWithGoogleRestartDialog.js';
77
+ import { useInactivityTimer } from './hooks/useInactivityTimer.js';
77
78
  function isToolExecuting(pendingHistoryItems) {
78
79
  return pendingHistoryItems.some((item) => {
79
80
  if (item && item.type === 'tool_group') {
@@ -115,12 +116,19 @@ export const AppContainer = (props) => {
115
116
  const [shellModeActive, setShellModeActive] = useState(false);
116
117
  const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] = useState(false);
117
118
  const [historyRemountKey, setHistoryRemountKey] = useState(0);
119
+ const [settingsNonce, setSettingsNonce] = useState(0);
120
+ const activeHooks = useHookDisplayState();
118
121
  const [updateInfo, setUpdateInfo] = useState(null);
119
122
  const [isTrustedFolder, setIsTrustedFolder] = useState(isWorkspaceTrusted(settings.merged).isTrusted);
120
123
  const [queueErrorMessage, setQueueErrorMessage] = useState(null);
121
124
  const [defaultBannerText, setDefaultBannerText] = useState('');
122
125
  const [warningBannerText, setWarningBannerText] = useState('');
123
126
  const [bannerVisible, setBannerVisible] = useState(true);
127
+ const bannerData = useMemo(() => ({
128
+ defaultText: defaultBannerText,
129
+ warningText: warningBannerText,
130
+ }), [defaultBannerText, warningBannerText]);
131
+ const { bannerText } = useBanner(bannerData, config);
124
132
  const extensionManager = config.getExtensionLoader();
125
133
  // We are in the interactive CLI, update how we request consent and settings.
126
134
  extensionManager.setRequestConsent((description) => requestConsentInteractive(description, addConfirmUpdateExtensionRequest));
@@ -138,22 +146,7 @@ export const AppContainer = (props) => {
138
146
  setPermissionsDialogProps(null);
139
147
  }, []);
140
148
  const toggleDebugProfiler = useCallback(() => setShowDebugProfiler((prev) => !prev), []);
141
- // Helper to determine the effective model, considering the fallback state.
142
- const getEffectiveModel = useCallback(() => {
143
- if (config.isInFallbackMode()) {
144
- return DEFAULT_GEMINI_FLASH_MODEL;
145
- }
146
- const model = config.getModel();
147
- const previewFeatures = config.getPreviewFeatures();
148
- // If preview features are enabled and the model is the default model,
149
- // we upgrade to the preview model for display purposes to match the
150
- // routing logic in ModelRouterService.
151
- if (model === DEFAULT_GEMINI_MODEL && previewFeatures) {
152
- return PREVIEW_GEMINI_MODEL;
153
- }
154
- return resolveModel(model, previewFeatures);
155
- }, [config]);
156
- const [currentModel, setCurrentModel] = useState(getEffectiveModel());
149
+ const [currentModel, setCurrentModel] = useState(config.getModel());
157
150
  const [userTier, setUserTier] = useState(undefined);
158
151
  const [isConfigInitialized, setConfigInitialized] = useState(false);
159
152
  const logger = useLogger(config.storage);
@@ -172,41 +165,78 @@ export const AppContainer = (props) => {
172
165
  const mainControlsRef = useRef(null);
173
166
  // For performance profiling only
174
167
  const rootUiRef = useRef(null);
175
- const originalTitleRef = useRef(computeWindowTitle(basename(config.getTargetDir())));
176
168
  const lastTitleRef = useRef(null);
177
169
  const staticExtraHeight = 3;
178
170
  useEffect(() => {
171
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
179
172
  (async () => {
180
173
  // Note: the program will not work if this fails so let errors be
181
174
  // handled by the global catch.
182
175
  await config.initialize();
183
176
  setConfigInitialized(true);
184
177
  startupProfiler.flush(config);
178
+ const sessionStartSource = resumedSessionData
179
+ ? SessionStartSource.Resume
180
+ : SessionStartSource.Startup;
181
+ const result = await config
182
+ .getHookSystem()
183
+ ?.fireSessionStartEvent(sessionStartSource);
184
+ if (result?.finalOutput) {
185
+ if (result.finalOutput?.systemMessage) {
186
+ historyManager.addItem({
187
+ type: MessageType.INFO,
188
+ text: result.finalOutput.systemMessage,
189
+ }, Date.now());
190
+ }
191
+ const additionalContext = result.finalOutput.getAdditionalContext();
192
+ const geminiClient = config.getGeminiClient();
193
+ if (additionalContext && geminiClient) {
194
+ await geminiClient.addHistory({
195
+ role: 'user',
196
+ parts: [{ text: additionalContext }],
197
+ });
198
+ }
199
+ }
200
+ // Fire-and-forget: generate summary for previous session in background
201
+ generateSummary(config).catch((e) => {
202
+ debugLogger.warn('Background summary generation failed:', e);
203
+ });
185
204
  })();
186
205
  registerCleanup(async () => {
187
206
  // Turn off mouse scroll.
188
207
  disableMouseEvents();
189
208
  const ideClient = await IdeClient.getInstance();
190
209
  await ideClient.disconnect();
210
+ // Fire SessionEnd hook on cleanup (only if hooks are enabled)
211
+ await config?.getHookSystem()?.fireSessionEndEvent(SessionEndReason.Exit);
191
212
  });
192
- }, [config]);
213
+ // Disable the dependencies check here. historyManager gets flagged
214
+ // but we don't want to react to changes to it because each new history
215
+ // item, including the ones from the start session hook will cause a
216
+ // re-render and an error when we try to reload config.
217
+ //
218
+ // eslint-disable-next-line react-hooks/exhaustive-deps
219
+ }, [config, resumedSessionData]);
193
220
  useEffect(() => setUpdateHandler(historyManager.addItem, setUpdateInfo), [historyManager.addItem]);
194
221
  // Subscribe to fallback mode and model changes from core
195
222
  useEffect(() => {
196
- const handleFallbackModeChanged = () => {
197
- const effectiveModel = getEffectiveModel();
198
- setCurrentModel(effectiveModel);
199
- };
200
- const handleModelChanged = (payload) => {
201
- setCurrentModel(payload.model);
223
+ const handleModelChanged = () => {
224
+ setCurrentModel(config.getModel());
202
225
  };
203
- coreEvents.on(CoreEvent.FallbackModeChanged, handleFallbackModeChanged);
204
226
  coreEvents.on(CoreEvent.ModelChanged, handleModelChanged);
205
227
  return () => {
206
- coreEvents.off(CoreEvent.FallbackModeChanged, handleFallbackModeChanged);
207
228
  coreEvents.off(CoreEvent.ModelChanged, handleModelChanged);
208
229
  };
209
- }, [getEffectiveModel]);
230
+ }, [config]);
231
+ useEffect(() => {
232
+ const handleSettingsChanged = () => {
233
+ setSettingsNonce((prev) => prev + 1);
234
+ };
235
+ coreEvents.on(CoreEvent.SettingsChanged, handleSettingsChanged);
236
+ return () => {
237
+ coreEvents.off(CoreEvent.SettingsChanged, handleSettingsChanged);
238
+ };
239
+ }, []);
210
240
  const { consoleMessages, clearConsoleMessages: clearConsoleMessagesState } = useConsoleMessages();
211
241
  const mainAreaWidth = calculateMainAreaWidth(terminalWidth, settings);
212
242
  // Derive widths for InputPrompt using shared helper
@@ -223,6 +253,7 @@ export const AppContainer = (props) => {
223
253
  return false;
224
254
  }
225
255
  }, []);
256
+ const getPreferredEditor = useCallback(() => settings.merged.general?.preferredEditor, [settings.merged.general?.preferredEditor]);
226
257
  const buffer = useTextBuffer({
227
258
  initialText: '',
228
259
  viewport: { height: 10, width: inputWidth },
@@ -230,9 +261,11 @@ export const AppContainer = (props) => {
230
261
  setRawMode,
231
262
  isValidPath,
232
263
  shellModeActive,
264
+ getPreferredEditor,
233
265
  });
234
266
  // Initialize input history from logger (past sessions)
235
267
  useEffect(() => {
268
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
236
269
  initializeFromLogger(logger);
237
270
  }, [logger, initializeFromLogger]);
238
271
  const refreshStatic = useCallback(() => {
@@ -250,8 +283,7 @@ export const AppContainer = (props) => {
250
283
  disableLineWrapping();
251
284
  app.rerender();
252
285
  }
253
- enableBracketedPaste();
254
- enableSupportedProtocol();
286
+ terminalCapabilityManager.enableSupportedModes();
255
287
  refreshStatic();
256
288
  }, [refreshStatic, isAlternateBuffer, app, config]);
257
289
  useEffect(() => {
@@ -260,8 +292,24 @@ export const AppContainer = (props) => {
260
292
  coreEvents.off(CoreEvent.ExternalEditorClosed, handleEditorClose);
261
293
  };
262
294
  }, [handleEditorClose]);
295
+ useEffect(() => {
296
+ if (!(settings.merged.ui?.hideBanner || config.getScreenReader()) &&
297
+ bannerVisible &&
298
+ bannerText) {
299
+ // The header should show a banner but the Header is rendered in static
300
+ // so we must trigger a static refresh for it to be visible.
301
+ refreshStatic();
302
+ }
303
+ }, [bannerVisible, bannerText, settings, config, refreshStatic]);
263
304
  const { isThemeDialogOpen, openThemeDialog, closeThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, historyManager.addItem, initializationResult.themeError);
264
305
  const { authState, setAuthState, authError, authInfo, setAuthInfo, onAuthError, apiKeyDefaultValue, reloadApiKey, } = useAuthCommand(settings, config);
306
+ const [authContext, setAuthContext] = useState({});
307
+ useEffect(() => {
308
+ if (authState === AuthState.Authenticated && authContext.requiresRestart) {
309
+ setAuthState(AuthState.AwaitingGoogleLoginRestart);
310
+ setAuthContext({});
311
+ }
312
+ }, [authState, authContext, setAuthState]);
265
313
  const { proQuotaRequest, handleProQuotaChoice } = useQuotaAndFallback({
266
314
  config,
267
315
  historyManager,
@@ -290,6 +338,12 @@ export const AppContainer = (props) => {
290
338
  // Create handleAuthSelect wrapper for backward compatibility
291
339
  const handleAuthSelect = useCallback(async (authType, scope) => {
292
340
  if (authType) {
341
+ if (authType === AuthType.LOGIN_WITH_GOOGLE) {
342
+ setAuthContext({ requiresRestart: true });
343
+ }
344
+ else {
345
+ setAuthContext({});
346
+ }
293
347
  await clearCachedCredentialFile();
294
348
  settings.setValue(scope, 'security.auth.selectedType', authType);
295
349
  try {
@@ -314,7 +368,7 @@ Logging in with Google... Restarting Cell CLI to continue.
314
368
  }
315
369
  }
316
370
  setAuthState(AuthState.Authenticated);
317
- }, [settings, config, setAuthState, onAuthError, setAuthInfo]);
371
+ }, [settings, config, setAuthState, onAuthError, setAuthContext, setAuthInfo]);
318
372
  const handleApiKeySubmit = useCallback(async (apiKey) => {
319
373
  try {
320
374
  onAuthError(null);
@@ -352,6 +406,12 @@ Logging in with Google... Restarting Cell CLI to continue.
352
406
  }
353
407
  else if (settings.merged.security?.auth?.selectedType &&
354
408
  !settings.merged.security?.auth?.useExternal) {
409
+ // We skip validation for Gemini API key here because it might be stored
410
+ // in the keychain, which we can't check synchronously.
411
+ // The useAuth hook handles validation for this case.
412
+ if (settings.merged.security.auth.selectedType === AuthType.USE_GEMINI) {
413
+ return;
414
+ }
355
415
  const error = validateAuthMethod(settings.merged.security.auth.selectedType);
356
416
  if (error) {
357
417
  onAuthError(error);
@@ -385,21 +445,21 @@ Logging in with Google... Restarting Cell CLI to continue.
385
445
  .sendStatistics(sessionStats)
386
446
  .catch((err) => {
387
447
  // Don't block exit if this fails, just log it.
388
- console.error('Failed to send session stats:', err);
448
+ debugLogger.error('Failed to send session stats:', err);
389
449
  });
390
450
  const feedbackPromise = sessionStats.metrics.tools.totalCalls === 0
391
451
  ? Promise.resolve(null)
392
452
  : new Promise((resolve) => {
393
453
  feedbackPromiseResolveRef.current = resolve;
394
454
  });
395
- Promise.all([statsPromise, feedbackPromise]).then(async ([, feedback]) => {
455
+ void Promise.all([statsPromise, feedbackPromise]).then(async ([, feedback]) => {
396
456
  if (feedback) {
397
457
  try {
398
458
  await feedbackService.sendFeedback(feedback, sessionStats.sessionId);
399
459
  }
400
460
  catch (err) {
401
461
  // Don't block exit if this fails, just log it.
402
- console.error('Failed to send feedback:', err);
462
+ debugLogger.error('Failed to send feedback:', err);
403
463
  }
404
464
  }
405
465
  await runExitCleanup();
@@ -457,7 +517,6 @@ Logging in with Google... Restarting Cell CLI to continue.
457
517
  }
458
518
  }, [config, historyManager]);
459
519
  const cancelHandlerRef = useRef(() => { });
460
- const getPreferredEditor = useCallback(() => settings.merged.general?.preferredEditor, [settings.merged.general?.preferredEditor]);
461
520
  const onCancelSubmit = useCallback((shouldRestorePrompt) => {
462
521
  if (shouldRestorePrompt) {
463
522
  setPendingRestorePrompt(true);
@@ -479,12 +538,21 @@ Logging in with Google... Restarting Cell CLI to continue.
479
538
  }
480
539
  }
481
540
  }, [pendingRestorePrompt, inputHistory, historyManager.history]);
482
- 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);
541
+ const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, lastOutputTime, retryStatus, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused);
542
+ const lastOutputTimeRef = useRef(0);
543
+ useEffect(() => {
544
+ lastOutputTimeRef.current = lastOutputTime;
545
+ }, [lastOutputTime]);
546
+ const isShellAwaitingFocus = !!activePtyId &&
547
+ !embeddedShellFocused &&
548
+ config.isInteractiveShellEnabled();
549
+ const showShellActionRequired = useInactivityTimer(isShellAwaitingFocus, lastOutputTime, SHELL_ACTION_REQUIRED_TITLE_DELAY_MS);
483
550
  // Auto-accept indicator
484
551
  const showAutoAcceptIndicator = useAutoAcceptIndicator({
485
552
  config,
486
553
  addItem: historyManager.addItem,
487
554
  onApprovalModeChange: handleApprovalModeChange,
555
+ isActive: !embeddedShellFocused,
488
556
  });
489
557
  const { messageQueue, addMessage, clearQueue, getQueuedMessagesText, popAllMessages, } = useMessageQueue({
490
558
  isConfigInitialized,
@@ -525,16 +593,8 @@ Logging in with Google... Restarting Cell CLI to continue.
525
593
  const handleClearScreen = useCallback(() => {
526
594
  historyManager.clearItems();
527
595
  clearConsoleMessagesState();
528
- if (!isAlternateBuffer) {
529
- console.clear();
530
- }
531
596
  refreshStatic();
532
- }, [
533
- historyManager,
534
- clearConsoleMessagesState,
535
- refreshStatic,
536
- isAlternateBuffer,
537
- ]);
597
+ }, [historyManager, clearConsoleMessagesState, refreshStatic]);
538
598
  const { handleInput: vimHandleInput } = useVim(buffer, handleFinalSubmit);
539
599
  /**
540
600
  * Determines if the input prompt should be active and accept user input.
@@ -567,9 +627,9 @@ Logging in with Google... Restarting Cell CLI to continue.
567
627
  terminalHeight: Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1),
568
628
  pager: settings.merged.tools?.shell?.pager,
569
629
  showColor: settings.merged.tools?.shell?.showColor,
630
+ sanitizationConfig: config.sanitizationConfig,
570
631
  });
571
632
  const isFocused = useFocus();
572
- useBracketedPaste();
573
633
  // Context file names computation
574
634
  const contextFileNames = useMemo(() => {
575
635
  const fromSettings = settings.merged.context?.fileName;
@@ -630,6 +690,7 @@ Logging in with Google... Restarting Cell CLI to continue.
630
690
  const currentIde = ideClient.getCurrentIde();
631
691
  setCurrentIDE(currentIde || null);
632
692
  };
693
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
633
694
  getIde();
634
695
  }, []);
635
696
  const shouldShowIdePrompt = Boolean(currentIDE &&
@@ -652,17 +713,18 @@ Logging in with Google... Restarting Cell CLI to continue.
652
713
  const { needsRestart: ideNeedsRestart, restartReason: ideTrustRestartReason, } = useIdeTrustListener();
653
714
  const isInitialMount = useRef(true);
654
715
  useIncludeDirsTrust(config, isTrustedFolder, historyManager, setCustomDialog);
716
+ const warningTimeoutRef = useRef(null);
717
+ const tabFocusTimeoutRef = useRef(null);
718
+ const handleWarning = useCallback((message) => {
719
+ setWarningMessage(message);
720
+ if (warningTimeoutRef.current) {
721
+ clearTimeout(warningTimeoutRef.current);
722
+ }
723
+ warningTimeoutRef.current = setTimeout(() => {
724
+ setWarningMessage(null);
725
+ }, WARNING_PROMPT_DURATION_MS);
726
+ }, []);
655
727
  useEffect(() => {
656
- let timeoutId;
657
- const handleWarning = (message) => {
658
- setWarningMessage(message);
659
- if (timeoutId) {
660
- clearTimeout(timeoutId);
661
- }
662
- timeoutId = setTimeout(() => {
663
- setWarningMessage(null);
664
- }, WARNING_PROMPT_DURATION_MS);
665
- };
666
728
  const handleSelectionWarning = () => {
667
729
  handleWarning('Press Ctrl-S to enter selection mode to copy text.');
668
730
  };
@@ -674,11 +736,14 @@ Logging in with Google... Restarting Cell CLI to continue.
674
736
  return () => {
675
737
  appEvents.off(AppEvent.SelectionWarning, handleSelectionWarning);
676
738
  appEvents.off(AppEvent.PasteTimeout, handlePasteTimeout);
677
- if (timeoutId) {
678
- clearTimeout(timeoutId);
739
+ if (warningTimeoutRef.current) {
740
+ clearTimeout(warningTimeoutRef.current);
741
+ }
742
+ if (tabFocusTimeoutRef.current) {
743
+ clearTimeout(tabFocusTimeoutRef.current);
679
744
  }
680
745
  };
681
- }, []);
746
+ }, [handleWarning]);
682
747
  useEffect(() => {
683
748
  let timeoutId;
684
749
  const handleWarning = (message) => {
@@ -757,6 +822,7 @@ Logging in with Google... Restarting Cell CLI to continue.
757
822
  recordExitFail(config);
758
823
  }
759
824
  if (ctrlCPressCount > 1) {
825
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
760
826
  handleSlashCommand('/quit', undefined, undefined, false);
761
827
  }
762
828
  else {
@@ -775,6 +841,7 @@ Logging in with Google... Restarting Cell CLI to continue.
775
841
  recordExitFail(config);
776
842
  }
777
843
  if (ctrlDPressCount > 1) {
844
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
778
845
  handleSlashCommand('/quit', undefined, undefined, false);
779
846
  }
780
847
  else {
@@ -789,6 +856,7 @@ Logging in with Google... Restarting Cell CLI to continue.
789
856
  }, []);
790
857
  const handleIdePromptComplete = useCallback((result) => {
791
858
  if (result.userSelection === 'yes') {
859
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
792
860
  handleSlashCommand('/ide install');
793
861
  settings.setValue(SettingScope.User, 'hasSeenIdeIntegrationNudge', true);
794
862
  }
@@ -797,7 +865,7 @@ Logging in with Google... Restarting Cell CLI to continue.
797
865
  }
798
866
  setIdePromptAnswered(true);
799
867
  }, [handleSlashCommand, settings]);
800
- const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases, !!activePtyId && !embeddedShellFocused, lastOutputTime);
868
+ const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases, !!activePtyId && !embeddedShellFocused, lastOutputTime, retryStatus);
801
869
  const handleGlobalKeypress = useCallback((key) => {
802
870
  if (copyModeEnabled) {
803
871
  setCopyModeEnabled(false);
@@ -847,19 +915,44 @@ Logging in with Google... Restarting Cell CLI to continue.
847
915
  return newValue;
848
916
  });
849
917
  }
850
- else if (keyMatchers[Command.TOGGLE_IDE_CONTEXT_DETAIL](key) &&
918
+ else if (keyMatchers[Command.SHOW_IDE_CONTEXT_DETAIL](key) &&
851
919
  config.getIdeMode() &&
852
920
  ideContextState) {
921
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
853
922
  handleSlashCommand('/ide status');
854
923
  }
855
924
  else if (keyMatchers[Command.SHOW_MORE_LINES](key) &&
856
925
  !enteringConstrainHeightMode) {
857
926
  setConstrainHeight(false);
858
927
  }
859
- else if (keyMatchers[Command.TOGGLE_SHELL_INPUT_FOCUS](key)) {
860
- if (activePtyId || embeddedShellFocused) {
861
- setEmbeddedShellFocused((prev) => !prev);
928
+ else if (keyMatchers[Command.UNFOCUS_SHELL_INPUT](key) &&
929
+ activePtyId &&
930
+ embeddedShellFocused) {
931
+ if (key.name === 'tab' && key.shift) {
932
+ // Always change focus
933
+ setEmbeddedShellFocused(false);
934
+ return;
935
+ }
936
+ const now = Date.now();
937
+ // If the shell hasn't produced output in the last 100ms, it's considered idle.
938
+ const isIdle = now - lastOutputTimeRef.current >= 100;
939
+ if (isIdle) {
940
+ if (tabFocusTimeoutRef.current) {
941
+ clearTimeout(tabFocusTimeoutRef.current);
942
+ }
943
+ tabFocusTimeoutRef.current = setTimeout(() => {
944
+ tabFocusTimeoutRef.current = null;
945
+ // If the shell produced output since the tab press, we assume it handled the tab
946
+ // (e.g. autocomplete) so we should not toggle focus.
947
+ if (lastOutputTimeRef.current > now) {
948
+ handleWarning('Press Shift+Tab to focus out.');
949
+ return;
950
+ }
951
+ setEmbeddedShellFocused(false);
952
+ }, 100);
953
+ return;
862
954
  }
955
+ handleWarning('Press Shift+Tab to focus out.');
863
956
  }
864
957
  }, [
865
958
  constrainHeight,
@@ -879,37 +972,40 @@ Logging in with Google... Restarting Cell CLI to continue.
879
972
  setCopyModeEnabled,
880
973
  copyModeEnabled,
881
974
  isAlternateBuffer,
975
+ handleWarning,
882
976
  ]);
883
977
  useKeypress(handleGlobalKeypress, { isActive: true });
884
978
  // Update terminal title with Cell CLI status and thoughts
885
979
  useEffect(() => {
886
- // Respect both showStatusInTitle and hideWindowTitle settings
887
- if (!settings.merged.ui?.showStatusInTitle ||
888
- settings.merged.ui?.hideWindowTitle)
980
+ // Respect hideWindowTitle settings
981
+ if (settings.merged.ui?.hideWindowTitle)
889
982
  return;
890
- let title;
891
- if (streamingState === StreamingState.Idle) {
892
- title = originalTitleRef.current;
893
- }
894
- else {
895
- const statusText = thought?.subject
896
- ?.replace(/[\r\n]+/g, ' ')
897
- .substring(0, 80);
898
- title = statusText || originalTitleRef.current;
899
- }
900
- // Pad the title to a fixed width to prevent taskbar icon resizing.
901
- const paddedTitle = title.padEnd(80, ' ');
983
+ const paddedTitle = computeTerminalTitle({
984
+ streamingState,
985
+ thoughtSubject: thought?.subject,
986
+ isConfirming: !!shellConfirmationRequest ||
987
+ !!confirmationRequest ||
988
+ showShellActionRequired,
989
+ folderName: basename(config.getTargetDir()),
990
+ showThoughts: !!settings.merged.ui?.showStatusInTitle,
991
+ useDynamicTitle: settings.merged.ui?.dynamicWindowTitle ?? true,
992
+ });
902
993
  // Only update the title if it's different from the last value we set
903
994
  if (lastTitleRef.current !== paddedTitle) {
904
995
  lastTitleRef.current = paddedTitle;
905
- stdout.write(`\x1b]2;${paddedTitle}\x07`);
996
+ stdout.write(`\x1b]0;${paddedTitle}\x07`);
906
997
  }
907
998
  // Note: We don't need to reset the window title on exit because Cell CLI is already doing that elsewhere
908
999
  }, [
909
1000
  streamingState,
910
1001
  thought,
1002
+ shellConfirmationRequest,
1003
+ confirmationRequest,
1004
+ showShellActionRequired,
911
1005
  settings.merged.ui?.showStatusInTitle,
1006
+ settings.merged.ui?.dynamicWindowTitle,
912
1007
  settings.merged.ui?.hideWindowTitle,
1008
+ config,
913
1009
  stdout,
914
1010
  ]);
915
1011
  useEffect(() => {
@@ -998,14 +1094,14 @@ Logging in with Google... Restarting Cell CLI to continue.
998
1094
  setDefaultBannerText(defaultBanner);
999
1095
  setWarningBannerText(warningBanner);
1000
1096
  setBannerVisible(true);
1001
- refreshStatic();
1002
1097
  const authType = config.getContentGeneratorConfig()?.authType;
1003
1098
  if (authType === AuthType.USE_GEMINI ||
1004
1099
  authType === AuthType.USE_VERTEX_AI) {
1005
- setDefaultBannerText('Gemini 3 is now available.\nTo use Gemini 3, enable "Preview features" in /settings\nLearn more at https://goo.gle/enable-preview-features');
1100
+ setDefaultBannerText('Gemini 3 Flash and Pro are now available. \nEnable "Preview features" in /settings. \nLearn more at https://goo.gle/enable-preview-features');
1006
1101
  }
1007
1102
  }
1008
1103
  };
1104
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
1009
1105
  fetchBannerTexts();
1010
1106
  return () => {
1011
1107
  isMounted = false;
@@ -1073,6 +1169,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1073
1169
  elapsedTime,
1074
1170
  currentLoadingPhrase,
1075
1171
  historyRemountKey,
1172
+ activeHooks,
1076
1173
  messageQueue,
1077
1174
  queueErrorMessage,
1078
1175
  showAutoAcceptIndicator,
@@ -1106,11 +1203,10 @@ Logging in with Google... Restarting Cell CLI to continue.
1106
1203
  customDialog,
1107
1204
  copyModeEnabled,
1108
1205
  warningMessage,
1109
- bannerData: {
1110
- defaultText: defaultBannerText,
1111
- warningText: warningBannerText,
1112
- },
1206
+ bannerData,
1113
1207
  bannerVisible,
1208
+ terminalBackgroundColor: config.getTerminalBackground(),
1209
+ settingsNonce,
1114
1210
  }), [
1115
1211
  isThemeDialogOpen,
1116
1212
  themeError,
@@ -1164,6 +1260,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1164
1260
  elapsedTime,
1165
1261
  currentLoadingPhrase,
1166
1262
  historyRemountKey,
1263
+ activeHooks,
1167
1264
  messageQueue,
1168
1265
  queueErrorMessage,
1169
1266
  showAutoAcceptIndicator,
@@ -1201,9 +1298,10 @@ Logging in with Google... Restarting Cell CLI to continue.
1201
1298
  authState,
1202
1299
  copyModeEnabled,
1203
1300
  warningMessage,
1204
- defaultBannerText,
1205
- warningBannerText,
1301
+ bannerData,
1206
1302
  bannerVisible,
1303
+ config,
1304
+ settingsNonce,
1207
1305
  ]);
1208
1306
  const exitPrivacyNotice = useCallback(() => setShowPrivacyNotice(false), [setShowPrivacyNotice]);
1209
1307
  const uiActions = useMemo(() => ({
@@ -1240,6 +1338,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1240
1338
  handleApiKeyCancel,
1241
1339
  setBannerVisible,
1242
1340
  setEmbeddedShellFocused,
1341
+ setAuthContext,
1243
1342
  }), [
1244
1343
  handleThemeSelect,
1245
1344
  closeThemeDialog,
@@ -1274,7 +1373,14 @@ Logging in with Google... Restarting Cell CLI to continue.
1274
1373
  handleApiKeyCancel,
1275
1374
  setBannerVisible,
1276
1375
  setEmbeddedShellFocused,
1376
+ setAuthContext,
1277
1377
  ]);
1378
+ if (authState === AuthState.AwaitingGoogleLoginRestart) {
1379
+ return (_jsx(LoginWithGoogleRestartDialog, { onDismiss: () => {
1380
+ setAuthContext({});
1381
+ setAuthState(AuthState.Updating);
1382
+ } }));
1383
+ }
1278
1384
  return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
1279
1385
  version: props.version,
1280
1386
  startupWarnings: props.startupWarnings || [],