@machina.ai/cell-cli 1.33.0-rc1 → 1.38.1-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2022) hide show
  1. package/dist/index.js +14 -1
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +7 -7
  4. package/dist/src/acp/acpClient.d.ts +56 -0
  5. package/dist/src/{zed-integration/zedIntegration.js → acp/acpClient.js} +765 -121
  6. package/dist/src/acp/acpClient.js.map +1 -0
  7. package/dist/src/acp/acpClient.test.js +1787 -0
  8. package/dist/src/acp/acpClient.test.js.map +1 -0
  9. package/dist/src/{zed-integration → acp}/acpErrors.js +2 -0
  10. package/dist/src/acp/acpErrors.js.map +1 -0
  11. package/dist/src/acp/acpErrors.test.js.map +1 -0
  12. package/dist/src/{zed-integration → acp}/acpResume.test.js +83 -8
  13. package/dist/src/acp/acpResume.test.js.map +1 -0
  14. package/dist/src/acp/commandHandler.d.ts +26 -0
  15. package/dist/src/acp/commandHandler.js +106 -0
  16. package/dist/src/acp/commandHandler.js.map +1 -0
  17. package/dist/src/acp/commandHandler.test.js +29 -0
  18. package/dist/src/acp/commandHandler.test.js.map +1 -0
  19. package/dist/src/acp/commands/about.d.ts +11 -0
  20. package/dist/src/acp/commands/about.js +53 -0
  21. package/dist/src/acp/commands/about.js.map +1 -0
  22. package/dist/src/acp/commands/commandRegistry.d.ts +12 -0
  23. package/dist/src/acp/commands/commandRegistry.js +26 -0
  24. package/dist/src/acp/commands/commandRegistry.js.map +1 -0
  25. package/dist/src/acp/commands/extensions.d.ts +57 -0
  26. package/dist/src/acp/commands/extensions.js +331 -0
  27. package/dist/src/acp/commands/extensions.js.map +1 -0
  28. package/dist/src/acp/commands/help.d.ts +14 -0
  29. package/dist/src/acp/commands/help.js +35 -0
  30. package/dist/src/acp/commands/help.js.map +1 -0
  31. package/dist/src/acp/commands/help.test.js +40 -0
  32. package/dist/src/acp/commands/help.test.js.map +1 -0
  33. package/dist/src/acp/commands/init.d.ts +12 -0
  34. package/dist/src/acp/commands/init.js +47 -0
  35. package/dist/src/acp/commands/init.js.map +1 -0
  36. package/dist/src/acp/commands/memory.d.ts +34 -0
  37. package/dist/src/acp/commands/memory.js +86 -0
  38. package/dist/src/acp/commands/memory.js.map +1 -0
  39. package/dist/src/acp/commands/restore.d.ts +18 -0
  40. package/dist/src/acp/commands/restore.js +141 -0
  41. package/dist/src/acp/commands/restore.js.map +1 -0
  42. package/dist/src/acp/commands/types.d.ts +31 -0
  43. package/dist/src/acp/commands/types.js +7 -0
  44. package/dist/src/acp/commands/types.js.map +1 -0
  45. package/dist/src/{zed-integration → acp}/fileSystemService.d.ts +6 -2
  46. package/dist/src/acp/fileSystemService.js +78 -0
  47. package/dist/src/acp/fileSystemService.js.map +1 -0
  48. package/dist/src/acp/fileSystemService.test.js +162 -0
  49. package/dist/src/acp/fileSystemService.test.js.map +1 -0
  50. package/dist/src/commands/extensions/disable.js +1 -2
  51. package/dist/src/commands/extensions/disable.js.map +1 -1
  52. package/dist/src/commands/extensions/disable.test.js +2 -2
  53. package/dist/src/commands/extensions/disable.test.js.map +1 -1
  54. package/dist/src/commands/extensions/examples/policies/README.md +41 -0
  55. package/dist/src/commands/extensions/examples/policies/gemini-extension.json +5 -0
  56. package/dist/src/commands/extensions/examples/policies/policies/policies.toml +28 -0
  57. package/dist/src/commands/extensions/examples/themes-example/README.md +8 -5
  58. package/dist/src/commands/extensions/examples/themes-example/gemini-extension.json +1 -1
  59. package/dist/src/commands/extensions/install.d.ts +1 -0
  60. package/dist/src/commands/extensions/install.js +86 -6
  61. package/dist/src/commands/extensions/install.js.map +1 -1
  62. package/dist/src/commands/extensions/install.test.js +199 -28
  63. package/dist/src/commands/extensions/install.test.js.map +1 -1
  64. package/dist/src/commands/extensions/link.js +1 -2
  65. package/dist/src/commands/extensions/link.js.map +1 -1
  66. package/dist/src/commands/extensions/link.test.js +6 -22
  67. package/dist/src/commands/extensions/link.test.js.map +1 -1
  68. package/dist/src/commands/extensions/list.js +1 -2
  69. package/dist/src/commands/extensions/list.js.map +1 -1
  70. package/dist/src/commands/extensions/list.test.js +9 -25
  71. package/dist/src/commands/extensions/list.test.js.map +1 -1
  72. package/dist/src/commands/extensions/new.js +1 -1
  73. package/dist/src/commands/extensions/new.js.map +1 -1
  74. package/dist/src/commands/extensions/uninstall.d.ts +2 -1
  75. package/dist/src/commands/extensions/uninstall.js +27 -6
  76. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  77. package/dist/src/commands/extensions/uninstall.test.js +48 -7
  78. package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
  79. package/dist/src/commands/extensions/update.js +1 -2
  80. package/dist/src/commands/extensions/update.js.map +1 -1
  81. package/dist/src/commands/extensions/utils.js +1 -0
  82. package/dist/src/commands/extensions/utils.js.map +1 -1
  83. package/dist/src/commands/extensions/validate.js +1 -2
  84. package/dist/src/commands/extensions/validate.js.map +1 -1
  85. package/dist/src/commands/hooks/migrate.js +3 -0
  86. package/dist/src/commands/hooks/migrate.js.map +1 -1
  87. package/dist/src/commands/mcp/list.d.ts +3 -3
  88. package/dist/src/commands/mcp/list.js +68 -24
  89. package/dist/src/commands/mcp/list.js.map +1 -1
  90. package/dist/src/commands/mcp/list.test.js +69 -3
  91. package/dist/src/commands/mcp/list.test.js.map +1 -1
  92. package/dist/src/commands/mcp.test.js +2 -3
  93. package/dist/src/commands/mcp.test.js.map +1 -1
  94. package/dist/src/commands/skills/disable.test.js +4 -7
  95. package/dist/src/commands/skills/disable.test.js.map +1 -1
  96. package/dist/src/commands/skills/enable.test.js +4 -7
  97. package/dist/src/commands/skills/enable.test.js.map +1 -1
  98. package/dist/src/commands/skills/install.js +1 -2
  99. package/dist/src/commands/skills/install.js.map +1 -1
  100. package/dist/src/commands/skills/install.test.js +13 -9
  101. package/dist/src/commands/skills/install.test.js.map +1 -1
  102. package/dist/src/commands/skills/link.js +1 -2
  103. package/dist/src/commands/skills/link.js.map +1 -1
  104. package/dist/src/commands/skills/link.test.js +6 -2
  105. package/dist/src/commands/skills/link.test.js.map +1 -1
  106. package/dist/src/commands/skills/list.js +5 -8
  107. package/dist/src/commands/skills/list.js.map +1 -1
  108. package/dist/src/commands/skills/list.test.js +21 -30
  109. package/dist/src/commands/skills/list.test.js.map +1 -1
  110. package/dist/src/commands/skills/uninstall.js +1 -2
  111. package/dist/src/commands/skills/uninstall.js.map +1 -1
  112. package/dist/src/commands/skills/uninstall.test.js +10 -6
  113. package/dist/src/commands/skills/uninstall.test.js.map +1 -1
  114. package/dist/src/config/config.d.ts +18 -3
  115. package/dist/src/config/config.js +334 -136
  116. package/dist/src/config/config.js.map +1 -1
  117. package/dist/src/config/config.test.js +513 -61
  118. package/dist/src/config/config.test.js.map +1 -1
  119. package/dist/src/config/extension-manager-hydration.test.js +2 -2
  120. package/dist/src/config/extension-manager-hydration.test.js.map +1 -1
  121. package/dist/src/config/extension-manager-permissions.test.d.ts +6 -0
  122. package/dist/src/config/extension-manager-permissions.test.js +107 -0
  123. package/dist/src/config/extension-manager-permissions.test.js.map +1 -0
  124. package/dist/src/config/extension-manager-scope.test.js +1 -1
  125. package/dist/src/config/extension-manager-scope.test.js.map +1 -1
  126. package/dist/src/config/extension-manager-skills.test.js +9 -0
  127. package/dist/src/config/extension-manager-skills.test.js.map +1 -1
  128. package/dist/src/config/extension-manager-themes.spec.js +3 -1
  129. package/dist/src/config/extension-manager-themes.spec.js.map +1 -1
  130. package/dist/src/config/extension-manager.d.ts +16 -3
  131. package/dist/src/config/extension-manager.js +202 -54
  132. package/dist/src/config/extension-manager.js.map +1 -1
  133. package/dist/src/config/extension-manager.test.js +430 -0
  134. package/dist/src/config/extension-manager.test.js.map +1 -0
  135. package/dist/src/config/extension.d.ts +13 -0
  136. package/dist/src/config/extension.js +1 -1
  137. package/dist/src/config/extension.js.map +1 -1
  138. package/dist/src/config/extension.test.js +139 -30
  139. package/dist/src/config/extension.test.js.map +1 -1
  140. package/dist/src/config/extensionRegistryClient.d.ts +3 -1
  141. package/dist/src/config/extensionRegistryClient.js +29 -9
  142. package/dist/src/config/extensionRegistryClient.js.map +1 -1
  143. package/dist/src/config/extensionRegistryClient.test.js +81 -3
  144. package/dist/src/config/extensionRegistryClient.test.js.map +1 -1
  145. package/dist/src/config/extensions/consent.d.ts +11 -1
  146. package/dist/src/config/extensions/consent.js +27 -7
  147. package/dist/src/config/extensions/consent.js.map +1 -1
  148. package/dist/src/config/extensions/consent.test.js +43 -44
  149. package/dist/src/config/extensions/consent.test.js.map +1 -1
  150. package/dist/src/config/extensions/extensionEnablement.js +1 -0
  151. package/dist/src/config/extensions/extensionEnablement.js.map +1 -1
  152. package/dist/src/config/extensions/extensionSettings.js +20 -3
  153. package/dist/src/config/extensions/extensionSettings.js.map +1 -1
  154. package/dist/src/config/extensions/extensionSettings.test.js +17 -1
  155. package/dist/src/config/extensions/extensionSettings.test.js.map +1 -1
  156. package/dist/src/config/extensions/extensionUpdates.test.js +74 -13
  157. package/dist/src/config/extensions/extensionUpdates.test.js.map +1 -1
  158. package/dist/src/config/extensions/github.js +13 -3
  159. package/dist/src/config/extensions/github.js.map +1 -1
  160. package/dist/src/config/extensions/github.test.js +14 -1
  161. package/dist/src/config/extensions/github.test.js.map +1 -1
  162. package/dist/src/config/extensions/update.js +25 -2
  163. package/dist/src/config/extensions/update.js.map +1 -1
  164. package/dist/src/config/extensions/update.test.js +68 -3
  165. package/dist/src/config/extensions/update.test.js.map +1 -1
  166. package/dist/src/config/extensions/variables.js +14 -2
  167. package/dist/src/config/extensions/variables.js.map +1 -1
  168. package/dist/src/config/extensions/variables.test.js +16 -0
  169. package/dist/src/config/extensions/variables.test.js.map +1 -1
  170. package/dist/src/config/footerItems.d.ts +62 -0
  171. package/dist/src/config/footerItems.js +128 -0
  172. package/dist/src/config/footerItems.js.map +1 -0
  173. package/dist/src/config/footerItems.test.d.ts +6 -0
  174. package/dist/src/config/footerItems.test.js +141 -0
  175. package/dist/src/config/footerItems.test.js.map +1 -0
  176. package/dist/src/config/mcp/mcpServerEnablement.test.js +1 -0
  177. package/dist/src/config/mcp/mcpServerEnablement.test.js.map +1 -1
  178. package/dist/src/config/policy-engine.integration.test.js +90 -51
  179. package/dist/src/config/policy-engine.integration.test.js.map +1 -1
  180. package/dist/src/config/policy.d.ts +35 -3
  181. package/dist/src/config/policy.js +82 -5
  182. package/dist/src/config/policy.js.map +1 -1
  183. package/dist/src/config/policy.test.js +199 -0
  184. package/dist/src/config/policy.test.js.map +1 -0
  185. package/dist/src/config/sandboxConfig.js +50 -7
  186. package/dist/src/config/sandboxConfig.js.map +1 -1
  187. package/dist/src/config/sandboxConfig.test.js +227 -10
  188. package/dist/src/config/sandboxConfig.test.js.map +1 -1
  189. package/dist/src/config/settings-validation.js +1 -1
  190. package/dist/src/config/settings-validation.js.map +1 -1
  191. package/dist/src/config/settings-validation.test.js +2 -3
  192. package/dist/src/config/settings-validation.test.js.map +1 -1
  193. package/dist/src/config/settings.d.ts +26 -2
  194. package/dist/src/config/settings.js +102 -31
  195. package/dist/src/config/settings.js.map +1 -1
  196. package/dist/src/config/settings.test.js +374 -146
  197. package/dist/src/config/settings.test.js.map +1 -1
  198. package/dist/src/config/settingsSchema.d.ts +838 -67
  199. package/dist/src/config/settingsSchema.js +988 -81
  200. package/dist/src/config/settingsSchema.js.map +1 -1
  201. package/dist/src/config/settingsSchema.test.js +128 -7
  202. package/dist/src/config/settingsSchema.test.js.map +1 -1
  203. package/dist/src/config/settings_repro.test.js +0 -1
  204. package/dist/src/config/settings_repro.test.js.map +1 -1
  205. package/dist/src/config/settings_validation_warning.test.js +2 -1
  206. package/dist/src/config/settings_validation_warning.test.js.map +1 -1
  207. package/dist/src/config/trustedFolders.test.js +4 -2
  208. package/dist/src/config/trustedFolders.test.js.map +1 -1
  209. package/dist/src/config/workspace-policy-cli.test.js +209 -0
  210. package/dist/src/config/workspace-policy-cli.test.js.map +1 -0
  211. package/dist/src/core/auth.d.ts +7 -2
  212. package/dist/src/core/auth.js +28 -6
  213. package/dist/src/core/auth.js.map +1 -1
  214. package/dist/src/core/auth.test.js +53 -7
  215. package/dist/src/core/auth.test.js.map +1 -1
  216. package/dist/src/core/initializer.d.ts +2 -0
  217. package/dist/src/core/initializer.js +12 -5
  218. package/dist/src/core/initializer.js.map +1 -1
  219. package/dist/src/core/initializer.test.js +12 -2
  220. package/dist/src/core/initializer.test.js.map +1 -1
  221. package/dist/src/deferred.test.js +1 -1
  222. package/dist/src/deferred.test.js.map +1 -1
  223. package/dist/src/gemini.d.ts +3 -3
  224. package/dist/src/gemini.js +120 -146
  225. package/dist/src/gemini.js.map +1 -1
  226. package/dist/src/gemini.test.js +220 -44
  227. package/dist/src/gemini.test.js.map +1 -1
  228. package/dist/src/gemini_cleanup.test.js +99 -30
  229. package/dist/src/gemini_cleanup.test.js.map +1 -1
  230. package/dist/src/generated/git-commit.d.ts +2 -2
  231. package/dist/src/generated/git-commit.js +2 -2
  232. package/dist/src/integration-tests/modelSteering.test.d.ts +6 -0
  233. package/dist/src/integration-tests/modelSteering.test.js +62 -0
  234. package/dist/src/integration-tests/modelSteering.test.js.map +1 -0
  235. package/dist/src/interactiveCli.d.ts +9 -0
  236. package/dist/src/interactiveCli.js +128 -0
  237. package/dist/src/interactiveCli.js.map +1 -0
  238. package/dist/src/nonInteractiveCli.d.ts +1 -1
  239. package/dist/src/nonInteractiveCli.js +15 -6
  240. package/dist/src/nonInteractiveCli.js.map +1 -1
  241. package/dist/src/nonInteractiveCli.test.js +20 -16
  242. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  243. package/dist/src/nonInteractiveCliAgentSession.d.ts +16 -0
  244. package/dist/src/nonInteractiveCliAgentSession.js +484 -0
  245. package/dist/src/nonInteractiveCliAgentSession.js.map +1 -0
  246. package/dist/src/nonInteractiveCliAgentSession.test.js +1837 -0
  247. package/dist/src/nonInteractiveCliAgentSession.test.js.map +1 -0
  248. package/dist/src/nonInteractiveCliCommands.js +3 -3
  249. package/dist/src/nonInteractiveCliCommands.js.map +1 -1
  250. package/dist/src/services/BuiltinCommandLoader.js +41 -7
  251. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  252. package/dist/src/services/BuiltinCommandLoader.test.js +83 -6
  253. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  254. package/dist/src/services/CommandService.d.ts +25 -18
  255. package/dist/src/services/CommandService.js +51 -42
  256. package/dist/src/services/CommandService.js.map +1 -1
  257. package/dist/src/services/CommandService.test.js +44 -204
  258. package/dist/src/services/CommandService.test.js.map +1 -1
  259. package/dist/src/services/FileCommandLoader.d.ts +2 -1
  260. package/dist/src/services/FileCommandLoader.js +14 -6
  261. package/dist/src/services/FileCommandLoader.js.map +1 -1
  262. package/dist/src/services/FileCommandLoader.test.js.map +1 -1
  263. package/dist/src/services/McpPromptLoader.d.ts +2 -2
  264. package/dist/src/services/McpPromptLoader.js +3 -2
  265. package/dist/src/services/McpPromptLoader.js.map +1 -1
  266. package/dist/src/services/SkillCommandLoader.d.ts +23 -0
  267. package/dist/src/services/SkillCommandLoader.js +52 -0
  268. package/dist/src/services/SkillCommandLoader.js.map +1 -0
  269. package/dist/src/services/SkillCommandLoader.test.d.ts +6 -0
  270. package/dist/src/services/SkillCommandLoader.test.js +113 -0
  271. package/dist/src/services/SkillCommandLoader.test.js.map +1 -0
  272. package/dist/src/services/SlashCommandConflictHandler.d.ts +35 -0
  273. package/dist/src/services/SlashCommandConflictHandler.js +128 -0
  274. package/dist/src/services/SlashCommandConflictHandler.js.map +1 -0
  275. package/dist/src/services/SlashCommandConflictHandler.test.d.ts +6 -0
  276. package/dist/src/services/SlashCommandConflictHandler.test.js +144 -0
  277. package/dist/src/services/SlashCommandConflictHandler.test.js.map +1 -0
  278. package/dist/src/services/SlashCommandResolver.d.ts +53 -0
  279. package/dist/src/services/SlashCommandResolver.js +156 -0
  280. package/dist/src/services/SlashCommandResolver.js.map +1 -0
  281. package/dist/src/services/SlashCommandResolver.test.d.ts +6 -0
  282. package/dist/src/services/SlashCommandResolver.test.js +186 -0
  283. package/dist/src/services/SlashCommandResolver.test.js.map +1 -0
  284. package/dist/src/services/prompt-processors/atFileProcessor.js +1 -1
  285. package/dist/src/services/prompt-processors/atFileProcessor.js.map +1 -1
  286. package/dist/src/services/prompt-processors/atFileProcessor.test.js +6 -3
  287. package/dist/src/services/prompt-processors/atFileProcessor.test.js.map +1 -1
  288. package/dist/src/services/prompt-processors/shellProcessor.js +1 -1
  289. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  290. package/dist/src/services/prompt-processors/shellProcessor.test.js +14 -4
  291. package/dist/src/services/prompt-processors/shellProcessor.test.js.map +1 -1
  292. package/dist/src/services/types.d.ts +8 -0
  293. package/dist/src/test-utils/AppRig.d.ts +83 -0
  294. package/dist/src/test-utils/AppRig.js +583 -0
  295. package/dist/src/test-utils/AppRig.js.map +1 -0
  296. package/dist/src/test-utils/AppRig.test.d.ts +6 -0
  297. package/dist/src/test-utils/AppRig.test.js +60 -0
  298. package/dist/src/test-utils/AppRig.test.js.map +1 -0
  299. package/dist/src/test-utils/MockShellExecutionService.d.ts +37 -0
  300. package/dist/src/test-utils/MockShellExecutionService.js +88 -0
  301. package/dist/src/test-utils/MockShellExecutionService.js.map +1 -0
  302. package/dist/src/test-utils/async.d.ts +1 -1
  303. package/dist/src/test-utils/async.js +1 -1
  304. package/dist/src/test-utils/async.js.map +1 -1
  305. package/dist/src/test-utils/customMatchers.d.ts +25 -5
  306. package/dist/src/test-utils/customMatchers.js +47 -2
  307. package/dist/src/test-utils/customMatchers.js.map +1 -1
  308. package/dist/src/test-utils/mockCommandContext.js +2 -5
  309. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  310. package/dist/src/test-utils/mockCommandContext.test.js +4 -4
  311. package/dist/src/test-utils/mockCommandContext.test.js.map +1 -1
  312. package/dist/src/test-utils/mockConfig.d.ts +1 -1
  313. package/dist/src/test-utils/mockConfig.js +41 -12
  314. package/dist/src/test-utils/mockConfig.js.map +1 -1
  315. package/dist/src/test-utils/mockDebugLogger.d.ts +35 -0
  316. package/dist/src/test-utils/mockDebugLogger.js +68 -0
  317. package/dist/src/test-utils/mockDebugLogger.js.map +1 -0
  318. package/dist/src/test-utils/mockSpinner.d.ts +6 -0
  319. package/dist/src/test-utils/mockSpinner.js +21 -0
  320. package/dist/src/test-utils/mockSpinner.js.map +1 -0
  321. package/dist/src/test-utils/render.d.ts +109 -14
  322. package/dist/src/test-utils/render.js +393 -95
  323. package/dist/src/test-utils/render.js.map +1 -1
  324. package/dist/src/test-utils/render.test.js +34 -30
  325. package/dist/src/test-utils/render.test.js.map +1 -1
  326. package/dist/src/test-utils/settings.js +2 -11
  327. package/dist/src/test-utils/settings.js.map +1 -1
  328. package/dist/src/test-utils/svg.d.ts +7 -0
  329. package/dist/src/test-utils/svg.js +182 -0
  330. package/dist/src/test-utils/svg.js.map +1 -0
  331. package/dist/src/ui/App.test.js +64 -36
  332. package/dist/src/ui/App.test.js.map +1 -1
  333. package/dist/src/ui/AppContainer.d.ts +2 -2
  334. package/dist/src/ui/AppContainer.js +696 -301
  335. package/dist/src/ui/AppContainer.js.map +1 -1
  336. package/dist/src/ui/AppContainer.test.js +1155 -707
  337. package/dist/src/ui/AppContainer.test.js.map +1 -1
  338. package/dist/src/ui/IdeIntegrationNudge.js +1 -1
  339. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  340. package/dist/src/ui/IdeIntegrationNudge.test.js +27 -36
  341. package/dist/src/ui/IdeIntegrationNudge.test.js.map +1 -1
  342. package/dist/src/ui/ToolConfirmationFullFrame.test.d.ts +1 -0
  343. package/dist/src/ui/ToolConfirmationFullFrame.test.js +158 -0
  344. package/dist/src/ui/ToolConfirmationFullFrame.test.js.map +1 -0
  345. package/dist/src/ui/auth/ApiAuthDialog.js +4 -2
  346. package/dist/src/ui/auth/ApiAuthDialog.js.map +1 -1
  347. package/dist/src/ui/auth/ApiAuthDialog.test.js +23 -13
  348. package/dist/src/ui/auth/ApiAuthDialog.test.js.map +1 -1
  349. package/dist/src/ui/auth/AuthDialog.d.ts +1 -1
  350. package/dist/src/ui/auth/AuthDialog.js +10 -17
  351. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  352. package/dist/src/ui/auth/AuthDialog.test.js +69 -34
  353. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  354. package/dist/src/ui/auth/AuthInProgress.test.js +33 -15
  355. package/dist/src/ui/auth/AuthInProgress.test.js.map +1 -1
  356. package/dist/src/ui/auth/BannedAccountDialog.d.ts +14 -0
  357. package/dist/src/ui/auth/BannedAccountDialog.js +66 -0
  358. package/dist/src/ui/auth/BannedAccountDialog.js.map +1 -0
  359. package/dist/src/ui/auth/BannedAccountDialog.test.d.ts +6 -0
  360. package/dist/src/ui/auth/BannedAccountDialog.test.js +140 -0
  361. package/dist/src/ui/auth/BannedAccountDialog.test.js.map +1 -0
  362. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js +4 -6
  363. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js.map +1 -1
  364. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js +10 -6
  365. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +1 -1
  366. package/dist/src/ui/auth/useAuth.d.ts +4 -1
  367. package/dist/src/ui/auth/useAuth.js +22 -4
  368. package/dist/src/ui/auth/useAuth.js.map +1 -1
  369. package/dist/src/ui/auth/useAuth.test.js +83 -58
  370. package/dist/src/ui/auth/useAuth.test.js.map +1 -1
  371. package/dist/src/ui/colors.js +8 -2
  372. package/dist/src/ui/colors.js.map +1 -1
  373. package/dist/src/ui/commands/aboutCommand.d.ts +1 -1
  374. package/dist/src/ui/commands/aboutCommand.js +5 -4
  375. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  376. package/dist/src/ui/commands/aboutCommand.test.js +8 -6
  377. package/dist/src/ui/commands/aboutCommand.test.js.map +1 -1
  378. package/dist/src/ui/commands/agentsCommand.js +17 -13
  379. package/dist/src/ui/commands/agentsCommand.js.map +1 -1
  380. package/dist/src/ui/commands/agentsCommand.test.js +20 -13
  381. package/dist/src/ui/commands/agentsCommand.test.js.map +1 -1
  382. package/dist/src/ui/commands/authCommand.js +7 -5
  383. package/dist/src/ui/commands/authCommand.js.map +1 -1
  384. package/dist/src/ui/commands/authCommand.test.js +18 -13
  385. package/dist/src/ui/commands/authCommand.test.js.map +1 -1
  386. package/dist/src/ui/commands/bugCommand.js +4 -3
  387. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  388. package/dist/src/ui/commands/bugCommand.test.js +29 -23
  389. package/dist/src/ui/commands/bugCommand.test.js.map +1 -1
  390. package/dist/src/ui/commands/chatCommand.d.ts +2 -0
  391. package/dist/src/ui/commands/chatCommand.js +60 -26
  392. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  393. package/dist/src/ui/commands/chatCommand.test.js +22 -15
  394. package/dist/src/ui/commands/chatCommand.test.js.map +1 -1
  395. package/dist/src/ui/commands/clearCommand.d.ts +1 -1
  396. package/dist/src/ui/commands/clearCommand.js +16 -14
  397. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  398. package/dist/src/ui/commands/clearCommand.test.js +27 -17
  399. package/dist/src/ui/commands/clearCommand.test.js.map +1 -1
  400. package/dist/src/ui/commands/commandsCommand.d.ts +7 -0
  401. package/dist/src/ui/commands/commandsCommand.js +56 -0
  402. package/dist/src/ui/commands/commandsCommand.js.map +1 -0
  403. package/dist/src/ui/commands/commandsCommand.test.d.ts +6 -0
  404. package/dist/src/ui/commands/commandsCommand.test.js +42 -0
  405. package/dist/src/ui/commands/commandsCommand.test.js.map +1 -0
  406. package/dist/src/ui/commands/compressCommand.d.ts +1 -1
  407. package/dist/src/ui/commands/compressCommand.js +2 -4
  408. package/dist/src/ui/commands/compressCommand.js.map +1 -1
  409. package/dist/src/ui/commands/compressCommand.test.js +10 -3
  410. package/dist/src/ui/commands/compressCommand.test.js.map +1 -1
  411. package/dist/src/ui/commands/copyCommand.d.ts +1 -1
  412. package/dist/src/ui/commands/copyCommand.js +4 -3
  413. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  414. package/dist/src/ui/commands/copyCommand.test.js +10 -8
  415. package/dist/src/ui/commands/copyCommand.test.js.map +1 -1
  416. package/dist/src/ui/commands/directoryCommand.d.ts +1 -1
  417. package/dist/src/ui/commands/directoryCommand.js +15 -15
  418. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  419. package/dist/src/ui/commands/directoryCommand.test.js +5 -2
  420. package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
  421. package/dist/src/ui/commands/extensionsCommand.js +110 -55
  422. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  423. package/dist/src/ui/commands/extensionsCommand.test.js +80 -33
  424. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
  425. package/dist/src/ui/commands/footerCommand.d.ts +7 -0
  426. package/dist/src/ui/commands/footerCommand.js +20 -0
  427. package/dist/src/ui/commands/footerCommand.js.map +1 -0
  428. package/dist/src/ui/commands/helpCommand.d.ts +1 -1
  429. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  430. package/dist/src/ui/commands/helpCommand.test.js +1 -2
  431. package/dist/src/ui/commands/helpCommand.test.js.map +1 -1
  432. package/dist/src/ui/commands/hooksCommand.js +26 -15
  433. package/dist/src/ui/commands/hooksCommand.js.map +1 -1
  434. package/dist/src/ui/commands/hooksCommand.test.js +23 -31
  435. package/dist/src/ui/commands/hooksCommand.test.js.map +1 -1
  436. package/dist/src/ui/commands/ideCommand.js +3 -3
  437. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  438. package/dist/src/ui/commands/ideCommand.test.js +7 -5
  439. package/dist/src/ui/commands/ideCommand.test.js.map +1 -1
  440. package/dist/src/ui/commands/initCommand.js +2 -2
  441. package/dist/src/ui/commands/initCommand.js.map +1 -1
  442. package/dist/src/ui/commands/initCommand.test.js +5 -3
  443. package/dist/src/ui/commands/initCommand.test.js.map +1 -1
  444. package/dist/src/ui/commands/mcpCommand.js +68 -28
  445. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  446. package/dist/src/ui/commands/mcpCommand.test.js +49 -8
  447. package/dist/src/ui/commands/mcpCommand.test.js.map +1 -1
  448. package/dist/src/ui/commands/memoryCommand.d.ts +1 -1
  449. package/dist/src/ui/commands/memoryCommand.js +9 -8
  450. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  451. package/dist/src/ui/commands/memoryCommand.test.js +39 -35
  452. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
  453. package/dist/src/ui/commands/modelCommand.js +41 -4
  454. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  455. package/dist/src/ui/commands/modelCommand.test.js +98 -4
  456. package/dist/src/ui/commands/modelCommand.test.js.map +1 -1
  457. package/dist/src/ui/commands/oncallCommand.js +4 -2
  458. package/dist/src/ui/commands/oncallCommand.js.map +1 -1
  459. package/dist/src/ui/commands/planCommand.js +44 -5
  460. package/dist/src/ui/commands/planCommand.js.map +1 -1
  461. package/dist/src/ui/commands/planCommand.test.js +73 -14
  462. package/dist/src/ui/commands/planCommand.test.js.map +1 -1
  463. package/dist/src/ui/commands/policiesCommand.js +7 -1
  464. package/dist/src/ui/commands/policiesCommand.js.map +1 -1
  465. package/dist/src/ui/commands/policiesCommand.test.js +50 -4
  466. package/dist/src/ui/commands/policiesCommand.test.js.map +1 -1
  467. package/dist/src/ui/commands/privacyCommand.d.ts +1 -1
  468. package/dist/src/ui/commands/privacyCommand.js +1 -1
  469. package/dist/src/ui/commands/privacyCommand.js.map +1 -1
  470. package/dist/src/ui/commands/restoreCommand.js +6 -6
  471. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  472. package/dist/src/ui/commands/restoreCommand.test.js +6 -3
  473. package/dist/src/ui/commands/restoreCommand.test.js.map +1 -1
  474. package/dist/src/ui/commands/resumeCommand.js +3 -1
  475. package/dist/src/ui/commands/resumeCommand.js.map +1 -1
  476. package/dist/src/ui/commands/resumeCommand.test.js +28 -0
  477. package/dist/src/ui/commands/resumeCommand.test.js.map +1 -0
  478. package/dist/src/ui/commands/rewindCommand.js +9 -5
  479. package/dist/src/ui/commands/rewindCommand.js.map +1 -1
  480. package/dist/src/ui/commands/rewindCommand.test.js +20 -9
  481. package/dist/src/ui/commands/rewindCommand.test.js.map +1 -1
  482. package/dist/src/ui/commands/settingsCommand.d.ts +1 -1
  483. package/dist/src/ui/commands/settingsCommand.js +2 -1
  484. package/dist/src/ui/commands/settingsCommand.js.map +1 -1
  485. package/dist/src/ui/commands/setupGithubCommand.d.ts +1 -1
  486. package/dist/src/ui/commands/setupGithubCommand.js +9 -7
  487. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  488. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
  489. package/dist/src/ui/commands/shortcutsCommand.d.ts +1 -1
  490. package/dist/src/ui/commands/shortcutsCommand.js.map +1 -1
  491. package/dist/src/ui/commands/skillsCommand.js +23 -13
  492. package/dist/src/ui/commands/skillsCommand.js.map +1 -1
  493. package/dist/src/ui/commands/skillsCommand.test.js +19 -20
  494. package/dist/src/ui/commands/skillsCommand.test.js.map +1 -1
  495. package/dist/src/ui/commands/statsCommand.js +27 -14
  496. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  497. package/dist/src/ui/commands/statsCommand.test.js +20 -4
  498. package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
  499. package/dist/src/ui/commands/{shellsCommand.d.ts → tasksCommand.d.ts} +1 -1
  500. package/dist/src/ui/commands/{shellsCommand.js → tasksCommand.js} +6 -6
  501. package/dist/src/ui/commands/tasksCommand.js.map +1 -0
  502. package/dist/src/ui/commands/tasksCommand.test.js +30 -0
  503. package/dist/src/ui/commands/tasksCommand.test.js.map +1 -0
  504. package/dist/src/ui/commands/terminalSetupCommand.d.ts +1 -1
  505. package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -1
  506. package/dist/src/ui/commands/themeCommand.d.ts +1 -1
  507. package/dist/src/ui/commands/themeCommand.js +1 -1
  508. package/dist/src/ui/commands/themeCommand.js.map +1 -1
  509. package/dist/src/ui/commands/toolsCommand.js +43 -27
  510. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  511. package/dist/src/ui/commands/toolsCommand.test.js +97 -10
  512. package/dist/src/ui/commands/toolsCommand.test.js.map +1 -1
  513. package/dist/src/ui/commands/types.d.ts +26 -5
  514. package/dist/src/ui/commands/types.js +4 -1
  515. package/dist/src/ui/commands/types.js.map +1 -1
  516. package/dist/src/ui/commands/upgradeCommand.d.ts +11 -0
  517. package/dist/src/ui/commands/upgradeCommand.js +58 -0
  518. package/dist/src/ui/commands/upgradeCommand.js.map +1 -0
  519. package/dist/src/ui/commands/upgradeCommand.test.d.ts +6 -0
  520. package/dist/src/ui/commands/upgradeCommand.test.js +102 -0
  521. package/dist/src/ui/commands/upgradeCommand.test.js.map +1 -0
  522. package/dist/src/ui/commands/vimCommand.d.ts +1 -1
  523. package/dist/src/ui/commands/vimCommand.js +1 -0
  524. package/dist/src/ui/commands/vimCommand.js.map +1 -1
  525. package/dist/src/ui/components/AboutBox.js +2 -2
  526. package/dist/src/ui/components/AboutBox.test.js +14 -10
  527. package/dist/src/ui/components/AboutBox.test.js.map +1 -1
  528. package/dist/src/ui/components/AdminSettingsChangedDialog.js +3 -1
  529. package/dist/src/ui/components/AdminSettingsChangedDialog.js.map +1 -1
  530. package/dist/src/ui/components/AdminSettingsChangedDialog.test.js +4 -4
  531. package/dist/src/ui/components/AdminSettingsChangedDialog.test.js.map +1 -1
  532. package/dist/src/ui/components/AgentConfigDialog.d.ts +4 -2
  533. package/dist/src/ui/components/AgentConfigDialog.js +25 -38
  534. package/dist/src/ui/components/AgentConfigDialog.js.map +1 -1
  535. package/dist/src/ui/components/AgentConfigDialog.test.js +52 -26
  536. package/dist/src/ui/components/AgentConfigDialog.test.js.map +1 -1
  537. package/dist/src/ui/components/AlternateBufferQuittingDisplay.js +2 -4
  538. package/dist/src/ui/components/AlternateBufferQuittingDisplay.js.map +1 -1
  539. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +23 -18
  540. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +1 -1
  541. package/dist/src/ui/components/AnsiOutput.js +7 -1
  542. package/dist/src/ui/components/AnsiOutput.js.map +1 -1
  543. package/dist/src/ui/components/AnsiOutput.test.js +40 -19
  544. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
  545. package/dist/src/ui/components/AppHeader.d.ts +3 -2
  546. package/dist/src/ui/components/AppHeader.js +55 -8
  547. package/dist/src/ui/components/AppHeader.js.map +1 -1
  548. package/dist/src/ui/components/AppHeader.test.js +62 -40
  549. package/dist/src/ui/components/AppHeader.test.js.map +1 -1
  550. package/dist/src/ui/components/AppHeaderIcon.test.d.ts +6 -0
  551. package/dist/src/ui/components/AppHeaderIcon.test.js +39 -0
  552. package/dist/src/ui/components/AppHeaderIcon.test.js.map +1 -0
  553. package/dist/src/ui/components/ApprovalModeIndicator.d.ts +1 -1
  554. package/dist/src/ui/components/ApprovalModeIndicator.js +14 -10
  555. package/dist/src/ui/components/ApprovalModeIndicator.js.map +1 -1
  556. package/dist/src/ui/components/ApprovalModeIndicator.test.js +12 -12
  557. package/dist/src/ui/components/ApprovalModeIndicator.test.js.map +1 -1
  558. package/dist/src/ui/components/AsciiArt.d.ts +9 -6
  559. package/dist/src/ui/components/AsciiArt.js +24 -6
  560. package/dist/src/ui/components/AsciiArt.js.map +1 -1
  561. package/dist/src/ui/components/AskUserDialog.d.ts +5 -1
  562. package/dist/src/ui/components/AskUserDialog.js +126 -54
  563. package/dist/src/ui/components/AskUserDialog.js.map +1 -1
  564. package/dist/src/ui/components/AskUserDialog.test.js +394 -96
  565. package/dist/src/ui/components/AskUserDialog.test.js.map +1 -1
  566. package/dist/src/ui/components/BackgroundTaskDisplay.d.ts +16 -0
  567. package/dist/src/ui/components/{BackgroundShellDisplay.js → BackgroundTaskDisplay.js} +36 -19
  568. package/dist/src/ui/components/BackgroundTaskDisplay.js.map +1 -0
  569. package/dist/src/ui/components/{BackgroundShellDisplay.test.js → BackgroundTaskDisplay.test.js} +54 -66
  570. package/dist/src/ui/components/BackgroundTaskDisplay.test.js.map +1 -0
  571. package/dist/src/ui/components/Banner.js +4 -4
  572. package/dist/src/ui/components/Banner.js.map +1 -1
  573. package/dist/src/ui/components/Banner.test.js +12 -7
  574. package/dist/src/ui/components/Banner.test.js.map +1 -1
  575. package/dist/src/ui/components/BubblingRegression.test.js +3 -1
  576. package/dist/src/ui/components/BubblingRegression.test.js.map +1 -1
  577. package/dist/src/ui/components/Checklist.js +1 -1
  578. package/dist/src/ui/components/Checklist.js.map +1 -1
  579. package/dist/src/ui/components/Checklist.test.js +12 -12
  580. package/dist/src/ui/components/Checklist.test.js.map +1 -1
  581. package/dist/src/ui/components/ChecklistItem.d.ts +1 -1
  582. package/dist/src/ui/components/ChecklistItem.js +3 -0
  583. package/dist/src/ui/components/ChecklistItem.js.map +1 -1
  584. package/dist/src/ui/components/ChecklistItem.test.js +7 -6
  585. package/dist/src/ui/components/ChecklistItem.test.js.map +1 -1
  586. package/dist/src/ui/components/CliSpinner.test.js +8 -5
  587. package/dist/src/ui/components/CliSpinner.test.js.map +1 -1
  588. package/dist/src/ui/components/ColorsDisplay.d.ts +12 -0
  589. package/dist/src/ui/components/ColorsDisplay.js +119 -0
  590. package/dist/src/ui/components/ColorsDisplay.js.map +1 -0
  591. package/dist/src/ui/components/ColorsDisplay.test.d.ts +6 -0
  592. package/dist/src/ui/components/ColorsDisplay.test.js +107 -0
  593. package/dist/src/ui/components/ColorsDisplay.test.js.map +1 -0
  594. package/dist/src/ui/components/Composer.d.ts +1 -1
  595. package/dist/src/ui/components/Composer.js +53 -58
  596. package/dist/src/ui/components/Composer.js.map +1 -1
  597. package/dist/src/ui/components/Composer.test.js +436 -108
  598. package/dist/src/ui/components/Composer.test.js.map +1 -1
  599. package/dist/src/ui/components/ConfigExtensionDialog.js +2 -2
  600. package/dist/src/ui/components/ConfigExtensionDialog.js.map +1 -1
  601. package/dist/src/ui/components/ConfigInitDisplay.js +4 -4
  602. package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -1
  603. package/dist/src/ui/components/ConfigInitDisplay.test.js +7 -7
  604. package/dist/src/ui/components/ConfigInitDisplay.test.js.map +1 -1
  605. package/dist/src/ui/components/ConsentPrompt.js +5 -4
  606. package/dist/src/ui/components/ConsentPrompt.js.map +1 -1
  607. package/dist/src/ui/components/ConsentPrompt.test.js +10 -8
  608. package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -1
  609. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js +7 -5
  610. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js.map +1 -1
  611. package/dist/src/ui/components/ContextSummaryDisplay.js +5 -10
  612. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  613. package/dist/src/ui/components/ContextSummaryDisplay.test.js +9 -30
  614. package/dist/src/ui/components/ContextSummaryDisplay.test.js.map +1 -1
  615. package/dist/src/ui/components/ContextUsageDisplay.d.ts +1 -1
  616. package/dist/src/ui/components/ContextUsageDisplay.js +17 -5
  617. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
  618. package/dist/src/ui/components/ContextUsageDisplay.test.js +26 -19
  619. package/dist/src/ui/components/ContextUsageDisplay.test.js.map +1 -1
  620. package/dist/src/ui/components/CopyModeWarning.js +3 -6
  621. package/dist/src/ui/components/CopyModeWarning.js.map +1 -1
  622. package/dist/src/ui/components/CopyModeWarning.test.js +14 -12
  623. package/dist/src/ui/components/CopyModeWarning.test.js.map +1 -1
  624. package/dist/src/ui/components/DebugProfiler.js +12 -0
  625. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  626. package/dist/src/ui/components/DebugProfiler.test.js +13 -14
  627. package/dist/src/ui/components/DebugProfiler.test.js.map +1 -1
  628. package/dist/src/ui/components/DetailedMessagesDisplay.d.ts +0 -2
  629. package/dist/src/ui/components/DetailedMessagesDisplay.js +12 -7
  630. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  631. package/dist/src/ui/components/DetailedMessagesDisplay.test.js +50 -9
  632. package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -1
  633. package/dist/src/ui/components/DialogManager.js +25 -9
  634. package/dist/src/ui/components/DialogManager.js.map +1 -1
  635. package/dist/src/ui/components/DialogManager.test.js +11 -5
  636. package/dist/src/ui/components/DialogManager.test.js.map +1 -1
  637. package/dist/src/ui/components/EditorSettingsDialog.d.ts +1 -1
  638. package/dist/src/ui/components/EditorSettingsDialog.js +2 -3
  639. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  640. package/dist/src/ui/components/EditorSettingsDialog.test.js +13 -11
  641. package/dist/src/ui/components/EditorSettingsDialog.test.js.map +1 -1
  642. package/dist/src/ui/components/EmptyWalletDialog.d.ts +22 -0
  643. package/dist/src/ui/components/EmptyWalletDialog.js +33 -0
  644. package/dist/src/ui/components/EmptyWalletDialog.js.map +1 -0
  645. package/dist/src/ui/components/EmptyWalletDialog.test.d.ts +6 -0
  646. package/dist/src/ui/components/EmptyWalletDialog.test.js +116 -0
  647. package/dist/src/ui/components/EmptyWalletDialog.test.js.map +1 -0
  648. package/dist/src/ui/components/ExitPlanModeDialog.d.ts +2 -1
  649. package/dist/src/ui/components/ExitPlanModeDialog.js +49 -9
  650. package/dist/src/ui/components/ExitPlanModeDialog.js.map +1 -1
  651. package/dist/src/ui/components/ExitPlanModeDialog.test.js +81 -37
  652. package/dist/src/ui/components/ExitPlanModeDialog.test.js.map +1 -1
  653. package/dist/src/ui/components/ExitWarning.test.js +14 -10
  654. package/dist/src/ui/components/ExitWarning.test.js.map +1 -1
  655. package/dist/src/ui/components/FolderTrustDialog.d.ts +2 -0
  656. package/dist/src/ui/components/FolderTrustDialog.js +52 -7
  657. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  658. package/dist/src/ui/components/FolderTrustDialog.test.js +256 -23
  659. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  660. package/dist/src/ui/components/Footer.d.ts +13 -0
  661. package/dist/src/ui/components/Footer.js +228 -14
  662. package/dist/src/ui/components/Footer.js.map +1 -1
  663. package/dist/src/ui/components/Footer.test.js +547 -109
  664. package/dist/src/ui/components/Footer.test.js.map +1 -1
  665. package/dist/src/ui/components/FooterConfigDialog.d.ts +11 -0
  666. package/dist/src/ui/components/FooterConfigDialog.js +214 -0
  667. package/dist/src/ui/components/FooterConfigDialog.js.map +1 -0
  668. package/dist/src/ui/components/FooterConfigDialog.test.d.ts +6 -0
  669. package/dist/src/ui/components/FooterConfigDialog.test.js +191 -0
  670. package/dist/src/ui/components/FooterConfigDialog.test.js.map +1 -0
  671. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +6 -5
  672. package/dist/src/ui/components/GeminiRespondingSpinner.js +6 -35
  673. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  674. package/dist/src/ui/components/GeminiRespondingSpinner.test.js +23 -19
  675. package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +1 -1
  676. package/dist/src/ui/components/GeminiSpinner.d.ts +13 -0
  677. package/dist/src/ui/components/GeminiSpinner.js +35 -0
  678. package/dist/src/ui/components/GeminiSpinner.js.map +1 -0
  679. package/dist/src/ui/components/GradientRegression.test.js +22 -11
  680. package/dist/src/ui/components/GradientRegression.test.js.map +1 -1
  681. package/dist/src/ui/components/Header.test.js +16 -12
  682. package/dist/src/ui/components/Header.test.js.map +1 -1
  683. package/dist/src/ui/components/Help.js +3 -3
  684. package/dist/src/ui/components/Help.js.map +1 -1
  685. package/dist/src/ui/components/Help.test.js +8 -8
  686. package/dist/src/ui/components/Help.test.js.map +1 -1
  687. package/dist/src/ui/components/HistoryItemDisplay.d.ts +5 -3
  688. package/dist/src/ui/components/HistoryItemDisplay.js +15 -12
  689. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  690. package/dist/src/ui/components/HistoryItemDisplay.test.js +95 -44
  691. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  692. package/dist/src/ui/components/HookStatusDisplay.js +18 -11
  693. package/dist/src/ui/components/HookStatusDisplay.js.map +1 -1
  694. package/dist/src/ui/components/HookStatusDisplay.test.js +35 -9
  695. package/dist/src/ui/components/HookStatusDisplay.test.js.map +1 -1
  696. package/dist/src/ui/components/HooksDialog.d.ts +36 -0
  697. package/dist/src/ui/components/HooksDialog.js +83 -0
  698. package/dist/src/ui/components/HooksDialog.js.map +1 -0
  699. package/dist/src/ui/components/HooksDialog.test.d.ts +6 -0
  700. package/dist/src/ui/components/HooksDialog.test.js +175 -0
  701. package/dist/src/ui/components/HooksDialog.test.js.map +1 -0
  702. package/dist/src/ui/components/IdeTrustChangeDialog.test.js +39 -19
  703. package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -1
  704. package/dist/src/ui/components/InputPrompt.d.ts +12 -8
  705. package/dist/src/ui/components/InputPrompt.js +383 -180
  706. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  707. package/dist/src/ui/components/InputPrompt.test.d.ts +12 -1
  708. package/dist/src/ui/components/InputPrompt.test.js +701 -239
  709. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  710. package/dist/src/ui/components/LoadingIndicator.d.ts +7 -0
  711. package/dist/src/ui/components/LoadingIndicator.js +18 -13
  712. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  713. package/dist/src/ui/components/LoadingIndicator.test.js +170 -60
  714. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  715. package/dist/src/ui/components/LogoutConfirmationDialog.js +3 -3
  716. package/dist/src/ui/components/LogoutConfirmationDialog.js.map +1 -1
  717. package/dist/src/ui/components/LogoutConfirmationDialog.test.js +23 -12
  718. package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +1 -1
  719. package/dist/src/ui/components/LoopDetectionConfirmation.js +1 -1
  720. package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -1
  721. package/dist/src/ui/components/LoopDetectionConfirmation.test.js +7 -5
  722. package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -1
  723. package/dist/src/ui/components/MainContent.d.ts +1 -1
  724. package/dist/src/ui/components/MainContent.js +144 -29
  725. package/dist/src/ui/components/MainContent.js.map +1 -1
  726. package/dist/src/ui/components/MainContent.test.js +558 -27
  727. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  728. package/dist/src/ui/components/MemoryUsageDisplay.d.ts +4 -1
  729. package/dist/src/ui/components/MemoryUsageDisplay.js +10 -9
  730. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  731. package/dist/src/ui/components/MemoryUsageDisplay.test.js +6 -3
  732. package/dist/src/ui/components/MemoryUsageDisplay.test.js.map +1 -1
  733. package/dist/src/ui/components/ModelDialog.js +131 -21
  734. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  735. package/dist/src/ui/components/ModelDialog.test.js +148 -35
  736. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  737. package/dist/src/ui/components/ModelQuotaDisplay.d.ts +18 -0
  738. package/dist/src/ui/components/ModelQuotaDisplay.js +104 -0
  739. package/dist/src/ui/components/ModelQuotaDisplay.js.map +1 -0
  740. package/dist/src/ui/components/ModelQuotaDisplay.test.d.ts +6 -0
  741. package/dist/src/ui/components/ModelQuotaDisplay.test.js +62 -0
  742. package/dist/src/ui/components/ModelQuotaDisplay.test.js.map +1 -0
  743. package/dist/src/ui/components/ModelStatsDisplay.js +56 -4
  744. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  745. package/dist/src/ui/components/ModelStatsDisplay.test.js +212 -20
  746. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -1
  747. package/dist/src/ui/components/MultiFolderTrustDialog.d.ts +1 -1
  748. package/dist/src/ui/components/MultiFolderTrustDialog.js +2 -1
  749. package/dist/src/ui/components/MultiFolderTrustDialog.js.map +1 -1
  750. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +24 -9
  751. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -1
  752. package/dist/src/ui/components/NewAgentsNotification.d.ts +1 -1
  753. package/dist/src/ui/components/NewAgentsNotification.js +17 -1
  754. package/dist/src/ui/components/NewAgentsNotification.js.map +1 -1
  755. package/dist/src/ui/components/NewAgentsNotification.test.js +39 -4
  756. package/dist/src/ui/components/NewAgentsNotification.test.js.map +1 -1
  757. package/dist/src/ui/components/Notifications.js +50 -4
  758. package/dist/src/ui/components/Notifications.js.map +1 -1
  759. package/dist/src/ui/components/Notifications.test.js +160 -36
  760. package/dist/src/ui/components/Notifications.test.js.map +1 -1
  761. package/dist/src/ui/components/OverageMenuDialog.d.ts +22 -0
  762. package/dist/src/ui/components/OverageMenuDialog.js +32 -0
  763. package/dist/src/ui/components/OverageMenuDialog.js.map +1 -0
  764. package/dist/src/ui/components/OverageMenuDialog.test.d.ts +6 -0
  765. package/dist/src/ui/components/OverageMenuDialog.test.js +118 -0
  766. package/dist/src/ui/components/OverageMenuDialog.test.js.map +1 -0
  767. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +31 -12
  768. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
  769. package/dist/src/ui/components/PolicyUpdateDialog.d.ts +18 -0
  770. package/dist/src/ui/components/PolicyUpdateDialog.js +61 -0
  771. package/dist/src/ui/components/PolicyUpdateDialog.js.map +1 -0
  772. package/dist/src/ui/components/PolicyUpdateDialog.test.d.ts +6 -0
  773. package/dist/src/ui/components/PolicyUpdateDialog.test.js +92 -0
  774. package/dist/src/ui/components/PolicyUpdateDialog.test.js.map +1 -0
  775. package/dist/src/ui/components/ProQuotaDialog.d.ts +4 -1
  776. package/dist/src/ui/components/ProQuotaDialog.js +13 -6
  777. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  778. package/dist/src/ui/components/ProQuotaDialog.test.js +53 -22
  779. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
  780. package/dist/src/ui/components/ProgressBar.d.ts +13 -0
  781. package/dist/src/ui/components/ProgressBar.js +17 -0
  782. package/dist/src/ui/components/ProgressBar.js.map +1 -0
  783. package/dist/src/ui/components/ProgressBar.test.d.ts +6 -0
  784. package/dist/src/ui/components/ProgressBar.test.js +28 -0
  785. package/dist/src/ui/components/ProgressBar.test.js.map +1 -0
  786. package/dist/src/ui/components/QueuedMessageDisplay.test.js +11 -11
  787. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -1
  788. package/dist/src/ui/components/QuittingDisplay.test.js +7 -5
  789. package/dist/src/ui/components/QuittingDisplay.test.js.map +1 -1
  790. package/dist/src/ui/components/QuotaDisplay.d.ts +2 -0
  791. package/dist/src/ui/components/QuotaDisplay.js +23 -14
  792. package/dist/src/ui/components/QuotaDisplay.js.map +1 -1
  793. package/dist/src/ui/components/QuotaDisplay.test.js +41 -23
  794. package/dist/src/ui/components/QuotaDisplay.test.js.map +1 -1
  795. package/dist/src/ui/components/QuotaStatsInfo.js +13 -9
  796. package/dist/src/ui/components/QuotaStatsInfo.js.map +1 -1
  797. package/dist/src/ui/components/RatingWidget.js +2 -2
  798. package/dist/src/ui/components/RatingWidget.js.map +1 -1
  799. package/dist/src/ui/components/RawMarkdownIndicator.js +3 -1
  800. package/dist/src/ui/components/RawMarkdownIndicator.js.map +1 -1
  801. package/dist/src/ui/components/RawMarkdownIndicator.test.js +11 -7
  802. package/dist/src/ui/components/RawMarkdownIndicator.test.js.map +1 -1
  803. package/dist/src/ui/components/RewindConfirmation.js +11 -3
  804. package/dist/src/ui/components/RewindConfirmation.js.map +1 -1
  805. package/dist/src/ui/components/RewindConfirmation.test.js +11 -7
  806. package/dist/src/ui/components/RewindConfirmation.test.js.map +1 -1
  807. package/dist/src/ui/components/RewindViewer.js +32 -9
  808. package/dist/src/ui/components/RewindViewer.js.map +1 -1
  809. package/dist/src/ui/components/RewindViewer.test.js +90 -18
  810. package/dist/src/ui/components/RewindViewer.test.js.map +1 -1
  811. package/dist/src/ui/components/SessionBrowser/SessionBrowserEmpty.d.ts +10 -0
  812. package/dist/src/ui/components/SessionBrowser/SessionBrowserEmpty.js +8 -0
  813. package/dist/src/ui/components/SessionBrowser/SessionBrowserEmpty.js.map +1 -0
  814. package/dist/src/ui/components/SessionBrowser/SessionBrowserError.d.ts +13 -0
  815. package/dist/src/ui/components/SessionBrowser/SessionBrowserError.js +8 -0
  816. package/dist/src/ui/components/SessionBrowser/SessionBrowserError.js.map +1 -0
  817. package/dist/src/ui/components/SessionBrowser/SessionBrowserLoading.d.ts +10 -0
  818. package/dist/src/ui/components/SessionBrowser/SessionBrowserLoading.js +8 -0
  819. package/dist/src/ui/components/SessionBrowser/SessionBrowserLoading.js.map +1 -0
  820. package/dist/src/ui/components/SessionBrowser/SessionBrowserNav.d.ts +23 -0
  821. package/dist/src/ui/components/SessionBrowser/SessionBrowserNav.js +17 -0
  822. package/dist/src/ui/components/SessionBrowser/SessionBrowserNav.js.map +1 -0
  823. package/dist/src/ui/components/SessionBrowser/SessionBrowserSearchNav.test.d.ts +6 -0
  824. package/dist/src/ui/components/SessionBrowser/SessionBrowserSearchNav.test.js +47 -0
  825. package/dist/src/ui/components/SessionBrowser/SessionBrowserSearchNav.test.js.map +1 -0
  826. package/dist/src/ui/components/SessionBrowser/SessionBrowserStates.test.d.ts +6 -0
  827. package/dist/src/ui/components/SessionBrowser/SessionBrowserStates.test.js +27 -0
  828. package/dist/src/ui/components/SessionBrowser/SessionBrowserStates.test.js.map +1 -0
  829. package/dist/src/ui/components/SessionBrowser/SessionListHeader.d.ts +13 -0
  830. package/dist/src/ui/components/SessionBrowser/SessionListHeader.js +8 -0
  831. package/dist/src/ui/components/SessionBrowser/SessionListHeader.js.map +1 -0
  832. package/dist/src/ui/components/SessionBrowser/utils.d.ts +33 -0
  833. package/dist/src/ui/components/SessionBrowser/utils.js +100 -0
  834. package/dist/src/ui/components/SessionBrowser/utils.js.map +1 -0
  835. package/dist/src/ui/components/SessionBrowser/utils.test.d.ts +6 -0
  836. package/dist/src/ui/components/SessionBrowser/utils.test.js +108 -0
  837. package/dist/src/ui/components/SessionBrowser/utils.test.js.map +1 -0
  838. package/dist/src/ui/components/SessionBrowser.js +13 -128
  839. package/dist/src/ui/components/SessionBrowser.js.map +1 -1
  840. package/dist/src/ui/components/SessionBrowser.test.js +22 -13
  841. package/dist/src/ui/components/SessionBrowser.test.js.map +1 -1
  842. package/dist/src/ui/components/SessionSummaryDisplay.js +17 -1
  843. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  844. package/dist/src/ui/components/SessionSummaryDisplay.test.js +118 -20
  845. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -1
  846. package/dist/src/ui/components/SettingsDialog.d.ts +1 -5
  847. package/dist/src/ui/components/SettingsDialog.js +120 -329
  848. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  849. package/dist/src/ui/components/SettingsDialog.test.js +366 -212
  850. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  851. package/dist/src/ui/components/ShellInputPrompt.js +11 -3
  852. package/dist/src/ui/components/ShellInputPrompt.js.map +1 -1
  853. package/dist/src/ui/components/ShellInputPrompt.test.js +111 -67
  854. package/dist/src/ui/components/ShellInputPrompt.test.js.map +1 -1
  855. package/dist/src/ui/components/ShellModeIndicator.test.js +3 -2
  856. package/dist/src/ui/components/ShellModeIndicator.test.js.map +1 -1
  857. package/dist/src/ui/components/ShortcutsHelp.js +46 -17
  858. package/dist/src/ui/components/ShortcutsHelp.js.map +1 -1
  859. package/dist/src/ui/components/ShortcutsHelp.test.js +11 -3
  860. package/dist/src/ui/components/ShortcutsHelp.test.js.map +1 -1
  861. package/dist/src/ui/components/ShowMoreLines.d.ts +2 -1
  862. package/dist/src/ui/components/ShowMoreLines.js +7 -5
  863. package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
  864. package/dist/src/ui/components/ShowMoreLines.test.js +42 -7
  865. package/dist/src/ui/components/ShowMoreLines.test.js.map +1 -1
  866. package/dist/src/ui/components/ShowMoreLinesLayout.test.d.ts +1 -0
  867. package/dist/src/ui/components/ShowMoreLinesLayout.test.js +67 -0
  868. package/dist/src/ui/components/ShowMoreLinesLayout.test.js.map +1 -0
  869. package/dist/src/ui/components/StatsDisplay.d.ts +4 -2
  870. package/dist/src/ui/components/StatsDisplay.js +58 -88
  871. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  872. package/dist/src/ui/components/StatsDisplay.test.js +109 -166
  873. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
  874. package/dist/src/ui/components/StatusDisplay.d.ts +1 -2
  875. package/dist/src/ui/components/StatusDisplay.js +1 -6
  876. package/dist/src/ui/components/StatusDisplay.js.map +1 -1
  877. package/dist/src/ui/components/StatusDisplay.test.js +37 -24
  878. package/dist/src/ui/components/StatusDisplay.test.js.map +1 -1
  879. package/dist/src/ui/components/StatusRow.d.ts +32 -0
  880. package/dist/src/ui/components/StatusRow.js +180 -0
  881. package/dist/src/ui/components/StatusRow.js.map +1 -0
  882. package/dist/src/ui/components/StatusRow.test.d.ts +6 -0
  883. package/dist/src/ui/components/StatusRow.test.js +99 -0
  884. package/dist/src/ui/components/StatusRow.test.js.map +1 -0
  885. package/dist/src/ui/components/StickyHeader.test.js +3 -2
  886. package/dist/src/ui/components/StickyHeader.test.js.map +1 -1
  887. package/dist/src/ui/components/SuggestionsDisplay.d.ts +3 -0
  888. package/dist/src/ui/components/SuggestionsDisplay.js +9 -5
  889. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  890. package/dist/src/ui/components/SuggestionsDisplay.test.js +39 -13
  891. package/dist/src/ui/components/SuggestionsDisplay.test.js.map +1 -1
  892. package/dist/src/ui/components/Table.test.js +26 -8
  893. package/dist/src/ui/components/Table.test.js.map +1 -1
  894. package/dist/src/ui/components/ThemeDialog.d.ts +1 -1
  895. package/dist/src/ui/components/ThemeDialog.js +31 -32
  896. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  897. package/dist/src/ui/components/ThemeDialog.test.js +48 -24
  898. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
  899. package/dist/src/ui/components/ThemedGradient.test.js +7 -2
  900. package/dist/src/ui/components/ThemedGradient.test.js.map +1 -1
  901. package/dist/src/ui/components/Tips.d.ts +1 -1
  902. package/dist/src/ui/components/Tips.js +1 -1
  903. package/dist/src/ui/components/Tips.js.map +1 -1
  904. package/dist/src/ui/components/Tips.test.d.ts +1 -1
  905. package/dist/src/ui/components/Tips.test.js +8 -8
  906. package/dist/src/ui/components/Tips.test.js.map +1 -1
  907. package/dist/src/ui/components/ToastDisplay.d.ts +2 -1
  908. package/dist/src/ui/components/ToastDisplay.js +13 -6
  909. package/dist/src/ui/components/ToastDisplay.js.map +1 -1
  910. package/dist/src/ui/components/ToastDisplay.test.js +69 -34
  911. package/dist/src/ui/components/ToastDisplay.test.js.map +1 -1
  912. package/dist/src/ui/components/ToolConfirmationQueue.js +34 -19
  913. package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
  914. package/dist/src/ui/components/ToolConfirmationQueue.test.js +276 -50
  915. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
  916. package/dist/src/ui/components/ToolStatsDisplay.test.js +19 -12
  917. package/dist/src/ui/components/ToolStatsDisplay.test.js.map +1 -1
  918. package/dist/src/ui/components/UpdateNotification.test.js +3 -2
  919. package/dist/src/ui/components/UpdateNotification.test.js.map +1 -1
  920. package/dist/src/ui/components/UserIdentity.d.ts +1 -1
  921. package/dist/src/ui/components/UserIdentity.js +14 -11
  922. package/dist/src/ui/components/UserIdentity.js.map +1 -1
  923. package/dist/src/ui/components/UserIdentity.test.d.ts +1 -1
  924. package/dist/src/ui/components/UserIdentity.test.js +60 -17
  925. package/dist/src/ui/components/UserIdentity.test.js.map +1 -1
  926. package/dist/src/ui/components/ValidationDialog.js +4 -2
  927. package/dist/src/ui/components/ValidationDialog.js.map +1 -1
  928. package/dist/src/ui/components/ValidationDialog.test.js +25 -16
  929. package/dist/src/ui/components/ValidationDialog.test.js.map +1 -1
  930. package/dist/src/ui/components/messages/CompressionMessage.test.js +91 -102
  931. package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -1
  932. package/dist/src/ui/components/messages/DenseToolMessage.d.ts +13 -0
  933. package/dist/src/ui/components/messages/DenseToolMessage.js +270 -0
  934. package/dist/src/ui/components/messages/DenseToolMessage.js.map +1 -0
  935. package/dist/src/ui/components/messages/DenseToolMessage.test.d.ts +6 -0
  936. package/dist/src/ui/components/messages/DenseToolMessage.test.js +383 -0
  937. package/dist/src/ui/components/messages/DenseToolMessage.test.js.map +1 -0
  938. package/dist/src/ui/components/messages/DiffRenderer.d.ts +18 -0
  939. package/dist/src/ui/components/messages/DiffRenderer.js +55 -35
  940. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  941. package/dist/src/ui/components/messages/DiffRenderer.test.js +46 -17
  942. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  943. package/dist/src/ui/components/messages/ErrorMessage.test.js +6 -4
  944. package/dist/src/ui/components/messages/ErrorMessage.test.js.map +1 -1
  945. package/dist/src/ui/components/messages/GeminiMessage.js +3 -6
  946. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  947. package/dist/src/ui/components/messages/GeminiMessage.test.js +15 -4
  948. package/dist/src/ui/components/messages/GeminiMessage.test.js.map +1 -1
  949. package/dist/src/ui/components/messages/GeminiMessageContent.js +4 -7
  950. package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -1
  951. package/dist/src/ui/components/messages/HintMessage.d.ts +11 -0
  952. package/dist/src/ui/components/messages/HintMessage.js +14 -0
  953. package/dist/src/ui/components/messages/HintMessage.js.map +1 -0
  954. package/dist/src/ui/components/messages/InfoMessage.d.ts +3 -0
  955. package/dist/src/ui/components/messages/InfoMessage.js +2 -2
  956. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  957. package/dist/src/ui/components/messages/InfoMessage.test.js +9 -6
  958. package/dist/src/ui/components/messages/InfoMessage.test.js.map +1 -1
  959. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js +6 -4
  960. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js.map +1 -1
  961. package/dist/src/ui/components/messages/ShellToolMessage.d.ts +2 -3
  962. package/dist/src/ui/components/messages/ShellToolMessage.js +37 -29
  963. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  964. package/dist/src/ui/components/messages/ShellToolMessage.test.js +140 -55
  965. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -1
  966. package/dist/src/ui/components/messages/SubagentGroupDisplay.d.ts +17 -0
  967. package/dist/src/ui/components/messages/SubagentGroupDisplay.js +139 -0
  968. package/dist/src/ui/components/messages/SubagentGroupDisplay.js.map +1 -0
  969. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.d.ts +1 -0
  970. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js +91 -0
  971. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js.map +1 -0
  972. package/dist/src/ui/components/messages/SubagentHistoryMessage.d.ts +13 -0
  973. package/dist/src/ui/components/messages/SubagentHistoryMessage.js +4 -0
  974. package/dist/src/ui/components/messages/SubagentHistoryMessage.js.map +1 -0
  975. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.d.ts +6 -0
  976. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js +68 -0
  977. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js.map +1 -0
  978. package/dist/src/ui/components/messages/SubagentProgressDisplay.d.ts +14 -0
  979. package/dist/src/ui/components/messages/SubagentProgressDisplay.js +79 -0
  980. package/dist/src/ui/components/messages/SubagentProgressDisplay.js.map +1 -0
  981. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js +163 -0
  982. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js.map +1 -0
  983. package/dist/src/ui/components/messages/ThinkingMessage.d.ts +2 -0
  984. package/dist/src/ui/components/messages/ThinkingMessage.js +26 -25
  985. package/dist/src/ui/components/messages/ThinkingMessage.js.map +1 -1
  986. package/dist/src/ui/components/messages/ThinkingMessage.test.js +81 -22
  987. package/dist/src/ui/components/messages/ThinkingMessage.test.js.map +1 -1
  988. package/dist/src/ui/components/messages/Todo.js +5 -3
  989. package/dist/src/ui/components/messages/Todo.js.map +1 -1
  990. package/dist/src/ui/components/messages/Todo.test.js +35 -21
  991. package/dist/src/ui/components/messages/Todo.test.js.map +1 -1
  992. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +4 -2
  993. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +357 -81
  994. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  995. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +296 -31
  996. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  997. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.d.ts +6 -0
  998. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.js +147 -0
  999. package/dist/src/ui/components/messages/ToolGroupMessage.compact.test.js.map +1 -0
  1000. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +6 -5
  1001. package/dist/src/ui/components/messages/ToolGroupMessage.js +275 -86
  1002. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  1003. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +495 -293
  1004. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  1005. package/dist/src/ui/components/messages/ToolGroupMessageRegression.test.d.ts +6 -0
  1006. package/dist/src/ui/components/messages/ToolGroupMessageRegression.test.js +101 -0
  1007. package/dist/src/ui/components/messages/ToolGroupMessageRegression.test.js.map +1 -0
  1008. package/dist/src/ui/components/messages/ToolMessage.js +7 -4
  1009. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  1010. package/dist/src/ui/components/messages/ToolMessage.test.js +158 -43
  1011. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  1012. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js +15 -8
  1013. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js.map +1 -1
  1014. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js +15 -5
  1015. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js.map +1 -1
  1016. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.d.ts +6 -0
  1017. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js +88 -0
  1018. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js.map +1 -0
  1019. package/dist/src/ui/components/messages/ToolResultDisplay.d.ts +1 -0
  1020. package/dist/src/ui/components/messages/ToolResultDisplay.js +108 -88
  1021. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  1022. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +193 -55
  1023. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
  1024. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js +63 -39
  1025. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js.map +1 -1
  1026. package/dist/src/ui/components/messages/ToolShared.d.ts +15 -6
  1027. package/dist/src/ui/components/messages/ToolShared.js +45 -26
  1028. package/dist/src/ui/components/messages/ToolShared.js.map +1 -1
  1029. package/dist/src/ui/components/messages/ToolShared.test.d.ts +6 -0
  1030. package/dist/src/ui/components/messages/ToolShared.test.js +47 -0
  1031. package/dist/src/ui/components/messages/ToolShared.test.js.map +1 -0
  1032. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +17 -10
  1033. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +1 -1
  1034. package/dist/src/ui/components/messages/TopicMessage.d.ts +15 -0
  1035. package/dist/src/ui/components/messages/TopicMessage.js +56 -0
  1036. package/dist/src/ui/components/messages/TopicMessage.js.map +1 -0
  1037. package/dist/src/ui/components/messages/TopicMessage.test.d.ts +6 -0
  1038. package/dist/src/ui/components/messages/TopicMessage.test.js +77 -0
  1039. package/dist/src/ui/components/messages/TopicMessage.test.js.map +1 -0
  1040. package/dist/src/ui/components/messages/UserMessage.js +2 -3
  1041. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  1042. package/dist/src/ui/components/messages/UserMessage.test.js +12 -8
  1043. package/dist/src/ui/components/messages/UserMessage.test.js.map +1 -1
  1044. package/dist/src/ui/components/messages/UserShellMessage.js +1 -2
  1045. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
  1046. package/dist/src/ui/components/messages/WarningMessage.test.js +6 -4
  1047. package/dist/src/ui/components/messages/WarningMessage.test.js.map +1 -1
  1048. package/dist/src/ui/components/shared/BaseSelectionList.d.ts +3 -2
  1049. package/dist/src/ui/components/shared/BaseSelectionList.js +25 -20
  1050. package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -1
  1051. package/dist/src/ui/components/shared/BaseSelectionList.test.js +140 -113
  1052. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -1
  1053. package/dist/src/ui/components/shared/BaseSettingsDialog.d.ts +16 -5
  1054. package/dist/src/ui/components/shared/BaseSettingsDialog.js +130 -170
  1055. package/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
  1056. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js +244 -48
  1057. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +1 -1
  1058. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +16 -6
  1059. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -1
  1060. package/dist/src/ui/components/shared/DialogFooter.d.ts +3 -1
  1061. package/dist/src/ui/components/shared/DialogFooter.js +2 -1
  1062. package/dist/src/ui/components/shared/DialogFooter.js.map +1 -1
  1063. package/dist/src/ui/components/shared/EnumSelector.js +0 -5
  1064. package/dist/src/ui/components/shared/EnumSelector.js.map +1 -1
  1065. package/dist/src/ui/components/shared/EnumSelector.test.js +33 -20
  1066. package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -1
  1067. package/dist/src/ui/components/shared/ExpandableText.test.js +28 -23
  1068. package/dist/src/ui/components/shared/ExpandableText.test.js.map +1 -1
  1069. package/dist/src/ui/components/shared/HalfLinePaddedBox.js +3 -2
  1070. package/dist/src/ui/components/shared/HalfLinePaddedBox.js.map +1 -1
  1071. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js +4 -4
  1072. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js.map +1 -1
  1073. package/dist/src/ui/components/shared/HorizontalLine.d.ts +1 -0
  1074. package/dist/src/ui/components/shared/HorizontalLine.js +1 -1
  1075. package/dist/src/ui/components/shared/HorizontalLine.js.map +1 -1
  1076. package/dist/src/ui/components/shared/MaxSizedBox.d.ts +2 -2
  1077. package/dist/src/ui/components/shared/MaxSizedBox.js +18 -6
  1078. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  1079. package/dist/src/ui/components/shared/MaxSizedBox.test.js +90 -32
  1080. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
  1081. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +1 -0
  1082. package/dist/src/ui/components/shared/RadioButtonSelect.js +2 -2
  1083. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  1084. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +22 -11
  1085. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -1
  1086. package/dist/src/ui/components/shared/Scrollable.d.ts +5 -1
  1087. package/dist/src/ui/components/shared/Scrollable.js +103 -45
  1088. package/dist/src/ui/components/shared/Scrollable.js.map +1 -1
  1089. package/dist/src/ui/components/shared/Scrollable.test.js +41 -36
  1090. package/dist/src/ui/components/shared/Scrollable.test.js.map +1 -1
  1091. package/dist/src/ui/components/shared/ScrollableList.d.ts +9 -12
  1092. package/dist/src/ui/components/shared/ScrollableList.js +20 -13
  1093. package/dist/src/ui/components/shared/ScrollableList.js.map +1 -1
  1094. package/dist/src/ui/components/shared/ScrollableList.test.js +213 -22
  1095. package/dist/src/ui/components/shared/ScrollableList.test.js.map +1 -1
  1096. package/dist/src/ui/components/shared/SearchableList.d.ts +61 -0
  1097. package/dist/src/ui/components/shared/SearchableList.js +86 -0
  1098. package/dist/src/ui/components/shared/SearchableList.js.map +1 -0
  1099. package/dist/src/ui/components/shared/SearchableList.test.js +169 -0
  1100. package/dist/src/ui/components/shared/SearchableList.test.js.map +1 -0
  1101. package/dist/src/ui/components/shared/SectionHeader.d.ts +1 -0
  1102. package/dist/src/ui/components/shared/SectionHeader.js +1 -1
  1103. package/dist/src/ui/components/shared/SectionHeader.js.map +1 -1
  1104. package/dist/src/ui/components/shared/SectionHeader.test.js +8 -2
  1105. package/dist/src/ui/components/shared/SectionHeader.test.js.map +1 -1
  1106. package/dist/src/ui/components/shared/SlicingMaxSizedBox.d.ts +18 -0
  1107. package/dist/src/ui/components/shared/SlicingMaxSizedBox.js +75 -0
  1108. package/dist/src/ui/components/shared/SlicingMaxSizedBox.js.map +1 -0
  1109. package/dist/src/ui/components/shared/SlicingMaxSizedBox.test.d.ts +6 -0
  1110. package/dist/src/ui/components/shared/SlicingMaxSizedBox.test.js +53 -0
  1111. package/dist/src/ui/components/shared/SlicingMaxSizedBox.test.js.map +1 -0
  1112. package/dist/src/ui/components/shared/TabHeader.js +1 -1
  1113. package/dist/src/ui/components/shared/TabHeader.js.map +1 -1
  1114. package/dist/src/ui/components/shared/TabHeader.test.js +52 -25
  1115. package/dist/src/ui/components/shared/TabHeader.test.js.map +1 -1
  1116. package/dist/src/ui/components/shared/TextInput.d.ts +1 -1
  1117. package/dist/src/ui/components/shared/TextInput.js +7 -3
  1118. package/dist/src/ui/components/shared/TextInput.js.map +1 -1
  1119. package/dist/src/ui/components/shared/TextInput.test.js +144 -66
  1120. package/dist/src/ui/components/shared/TextInput.test.js.map +1 -1
  1121. package/dist/src/ui/components/shared/VirtualizedList.d.ts +13 -1
  1122. package/dist/src/ui/components/shared/VirtualizedList.js +269 -113
  1123. package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -1
  1124. package/dist/src/ui/components/shared/VirtualizedList.test.js +30 -51
  1125. package/dist/src/ui/components/shared/VirtualizedList.test.js.map +1 -1
  1126. package/dist/src/ui/components/shared/performance.test.js +4 -4
  1127. package/dist/src/ui/components/shared/performance.test.js.map +1 -1
  1128. package/dist/src/ui/components/shared/text-buffer.d.ts +172 -2
  1129. package/dist/src/ui/components/shared/text-buffer.js +228 -64
  1130. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  1131. package/dist/src/ui/components/shared/text-buffer.test.js +382 -275
  1132. package/dist/src/ui/components/shared/text-buffer.test.js.map +1 -1
  1133. package/dist/src/ui/components/shared/vim-buffer-actions.d.ts +42 -0
  1134. package/dist/src/ui/components/shared/vim-buffer-actions.js +673 -32
  1135. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -1
  1136. package/dist/src/ui/components/shared/vim-buffer-actions.test.js +1296 -42
  1137. package/dist/src/ui/components/shared/vim-buffer-actions.test.js.map +1 -1
  1138. package/dist/src/ui/components/triage/TriageDuplicates.d.ts +1 -1
  1139. package/dist/src/ui/components/triage/TriageDuplicates.js +6 -2
  1140. package/dist/src/ui/components/triage/TriageDuplicates.js.map +1 -1
  1141. package/dist/src/ui/components/triage/TriageIssues.d.ts +1 -1
  1142. package/dist/src/ui/components/triage/TriageIssues.js +6 -2
  1143. package/dist/src/ui/components/triage/TriageIssues.js.map +1 -1
  1144. package/dist/src/ui/components/views/ChatList.test.js +6 -6
  1145. package/dist/src/ui/components/views/ChatList.test.js.map +1 -1
  1146. package/dist/src/ui/components/views/ExtensionDetails.d.ts +18 -0
  1147. package/dist/src/ui/components/views/ExtensionDetails.js +85 -0
  1148. package/dist/src/ui/components/views/ExtensionDetails.js.map +1 -0
  1149. package/dist/src/ui/components/views/ExtensionDetails.test.d.ts +6 -0
  1150. package/dist/src/ui/components/views/ExtensionDetails.test.js +154 -0
  1151. package/dist/src/ui/components/views/ExtensionDetails.test.js.map +1 -0
  1152. package/dist/src/ui/components/views/ExtensionRegistryView.d.ts +15 -0
  1153. package/dist/src/ui/components/views/ExtensionRegistryView.js +97 -0
  1154. package/dist/src/ui/components/views/ExtensionRegistryView.js.map +1 -0
  1155. package/dist/src/ui/components/views/ExtensionRegistryView.test.d.ts +6 -0
  1156. package/dist/src/ui/components/views/ExtensionRegistryView.test.js +222 -0
  1157. package/dist/src/ui/components/views/ExtensionRegistryView.test.js.map +1 -0
  1158. package/dist/src/ui/components/views/ExtensionsList.test.js +16 -19
  1159. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -1
  1160. package/dist/src/ui/components/views/McpStatus.d.ts +2 -2
  1161. package/dist/src/ui/components/views/McpStatus.js +8 -3
  1162. package/dist/src/ui/components/views/McpStatus.js.map +1 -1
  1163. package/dist/src/ui/components/views/McpStatus.test.js +47 -26
  1164. package/dist/src/ui/components/views/McpStatus.test.js.map +1 -1
  1165. package/dist/src/ui/components/views/SkillsList.js +2 -1
  1166. package/dist/src/ui/components/views/SkillsList.js.map +1 -1
  1167. package/dist/src/ui/components/views/SkillsList.test.js +15 -13
  1168. package/dist/src/ui/components/views/SkillsList.test.js.map +1 -1
  1169. package/dist/src/ui/components/views/ToolsList.test.js +6 -6
  1170. package/dist/src/ui/components/views/ToolsList.test.js.map +1 -1
  1171. package/dist/src/ui/constants/tips.js +81 -82
  1172. package/dist/src/ui/constants/tips.js.map +1 -1
  1173. package/dist/src/ui/constants/wittyPhrases.js +107 -107
  1174. package/dist/src/ui/constants/wittyPhrases.js.map +1 -1
  1175. package/dist/src/ui/constants.d.ts +14 -1
  1176. package/dist/src/ui/constants.js +24 -1
  1177. package/dist/src/ui/constants.js.map +1 -1
  1178. package/dist/src/ui/contexts/AppContext.d.ts +2 -1
  1179. package/dist/src/ui/contexts/AppContext.js.map +1 -1
  1180. package/dist/src/ui/contexts/InputContext.d.ts +17 -0
  1181. package/dist/src/ui/contexts/InputContext.js +15 -0
  1182. package/dist/src/ui/contexts/InputContext.js.map +1 -0
  1183. package/dist/src/ui/contexts/KeypressContext.d.ts +8 -3
  1184. package/dist/src/ui/contexts/KeypressContext.js +196 -45
  1185. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  1186. package/dist/src/ui/contexts/KeypressContext.test.js +200 -76
  1187. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  1188. package/dist/src/ui/contexts/MouseContext.d.ts +1 -2
  1189. package/dist/src/ui/contexts/MouseContext.js +7 -3
  1190. package/dist/src/ui/contexts/MouseContext.js.map +1 -1
  1191. package/dist/src/ui/contexts/MouseContext.test.js +32 -21
  1192. package/dist/src/ui/contexts/MouseContext.test.js.map +1 -1
  1193. package/dist/src/ui/contexts/OverflowContext.d.ts +3 -3
  1194. package/dist/src/ui/contexts/OverflowContext.js +49 -20
  1195. package/dist/src/ui/contexts/OverflowContext.js.map +1 -1
  1196. package/dist/src/ui/contexts/ScrollProvider.drag.test.js +6 -6
  1197. package/dist/src/ui/contexts/ScrollProvider.drag.test.js.map +1 -1
  1198. package/dist/src/ui/contexts/ScrollProvider.js +25 -3
  1199. package/dist/src/ui/contexts/ScrollProvider.js.map +1 -1
  1200. package/dist/src/ui/contexts/ScrollProvider.test.js +111 -11
  1201. package/dist/src/ui/contexts/ScrollProvider.test.js.map +1 -1
  1202. package/dist/src/ui/contexts/SessionContext.d.ts +2 -2
  1203. package/dist/src/ui/contexts/SessionContext.js +10 -0
  1204. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  1205. package/dist/src/ui/contexts/SessionContext.test.js +26 -11
  1206. package/dist/src/ui/contexts/SessionContext.test.js.map +1 -1
  1207. package/dist/src/ui/contexts/SettingsContext.d.ts +9 -1
  1208. package/dist/src/ui/contexts/SettingsContext.js +34 -1
  1209. package/dist/src/ui/contexts/SettingsContext.js.map +1 -1
  1210. package/dist/src/ui/contexts/SettingsContext.test.d.ts +6 -0
  1211. package/dist/src/ui/contexts/SettingsContext.test.js +106 -0
  1212. package/dist/src/ui/contexts/SettingsContext.test.js.map +1 -0
  1213. package/dist/src/ui/contexts/TerminalContext.d.ts +1 -0
  1214. package/dist/src/ui/contexts/TerminalContext.js +15 -2
  1215. package/dist/src/ui/contexts/TerminalContext.js.map +1 -1
  1216. package/dist/src/ui/contexts/TerminalContext.test.js +24 -10
  1217. package/dist/src/ui/contexts/TerminalContext.test.js.map +1 -1
  1218. package/dist/src/ui/contexts/ToolActionsContext.d.ts +6 -0
  1219. package/dist/src/ui/contexts/ToolActionsContext.js +28 -18
  1220. package/dist/src/ui/contexts/ToolActionsContext.js.map +1 -1
  1221. package/dist/src/ui/contexts/ToolActionsContext.test.js +136 -56
  1222. package/dist/src/ui/contexts/ToolActionsContext.test.js.map +1 -1
  1223. package/dist/src/ui/contexts/UIActionsContext.d.ts +20 -5
  1224. package/dist/src/ui/contexts/UIActionsContext.js +1 -1
  1225. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  1226. package/dist/src/ui/contexts/UIStateContext.d.ts +51 -19
  1227. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  1228. package/dist/src/ui/contexts/VimModeContext.d.ts +1 -3
  1229. package/dist/src/ui/contexts/VimModeContext.js +7 -16
  1230. package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
  1231. package/dist/src/ui/hooks/atCommandProcessor.d.ts +15 -5
  1232. package/dist/src/ui/hooks/atCommandProcessor.js +47 -18
  1233. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  1234. package/dist/src/ui/hooks/atCommandProcessor.test.js +92 -14
  1235. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  1236. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js +2 -1
  1237. package/dist/src/ui/hooks/atCommandProcessor_agents.test.js.map +1 -1
  1238. package/dist/src/ui/hooks/creditsFlowHandler.d.ts +35 -0
  1239. package/dist/src/ui/hooks/creditsFlowHandler.js +158 -0
  1240. package/dist/src/ui/hooks/creditsFlowHandler.js.map +1 -0
  1241. package/dist/src/ui/hooks/creditsFlowHandler.test.d.ts +6 -0
  1242. package/dist/src/ui/hooks/creditsFlowHandler.test.js +211 -0
  1243. package/dist/src/ui/hooks/creditsFlowHandler.test.js.map +1 -0
  1244. package/dist/src/ui/hooks/shell-completions/gitProvider.d.ts +7 -0
  1245. package/dist/src/ui/hooks/shell-completions/gitProvider.js +73 -0
  1246. package/dist/src/ui/hooks/shell-completions/gitProvider.js.map +1 -0
  1247. package/dist/src/ui/hooks/shell-completions/gitProvider.test.d.ts +6 -0
  1248. package/dist/src/ui/hooks/shell-completions/gitProvider.test.js +73 -0
  1249. package/dist/src/ui/hooks/shell-completions/gitProvider.test.js.map +1 -0
  1250. package/dist/src/ui/hooks/shell-completions/index.d.ts +7 -0
  1251. package/dist/src/ui/hooks/shell-completions/index.js +16 -0
  1252. package/dist/src/ui/hooks/shell-completions/index.js.map +1 -0
  1253. package/dist/src/ui/hooks/shell-completions/npmProvider.d.ts +7 -0
  1254. package/dist/src/ui/hooks/shell-completions/npmProvider.js +67 -0
  1255. package/dist/src/ui/hooks/shell-completions/npmProvider.js.map +1 -0
  1256. package/dist/src/ui/hooks/shell-completions/npmProvider.test.d.ts +6 -0
  1257. package/dist/src/ui/hooks/shell-completions/npmProvider.test.js +69 -0
  1258. package/dist/src/ui/hooks/shell-completions/npmProvider.test.js.map +1 -0
  1259. package/dist/src/ui/hooks/shell-completions/types.d.ts +16 -0
  1260. package/dist/src/ui/hooks/shell-completions/types.js +7 -0
  1261. package/dist/src/ui/hooks/shell-completions/types.js.map +1 -0
  1262. package/dist/src/ui/hooks/shellReducer.d.ts +12 -10
  1263. package/dist/src/ui/hooks/shellReducer.js +67 -37
  1264. package/dist/src/ui/hooks/shellReducer.js.map +1 -1
  1265. package/dist/src/ui/hooks/shellReducer.test.js +207 -36
  1266. package/dist/src/ui/hooks/shellReducer.test.js.map +1 -1
  1267. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -1
  1268. package/dist/src/ui/hooks/slashCommandProcessor.js +38 -17
  1269. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  1270. package/dist/src/ui/hooks/slashCommandProcessor.test.js +39 -83
  1271. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
  1272. package/dist/src/ui/hooks/toolMapping.d.ts +4 -3
  1273. package/dist/src/ui/hooks/toolMapping.js +34 -32
  1274. package/dist/src/ui/hooks/toolMapping.js.map +1 -1
  1275. package/dist/src/ui/hooks/toolMapping.test.js +94 -27
  1276. package/dist/src/ui/hooks/toolMapping.test.js.map +1 -1
  1277. package/dist/src/ui/hooks/useAlternateBuffer.d.ts +2 -2
  1278. package/dist/src/ui/hooks/useAlternateBuffer.js +10 -4
  1279. package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -1
  1280. package/dist/src/ui/hooks/useAlternateBuffer.test.d.ts +6 -0
  1281. package/dist/src/ui/hooks/useAlternateBuffer.test.js +62 -0
  1282. package/dist/src/ui/hooks/useAlternateBuffer.test.js.map +1 -0
  1283. package/dist/src/ui/hooks/useAnimatedScrollbar.js +15 -5
  1284. package/dist/src/ui/hooks/useAnimatedScrollbar.js.map +1 -1
  1285. package/dist/src/ui/hooks/useAnimatedScrollbar.test.js +12 -12
  1286. package/dist/src/ui/hooks/useAnimatedScrollbar.test.js.map +1 -1
  1287. package/dist/src/ui/hooks/useApprovalModeIndicator.d.ts +3 -2
  1288. package/dist/src/ui/hooks/useApprovalModeIndicator.js +5 -3
  1289. package/dist/src/ui/hooks/useApprovalModeIndicator.js.map +1 -1
  1290. package/dist/src/ui/hooks/useApprovalModeIndicator.test.js +66 -63
  1291. package/dist/src/ui/hooks/useApprovalModeIndicator.test.js.map +1 -1
  1292. package/dist/src/ui/hooks/useAtCompletion.d.ts +2 -2
  1293. package/dist/src/ui/hooks/useAtCompletion.js +76 -24
  1294. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  1295. package/dist/src/ui/hooks/useAtCompletion.test.js +152 -31
  1296. package/dist/src/ui/hooks/useAtCompletion.test.js.map +1 -1
  1297. package/dist/src/ui/hooks/useAtCompletion_agents.test.js +2 -2
  1298. package/dist/src/ui/hooks/useAtCompletion_agents.test.js.map +1 -1
  1299. package/dist/src/ui/hooks/useBackgroundTaskManager.d.ts +22 -0
  1300. package/dist/src/ui/hooks/useBackgroundTaskManager.js +58 -0
  1301. package/dist/src/ui/hooks/useBackgroundTaskManager.js.map +1 -0
  1302. package/dist/src/ui/hooks/useBackgroundTaskManager.test.d.ts +6 -0
  1303. package/dist/src/ui/hooks/useBackgroundTaskManager.test.js +168 -0
  1304. package/dist/src/ui/hooks/useBackgroundTaskManager.test.js.map +1 -0
  1305. package/dist/src/ui/hooks/useBanner.d.ts +1 -0
  1306. package/dist/src/ui/hooks/useBanner.js +16 -9
  1307. package/dist/src/ui/hooks/useBanner.js.map +1 -1
  1308. package/dist/src/ui/hooks/useBanner.test.js +19 -13
  1309. package/dist/src/ui/hooks/useBanner.test.js.map +1 -1
  1310. package/dist/src/ui/hooks/useBatchedScroll.js +2 -2
  1311. package/dist/src/ui/hooks/useBatchedScroll.js.map +1 -1
  1312. package/dist/src/ui/hooks/useBatchedScroll.test.js +14 -14
  1313. package/dist/src/ui/hooks/useBatchedScroll.test.js.map +1 -1
  1314. package/dist/src/ui/hooks/useCommandCompletion.d.ts +8 -3
  1315. package/dist/src/ui/hooks/useCommandCompletion.js +110 -15
  1316. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  1317. package/dist/src/ui/hooks/useCommandCompletion.test.d.ts +1 -1
  1318. package/dist/src/ui/hooks/useCommandCompletion.test.js +275 -55
  1319. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  1320. package/dist/src/ui/hooks/useCompletion.d.ts +1 -1
  1321. package/dist/src/ui/hooks/useCompletion.js +1 -1
  1322. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  1323. package/dist/src/ui/hooks/useComposerStatus.d.ts +21 -0
  1324. package/dist/src/ui/hooks/useComposerStatus.js +78 -0
  1325. package/dist/src/ui/hooks/useComposerStatus.js.map +1 -0
  1326. package/dist/src/ui/hooks/useConfirmingTool.d.ts +2 -6
  1327. package/dist/src/ui/hooks/useConfirmingTool.js +2 -22
  1328. package/dist/src/ui/hooks/useConfirmingTool.js.map +1 -1
  1329. package/dist/src/ui/hooks/useConsoleMessages.d.ts +20 -4
  1330. package/dist/src/ui/hooks/useConsoleMessages.js +126 -87
  1331. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  1332. package/dist/src/ui/hooks/useConsoleMessages.test.js +106 -64
  1333. package/dist/src/ui/hooks/useConsoleMessages.test.js.map +1 -1
  1334. package/dist/src/ui/hooks/useEditorSettings.test.js +20 -20
  1335. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
  1336. package/dist/src/ui/hooks/useExecutionLifecycle.d.ts +28 -0
  1337. package/dist/src/ui/hooks/{shellCommandProcessor.js → useExecutionLifecycle.js} +152 -70
  1338. package/dist/src/ui/hooks/useExecutionLifecycle.js.map +1 -0
  1339. package/dist/src/ui/hooks/useExecutionLifecycle.test.d.ts +6 -0
  1340. package/dist/src/ui/hooks/{shellCommandProcessor.test.js → useExecutionLifecycle.test.js} +172 -124
  1341. package/dist/src/ui/hooks/useExecutionLifecycle.test.js.map +1 -0
  1342. package/dist/src/ui/hooks/useExtensionRegistry.d.ts +13 -0
  1343. package/dist/src/ui/hooks/useExtensionRegistry.js +70 -0
  1344. package/dist/src/ui/hooks/useExtensionRegistry.js.map +1 -0
  1345. package/dist/src/ui/hooks/useExtensionUpdates.js +10 -9
  1346. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -1
  1347. package/dist/src/ui/hooks/useExtensionUpdates.test.js +7 -6
  1348. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -1
  1349. package/dist/src/ui/hooks/useFlickerDetector.test.js +12 -13
  1350. package/dist/src/ui/hooks/useFlickerDetector.test.js.map +1 -1
  1351. package/dist/src/ui/hooks/useFocus.d.ts +4 -1
  1352. package/dist/src/ui/hooks/useFocus.js +7 -1
  1353. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  1354. package/dist/src/ui/hooks/useFocus.test.js +35 -27
  1355. package/dist/src/ui/hooks/useFocus.test.js.map +1 -1
  1356. package/dist/src/ui/hooks/useFolderTrust.d.ts +2 -0
  1357. package/dist/src/ui/hooks/useFolderTrust.js +16 -4
  1358. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  1359. package/dist/src/ui/hooks/useFolderTrust.test.js +23 -20
  1360. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  1361. package/dist/src/ui/hooks/useGeminiStream.d.ts +7 -7
  1362. package/dist/src/ui/hooks/useGeminiStream.js +468 -125
  1363. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  1364. package/dist/src/ui/hooks/useGeminiStream.test.js +832 -230
  1365. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  1366. package/dist/src/ui/hooks/useGitBranchName.js +2 -2
  1367. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  1368. package/dist/src/ui/hooks/useGitBranchName.test.js +63 -60
  1369. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  1370. package/dist/src/ui/hooks/useHistoryManager.js +9 -5
  1371. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  1372. package/dist/src/ui/hooks/useHistoryManager.test.js +63 -24
  1373. package/dist/src/ui/hooks/useHistoryManager.test.js.map +1 -1
  1374. package/dist/src/ui/hooks/useHookDisplayState.js +1 -0
  1375. package/dist/src/ui/hooks/useHookDisplayState.js.map +1 -1
  1376. package/dist/src/ui/hooks/useHookDisplayState.test.js +12 -12
  1377. package/dist/src/ui/hooks/useHookDisplayState.test.js.map +1 -1
  1378. package/dist/src/ui/hooks/useIdeTrustListener.test.js +17 -6
  1379. package/dist/src/ui/hooks/useIdeTrustListener.test.js.map +1 -1
  1380. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +10 -10
  1381. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -1
  1382. package/dist/src/ui/hooks/useInlineEditBuffer.d.ts +43 -0
  1383. package/dist/src/ui/hooks/useInlineEditBuffer.js +113 -0
  1384. package/dist/src/ui/hooks/useInlineEditBuffer.js.map +1 -0
  1385. package/dist/src/ui/hooks/useInlineEditBuffer.test.d.ts +6 -0
  1386. package/dist/src/ui/hooks/useInlineEditBuffer.test.js +112 -0
  1387. package/dist/src/ui/hooks/useInlineEditBuffer.test.js.map +1 -0
  1388. package/dist/src/ui/hooks/useInputHistory.test.js +28 -28
  1389. package/dist/src/ui/hooks/useInputHistory.test.js.map +1 -1
  1390. package/dist/src/ui/hooks/useInputHistoryStore.test.js +20 -20
  1391. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -1
  1392. package/dist/src/ui/hooks/useKeyMatchers.d.ts +17 -0
  1393. package/dist/src/ui/hooks/useKeyMatchers.js +13 -0
  1394. package/dist/src/ui/hooks/useKeyMatchers.js.map +1 -0
  1395. package/dist/src/ui/hooks/useKeypress.d.ts +4 -4
  1396. package/dist/src/ui/hooks/useKeypress.js +3 -3
  1397. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  1398. package/dist/src/ui/hooks/useKeypress.test.js +23 -31
  1399. package/dist/src/ui/hooks/useKeypress.test.js.map +1 -1
  1400. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +7 -1
  1401. package/dist/src/ui/hooks/useLoadingIndicator.js +12 -5
  1402. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  1403. package/dist/src/ui/hooks/useLoadingIndicator.test.js +67 -35
  1404. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  1405. package/dist/src/ui/hooks/useLogger.d.ts +1 -2
  1406. package/dist/src/ui/hooks/useLogger.js +7 -4
  1407. package/dist/src/ui/hooks/useLogger.js.map +1 -1
  1408. package/dist/src/ui/hooks/useLogger.test.d.ts +6 -0
  1409. package/dist/src/ui/hooks/useLogger.test.js +57 -0
  1410. package/dist/src/ui/hooks/useLogger.test.js.map +1 -0
  1411. package/dist/src/ui/hooks/useMcpStatus.test.js +10 -10
  1412. package/dist/src/ui/hooks/useMcpStatus.test.js.map +1 -1
  1413. package/dist/src/ui/hooks/useMemoryMonitor.test.js +6 -6
  1414. package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -1
  1415. package/dist/src/ui/hooks/useMessageQueue.test.js +29 -29
  1416. package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -1
  1417. package/dist/src/ui/hooks/useModelCommand.test.js +6 -6
  1418. package/dist/src/ui/hooks/useModelCommand.test.js.map +1 -1
  1419. package/dist/src/ui/hooks/useMouse.d.ts +1 -1
  1420. package/dist/src/ui/hooks/useMouse.js +1 -1
  1421. package/dist/src/ui/hooks/useMouse.js.map +1 -1
  1422. package/dist/src/ui/hooks/useMouse.test.js +11 -16
  1423. package/dist/src/ui/hooks/useMouse.test.js.map +1 -1
  1424. package/dist/src/ui/hooks/useMouseClick.test.js +15 -7
  1425. package/dist/src/ui/hooks/useMouseClick.test.js.map +1 -1
  1426. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +2 -2
  1427. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -1
  1428. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +19 -19
  1429. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -1
  1430. package/dist/src/ui/hooks/usePhraseCycler.d.ts +11 -4
  1431. package/dist/src/ui/hooks/usePhraseCycler.js +116 -55
  1432. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  1433. package/dist/src/ui/hooks/usePhraseCycler.test.js +104 -126
  1434. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
  1435. package/dist/src/ui/hooks/usePrivacySettings.js +9 -3
  1436. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  1437. package/dist/src/ui/hooks/usePrivacySettings.test.js +20 -11
  1438. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +1 -1
  1439. package/dist/src/ui/hooks/usePromptCompletion.d.ts +2 -3
  1440. package/dist/src/ui/hooks/usePromptCompletion.js +4 -4
  1441. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -1
  1442. package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +11 -3
  1443. package/dist/src/ui/hooks/useQuotaAndFallback.js +95 -19
  1444. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  1445. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +328 -38
  1446. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
  1447. package/dist/src/ui/hooks/useRegistrySearch.d.ts +19 -0
  1448. package/dist/src/ui/hooks/useRegistrySearch.js +35 -0
  1449. package/dist/src/ui/hooks/useRegistrySearch.js.map +1 -0
  1450. package/dist/src/ui/hooks/useRepeatedKeyPress.d.ts +15 -0
  1451. package/dist/src/ui/hooks/useRepeatedKeyPress.js +50 -0
  1452. package/dist/src/ui/hooks/useRepeatedKeyPress.js.map +1 -0
  1453. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js +20 -20
  1454. package/dist/src/ui/hooks/useReverseSearchCompletion.test.js.map +1 -1
  1455. package/dist/src/ui/hooks/useRewind.test.js +10 -10
  1456. package/dist/src/ui/hooks/useRewind.test.js.map +1 -1
  1457. package/dist/src/ui/hooks/useRunEventNotifications.d.ts +22 -0
  1458. package/dist/src/ui/hooks/useRunEventNotifications.js +93 -0
  1459. package/dist/src/ui/hooks/useRunEventNotifications.js.map +1 -0
  1460. package/dist/src/ui/hooks/useSearchBuffer.d.ts +11 -0
  1461. package/dist/src/ui/hooks/useSearchBuffer.js +24 -0
  1462. package/dist/src/ui/hooks/useSearchBuffer.js.map +1 -0
  1463. package/dist/src/ui/hooks/useSelectionList.js +5 -4
  1464. package/dist/src/ui/hooks/useSelectionList.js.map +1 -1
  1465. package/dist/src/ui/hooks/useSelectionList.test.js +162 -50
  1466. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -1
  1467. package/dist/src/ui/hooks/useSessionBrowser.d.ts +3 -4
  1468. package/dist/src/ui/hooks/useSessionBrowser.js +7 -5
  1469. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  1470. package/dist/src/ui/hooks/useSessionBrowser.test.js +60 -17
  1471. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
  1472. package/dist/src/ui/hooks/useSessionResume.js +2 -2
  1473. package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
  1474. package/dist/src/ui/hooks/useSessionResume.test.js +20 -20
  1475. package/dist/src/ui/hooks/useSessionResume.test.js.map +1 -1
  1476. package/dist/src/ui/hooks/useSettingsNavigation.d.ts +18 -0
  1477. package/dist/src/ui/hooks/useSettingsNavigation.js +72 -0
  1478. package/dist/src/ui/hooks/useSettingsNavigation.js.map +1 -0
  1479. package/dist/src/ui/hooks/useSettingsNavigation.test.d.ts +6 -0
  1480. package/dist/src/ui/hooks/useSettingsNavigation.test.js +87 -0
  1481. package/dist/src/ui/hooks/useSettingsNavigation.test.js.map +1 -0
  1482. package/dist/src/ui/hooks/useShellCompletion.d.ts +50 -0
  1483. package/dist/src/ui/hooks/useShellCompletion.js +502 -0
  1484. package/dist/src/ui/hooks/useShellCompletion.js.map +1 -0
  1485. package/dist/src/ui/hooks/useShellCompletion.test.d.ts +6 -0
  1486. package/dist/src/ui/hooks/useShellCompletion.test.js +354 -0
  1487. package/dist/src/ui/hooks/useShellCompletion.test.js.map +1 -0
  1488. package/dist/src/ui/hooks/useShellHistory.test.js +7 -7
  1489. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -1
  1490. package/dist/src/ui/hooks/useShellInactivityStatus.d.ts +1 -1
  1491. package/dist/src/ui/hooks/useShellInactivityStatus.js +1 -1
  1492. package/dist/src/ui/hooks/useShellInactivityStatus.js.map +1 -1
  1493. package/dist/src/ui/hooks/useShellInactivityStatus.test.js +4 -4
  1494. package/dist/src/ui/hooks/useShellInactivityStatus.test.js.map +1 -1
  1495. package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
  1496. package/dist/src/ui/hooks/useSlashCompletion.js +67 -33
  1497. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  1498. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +2 -1
  1499. package/dist/src/ui/hooks/useSlashCompletion.test.js +254 -162
  1500. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  1501. package/dist/src/ui/hooks/useSnowfall.js +1 -1
  1502. package/dist/src/ui/hooks/useSnowfall.js.map +1 -1
  1503. package/dist/src/ui/hooks/useSnowfall.test.js +15 -11
  1504. package/dist/src/ui/hooks/useSnowfall.test.js.map +1 -1
  1505. package/dist/src/ui/hooks/useStateAndRef.js +1 -0
  1506. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
  1507. package/dist/src/ui/hooks/useSuspend.d.ts +16 -0
  1508. package/dist/src/ui/hooks/useSuspend.js +116 -0
  1509. package/dist/src/ui/hooks/useSuspend.js.map +1 -0
  1510. package/dist/src/ui/hooks/useSuspend.test.d.ts +6 -0
  1511. package/dist/src/ui/hooks/useSuspend.test.js +150 -0
  1512. package/dist/src/ui/hooks/useSuspend.test.js.map +1 -0
  1513. package/dist/src/ui/hooks/useTabbedNavigation.js +4 -1
  1514. package/dist/src/ui/hooks/useTabbedNavigation.js.map +1 -1
  1515. package/dist/src/ui/hooks/useTabbedNavigation.test.js +49 -63
  1516. package/dist/src/ui/hooks/useTabbedNavigation.test.js.map +1 -1
  1517. package/dist/src/ui/hooks/useTerminalTheme.d.ts +1 -1
  1518. package/dist/src/ui/hooks/useTerminalTheme.js +24 -9
  1519. package/dist/src/ui/hooks/useTerminalTheme.js.map +1 -1
  1520. package/dist/src/ui/hooks/useTerminalTheme.test.js +79 -38
  1521. package/dist/src/ui/hooks/useTerminalTheme.test.js.map +1 -1
  1522. package/dist/src/ui/hooks/useThemeCommand.d.ts +2 -2
  1523. package/dist/src/ui/hooks/useThemeCommand.js +12 -5
  1524. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  1525. package/dist/src/ui/hooks/useTimedMessage.d.ts +1 -1
  1526. package/dist/src/ui/hooks/useTimedMessage.js +5 -3
  1527. package/dist/src/ui/hooks/useTimedMessage.js.map +1 -1
  1528. package/dist/src/ui/hooks/useTimer.test.js +18 -18
  1529. package/dist/src/ui/hooks/useTimer.test.js.map +1 -1
  1530. package/dist/src/ui/hooks/useTips.test.js +6 -6
  1531. package/dist/src/ui/hooks/useTips.test.js.map +1 -1
  1532. package/dist/src/ui/hooks/useToolScheduler.d.ts +34 -10
  1533. package/dist/src/ui/hooks/useToolScheduler.js +202 -4
  1534. package/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
  1535. package/dist/src/ui/hooks/useToolScheduler.test.d.ts +1 -1
  1536. package/dist/src/ui/hooks/useToolScheduler.test.js +462 -809
  1537. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  1538. package/dist/src/ui/hooks/useTurnActivityMonitor.d.ts +1 -1
  1539. package/dist/src/ui/hooks/useTurnActivityMonitor.js +1 -1
  1540. package/dist/src/ui/hooks/useTurnActivityMonitor.js.map +1 -1
  1541. package/dist/src/ui/hooks/useTurnActivityMonitor.test.js +14 -12
  1542. package/dist/src/ui/hooks/useTurnActivityMonitor.test.js.map +1 -1
  1543. package/dist/src/ui/hooks/useVisibilityToggle.d.ts +12 -0
  1544. package/dist/src/ui/hooks/useVisibilityToggle.js +60 -0
  1545. package/dist/src/ui/hooks/useVisibilityToggle.js.map +1 -0
  1546. package/dist/src/ui/hooks/vim-passthrough.test.js +2 -2
  1547. package/dist/src/ui/hooks/vim-passthrough.test.js.map +1 -1
  1548. package/dist/src/ui/hooks/vim.js +587 -27
  1549. package/dist/src/ui/hooks/vim.js.map +1 -1
  1550. package/dist/src/ui/hooks/vim.test.js +734 -183
  1551. package/dist/src/ui/hooks/vim.test.js.map +1 -1
  1552. package/dist/src/{config → ui/key}/keyBindings.d.ts +40 -26
  1553. package/dist/src/ui/key/keyBindings.js +698 -0
  1554. package/dist/src/ui/key/keyBindings.js.map +1 -0
  1555. package/dist/src/ui/key/keyBindings.test.d.ts +6 -0
  1556. package/dist/src/ui/key/keyBindings.test.js +214 -0
  1557. package/dist/src/ui/key/keyBindings.test.js.map +1 -0
  1558. package/dist/src/ui/{keyMatchers.d.ts → key/keyMatchers.d.ts} +11 -4
  1559. package/dist/src/ui/key/keyMatchers.js +43 -0
  1560. package/dist/src/ui/key/keyMatchers.js.map +1 -0
  1561. package/dist/src/ui/key/keyMatchers.test.d.ts +6 -0
  1562. package/dist/src/ui/{keyMatchers.test.js → key/keyMatchers.test.js} +149 -66
  1563. package/dist/src/ui/key/keyMatchers.test.js.map +1 -0
  1564. package/dist/src/ui/key/keyToAnsi.js +46 -0
  1565. package/dist/src/ui/key/keyToAnsi.js.map +1 -0
  1566. package/dist/src/ui/{utils → key}/keybindingUtils.d.ts +3 -3
  1567. package/dist/src/ui/key/keybindingUtils.js +87 -0
  1568. package/dist/src/ui/key/keybindingUtils.js.map +1 -0
  1569. package/dist/src/ui/key/keybindingUtils.test.d.ts +6 -0
  1570. package/dist/src/ui/key/keybindingUtils.test.js +121 -0
  1571. package/dist/src/ui/key/keybindingUtils.test.js.map +1 -0
  1572. package/dist/src/ui/layouts/DefaultAppLayout.js +8 -6
  1573. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  1574. package/dist/src/ui/layouts/DefaultAppLayout.test.js +34 -26
  1575. package/dist/src/ui/layouts/DefaultAppLayout.test.js.map +1 -1
  1576. package/dist/src/ui/noninteractive/nonInteractiveUi.js +15 -2
  1577. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -1
  1578. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js +21 -8
  1579. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js.map +1 -1
  1580. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js +14 -5
  1581. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js.map +1 -1
  1582. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js +14 -5
  1583. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js.map +1 -1
  1584. package/dist/src/ui/privacy/PrivacyNotice.test.js +3 -2
  1585. package/dist/src/ui/privacy/PrivacyNotice.test.js.map +1 -1
  1586. package/dist/src/ui/textConstants.d.ts +2 -1
  1587. package/dist/src/ui/textConstants.js +2 -1
  1588. package/dist/src/ui/textConstants.js.map +1 -1
  1589. package/dist/src/ui/themes/{ansi.d.ts → builtin/dark/ansi-dark.d.ts} +2 -2
  1590. package/dist/src/ui/themes/{ansi.js → builtin/dark/ansi-dark.js} +5 -4
  1591. package/dist/src/ui/themes/builtin/dark/ansi-dark.js.map +1 -0
  1592. package/dist/src/ui/themes/{atom-one-dark.d.ts → builtin/dark/atom-one-dark.d.ts} +2 -2
  1593. package/dist/src/ui/themes/{atom-one-dark.js → builtin/dark/atom-one-dark.js} +3 -3
  1594. package/dist/src/ui/themes/builtin/dark/atom-one-dark.js.map +1 -0
  1595. package/dist/src/ui/themes/{ayu.d.ts → builtin/dark/ayu-dark.d.ts} +2 -2
  1596. package/dist/src/ui/themes/{ayu.js → builtin/dark/ayu-dark.js} +4 -4
  1597. package/dist/src/ui/themes/builtin/dark/ayu-dark.js.map +1 -0
  1598. package/dist/src/ui/themes/{default.d.ts → builtin/dark/default-dark.d.ts} +2 -2
  1599. package/dist/src/ui/themes/{default.js → builtin/dark/default-dark.js} +3 -3
  1600. package/dist/src/ui/themes/builtin/dark/default-dark.js.map +1 -0
  1601. package/dist/src/ui/themes/{dracula.d.ts → builtin/dark/dracula-dark.d.ts} +2 -2
  1602. package/dist/src/ui/themes/{dracula.js → builtin/dark/dracula-dark.js} +4 -4
  1603. package/dist/src/ui/themes/builtin/dark/dracula-dark.js.map +1 -0
  1604. package/dist/src/ui/themes/{github-dark.d.ts → builtin/dark/github-dark.d.ts} +2 -2
  1605. package/dist/src/ui/themes/{github-dark.js → builtin/dark/github-dark.js} +3 -3
  1606. package/dist/src/ui/themes/builtin/dark/github-dark.js.map +1 -0
  1607. package/dist/src/ui/themes/{holiday.d.ts → builtin/dark/holiday-dark.d.ts} +2 -2
  1608. package/dist/src/ui/themes/{holiday.js → builtin/dark/holiday-dark.js} +5 -4
  1609. package/dist/src/ui/themes/{holiday.js.map → builtin/dark/holiday-dark.js.map} +1 -1
  1610. package/dist/src/ui/themes/{shades-of-purple.d.ts → builtin/dark/shades-of-purple-dark.d.ts} +2 -2
  1611. package/dist/src/ui/themes/{shades-of-purple.js → builtin/dark/shades-of-purple-dark.js} +4 -4
  1612. package/dist/src/ui/themes/builtin/dark/shades-of-purple-dark.js.map +1 -0
  1613. package/dist/src/ui/themes/builtin/dark/solarized-dark.d.ts +7 -0
  1614. package/dist/src/ui/themes/builtin/dark/solarized-dark.js +198 -0
  1615. package/dist/src/ui/themes/builtin/dark/solarized-dark.js.map +1 -0
  1616. package/dist/src/ui/themes/builtin/dark/tokyonight-dark.d.ts +7 -0
  1617. package/dist/src/ui/themes/builtin/dark/tokyonight-dark.js +147 -0
  1618. package/dist/src/ui/themes/builtin/dark/tokyonight-dark.js.map +1 -0
  1619. package/dist/src/ui/themes/{ansi-light.d.ts → builtin/light/ansi-light.d.ts} +2 -2
  1620. package/dist/src/ui/themes/{ansi-light.js → builtin/light/ansi-light.js} +3 -3
  1621. package/dist/src/ui/themes/builtin/light/ansi-light.js.map +1 -0
  1622. package/dist/src/ui/themes/{ayu-light.d.ts → builtin/light/ayu-light.d.ts} +2 -2
  1623. package/dist/src/ui/themes/{ayu-light.js → builtin/light/ayu-light.js} +3 -3
  1624. package/dist/src/ui/themes/builtin/light/ayu-light.js.map +1 -0
  1625. package/dist/src/ui/themes/{default-light.d.ts → builtin/light/default-light.d.ts} +2 -2
  1626. package/dist/src/ui/themes/{default-light.js → builtin/light/default-light.js} +2 -2
  1627. package/dist/src/ui/themes/builtin/light/default-light.js.map +1 -0
  1628. package/dist/src/ui/themes/{github-light.d.ts → builtin/light/github-light.d.ts} +2 -2
  1629. package/dist/src/ui/themes/{github-light.js → builtin/light/github-light.js} +4 -3
  1630. package/dist/src/ui/themes/builtin/light/github-light.js.map +1 -0
  1631. package/dist/src/ui/themes/{googlecode.d.ts → builtin/light/googlecode-light.d.ts} +2 -2
  1632. package/dist/src/ui/themes/{googlecode.js → builtin/light/googlecode-light.js} +4 -4
  1633. package/dist/src/ui/themes/builtin/light/googlecode-light.js.map +1 -0
  1634. package/dist/src/ui/themes/builtin/light/solarized-light.d.ts +7 -0
  1635. package/dist/src/ui/themes/builtin/light/solarized-light.js +198 -0
  1636. package/dist/src/ui/themes/builtin/light/solarized-light.js.map +1 -0
  1637. package/dist/src/ui/themes/{xcode.d.ts → builtin/light/xcode-light.d.ts} +2 -2
  1638. package/dist/src/ui/themes/{xcode.js → builtin/light/xcode-light.js} +5 -4
  1639. package/dist/src/ui/themes/builtin/light/xcode-light.js.map +1 -0
  1640. package/dist/src/ui/themes/{no-color.d.ts → builtin/no-color.d.ts} +2 -2
  1641. package/dist/src/ui/themes/{no-color.js → builtin/no-color.js} +10 -3
  1642. package/dist/src/ui/themes/builtin/no-color.js.map +1 -0
  1643. package/dist/src/ui/themes/color-utils.d.ts +2 -18
  1644. package/dist/src/ui/themes/color-utils.js +2 -231
  1645. package/dist/src/ui/themes/color-utils.js.map +1 -1
  1646. package/dist/src/ui/themes/semantic-tokens.d.ts +5 -1
  1647. package/dist/src/ui/themes/semantic-tokens.js +12 -4
  1648. package/dist/src/ui/themes/semantic-tokens.js.map +1 -1
  1649. package/dist/src/ui/themes/theme-manager.d.ts +47 -7
  1650. package/dist/src/ui/themes/theme-manager.js +171 -27
  1651. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  1652. package/dist/src/ui/themes/theme-manager.test.js +86 -2
  1653. package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
  1654. package/dist/src/ui/themes/theme.d.ts +25 -0
  1655. package/dist/src/ui/themes/theme.js +178 -36
  1656. package/dist/src/ui/themes/theme.js.map +1 -1
  1657. package/dist/src/ui/themes/theme.test.js +7 -7
  1658. package/dist/src/ui/themes/theme.test.js.map +1 -1
  1659. package/dist/src/ui/types.d.ts +48 -23
  1660. package/dist/src/ui/types.js +31 -1
  1661. package/dist/src/ui/types.js.map +1 -1
  1662. package/dist/src/ui/utils/CodeColorizer.d.ts +10 -2
  1663. package/dist/src/ui/utils/CodeColorizer.js +37 -32
  1664. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  1665. package/dist/src/ui/utils/CodeColorizer.test.js +38 -2
  1666. package/dist/src/ui/utils/CodeColorizer.test.js.map +1 -1
  1667. package/dist/src/ui/utils/ConsolePatcher.d.ts +1 -0
  1668. package/dist/src/ui/utils/ConsolePatcher.js +12 -5
  1669. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  1670. package/dist/src/ui/utils/ConsolePatcher.test.d.ts +6 -0
  1671. package/dist/src/ui/utils/ConsolePatcher.test.js +199 -0
  1672. package/dist/src/ui/utils/ConsolePatcher.test.js.map +1 -0
  1673. package/dist/src/ui/utils/InlineMarkdownRenderer.d.ts +0 -5
  1674. package/dist/src/ui/utils/InlineMarkdownRenderer.js +7 -103
  1675. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  1676. package/dist/src/ui/utils/MarkdownDisplay.js +3 -2
  1677. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  1678. package/dist/src/ui/utils/MarkdownDisplay.test.js +51 -35
  1679. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  1680. package/dist/src/ui/utils/TableRenderer.js +124 -56
  1681. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  1682. package/dist/src/ui/utils/TableRenderer.test.js +344 -6
  1683. package/dist/src/ui/utils/TableRenderer.test.js.map +1 -1
  1684. package/dist/src/ui/utils/borderStyles.d.ts +18 -0
  1685. package/dist/src/ui/utils/borderStyles.js +83 -0
  1686. package/dist/src/ui/utils/borderStyles.js.map +1 -0
  1687. package/dist/src/ui/utils/borderStyles.test.d.ts +6 -0
  1688. package/dist/src/ui/utils/borderStyles.test.js +171 -0
  1689. package/dist/src/ui/utils/borderStyles.test.js.map +1 -0
  1690. package/dist/src/ui/utils/clipboardUtils.d.ts +23 -11
  1691. package/dist/src/ui/utils/clipboardUtils.js +79 -49
  1692. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  1693. package/dist/src/ui/utils/clipboardUtils.test.js +168 -120
  1694. package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -1
  1695. package/dist/src/ui/utils/commandUtils.d.ts +8 -3
  1696. package/dist/src/ui/utils/commandUtils.js +20 -8
  1697. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  1698. package/dist/src/ui/utils/commandUtils.test.js +39 -7
  1699. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  1700. package/dist/src/ui/utils/computeStats.test.js +8 -0
  1701. package/dist/src/ui/utils/computeStats.test.js.map +1 -1
  1702. package/dist/src/ui/utils/confirmingTool.d.ts +15 -0
  1703. package/dist/src/ui/utils/confirmingTool.js +26 -0
  1704. package/dist/src/ui/utils/confirmingTool.js.map +1 -0
  1705. package/dist/src/ui/utils/contextUsage.d.ts +7 -0
  1706. package/dist/src/ui/utils/contextUsage.js +20 -0
  1707. package/dist/src/ui/utils/contextUsage.js.map +1 -0
  1708. package/dist/src/ui/utils/directoryUtils.js +1 -1
  1709. package/dist/src/ui/utils/directoryUtils.js.map +1 -1
  1710. package/dist/src/ui/utils/displayUtils.d.ts +9 -0
  1711. package/dist/src/ui/utils/displayUtils.js +14 -0
  1712. package/dist/src/ui/utils/displayUtils.js.map +1 -1
  1713. package/dist/src/ui/utils/editorUtils.d.ts +17 -0
  1714. package/dist/src/ui/utils/editorUtils.js +104 -0
  1715. package/dist/src/ui/utils/editorUtils.js.map +1 -0
  1716. package/dist/src/ui/utils/fileUtils.d.ts +10 -0
  1717. package/dist/src/ui/utils/fileUtils.js +17 -0
  1718. package/dist/src/ui/utils/fileUtils.js.map +1 -0
  1719. package/dist/src/ui/utils/formatters.d.ts +1 -1
  1720. package/dist/src/ui/utils/formatters.js +38 -12
  1721. package/dist/src/ui/utils/formatters.js.map +1 -1
  1722. package/dist/src/ui/utils/formatters.test.js +29 -1
  1723. package/dist/src/ui/utils/formatters.test.js.map +1 -1
  1724. package/dist/src/ui/utils/highlight.js +1 -1
  1725. package/dist/src/ui/utils/highlight.js.map +1 -1
  1726. package/dist/src/ui/utils/historyExportUtils.d.ts +2 -2
  1727. package/dist/src/ui/utils/historyExportUtils.js.map +1 -1
  1728. package/dist/src/ui/utils/historyUtils.d.ts +10 -0
  1729. package/dist/src/ui/utils/historyUtils.js +56 -0
  1730. package/dist/src/ui/utils/historyUtils.js.map +1 -0
  1731. package/dist/src/ui/utils/markdownParsingUtils.d.ts +10 -0
  1732. package/dist/src/ui/utils/markdownParsingUtils.js +150 -0
  1733. package/dist/src/ui/utils/markdownParsingUtils.js.map +1 -0
  1734. package/dist/src/ui/utils/markdownParsingUtils.test.d.ts +6 -0
  1735. package/dist/src/ui/utils/markdownParsingUtils.test.js +166 -0
  1736. package/dist/src/ui/utils/markdownParsingUtils.test.js.map +1 -0
  1737. package/dist/src/ui/utils/pendingAttentionNotification.d.ts +12 -0
  1738. package/dist/src/ui/utils/pendingAttentionNotification.js +101 -0
  1739. package/dist/src/ui/utils/pendingAttentionNotification.js.map +1 -0
  1740. package/dist/src/ui/utils/pendingAttentionNotification.test.d.ts +6 -0
  1741. package/dist/src/ui/utils/pendingAttentionNotification.test.js +79 -0
  1742. package/dist/src/ui/utils/pendingAttentionNotification.test.js.map +1 -0
  1743. package/dist/src/ui/utils/shortcutsHelp.d.ts +7 -0
  1744. package/dist/src/ui/utils/shortcutsHelp.js +12 -0
  1745. package/dist/src/ui/utils/shortcutsHelp.js.map +1 -0
  1746. package/dist/src/ui/utils/terminalCapabilityManager.d.ts +14 -1
  1747. package/dist/src/ui/utils/terminalCapabilityManager.js +73 -18
  1748. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
  1749. package/dist/src/ui/utils/terminalCapabilityManager.test.js +126 -0
  1750. package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -1
  1751. package/dist/src/ui/utils/terminalSetup.d.ts +24 -0
  1752. package/dist/src/ui/utils/terminalSetup.js +130 -34
  1753. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  1754. package/dist/src/ui/utils/terminalSetup.test.js +35 -1
  1755. package/dist/src/ui/utils/terminalSetup.test.js.map +1 -1
  1756. package/dist/src/ui/utils/textOutput.test.js +1 -0
  1757. package/dist/src/ui/utils/textOutput.test.js.map +1 -1
  1758. package/dist/src/ui/utils/textUtils.d.ts +4 -0
  1759. package/dist/src/ui/utils/textUtils.js +10 -1
  1760. package/dist/src/ui/utils/textUtils.js.map +1 -1
  1761. package/dist/src/ui/utils/textUtils.test.js +28 -7
  1762. package/dist/src/ui/utils/textUtils.test.js.map +1 -1
  1763. package/dist/src/ui/utils/toolLayoutUtils.d.ts +49 -0
  1764. package/dist/src/ui/utils/toolLayoutUtils.js +80 -0
  1765. package/dist/src/ui/utils/toolLayoutUtils.js.map +1 -0
  1766. package/dist/src/ui/utils/toolLayoutUtils.test.d.ts +6 -0
  1767. package/dist/src/ui/utils/toolLayoutUtils.test.js +187 -0
  1768. package/dist/src/ui/utils/toolLayoutUtils.test.js.map +1 -0
  1769. package/dist/src/ui/utils/ui-sizing.d.ts +2 -2
  1770. package/dist/src/ui/utils/ui-sizing.js +2 -3
  1771. package/dist/src/ui/utils/ui-sizing.js.map +1 -1
  1772. package/dist/src/ui/utils/ui-sizing.test.js +6 -19
  1773. package/dist/src/ui/utils/ui-sizing.test.js.map +1 -1
  1774. package/dist/src/ui/utils/updateCheck.d.ts +1 -0
  1775. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  1776. package/dist/src/ui/utils/urlSecurityUtils.d.ts +32 -0
  1777. package/dist/src/ui/utils/urlSecurityUtils.js +71 -0
  1778. package/dist/src/ui/utils/urlSecurityUtils.js.map +1 -0
  1779. package/dist/src/ui/utils/urlSecurityUtils.test.d.ts +6 -0
  1780. package/dist/src/ui/utils/urlSecurityUtils.test.js +49 -0
  1781. package/dist/src/ui/utils/urlSecurityUtils.test.js.map +1 -0
  1782. package/dist/src/utils/activityLogger.js +113 -24
  1783. package/dist/src/utils/activityLogger.js.map +1 -1
  1784. package/dist/src/utils/agentSettings.d.ts +7 -14
  1785. package/dist/src/utils/agentSettings.js +27 -84
  1786. package/dist/src/utils/agentSettings.js.map +1 -1
  1787. package/dist/src/utils/agentSettings.test.d.ts +6 -0
  1788. package/dist/src/utils/agentSettings.test.js +111 -0
  1789. package/dist/src/utils/agentSettings.test.js.map +1 -0
  1790. package/dist/src/utils/cleanup.d.ts +2 -0
  1791. package/dist/src/utils/cleanup.js +63 -6
  1792. package/dist/src/utils/cleanup.js.map +1 -1
  1793. package/dist/src/utils/cleanup.test.js +165 -2
  1794. package/dist/src/utils/cleanup.test.js.map +1 -1
  1795. package/dist/src/utils/commands.js +15 -0
  1796. package/dist/src/utils/commands.js.map +1 -1
  1797. package/dist/src/utils/commands.test.js +80 -1
  1798. package/dist/src/utils/commands.test.js.map +1 -1
  1799. package/dist/src/utils/deepMerge.js +1 -1
  1800. package/dist/src/utils/deepMerge.js.map +1 -1
  1801. package/dist/src/utils/deepMerge.test.js +13 -3
  1802. package/dist/src/utils/deepMerge.test.js.map +1 -1
  1803. package/dist/src/utils/devtoolsService.d.ts +11 -1
  1804. package/dist/src/utils/devtoolsService.js +36 -2
  1805. package/dist/src/utils/devtoolsService.js.map +1 -1
  1806. package/dist/src/utils/devtoolsService.test.js +74 -2
  1807. package/dist/src/utils/devtoolsService.test.js.map +1 -1
  1808. package/dist/src/utils/dialogScopeUtils.d.ts +6 -2
  1809. package/dist/src/utils/dialogScopeUtils.js +4 -4
  1810. package/dist/src/utils/dialogScopeUtils.js.map +1 -1
  1811. package/dist/src/utils/dialogScopeUtils.test.js +5 -5
  1812. package/dist/src/utils/dialogScopeUtils.test.js.map +1 -1
  1813. package/dist/src/utils/envVarResolver.d.ts +5 -2
  1814. package/dist/src/utils/envVarResolver.js +18 -6
  1815. package/dist/src/utils/envVarResolver.js.map +1 -1
  1816. package/dist/src/utils/envVarResolver.test.js +41 -24
  1817. package/dist/src/utils/envVarResolver.test.js.map +1 -1
  1818. package/dist/src/utils/errors.d.ts +0 -1
  1819. package/dist/src/utils/errors.js +4 -10
  1820. package/dist/src/utils/errors.js.map +1 -1
  1821. package/dist/src/utils/errors.test.js +2 -17
  1822. package/dist/src/utils/errors.test.js.map +1 -1
  1823. package/dist/src/utils/events.d.ts +3 -1
  1824. package/dist/src/utils/events.js +1 -0
  1825. package/dist/src/utils/events.js.map +1 -1
  1826. package/dist/src/utils/featureToggleUtils.d.ts +55 -0
  1827. package/dist/src/utils/featureToggleUtils.js +95 -0
  1828. package/dist/src/utils/featureToggleUtils.js.map +1 -0
  1829. package/dist/src/utils/featureToggleUtils.test.d.ts +6 -0
  1830. package/dist/src/utils/featureToggleUtils.test.js +126 -0
  1831. package/dist/src/utils/featureToggleUtils.test.js.map +1 -0
  1832. package/dist/src/utils/gitUtils.js +6 -4
  1833. package/dist/src/utils/gitUtils.js.map +1 -1
  1834. package/dist/src/utils/handleAutoUpdate.d.ts +8 -1
  1835. package/dist/src/utils/handleAutoUpdate.js +56 -3
  1836. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  1837. package/dist/src/utils/handleAutoUpdate.test.js +67 -5
  1838. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  1839. package/dist/src/utils/installationInfo.d.ts +1 -0
  1840. package/dist/src/utils/installationInfo.js +10 -1
  1841. package/dist/src/utils/installationInfo.js.map +1 -1
  1842. package/dist/src/utils/installationInfo.test.js +10 -0
  1843. package/dist/src/utils/installationInfo.test.js.map +1 -1
  1844. package/dist/src/utils/jsonoutput.js +3 -1
  1845. package/dist/src/utils/jsonoutput.js.map +1 -1
  1846. package/dist/src/utils/logCleanup.d.ts +12 -0
  1847. package/dist/src/utils/logCleanup.js +58 -0
  1848. package/dist/src/utils/logCleanup.js.map +1 -0
  1849. package/dist/src/utils/logCleanup.test.d.ts +6 -0
  1850. package/dist/src/utils/logCleanup.test.js +87 -0
  1851. package/dist/src/utils/logCleanup.test.js.map +1 -0
  1852. package/dist/src/utils/persistentState.d.ts +3 -0
  1853. package/dist/src/utils/persistentState.js +1 -0
  1854. package/dist/src/utils/persistentState.js.map +1 -1
  1855. package/dist/src/utils/processUtils.d.ts +2 -3
  1856. package/dist/src/utils/processUtils.js +10 -0
  1857. package/dist/src/utils/processUtils.js.map +1 -1
  1858. package/dist/src/utils/processUtils.test.js +11 -2
  1859. package/dist/src/utils/processUtils.test.js.map +1 -1
  1860. package/dist/src/utils/readStdin.js +1 -0
  1861. package/dist/src/utils/readStdin.js.map +1 -1
  1862. package/dist/src/utils/relaunch.test.js.map +1 -1
  1863. package/dist/src/utils/{sandbox-macos-restrictive-closed.sb → sandbox-macos-strict-open.sb} +41 -3
  1864. package/dist/src/utils/sandbox-macos-strict-proxied.sb +133 -0
  1865. package/dist/src/utils/sandbox.js +277 -20
  1866. package/dist/src/utils/sandbox.js.map +1 -1
  1867. package/dist/src/utils/sandbox.test.js +198 -17
  1868. package/dist/src/utils/sandbox.test.js.map +1 -1
  1869. package/dist/src/utils/sandboxUtils.js +3 -3
  1870. package/dist/src/utils/sandboxUtils.js.map +1 -1
  1871. package/dist/src/utils/sessionCleanup.d.ts +6 -1
  1872. package/dist/src/utils/sessionCleanup.integration.test.js +94 -0
  1873. package/dist/src/utils/sessionCleanup.integration.test.js.map +1 -1
  1874. package/dist/src/utils/sessionCleanup.js +107 -38
  1875. package/dist/src/utils/sessionCleanup.js.map +1 -1
  1876. package/dist/src/utils/sessionCleanup.test.js +545 -1089
  1877. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  1878. package/dist/src/utils/sessionUtils.d.ts +2 -7
  1879. package/dist/src/utils/sessionUtils.js +39 -115
  1880. package/dist/src/utils/sessionUtils.js.map +1 -1
  1881. package/dist/src/utils/sessionUtils.test.js +269 -3
  1882. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  1883. package/dist/src/utils/sessions.js +1 -1
  1884. package/dist/src/utils/sessions.js.map +1 -1
  1885. package/dist/src/utils/sessions.test.js +3 -1
  1886. package/dist/src/utils/sessions.test.js.map +1 -1
  1887. package/dist/src/utils/settingsUtils.d.ts +20 -93
  1888. package/dist/src/utils/settingsUtils.js +135 -207
  1889. package/dist/src/utils/settingsUtils.js.map +1 -1
  1890. package/dist/src/utils/settingsUtils.test.js +129 -264
  1891. package/dist/src/utils/settingsUtils.test.js.map +1 -1
  1892. package/dist/src/utils/skillSettings.d.ts +4 -14
  1893. package/dist/src/utils/skillSettings.js +32 -81
  1894. package/dist/src/utils/skillSettings.js.map +1 -1
  1895. package/dist/src/utils/skillSettings.test.d.ts +6 -0
  1896. package/dist/src/utils/skillSettings.test.js +142 -0
  1897. package/dist/src/utils/skillSettings.test.js.map +1 -0
  1898. package/dist/src/utils/skillUtils.js +24 -7
  1899. package/dist/src/utils/skillUtils.js.map +1 -1
  1900. package/dist/src/utils/skillUtils.test.js +52 -4
  1901. package/dist/src/utils/skillUtils.test.js.map +1 -1
  1902. package/dist/src/utils/terminalNotifications.d.ts +25 -0
  1903. package/dist/src/utils/terminalNotifications.js +75 -0
  1904. package/dist/src/utils/terminalNotifications.js.map +1 -0
  1905. package/dist/src/utils/terminalNotifications.test.d.ts +6 -0
  1906. package/dist/src/utils/terminalNotifications.test.js +125 -0
  1907. package/dist/src/utils/terminalNotifications.test.js.map +1 -0
  1908. package/dist/src/utils/terminalTheme.js +3 -4
  1909. package/dist/src/utils/terminalTheme.js.map +1 -1
  1910. package/dist/src/utils/tierUtils.d.ts +12 -0
  1911. package/dist/src/utils/tierUtils.js +15 -0
  1912. package/dist/src/utils/tierUtils.js.map +1 -0
  1913. package/dist/src/utils/tierUtils.test.d.ts +6 -0
  1914. package/dist/src/utils/tierUtils.test.js +25 -0
  1915. package/dist/src/utils/tierUtils.test.js.map +1 -0
  1916. package/dist/src/utils/userStartupWarnings.d.ts +4 -1
  1917. package/dist/src/utils/userStartupWarnings.js +24 -6
  1918. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  1919. package/dist/src/utils/userStartupWarnings.test.js +53 -11
  1920. package/dist/src/utils/userStartupWarnings.test.js.map +1 -1
  1921. package/dist/src/utils/worktreeSetup.d.ts +14 -0
  1922. package/dist/src/utils/worktreeSetup.js +32 -0
  1923. package/dist/src/utils/worktreeSetup.js.map +1 -0
  1924. package/dist/src/utils/worktreeSetup.test.d.ts +6 -0
  1925. package/dist/src/utils/worktreeSetup.test.js +89 -0
  1926. package/dist/src/utils/worktreeSetup.test.js.map +1 -0
  1927. package/dist/src/validateNonInterActiveAuth.d.ts +1 -2
  1928. package/dist/src/validateNonInterActiveAuth.js +1 -14
  1929. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  1930. package/dist/tsconfig.tsbuildinfo +1 -1
  1931. package/package.json +9 -8
  1932. package/dist/src/config/keyBindings.js +0 -460
  1933. package/dist/src/config/keyBindings.js.map +0 -1
  1934. package/dist/src/config/keyBindings.test.js +0 -108
  1935. package/dist/src/config/keyBindings.test.js.map +0 -1
  1936. package/dist/src/ui/commands/shellsCommand.js.map +0 -1
  1937. package/dist/src/ui/commands/shellsCommand.test.js +0 -29
  1938. package/dist/src/ui/commands/shellsCommand.test.js.map +0 -1
  1939. package/dist/src/ui/components/BackgroundShellDisplay.d.ts +0 -16
  1940. package/dist/src/ui/components/BackgroundShellDisplay.js.map +0 -1
  1941. package/dist/src/ui/components/BackgroundShellDisplay.test.js.map +0 -1
  1942. package/dist/src/ui/components/ShortcutsHint.d.ts +0 -7
  1943. package/dist/src/ui/components/ShortcutsHint.js +0 -12
  1944. package/dist/src/ui/components/ShortcutsHint.js.map +0 -1
  1945. package/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.js +0 -93
  1946. package/dist/src/ui/components/messages/ToolConfirmationMessageOverflow.test.js.map +0 -1
  1947. package/dist/src/ui/components/views/HooksList.d.ts +0 -24
  1948. package/dist/src/ui/components/views/HooksList.js +0 -28
  1949. package/dist/src/ui/components/views/HooksList.js.map +0 -1
  1950. package/dist/src/ui/hooks/keyToAnsi.js +0 -67
  1951. package/dist/src/ui/hooks/keyToAnsi.js.map +0 -1
  1952. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +0 -28
  1953. package/dist/src/ui/hooks/shellCommandProcessor.js.map +0 -1
  1954. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +0 -1
  1955. package/dist/src/ui/hooks/useBackgroundShellManager.d.ts +0 -22
  1956. package/dist/src/ui/hooks/useBackgroundShellManager.js +0 -58
  1957. package/dist/src/ui/hooks/useBackgroundShellManager.js.map +0 -1
  1958. package/dist/src/ui/hooks/useBackgroundShellManager.test.js +0 -168
  1959. package/dist/src/ui/hooks/useBackgroundShellManager.test.js.map +0 -1
  1960. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +0 -42
  1961. package/dist/src/ui/hooks/useReactToolScheduler.js +0 -106
  1962. package/dist/src/ui/hooks/useReactToolScheduler.js.map +0 -1
  1963. package/dist/src/ui/hooks/useReactToolScheduler.test.js +0 -58
  1964. package/dist/src/ui/hooks/useReactToolScheduler.test.js.map +0 -1
  1965. package/dist/src/ui/hooks/useToolExecutionScheduler.d.ts +0 -30
  1966. package/dist/src/ui/hooks/useToolExecutionScheduler.js +0 -149
  1967. package/dist/src/ui/hooks/useToolExecutionScheduler.js.map +0 -1
  1968. package/dist/src/ui/hooks/useToolExecutionScheduler.test.js +0 -376
  1969. package/dist/src/ui/hooks/useToolExecutionScheduler.test.js.map +0 -1
  1970. package/dist/src/ui/keyMatchers.js +0 -46
  1971. package/dist/src/ui/keyMatchers.js.map +0 -1
  1972. package/dist/src/ui/keyMatchers.test.js.map +0 -1
  1973. package/dist/src/ui/themes/ansi-light.js.map +0 -1
  1974. package/dist/src/ui/themes/ansi.js.map +0 -1
  1975. package/dist/src/ui/themes/atom-one-dark.js.map +0 -1
  1976. package/dist/src/ui/themes/ayu-light.js.map +0 -1
  1977. package/dist/src/ui/themes/ayu.js.map +0 -1
  1978. package/dist/src/ui/themes/default-light.js.map +0 -1
  1979. package/dist/src/ui/themes/default.js.map +0 -1
  1980. package/dist/src/ui/themes/dracula.js.map +0 -1
  1981. package/dist/src/ui/themes/github-dark.js.map +0 -1
  1982. package/dist/src/ui/themes/github-light.js.map +0 -1
  1983. package/dist/src/ui/themes/googlecode.js.map +0 -1
  1984. package/dist/src/ui/themes/no-color.js.map +0 -1
  1985. package/dist/src/ui/themes/shades-of-purple.js.map +0 -1
  1986. package/dist/src/ui/themes/xcode.js.map +0 -1
  1987. package/dist/src/ui/utils/InlineMarkdownRenderer.test.js +0 -21
  1988. package/dist/src/ui/utils/InlineMarkdownRenderer.test.js.map +0 -1
  1989. package/dist/src/ui/utils/keybindingUtils.js +0 -54
  1990. package/dist/src/ui/utils/keybindingUtils.js.map +0 -1
  1991. package/dist/src/ui/utils/keybindingUtils.test.js +0 -44
  1992. package/dist/src/ui/utils/keybindingUtils.test.js.map +0 -1
  1993. package/dist/src/utils/sandbox-macos-permissive-closed.sb +0 -32
  1994. package/dist/src/zed-integration/acpErrors.js.map +0 -1
  1995. package/dist/src/zed-integration/acpErrors.test.js.map +0 -1
  1996. package/dist/src/zed-integration/acpResume.test.js.map +0 -1
  1997. package/dist/src/zed-integration/fileSystemService.js +0 -41
  1998. package/dist/src/zed-integration/fileSystemService.js.map +0 -1
  1999. package/dist/src/zed-integration/fileSystemService.test.js +0 -88
  2000. package/dist/src/zed-integration/fileSystemService.test.js.map +0 -1
  2001. package/dist/src/zed-integration/zedIntegration.d.ts +0 -42
  2002. package/dist/src/zed-integration/zedIntegration.js.map +0 -1
  2003. package/dist/src/zed-integration/zedIntegration.test.js +0 -664
  2004. package/dist/src/zed-integration/zedIntegration.test.js.map +0 -1
  2005. /package/dist/src/{config/keyBindings.test.d.ts → acp/acpClient.test.d.ts} +0 -0
  2006. /package/dist/src/{zed-integration → acp}/acpErrors.d.ts +0 -0
  2007. /package/dist/src/{zed-integration → acp}/acpErrors.test.d.ts +0 -0
  2008. /package/dist/src/{zed-integration → acp}/acpErrors.test.js +0 -0
  2009. /package/dist/src/{zed-integration → acp}/acpResume.test.d.ts +0 -0
  2010. /package/dist/src/{ui/components/messages/ToolConfirmationMessageOverflow.test.d.ts → acp/commandHandler.test.d.ts} +0 -0
  2011. /package/dist/src/{ui/hooks/useToolExecutionScheduler.test.d.ts → acp/commands/help.test.d.ts} +0 -0
  2012. /package/dist/src/{zed-integration → acp}/fileSystemService.test.d.ts +0 -0
  2013. /package/dist/src/{ui/commands/shellsCommand.test.d.ts → config/extension-manager.test.d.ts} +0 -0
  2014. /package/dist/src/{ui/components/BackgroundShellDisplay.test.d.ts → config/policy.test.d.ts} +0 -0
  2015. /package/dist/src/{ui/hooks/shellCommandProcessor.test.d.ts → config/workspace-policy-cli.test.d.ts} +0 -0
  2016. /package/dist/src/{ui/hooks/useBackgroundShellManager.test.d.ts → nonInteractiveCliAgentSession.test.d.ts} +0 -0
  2017. /package/dist/src/ui/{hooks/useReactToolScheduler.test.d.ts → commands/resumeCommand.test.d.ts} +0 -0
  2018. /package/dist/src/ui/{keyMatchers.test.d.ts → commands/tasksCommand.test.d.ts} +0 -0
  2019. /package/dist/src/ui/{utils/InlineMarkdownRenderer.test.d.ts → components/BackgroundTaskDisplay.test.d.ts} +0 -0
  2020. /package/dist/src/ui/{utils/keybindingUtils.test.d.ts → components/messages/SubagentProgressDisplay.test.d.ts} +0 -0
  2021. /package/dist/src/{zed-integration/zedIntegration.test.d.ts → ui/components/shared/SearchableList.test.d.ts} +0 -0
  2022. /package/dist/src/ui/{hooks → key}/keyToAnsi.d.ts +0 -0
@@ -4,18 +4,19 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  * Copyright 2026 Google LLC
5
5
  * SPDX-License-Identifier: Apache-2.0
6
6
  */
7
- import { useMemo, useState, useCallback, useEffect, useRef, useLayoutEffect, } from 'react';
8
- import { measureElement } from 'ink';
7
+ import { useMemo, useState, useCallback, useEffect, useRef, useLayoutEffect, useContext, } from 'react';
8
+ import { ResizeObserver, useApp, useStdout, useStdin, AppContext as InkAppContext, } from 'ink';
9
9
  import { App } from './App.js';
10
10
  import { AppContext } from './contexts/AppContext.js';
11
11
  import { UIStateContext } from './contexts/UIStateContext.js';
12
12
  import { UIActionsContext, } from './contexts/UIActionsContext.js';
13
13
  import { ConfigContext } from './contexts/ConfigContext.js';
14
- import { ToolCallStatus, AuthState, } from './types.js';
14
+ import { AuthState, MessageType, StreamingState, } from './types.js';
15
15
  import { checkPermissions } from './hooks/atCommandProcessor.js';
16
- import { MessageType, StreamingState } from './types.js';
17
16
  import { ToolActionsProvider } from './contexts/ToolActionsContext.js';
18
- import { IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, flattenMemory, writeToStdout, disableMouseEvents, enterAlternateScreen, enableMouseEvents, disableLineWrapping, shouldEnterAlternateScreen, startupProfiler, SessionStartSource, SessionEndReason, generateSummary, ChangeAuthRequestedError, } from '@google/gemini-cli-core';
17
+ import { MouseProvider } from './contexts/MouseContext.js';
18
+ import { ScrollProvider } from './contexts/ScrollProvider.js';
19
+ import { IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, recordExitFail, ShellExecutionService, saveApiKey, debugLogger, coreEvents, CoreEvent, refreshServerHierarchicalMemory, flattenMemory, writeToStdout, disableMouseEvents, enterAlternateScreen, enableMouseEvents, disableLineWrapping, shouldEnterAlternateScreen, startupProfiler, SessionStartSource, SessionEndReason, generateSummary, ChangeAuthRequestedError, ProjectIdRequiredError, buildUserSteeringHintPrompt, logBillingEvent, ApiKeyUpdatedEvent, startMemoryService, } from '@google/gemini-cli-core';
19
20
  import { validateAuthMethod } from '../config/auth.js';
20
21
  import process from 'node:process';
21
22
  import { useHistory } from './hooks/useHistoryManager.js';
@@ -28,10 +29,10 @@ import { useSettingsCommand } from './hooks/useSettingsCommand.js';
28
29
  import { useModelCommand } from './hooks/useModelCommand.js';
29
30
  import { useSlashCommandProcessor } from './hooks/slashCommandProcessor.js';
30
31
  import { useVimMode } from './contexts/VimModeContext.js';
31
- import { useConsoleMessages } from './hooks/useConsoleMessages.js';
32
+ import { useOverflowActions, useOverflowState, } from './contexts/OverflowContext.js';
33
+ import { useErrorCount } from './hooks/useConsoleMessages.js';
32
34
  import { useTerminalSize } from './hooks/useTerminalSize.js';
33
35
  import { calculatePromptWidths } from './components/InputPrompt.js';
34
- import { useApp, useStdout, useStdin } from 'ink';
35
36
  import { calculateMainAreaWidth } from './utils/ui-sizing.js';
36
37
  import ansiEscapes from 'ansi-escapes';
37
38
  import { basename } from 'node:path';
@@ -39,13 +40,14 @@ import { computeTerminalTitle } from '../utils/windowTitle.js';
39
40
  import { useTextBuffer } from './components/shared/text-buffer.js';
40
41
  import { useLogger } from './hooks/useLogger.js';
41
42
  import { useGeminiStream } from './hooks/useGeminiStream.js';
42
- import {} from './hooks/shellCommandProcessor.js';
43
+ import {} from './hooks/useExecutionLifecycle.js';
43
44
  import { useVim } from './hooks/vim.js';
44
45
  import { SettingScope } from '../config/settings.js';
45
46
  import {} from '../core/initializer.js';
46
47
  import { useFocus } from './hooks/useFocus.js';
47
48
  import { useKeypress } from './hooks/useKeypress.js';
48
- import { keyMatchers, Command } from './keyMatchers.js';
49
+ import { KeypressPriority } from './contexts/KeypressContext.js';
50
+ import { Command } from './key/keyMatchers.js';
49
51
  import { useLoadingIndicator } from './hooks/useLoadingIndicator.js';
50
52
  import { useShellInactivityStatus } from './hooks/useShellInactivityStatus.js';
51
53
  import { useFolderTrust } from './hooks/useFolderTrust.js';
@@ -55,7 +57,7 @@ import { appEvents, AppEvent, TransientMessageType } from '../utils/events.js';
55
57
  import {} from './utils/updateCheck.js';
56
58
  import { setUpdateHandler } from '../utils/handleAutoUpdate.js';
57
59
  import { registerCleanup, runExitCleanup } from '../utils/cleanup.js';
58
- import { RELAUNCH_EXIT_CODE } from '../utils/processUtils.js';
60
+ import { relaunchApp } from '../utils/processUtils.js';
59
61
  import { useMessageQueue } from './hooks/useMessageQueue.js';
60
62
  import { useMcpStatus } from './hooks/useMcpStatus.js';
61
63
  import { useApprovalModeIndicator } from './hooks/useApprovalModeIndicator.js';
@@ -70,33 +72,29 @@ import { useSessionBrowser } from './hooks/useSessionBrowser.js';
70
72
  import { useSessionResume } from './hooks/useSessionResume.js';
71
73
  import { useIncludeDirsTrust } from './hooks/useIncludeDirsTrust.js';
72
74
  import { isWorkspaceTrusted } from '../config/trustedFolders.js';
73
- import { useAlternateBuffer } from './hooks/useAlternateBuffer.js';
74
75
  import { useSettings } from './contexts/SettingsContext.js';
75
76
  import { terminalCapabilityManager } from './utils/terminalCapabilityManager.js';
76
77
  import { useInputHistoryStore } from './hooks/useInputHistoryStore.js';
77
78
  import { useBanner } from './hooks/useBanner.js';
79
+ import { useTerminalSetupPrompt } from './utils/terminalSetup.js';
78
80
  import { useHookDisplayState } from './hooks/useHookDisplayState.js';
79
- import { useBackgroundShellManager } from './hooks/useBackgroundShellManager.js';
80
- import { WARNING_PROMPT_DURATION_MS, QUEUE_ERROR_DISPLAY_DURATION_MS, } from './constants.js';
81
+ import { useBackgroundTaskManager } from './hooks/useBackgroundTaskManager.js';
82
+ import { WARNING_PROMPT_DURATION_MS, QUEUE_ERROR_DISPLAY_DURATION_MS, EXPAND_HINT_DURATION_MS, } from './constants.js';
81
83
  import { LoginWithGoogleRestartDialog } from './auth/LoginWithGoogleRestartDialog.js';
82
84
  import { NewAgentsChoice } from './components/NewAgentsNotification.js';
83
85
  import { isSlashCommand } from './utils/commandUtils.js';
86
+ import { parseSlashCommand } from '../utils/commands.js';
84
87
  import { useTerminalTheme } from './hooks/useTerminalTheme.js';
85
88
  import { useTimedMessage } from './hooks/useTimedMessage.js';
86
- import { isITerm2 } from './utils/terminalUtils.js';
87
- function isToolExecuting(pendingHistoryItems) {
88
- return pendingHistoryItems.some((item) => {
89
- if (item && item.type === 'tool_group') {
90
- return item.tools.some((tool) => ToolCallStatus.Executing === tool.status);
91
- }
92
- return false;
93
- });
94
- }
95
- function isToolAwaitingConfirmation(pendingHistoryItems) {
96
- return pendingHistoryItems
97
- .filter((item) => item.type === 'tool_group')
98
- .some((item) => item.tools.some((tool) => ToolCallStatus.Confirming === tool.status));
99
- }
89
+ import { useIsHelpDismissKey } from './utils/shortcutsHelp.js';
90
+ import { useSuspend } from './hooks/useSuspend.js';
91
+ import { useRunEventNotifications } from './hooks/useRunEventNotifications.js';
92
+ import { isNotificationsEnabled } from '../utils/terminalNotifications.js';
93
+ import { getLastTurnToolCallIds, isToolExecuting, isToolAwaitingConfirmation, getAllToolCalls, } from './utils/historyUtils.js';
94
+ import { useRepeatedKeyPress } from './hooks/useRepeatedKeyPress.js';
95
+ import { useVisibilityToggle, APPROVAL_MODE_REVEAL_DURATION_MS, } from './hooks/useVisibilityToggle.js';
96
+ import { useKeyMatchers } from './hooks/useKeyMatchers.js';
97
+ import { InputContext } from './contexts/InputContext.js';
100
98
  /**
101
99
  * The fraction of the terminal width to allocate to the shell.
102
100
  * This provides horizontal padding.
@@ -108,14 +106,33 @@ const SHELL_WIDTH_FRACTION = 0.89;
108
106
  */
109
107
  const SHELL_HEIGHT_PADDING = 10;
110
108
  export const AppContainer = (props) => {
109
+ const isHelpDismissKey = useIsHelpDismissKey();
110
+ const keyMatchers = useKeyMatchers();
111
111
  const { config, initializationResult, resumedSessionData } = props;
112
112
  const settings = useSettings();
113
+ const { reset } = useOverflowActions();
114
+ const notificationsEnabled = isNotificationsEnabled(settings);
115
+ const { setOptions, dumpCurrentFrame, startRecording, stopRecording } = useContext(InkAppContext);
116
+ const recordingFilenameRef = useRef(null);
113
117
  const historyManager = useHistory({
114
118
  chatRecordingService: config.getGeminiClient()?.getChatRecordingService(),
115
119
  });
116
120
  useMemoryMonitor(historyManager);
117
- const isAlternateBuffer = useAlternateBuffer();
121
+ const isAlternateBuffer = config.getUseAlternateBuffer();
122
+ const [mouseMode, setMouseMode] = useState(() => config.getUseAlternateBuffer());
123
+ useEffect(() => {
124
+ setOptions({
125
+ stickyHeadersInBackbuffer: mouseMode,
126
+ });
127
+ if (mouseMode) {
128
+ enableMouseEvents();
129
+ }
130
+ else {
131
+ disableMouseEvents();
132
+ }
133
+ }, [mouseMode, setOptions]);
118
134
  const [corgiMode, setCorgiMode] = useState(false);
135
+ const [forceRerenderKey, setForceRerenderKey] = useState(0);
119
136
  const [debugMessage, setDebugMessage] = useState('');
120
137
  const [awaitingFeedback, setAwaitingFeedback] = useState(false);
121
138
  const [quittingMessages, setQuittingMessages] = useState(null);
@@ -127,10 +144,37 @@ export const AppContainer = (props) => {
127
144
  const [customDialog, setCustomDialog] = useState(null);
128
145
  const [copyModeEnabled, setCopyModeEnabled] = useState(false);
129
146
  const [pendingRestorePrompt, setPendingRestorePrompt] = useState(false);
130
- const toggleBackgroundShellRef = useRef(() => { });
131
- const isBackgroundShellVisibleRef = useRef(false);
132
- const backgroundShellsRef = useRef(new Map());
147
+ const toggleBackgroundTasksRef = useRef(() => { });
148
+ const isBackgroundTaskVisibleRef = useRef(false);
149
+ const backgroundTasksRef = useRef(new Map());
133
150
  const [adminSettingsChanged, setAdminSettingsChanged] = useState(false);
151
+ const [expandedTools, setExpandedTools] = useState(new Set());
152
+ const toggleExpansion = useCallback((callId) => {
153
+ setExpandedTools((prev) => {
154
+ const next = new Set(prev);
155
+ if (next.has(callId)) {
156
+ next.delete(callId);
157
+ }
158
+ else {
159
+ next.add(callId);
160
+ }
161
+ return next;
162
+ });
163
+ }, []);
164
+ const toggleAllExpansion = useCallback((callIds) => {
165
+ setExpandedTools((prev) => {
166
+ const next = new Set(prev);
167
+ const anyCollapsed = callIds.some((id) => !next.has(id));
168
+ if (anyCollapsed) {
169
+ callIds.forEach((id) => next.add(id));
170
+ }
171
+ else {
172
+ callIds.forEach((id) => next.delete(id));
173
+ }
174
+ return next;
175
+ });
176
+ }, []);
177
+ const isExpanded = useCallback((callId) => expandedTools.has(callId), [expandedTools]);
134
178
  const [shellModeActive, setShellModeActive] = useState(false);
135
179
  const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] = useState(false);
136
180
  const [historyRemountKey, setHistoryRemountKey] = useState(0);
@@ -138,8 +182,30 @@ export const AppContainer = (props) => {
138
182
  const activeHooks = useHookDisplayState();
139
183
  const [updateInfo, setUpdateInfo] = useState(null);
140
184
  const [isTrustedFolder, setIsTrustedFolder] = useState(() => isWorkspaceTrusted(settings.merged).isTrusted);
141
- const [queueErrorMessage, setQueueErrorMessage] = useState(null);
185
+ const [queueErrorMessage, setQueueErrorMessage] = useTimedMessage(QUEUE_ERROR_DISPLAY_DURATION_MS);
142
186
  const [newAgents, setNewAgents] = useState(null);
187
+ const [constrainHeight, setConstrainHeight] = useState(true);
188
+ const [expandHintTrigger, triggerExpandHint] = useTimedMessage(EXPAND_HINT_DURATION_MS);
189
+ const showIsExpandableHint = Boolean(expandHintTrigger);
190
+ const overflowState = useOverflowState();
191
+ const overflowingIdsSize = overflowState?.overflowingIds.size ?? 0;
192
+ const hasOverflowState = overflowingIdsSize > 0 || !constrainHeight;
193
+ /**
194
+ * Manages the visibility and x-second timer for the expansion hint.
195
+ *
196
+ * This effect triggers the timer countdown whenever an overflow is detected
197
+ * or the user manually toggles the expansion state with Ctrl+O.
198
+ * By depending on overflowingIdsSize, the timer resets when *new* views
199
+ * overflow, but avoids infinitely resetting during single-view streaming.
200
+ *
201
+ * In alternate buffer mode, we don't trigger the hint automatically on overflow
202
+ * to avoid noise, but the user can still trigger it manually with Ctrl+O.
203
+ */
204
+ useEffect(() => {
205
+ if (hasOverflowState) {
206
+ triggerExpandHint(true);
207
+ }
208
+ }, [hasOverflowState, overflowingIdsSize, triggerExpandHint]);
143
209
  const [defaultBannerText, setDefaultBannerText] = useState('');
144
210
  const [warningBannerText, setWarningBannerText] = useState('');
145
211
  const [bannerVisible, setBannerVisible] = useState(true);
@@ -194,6 +260,7 @@ export const AppContainer = (props) => {
194
260
  ? { remaining, limit, resetTime }
195
261
  : undefined;
196
262
  });
263
+ const [paidTier, setPaidTier] = useState(undefined);
197
264
  const [isConfigInitialized, setConfigInitialized] = useState(false);
198
265
  const logger = useLogger(config.storage);
199
266
  const { inputHistory, addInput, initializeFromLogger } = useInputHistoryStore();
@@ -208,7 +275,6 @@ export const AppContainer = (props) => {
208
275
  const feedbackService = useMemo(() => new FeedbackService(config), [config]);
209
276
  const feedbackPromiseResolveRef = useRef(() => { });
210
277
  // Layout measurements
211
- const mainControlsRef = useRef(null);
212
278
  // For performance profiling only
213
279
  const rootUiRef = useRef(null);
214
280
  const lastTitleRef = useRef(null);
@@ -218,9 +284,17 @@ export const AppContainer = (props) => {
218
284
  (async () => {
219
285
  // Note: the program will not work if this fails so let errors be
220
286
  // handled by the global catch.
221
- await config.initialize();
287
+ if (!config.isInitialized()) {
288
+ await config.initialize();
289
+ }
222
290
  setConfigInitialized(true);
223
291
  startupProfiler.flush(config);
292
+ // Fire-and-forget memory service (skill extraction from past sessions)
293
+ if (config.isMemoryManagerEnabled()) {
294
+ startMemoryService(config).catch((e) => {
295
+ debugLogger.error('Failed to start memory service:', e);
296
+ });
297
+ }
224
298
  const sessionStartSource = resumedSessionData
225
299
  ? SessionStartSource.Resume
226
300
  : SessionStartSource.Startup;
@@ -254,9 +328,7 @@ export const AppContainer = (props) => {
254
328
  // Turn off mouse scroll.
255
329
  disableMouseEvents();
256
330
  // Kill all background shells
257
- for (const pid of backgroundShellsRef.current.keys()) {
258
- ShellExecutionService.kill(pid);
259
- }
331
+ await Promise.all(Array.from(backgroundTasksRef.current.keys()).map((pid) => ShellExecutionService.kill(pid)));
260
332
  const ideClient = await IdeClient.getInstance();
261
333
  await ideClient.disconnect();
262
334
  // Fire SessionEnd hook on cleanup (only if hooks are enabled)
@@ -307,9 +379,9 @@ export const AppContainer = (props) => {
307
379
  coreEvents.off(CoreEvent.AdminSettingsChanged, handleAdminSettingsChanged);
308
380
  coreEvents.off(CoreEvent.AgentsDiscovered, handleAgentsDiscovered);
309
381
  };
310
- }, []);
311
- const { consoleMessages, clearConsoleMessages: clearConsoleMessagesState } = useConsoleMessages();
312
- const mainAreaWidth = calculateMainAreaWidth(terminalWidth, settings);
382
+ }, [settings]);
383
+ const { errorCount, clearErrorCount } = useErrorCount();
384
+ const mainAreaWidth = calculateMainAreaWidth(terminalWidth, config);
313
385
  // Derive widths for InputPrompt using shared helper
314
386
  const { inputWidth, suggestionsWidth } = useMemo(() => {
315
387
  const { inputWidth, suggestionsWidth } = calculatePromptWidths(mainAreaWidth);
@@ -340,14 +412,20 @@ export const AppContainer = (props) => {
340
412
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
341
413
  initializeFromLogger(logger);
342
414
  }, [logger, initializeFromLogger]);
415
+ // One-time prompt to suggest running /terminal-setup when it would help.
416
+ useTerminalSetupPrompt({
417
+ addConfirmUpdateExtensionRequest,
418
+ addItem: historyManager.addItem,
419
+ });
343
420
  const refreshStatic = useCallback(() => {
344
- if (!isAlternateBuffer) {
421
+ if (!isAlternateBuffer && !config.getUseTerminalBuffer()) {
345
422
  stdout.write(ansiEscapes.clearTerminal);
423
+ setHistoryRemountKey((prev) => prev + 1);
346
424
  }
347
- setHistoryRemountKey((prev) => prev + 1);
348
- }, [setHistoryRemountKey, isAlternateBuffer, stdout]);
425
+ }, [setHistoryRemountKey, isAlternateBuffer, stdout, config]);
426
+ const shouldUseAlternateScreen = shouldEnterAlternateScreen(isAlternateBuffer, config.getScreenReader());
349
427
  const handleEditorClose = useCallback(() => {
350
- if (shouldEnterAlternateScreen(isAlternateBuffer, config.getScreenReader())) {
428
+ if (shouldUseAlternateScreen) {
351
429
  // The editor may have exited alternate buffer mode so we need to
352
430
  // enter it again to be safe.
353
431
  enterAlternateScreen();
@@ -357,7 +435,7 @@ export const AppContainer = (props) => {
357
435
  }
358
436
  terminalCapabilityManager.enableSupportedModes();
359
437
  refreshStatic();
360
- }, [refreshStatic, isAlternateBuffer, app, config]);
438
+ }, [refreshStatic, shouldUseAlternateScreen, app]);
361
439
  const [editorError, setEditorError] = useState(null);
362
440
  const { isEditorDialogOpen, openEditorDialog, handleEditorSelect, exitEditorDialog, } = useEditorSettings(settings, setEditorError, historyManager.addItem);
363
441
  useEffect(() => {
@@ -378,10 +456,10 @@ export const AppContainer = (props) => {
378
456
  }
379
457
  }, [bannerVisible, bannerText, settings, config, refreshStatic]);
380
458
  const { isSettingsDialogOpen, openSettingsDialog, closeSettingsDialog } = useSettingsCommand();
381
- const { isThemeDialogOpen, openThemeDialog, closeThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, historyManager.addItem, initializationResult.themeError);
459
+ const { isThemeDialogOpen, openThemeDialog, closeThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, historyManager.addItem, initializationResult.themeError, refreshStatic);
382
460
  // Poll for terminal background color changes to auto-switch theme
383
- useTerminalTheme(handleThemeSelect, config);
384
- const { authState, setAuthState, authError, authInfo, setAuthInfo, onAuthError, apiKeyDefaultValue, reloadApiKey, } = useAuthCommand(settings, config, initializationResult.authError);
461
+ useTerminalTheme(handleThemeSelect, config, refreshStatic);
462
+ const { authState, setAuthState, authError, authInfo, setAuthInfo, onAuthError, apiKeyDefaultValue, reloadApiKey, accountSuspensionInfo, setAccountSuspensionInfo, } = useAuthCommand(settings, config, initializationResult.authError, initializationResult.accountSuspensionInfo);
385
463
  const [authContext, setAuthContext] = useState({});
386
464
  useEffect(() => {
387
465
  if (authState === AuthState.Authenticated && authContext.requiresRestart) {
@@ -389,16 +467,23 @@ export const AppContainer = (props) => {
389
467
  setAuthContext({});
390
468
  }
391
469
  }, [authState, authContext, setAuthState]);
392
- const { proQuotaRequest, handleProQuotaChoice, validationRequest, handleValidationChoice, } = useQuotaAndFallback({
470
+ const { proQuotaRequest, handleProQuotaChoice, validationRequest, handleValidationChoice,
471
+ // G1 AI Credits
472
+ overageMenuRequest, handleOverageMenuChoice, emptyWalletRequest, handleEmptyWalletChoice, } = useQuotaAndFallback({
393
473
  config,
394
474
  historyManager,
395
475
  userTier,
476
+ paidTier,
477
+ settings,
396
478
  setModelSwitchedFromQuotaError,
397
479
  onShowAuthSelection: () => setAuthState(AuthState.Updating),
480
+ errorVerbosity: settings.merged.ui.errorVerbosity,
398
481
  });
399
482
  // Derive auth state variables for backward compatibility with UIStateContext
400
483
  const isAuthDialogOpen = authState === AuthState.Updating;
401
- const isAuthenticating = authState === AuthState.Unauthenticated;
484
+ // TODO: Consider handling other auth types that should also skip the blocking screen
485
+ const isAuthenticating = authState === AuthState.Unauthenticated &&
486
+ settings.merged.security.auth.selectedType !== AuthType.USE_GEMINI;
402
487
  // Session browser and resume functionality
403
488
  const isGeminiClientInitialized = config.getGeminiClient()?.isInitialized();
404
489
  const { loadHistoryForResume, isResuming } = useSessionResume({
@@ -413,11 +498,12 @@ export const AppContainer = (props) => {
413
498
  const { isSessionBrowserOpen, openSessionBrowser, closeSessionBrowser, handleResumeSession, handleDeleteSession: handleDeleteSessionSync, } = useSessionBrowser(config, loadHistoryForResume);
414
499
  // Wrap handleDeleteSession to return a Promise for UIActions interface
415
500
  const handleDeleteSession = useCallback(async (session) => {
416
- handleDeleteSessionSync(session);
501
+ await handleDeleteSessionSync(session);
417
502
  }, [handleDeleteSessionSync]);
418
503
  // Create handleAuthSelect wrapper for backward compatibility
419
504
  const handleAuthSelect = useCallback(async (authType, scope) => {
420
505
  if (authType) {
506
+ const previousAuthType = config.getContentGeneratorConfig()?.authType ?? 'unknown';
421
507
  if (authType === AuthType.LOGIN_WITH_GOOGLE) {
422
508
  setAuthContext({ requiresRestart: true });
423
509
  }
@@ -427,27 +513,34 @@ export const AppContainer = (props) => {
427
513
  await clearCachedCredentialFile();
428
514
  settings.setValue(scope, 'security.auth.selectedType', authType);
429
515
  try {
516
+ config.setRemoteAdminSettings(undefined);
430
517
  setAuthInfo(null);
431
518
  await config.refreshAuth(authType, (msg) => setAuthInfo(msg));
432
519
  setAuthInfo(null);
433
520
  setAuthState(AuthState.Authenticated);
521
+ logBillingEvent(config, new ApiKeyUpdatedEvent(previousAuthType, authType));
434
522
  }
435
523
  catch (e) {
436
524
  if (e instanceof ChangeAuthRequestedError) {
437
525
  return;
438
526
  }
527
+ if (e instanceof ProjectIdRequiredError) {
528
+ // OAuth succeeded but account setup requires project ID
529
+ // Show the error message directly without "Failed to authenticate" prefix
530
+ onAuthError(getErrorMessage(e));
531
+ return;
532
+ }
439
533
  onAuthError(`Failed to authenticate: ${e instanceof Error ? e.message : String(e)}`);
440
534
  return;
441
535
  }
442
536
  if (authType === AuthType.LOGIN_WITH_GOOGLE &&
443
537
  config.isBrowserLaunchSuppressed()) {
444
- await runExitCleanup();
445
538
  writeToStdout(`
446
539
  ----------------------------------------------------------------
447
540
  Logging in with Google... Restarting Cell CLI to continue.
448
541
  ----------------------------------------------------------------
449
542
  `);
450
- process.exit(RELAUNCH_EXIT_CODE);
543
+ await relaunchApp();
451
544
  }
452
545
  }
453
546
  setAuthState(AuthState.Authenticated);
@@ -477,6 +570,7 @@ Logging in with Google... Restarting Cell CLI to continue.
477
570
  // Only sync when not currently authenticating
478
571
  if (authState === AuthState.Authenticated) {
479
572
  setUserTier(config.getUserTier());
573
+ setPaidTier(config.getUserPaidTier());
480
574
  }
481
575
  }, [config, authState]);
482
576
  // Check for enforced auth type mismatch
@@ -508,8 +602,9 @@ Logging in with Google... Restarting Cell CLI to continue.
508
602
  ]);
509
603
  const { isModelDialogOpen, openModelDialog, closeModelDialog } = useModelCommand();
510
604
  const { toggleVimEnabled } = useVimMode();
511
- const setIsBackgroundShellListOpenRef = useRef(() => { });
605
+ const setIsBackgroundTaskListOpenRef = useRef(() => { });
512
606
  const [shortcutsHelpVisible, setShortcutsHelpVisible] = useState(false);
607
+ const { cleanUiDetailsVisible, setCleanUiDetailsVisible, toggleCleanUiDetailsVisible, revealCleanUiDetailsTemporarily, } = useVisibilityToggle();
513
608
  const slashCommandActions = useMemo(() => ({
514
609
  openAuthDialog: () => setAuthState(AuthState.Updating),
515
610
  openThemeDialog,
@@ -554,15 +649,15 @@ Logging in with Google... Restarting Cell CLI to continue.
554
649
  toggleDebugProfiler,
555
650
  dispatchExtensionStateUpdate,
556
651
  addConfirmUpdateExtensionRequest,
557
- toggleBackgroundShell: () => {
558
- toggleBackgroundShellRef.current();
559
- if (!isBackgroundShellVisibleRef.current) {
652
+ toggleBackgroundTasks: () => {
653
+ toggleBackgroundTasksRef.current();
654
+ if (!isBackgroundTaskVisibleRef.current) {
560
655
  setEmbeddedShellFocused(true);
561
- if (backgroundShellsRef.current.size > 1) {
562
- setIsBackgroundShellListOpenRef.current(true);
656
+ if (backgroundTasksRef.current.size > 1) {
657
+ setIsBackgroundTaskListOpenRef.current(true);
563
658
  }
564
659
  else {
565
- setIsBackgroundShellListOpenRef.current(false);
660
+ setIsBackgroundTaskListOpenRef.current(false);
566
661
  }
567
662
  }
568
663
  },
@@ -613,13 +708,24 @@ Logging in with Google... Restarting Cell CLI to continue.
613
708
  text: 'Refreshing hierarchical memory (GEMINI.md or other context files)...',
614
709
  }, Date.now());
615
710
  try {
616
- const { memoryContent, fileCount } = await refreshServerHierarchicalMemory(config);
617
- const flattenedMemory = flattenMemory(memoryContent);
711
+ let flattenedMemory;
712
+ let fileCount;
713
+ if (config.isJitContextEnabled()) {
714
+ await config.getMemoryContextManager()?.refresh();
715
+ config.updateSystemInstructionIfInitialized();
716
+ flattenedMemory = flattenMemory(config.getUserMemory());
717
+ fileCount = config.getGeminiMdFileCount();
718
+ }
719
+ else {
720
+ const result = await refreshServerHierarchicalMemory(config);
721
+ flattenedMemory = flattenMemory(result.memoryContent);
722
+ fileCount = result.fileCount;
723
+ }
618
724
  historyManager.addItem({
619
725
  type: MessageType.INFO,
620
- text: `Memory refreshed successfully. ${flattenedMemory.length > 0
621
- ? `Loaded ${flattenedMemory.length} characters from ${fileCount} file(s).`
622
- : 'No memory content found.'}`,
726
+ text: `Memory reloaded successfully. ${flattenedMemory.length > 0
727
+ ? `Loaded ${flattenedMemory.length} characters from ${fileCount} file(s)`
728
+ : 'No memory content found'}`,
623
729
  }, Date.now());
624
730
  if (config.getDebugMode()) {
625
731
  debugLogger.log(`[DEBUG] Refreshed memory content in config: ${flattenedMemory.substring(0, 200)}...`);
@@ -656,20 +762,45 @@ Logging in with Google... Restarting Cell CLI to continue.
656
762
  }
657
763
  }
658
764
  }, [pendingRestorePrompt, inputHistory, historyManager.history]);
659
- const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, pendingToolCalls, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, lastOutputTime, backgroundShellCount, isBackgroundShellVisible, toggleBackgroundShell, backgroundCurrentShell, backgroundShells, dismissBackgroundShell, retryStatus, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused);
660
- toggleBackgroundShellRef.current = toggleBackgroundShell;
661
- isBackgroundShellVisibleRef.current = isBackgroundShellVisible;
662
- backgroundShellsRef.current = backgroundShells;
663
- const { activeBackgroundShellPid, setIsBackgroundShellListOpen, isBackgroundShellListOpen, setActiveBackgroundShellPid, backgroundShellHeight, } = useBackgroundShellManager({
664
- backgroundShells,
665
- backgroundShellCount,
666
- isBackgroundShellVisible,
765
+ const pendingHintsRef = useRef([]);
766
+ const [pendingHintCount, setPendingHintCount] = useState(0);
767
+ const consumePendingHints = useCallback(() => {
768
+ if (pendingHintsRef.current.length === 0) {
769
+ return null;
770
+ }
771
+ const hint = pendingHintsRef.current.join('\n');
772
+ pendingHintsRef.current = [];
773
+ setPendingHintCount(0);
774
+ return hint;
775
+ }, []);
776
+ useEffect(() => {
777
+ const hintListener = (text, source) => {
778
+ if (source !== 'user_steering' && source !== 'background_completion') {
779
+ return;
780
+ }
781
+ pendingHintsRef.current.push(text);
782
+ setPendingHintCount((prev) => prev + 1);
783
+ };
784
+ config.injectionService.onInjection(hintListener);
785
+ return () => {
786
+ config.injectionService.offInjection(hintListener);
787
+ };
788
+ }, [config]);
789
+ const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, pendingToolCalls, handleApprovalModeChange, activePtyId, loopDetectionConfirmationRequest, lastOutputTime, backgroundTaskCount, isBackgroundTaskVisible, toggleBackgroundTasks, backgroundCurrentExecution, backgroundTasks, dismissBackgroundTask, retryStatus, } = useGeminiStream(config.getGeminiClient(), historyManager.history, historyManager.addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, onCancelSubmit, setEmbeddedShellFocused, terminalWidth, terminalHeight, embeddedShellFocused, consumePendingHints);
790
+ const pendingHistoryItems = useMemo(() => [...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems], [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
791
+ toggleBackgroundTasksRef.current = toggleBackgroundTasks;
792
+ isBackgroundTaskVisibleRef.current = isBackgroundTaskVisible;
793
+ backgroundTasksRef.current = backgroundTasks;
794
+ const { activeBackgroundTaskPid, setIsBackgroundTaskListOpen, isBackgroundTaskListOpen, setActiveBackgroundTaskPid, backgroundTaskHeight, } = useBackgroundTaskManager({
795
+ backgroundTasks,
796
+ backgroundTaskCount,
797
+ isBackgroundTaskVisible,
667
798
  activePtyId,
668
799
  embeddedShellFocused,
669
800
  setEmbeddedShellFocused,
670
801
  terminalHeight,
671
802
  });
672
- setIsBackgroundShellListOpenRef.current = setIsBackgroundShellListOpen;
803
+ setIsBackgroundTaskListOpenRef.current = setIsBackgroundTaskListOpen;
673
804
  const lastOutputTimeRef = useRef(0);
674
805
  useEffect(() => {
675
806
  lastOutputTimeRef.current = lastOutputTime;
@@ -684,13 +815,16 @@ Logging in with Google... Restarting Cell CLI to continue.
684
815
  });
685
816
  const shouldShowActionRequiredTitle = inactivityStatus === 'action_required';
686
817
  const shouldShowSilentWorkingTitle = inactivityStatus === 'silent_working';
687
- // Auto-accept indicator
688
- const showApprovalModeIndicator = useApprovalModeIndicator({
689
- config,
690
- addItem: historyManager.addItem,
691
- onApprovalModeChange: handleApprovalModeChange,
692
- isActive: !embeddedShellFocused,
693
- });
818
+ const handleApprovalModeChangeWithUiReveal = useCallback((mode) => {
819
+ void handleApprovalModeChange(mode);
820
+ if (!cleanUiDetailsVisible) {
821
+ revealCleanUiDetailsTemporarily(APPROVAL_MODE_REVEAL_DURATION_MS);
822
+ }
823
+ }, [
824
+ handleApprovalModeChange,
825
+ cleanUiDetailsVisible,
826
+ revealCleanUiDetailsTemporarily,
827
+ ]);
694
828
  const { isMcpReady } = useMcpStatus(config);
695
829
  const { messageQueue, addMessage, clearQueue, getQueuedMessagesText, popAllMessages, } = useMessageQueue({
696
830
  isConfigInitialized,
@@ -699,10 +833,6 @@ Logging in with Google... Restarting Cell CLI to continue.
699
833
  isMcpReady,
700
834
  });
701
835
  cancelHandlerRef.current = useCallback((shouldRestorePrompt = true) => {
702
- const pendingHistoryItems = [
703
- ...pendingSlashCommandHistoryItems,
704
- ...pendingGeminiHistoryItems,
705
- ];
706
836
  if (isToolAwaitingConfirmation(pendingHistoryItems)) {
707
837
  return; // Don't clear - user may be composing a follow-up message
708
838
  }
@@ -710,14 +840,20 @@ Logging in with Google... Restarting Cell CLI to continue.
710
840
  buffer.setText(''); // Clear for Ctrl+C cancellation
711
841
  return;
712
842
  }
843
+ // If cancelling (shouldRestorePrompt=false), never modify the buffer
844
+ // User is in control - preserve whatever text they typed, pasted, or restored
845
+ if (!shouldRestorePrompt) {
846
+ return;
847
+ }
848
+ // Restore the last message when shouldRestorePrompt=true
713
849
  const lastUserMessage = inputHistory.at(-1);
714
- let textToSet = shouldRestorePrompt ? lastUserMessage || '' : '';
850
+ let textToSet = lastUserMessage || '';
715
851
  const queuedText = getQueuedMessagesText();
716
852
  if (queuedText) {
717
853
  textToSet = textToSet ? `${textToSet}\n\n${queuedText}` : queuedText;
718
854
  clearQueue();
719
855
  }
720
- if (textToSet || !shouldRestorePrompt) {
856
+ if (textToSet) {
721
857
  buffer.setText(textToSet);
722
858
  }
723
859
  }, [
@@ -725,13 +861,49 @@ Logging in with Google... Restarting Cell CLI to continue.
725
861
  inputHistory,
726
862
  getQueuedMessagesText,
727
863
  clearQueue,
728
- pendingSlashCommandHistoryItems,
729
- pendingGeminiHistoryItems,
864
+ pendingHistoryItems,
730
865
  ]);
866
+ const handleHintSubmit = useCallback((hint) => {
867
+ const trimmed = hint.trim();
868
+ if (!trimmed) {
869
+ return;
870
+ }
871
+ config.injectionService.addInjection(trimmed, 'user_steering');
872
+ // Render hints with a distinct style.
873
+ historyManager.addItem({
874
+ type: 'hint',
875
+ text: trimmed,
876
+ });
877
+ }, [config, historyManager]);
731
878
  const handleFinalSubmit = useCallback(async (submittedValue) => {
879
+ reset();
880
+ // Explicitly hide the expansion hint and clear its x-second timer when a new turn begins.
881
+ triggerExpandHint(null);
882
+ if (!constrainHeight) {
883
+ setConstrainHeight(true);
884
+ if (!isAlternateBuffer) {
885
+ refreshStatic();
886
+ }
887
+ }
732
888
  const isSlash = isSlashCommand(submittedValue.trim());
733
889
  const isIdle = streamingState === StreamingState.Idle;
734
- if (isSlash || (isIdle && isMcpReady)) {
890
+ const isAgentRunning = streamingState === StreamingState.Responding ||
891
+ isToolExecuting(pendingHistoryItems);
892
+ if (isSlash && isAgentRunning) {
893
+ const { commandToExecute } = parseSlashCommand(submittedValue, slashCommands ?? []);
894
+ if (commandToExecute?.isSafeConcurrent) {
895
+ void handleSlashCommand(submittedValue);
896
+ addInput(submittedValue);
897
+ return;
898
+ }
899
+ }
900
+ if (config.isModelSteeringEnabled() && isAgentRunning && !isSlash) {
901
+ handleHintSubmit(submittedValue);
902
+ addInput(submittedValue);
903
+ return;
904
+ }
905
+ const isMcpOrConfigReady = isConfigInitialized && isMcpReady;
906
+ if ((isSlash && isConfigInitialized) || (isIdle && isMcpOrConfigReady)) {
735
907
  if (!isSlash) {
736
908
  const permissions = await checkPermissions(submittedValue, config);
737
909
  if (permissions.length > 0) {
@@ -753,8 +925,10 @@ Logging in with Google... Restarting Cell CLI to continue.
753
925
  }
754
926
  else {
755
927
  // Check messageQueue.length === 0 to only notify on the first queued item
756
- if (isIdle && !isMcpReady && messageQueue.length === 0) {
757
- coreEvents.emitFeedback('info', 'Waiting for MCP servers to initialize... Slash commands are still available and prompts will be queued.');
928
+ if (isIdle && !isMcpOrConfigReady && messageQueue.length === 0) {
929
+ coreEvents.emitFeedback('info', !isConfigInitialized
930
+ ? 'Initializing... Prompts will be queued.'
931
+ : 'Waiting for MCP servers to initialize... Slash commands are still available and prompts will be queued.');
758
932
  }
759
933
  addMessage(submittedValue);
760
934
  }
@@ -763,16 +937,36 @@ Logging in with Google... Restarting Cell CLI to continue.
763
937
  addMessage,
764
938
  addInput,
765
939
  submitQuery,
940
+ handleSlashCommand,
941
+ slashCommands,
766
942
  isMcpReady,
767
943
  streamingState,
768
944
  messageQueue.length,
945
+ pendingHistoryItems,
769
946
  config,
947
+ constrainHeight,
948
+ setConstrainHeight,
949
+ isAlternateBuffer,
950
+ refreshStatic,
951
+ reset,
952
+ handleHintSubmit,
953
+ isConfigInitialized,
954
+ triggerExpandHint,
770
955
  ]);
771
956
  const handleClearScreen = useCallback(() => {
957
+ reset();
958
+ // Explicitly hide the expansion hint and clear its x-second timer when clearing the screen.
959
+ triggerExpandHint(null);
772
960
  historyManager.clearItems();
773
- clearConsoleMessagesState();
961
+ clearErrorCount();
774
962
  refreshStatic();
775
- }, [historyManager, clearConsoleMessagesState, refreshStatic]);
963
+ }, [
964
+ historyManager,
965
+ clearErrorCount,
966
+ refreshStatic,
967
+ reset,
968
+ triggerExpandHint,
969
+ ]);
776
970
  const { handleInput: vimHandleInput } = useVim(buffer, handleFinalSubmit);
777
971
  /**
778
972
  * Determines if the input prompt should be active and accept user input.
@@ -782,38 +976,55 @@ Logging in with Google... Restarting Cell CLI to continue.
782
976
  * - Tool confirmations (WaitingForConfirmation state)
783
977
  * - Any future streaming states not explicitly allowed
784
978
  */
785
- const isInputActive = isConfigInitialized &&
786
- !initError &&
979
+ const isInputActive = !initError &&
787
980
  !isProcessing &&
788
981
  !isResuming &&
789
- !!slashCommands &&
790
982
  (streamingState === StreamingState.Idle ||
791
- streamingState === StreamingState.Responding) &&
983
+ streamingState === StreamingState.Responding ||
984
+ streamingState === StreamingState.WaitingForConfirmation) &&
792
985
  !proQuotaRequest;
986
+ const observerRef = useRef(null);
987
+ useEffect(() => () => {
988
+ observerRef.current?.disconnect();
989
+ }, []);
793
990
  const [controlsHeight, setControlsHeight] = useState(0);
991
+ const [lastNonCopyControlsHeight, setLastNonCopyControlsHeight] = useState(0);
794
992
  useLayoutEffect(() => {
795
- if (mainControlsRef.current) {
796
- const fullFooterMeasurement = measureElement(mainControlsRef.current);
797
- const roundedHeight = Math.round(fullFooterMeasurement.height);
798
- if (roundedHeight > 0 && roundedHeight !== controlsHeight) {
799
- setControlsHeight(roundedHeight);
800
- }
993
+ if (!copyModeEnabled && controlsHeight > 0) {
994
+ setLastNonCopyControlsHeight(controlsHeight);
995
+ }
996
+ }, [copyModeEnabled, controlsHeight]);
997
+ const stableControlsHeight = copyModeEnabled && lastNonCopyControlsHeight > 0
998
+ ? lastNonCopyControlsHeight
999
+ : controlsHeight;
1000
+ const mainControlsRef = useCallback((node) => {
1001
+ if (observerRef.current) {
1002
+ observerRef.current.disconnect();
1003
+ observerRef.current = null;
801
1004
  }
802
- }, [buffer, terminalWidth, terminalHeight, controlsHeight]);
803
- // Compute available terminal height based on controls measurement
804
- const availableTerminalHeight = Math.max(0, terminalHeight -
805
- controlsHeight -
806
- staticExtraHeight -
807
- 2 -
808
- backgroundShellHeight);
1005
+ if (node) {
1006
+ const observer = new ResizeObserver((entries) => {
1007
+ const entry = entries[0];
1008
+ if (entry) {
1009
+ const roundedHeight = Math.round(entry.contentRect.height);
1010
+ setControlsHeight((prev) => roundedHeight !== prev ? roundedHeight : prev);
1011
+ }
1012
+ });
1013
+ observer.observe(node);
1014
+ observerRef.current = observer;
1015
+ }
1016
+ }, []);
1017
+ // Compute available terminal height based on stable controls measurement
1018
+ const availableTerminalHeight = Math.max(0, terminalHeight - stableControlsHeight - backgroundTaskHeight - 1);
809
1019
  config.setShellExecutionConfig({
810
1020
  terminalWidth: Math.floor(terminalWidth * SHELL_WIDTH_FRACTION),
811
1021
  terminalHeight: Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1),
812
1022
  pager: settings.merged.tools.shell.pager,
813
1023
  showColor: settings.merged.tools.shell.showColor,
814
1024
  sanitizationConfig: config.sanitizationConfig,
1025
+ sandboxManager: config.sandboxManager,
815
1026
  });
816
- const isFocused = useFocus();
1027
+ const { isFocused, hasReceivedFocusEvent } = useFocus();
817
1028
  // Context file names computation
818
1029
  const contextFileNames = useMemo(() => {
819
1030
  const fromSettings = settings.merged.context.fileName;
@@ -827,21 +1038,6 @@ Logging in with Google... Restarting Cell CLI to continue.
827
1038
  const initialPrompt = useMemo(() => config.getQuestion(), [config]);
828
1039
  const initialPromptSubmitted = useRef(false);
829
1040
  const geminiClient = config.getGeminiClient();
830
- useEffect(() => {
831
- if (activePtyId) {
832
- try {
833
- ShellExecutionService.resizePty(activePtyId, Math.floor(terminalWidth * SHELL_WIDTH_FRACTION), Math.max(Math.floor(availableTerminalHeight - SHELL_HEIGHT_PADDING), 1));
834
- }
835
- catch (e) {
836
- // This can happen in a race condition where the pty exits
837
- // right before we try to resize it.
838
- if (!(e instanceof Error &&
839
- e.message.includes('Cannot resize a pty that has already exited'))) {
840
- throw e;
841
- }
842
- }
843
- }
844
- }, [terminalWidth, availableTerminalHeight, activePtyId]);
845
1041
  useEffect(() => {
846
1042
  if (initialPrompt &&
847
1043
  isConfigInitialized &&
@@ -884,16 +1080,29 @@ Logging in with Google... Restarting Cell CLI to continue.
884
1080
  const [showErrorDetails, setShowErrorDetails] = useState(false);
885
1081
  const [showFullTodos, setShowFullTodos] = useState(false);
886
1082
  const [renderMarkdown, setRenderMarkdown] = useState(true);
887
- const [ctrlCPressCount, setCtrlCPressCount] = useState(0);
888
- const ctrlCTimerRef = useRef(null);
889
- const [ctrlDPressCount, setCtrlDPressCount] = useState(0);
890
- const ctrlDTimerRef = useRef(null);
891
- const [constrainHeight, setConstrainHeight] = useState(true);
1083
+ const handleExitRepeat = useCallback((count) => {
1084
+ if (count > 2) {
1085
+ recordExitFail(config);
1086
+ }
1087
+ if (count > 1) {
1088
+ void handleSlashCommand('/quit', undefined, undefined, false);
1089
+ }
1090
+ }, [config, handleSlashCommand]);
1091
+ const { pressCount: ctrlCPressCount, handlePress: handleCtrlCPress } = useRepeatedKeyPress({
1092
+ windowMs: WARNING_PROMPT_DURATION_MS,
1093
+ onRepeat: handleExitRepeat,
1094
+ });
1095
+ const { pressCount: ctrlDPressCount, handlePress: handleCtrlDPress } = useRepeatedKeyPress({
1096
+ windowMs: WARNING_PROMPT_DURATION_MS,
1097
+ onRepeat: handleExitRepeat,
1098
+ });
892
1099
  const [ideContextState, setIdeContextState] = useState();
893
1100
  const [showEscapePrompt, setShowEscapePrompt] = useState(false);
894
1101
  const [showIdeRestartPrompt, setShowIdeRestartPrompt] = useState(false);
895
1102
  const [transientMessage, showTransientMessage] = useTimedMessage(WARNING_PROMPT_DURATION_MS);
896
- const { isFolderTrustDialogOpen, handleFolderTrustSelect, isRestarting } = useFolderTrust(settings, setIsTrustedFolder, historyManager.addItem);
1103
+ const { isFolderTrustDialogOpen, discoveryResults: folderDiscoveryResults, handleFolderTrustSelect, isRestarting, } = useFolderTrust(settings, setIsTrustedFolder, historyManager.addItem);
1104
+ const policyUpdateConfirmationRequest = config.getPolicyUpdateConfirmationRequest();
1105
+ const [isPolicyUpdateDialogOpen, setIsPolicyUpdateDialogOpen] = useState(!!policyUpdateConfirmationRequest);
897
1106
  const { needsRestart: ideNeedsRestart, restartReason: ideTrustRestartReason, } = useIdeTrustListener();
898
1107
  const isInitialMount = useRef(true);
899
1108
  useIncludeDirsTrust(config, isTrustedFolder, historyManager, setCustomDialog);
@@ -926,21 +1135,25 @@ Logging in with Google... Restarting Cell CLI to continue.
926
1135
  }
927
1136
  };
928
1137
  }, [showTransientMessage]);
1138
+ const handleWarning = useCallback((message) => {
1139
+ showTransientMessage({
1140
+ text: message,
1141
+ type: TransientMessageType.Warning,
1142
+ });
1143
+ }, [showTransientMessage]);
1144
+ const { handleSuspend } = useSuspend({
1145
+ handleWarning,
1146
+ setRawMode,
1147
+ refreshStatic,
1148
+ setForceRerenderKey,
1149
+ shouldUseAlternateScreen,
1150
+ });
929
1151
  useEffect(() => {
930
1152
  if (ideNeedsRestart) {
931
1153
  // IDE trust changed, force a restart.
932
1154
  setShowIdeRestartPrompt(true);
933
1155
  }
934
1156
  }, [ideNeedsRestart]);
935
- useEffect(() => {
936
- if (queueErrorMessage) {
937
- const timer = setTimeout(() => {
938
- setQueueErrorMessage(null);
939
- }, QUEUE_ERROR_DISPLAY_DURATION_MS);
940
- return () => clearTimeout(timer);
941
- }
942
- return undefined;
943
- }, [queueErrorMessage, setQueueErrorMessage]);
944
1157
  useEffect(() => {
945
1158
  if (isInitialMount.current) {
946
1159
  isInitialMount.current = false;
@@ -968,44 +1181,6 @@ Logging in with Google... Restarting Cell CLI to continue.
968
1181
  appEvents.off(AppEvent.OpenDebugConsole, openDebugConsole);
969
1182
  };
970
1183
  }, [config]);
971
- useEffect(() => {
972
- if (ctrlCTimerRef.current) {
973
- clearTimeout(ctrlCTimerRef.current);
974
- ctrlCTimerRef.current = null;
975
- }
976
- if (ctrlCPressCount > 2) {
977
- recordExitFail(config);
978
- }
979
- if (ctrlCPressCount > 1) {
980
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
981
- handleSlashCommand('/quit', undefined, undefined, false);
982
- }
983
- else if (ctrlCPressCount > 0) {
984
- ctrlCTimerRef.current = setTimeout(() => {
985
- setCtrlCPressCount(0);
986
- ctrlCTimerRef.current = null;
987
- }, WARNING_PROMPT_DURATION_MS);
988
- }
989
- }, [ctrlCPressCount, config, setCtrlCPressCount, handleSlashCommand]);
990
- useEffect(() => {
991
- if (ctrlDTimerRef.current) {
992
- clearTimeout(ctrlDTimerRef.current);
993
- ctrlCTimerRef.current = null;
994
- }
995
- if (ctrlDPressCount > 2) {
996
- recordExitFail(config);
997
- }
998
- if (ctrlDPressCount > 1) {
999
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
1000
- handleSlashCommand('/quit', undefined, undefined, false);
1001
- }
1002
- else if (ctrlDPressCount > 0) {
1003
- ctrlDTimerRef.current = setTimeout(() => {
1004
- setCtrlDPressCount(0);
1005
- ctrlDTimerRef.current = null;
1006
- }, WARNING_PROMPT_DURATION_MS);
1007
- }
1008
- }, [ctrlDPressCount, config, setCtrlDPressCount, handleSlashCommand]);
1009
1184
  const handleEscapePromptChange = useCallback((showPrompt) => {
1010
1185
  setShowEscapePrompt(showPrompt);
1011
1186
  }, []);
@@ -1020,22 +1195,21 @@ Logging in with Google... Restarting Cell CLI to continue.
1020
1195
  }
1021
1196
  setIdePromptAnswered(true);
1022
1197
  }, [handleSlashCommand, settings]);
1023
- const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator({
1024
- streamingState,
1025
- shouldShowFocusHint,
1026
- retryStatus,
1027
- });
1028
1198
  const handleGlobalKeypress = useCallback((key) => {
1029
- if (copyModeEnabled) {
1030
- setCopyModeEnabled(false);
1031
- enableMouseEvents();
1032
- // We don't want to process any other keys if we're in copy mode.
1033
- return true;
1034
- }
1035
1199
  // Debug log keystrokes if enabled
1036
1200
  if (settings.merged.general.debugKeystrokeLogging) {
1037
1201
  debugLogger.log('[DEBUG] Keystroke:', JSON.stringify(key));
1038
1202
  }
1203
+ if (shortcutsHelpVisible && isHelpDismissKey(key)) {
1204
+ setShortcutsHelpVisible(false);
1205
+ }
1206
+ if (keyMatchers[Command.TOGGLE_MOUSE_MODE](key)) {
1207
+ setMouseMode((prev) => !prev);
1208
+ if (mouseMode && !isAlternateBuffer) {
1209
+ appEvents.emit(AppEvent.ScrollToBottom);
1210
+ }
1211
+ return true;
1212
+ }
1039
1213
  if (isAlternateBuffer && keyMatchers[Command.TOGGLE_COPY_MODE](key)) {
1040
1214
  setCopyModeEnabled(true);
1041
1215
  disableMouseEvents();
@@ -1046,42 +1220,78 @@ Logging in with Google... Restarting Cell CLI to continue.
1046
1220
  // This should happen regardless of the count.
1047
1221
  cancelOngoingRequest?.();
1048
1222
  feedbackPromiseResolveRef.current(null);
1049
- setCtrlCPressCount((prev) => prev + 1);
1223
+ handleCtrlCPress();
1050
1224
  return true;
1051
1225
  }
1052
1226
  else if (keyMatchers[Command.EXIT](key)) {
1053
- setCtrlDPressCount((prev) => prev + 1);
1227
+ // If the input field is non-empty, do not exit.
1228
+ if (bufferRef.current.text.length > 0) {
1229
+ return false;
1230
+ }
1231
+ handleCtrlDPress();
1232
+ return true;
1233
+ }
1234
+ else if (keyMatchers[Command.SUSPEND_APP](key)) {
1235
+ handleSuspend();
1236
+ }
1237
+ else if (keyMatchers[Command.DUMP_FRAME](key)) {
1238
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
1239
+ const filename = `snapshot-${timestamp}.json`;
1240
+ if (dumpCurrentFrame) {
1241
+ dumpCurrentFrame(filename);
1242
+ debugLogger.log(`Dumped frame to: ${filename}`);
1243
+ }
1244
+ return true;
1245
+ }
1246
+ else if (keyMatchers[Command.START_RECORDING](key)) {
1247
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
1248
+ const filename = `recording-${timestamp}.json`;
1249
+ if (startRecording) {
1250
+ startRecording(filename);
1251
+ recordingFilenameRef.current = filename;
1252
+ debugLogger.log(`Started recording to: ${filename}`);
1253
+ }
1254
+ return true;
1255
+ }
1256
+ else if (keyMatchers[Command.STOP_RECORDING](key)) {
1257
+ if (stopRecording) {
1258
+ stopRecording();
1259
+ debugLogger.log(`Stopped recording, saved to: ${recordingFilenameRef.current ?? 'unknown'}`);
1260
+ recordingFilenameRef.current = null;
1261
+ }
1054
1262
  return true;
1055
1263
  }
1264
+ else if (keyMatchers[Command.TOGGLE_COPY_MODE](key) &&
1265
+ !isAlternateBuffer) {
1266
+ showTransientMessage({
1267
+ text: 'Use Ctrl+O to expand and collapse blocks of content.',
1268
+ type: TransientMessageType.Warning,
1269
+ });
1270
+ return true;
1271
+ }
1272
+ const toggleLastTurnTools = () => {
1273
+ triggerExpandHint(true);
1274
+ const targetToolCallIds = getLastTurnToolCallIds(historyManager.history, pendingHistoryItems);
1275
+ if (targetToolCallIds.length > 0) {
1276
+ toggleAllExpansion(targetToolCallIds);
1277
+ }
1278
+ };
1056
1279
  let enteringConstrainHeightMode = false;
1057
1280
  if (!constrainHeight) {
1058
1281
  enteringConstrainHeightMode = true;
1059
1282
  setConstrainHeight(true);
1283
+ if (keyMatchers[Command.SHOW_MORE_LINES](key)) {
1284
+ toggleLastTurnTools();
1285
+ }
1286
+ if (!isAlternateBuffer) {
1287
+ refreshStatic();
1288
+ }
1060
1289
  }
1061
1290
  if (keyMatchers[Command.SHOW_ERROR_DETAILS](key)) {
1062
1291
  if (settings.merged.general.devtools) {
1063
1292
  void (async () => {
1064
- try {
1065
- const { startDevToolsServer } = await import('../utils/devtoolsService.js');
1066
- const { openBrowserSecurely, shouldLaunchBrowser } = await import('@google/gemini-cli-core');
1067
- const url = await startDevToolsServer(config);
1068
- if (shouldLaunchBrowser()) {
1069
- try {
1070
- await openBrowserSecurely(url);
1071
- }
1072
- catch (e) {
1073
- setShowErrorDetails((prev) => !prev);
1074
- debugLogger.warn('Failed to open browser securely:', e);
1075
- }
1076
- }
1077
- else {
1078
- setShowErrorDetails((prev) => !prev);
1079
- }
1080
- }
1081
- catch (e) {
1082
- setShowErrorDetails(true);
1083
- debugLogger.error('Failed to start DevTools server:', e);
1084
- }
1293
+ const { toggleDevToolsPanel } = await import('../utils/devtoolsService.js');
1294
+ await toggleDevToolsPanel(config, showErrorDetails, () => setShowErrorDetails((prev) => !prev), () => setShowErrorDetails(true));
1085
1295
  })();
1086
1296
  }
1087
1297
  else {
@@ -1089,16 +1299,6 @@ Logging in with Google... Restarting Cell CLI to continue.
1089
1299
  }
1090
1300
  return true;
1091
1301
  }
1092
- else if (keyMatchers[Command.SUSPEND_APP](key)) {
1093
- const undoMessage = isITerm2()
1094
- ? 'Undo has been moved to Option + Z'
1095
- : 'Undo has been moved to Alt/Option + Z or Cmd + Z';
1096
- showTransientMessage({
1097
- text: undoMessage,
1098
- type: TransientMessageType.Warning,
1099
- });
1100
- return true;
1101
- }
1102
1302
  else if (keyMatchers[Command.SHOW_FULL_TODOS](key)) {
1103
1303
  setShowFullTodos((prev) => !prev);
1104
1304
  return true;
@@ -1122,11 +1322,13 @@ Logging in with Google... Restarting Cell CLI to continue.
1122
1322
  else if (keyMatchers[Command.SHOW_MORE_LINES](key) &&
1123
1323
  !enteringConstrainHeightMode) {
1124
1324
  setConstrainHeight(false);
1325
+ toggleLastTurnTools();
1326
+ refreshStatic();
1125
1327
  return true;
1126
1328
  }
1127
1329
  else if ((keyMatchers[Command.FOCUS_SHELL_INPUT](key) ||
1128
1330
  keyMatchers[Command.UNFOCUS_BACKGROUND_SHELL_LIST](key)) &&
1129
- (activePtyId || (isBackgroundShellVisible && backgroundShells.size > 0))) {
1331
+ (activePtyId || (isBackgroundTaskVisible && backgroundTasks.size > 0))) {
1130
1332
  if (embeddedShellFocused) {
1131
1333
  const capturedTime = lastOutputTimeRef.current;
1132
1334
  if (tabFocusTimeoutRef.current)
@@ -1145,13 +1347,13 @@ Logging in with Google... Restarting Cell CLI to continue.
1145
1347
  return false;
1146
1348
  }
1147
1349
  const isIdle = Date.now() - lastOutputTimeRef.current >= 100;
1148
- if (isIdle && !activePtyId && !isBackgroundShellVisible) {
1350
+ if (isIdle && !activePtyId && !isBackgroundTaskVisible) {
1149
1351
  if (tabFocusTimeoutRef.current)
1150
1352
  clearTimeout(tabFocusTimeoutRef.current);
1151
- toggleBackgroundShell();
1353
+ toggleBackgroundTasks();
1152
1354
  setEmbeddedShellFocused(true);
1153
- if (backgroundShells.size > 1)
1154
- setIsBackgroundShellListOpen(true);
1355
+ if (backgroundTasks.size > 1)
1356
+ setIsBackgroundTaskListOpen(true);
1155
1357
  return true;
1156
1358
  }
1157
1359
  setEmbeddedShellFocused(true);
@@ -1167,16 +1369,16 @@ Logging in with Google... Restarting Cell CLI to continue.
1167
1369
  }
1168
1370
  else if (keyMatchers[Command.TOGGLE_BACKGROUND_SHELL](key)) {
1169
1371
  if (activePtyId) {
1170
- backgroundCurrentShell();
1372
+ backgroundCurrentExecution();
1171
1373
  // After backgrounding, we explicitly do NOT show or focus the background UI.
1172
1374
  }
1173
1375
  else {
1174
- toggleBackgroundShell();
1376
+ toggleBackgroundTasks();
1175
1377
  // Toggle focus based on intent: if we were hiding, unfocus; if showing, focus.
1176
- if (!isBackgroundShellVisible && backgroundShells.size > 0) {
1378
+ if (!isBackgroundTaskVisible && backgroundTasks.size > 0) {
1177
1379
  setEmbeddedShellFocused(true);
1178
- if (backgroundShells.size > 1) {
1179
- setIsBackgroundShellListOpen(true);
1380
+ if (backgroundTasks.size > 1) {
1381
+ setIsBackgroundTaskListOpen(true);
1180
1382
  }
1181
1383
  }
1182
1384
  else {
@@ -1186,11 +1388,11 @@ Logging in with Google... Restarting Cell CLI to continue.
1186
1388
  return true;
1187
1389
  }
1188
1390
  else if (keyMatchers[Command.TOGGLE_BACKGROUND_SHELL_LIST](key)) {
1189
- if (backgroundShells.size > 0 && isBackgroundShellVisible) {
1391
+ if (backgroundTasks.size > 0 && isBackgroundTaskVisible) {
1190
1392
  if (!embeddedShellFocused) {
1191
1393
  setEmbeddedShellFocused(true);
1192
1394
  }
1193
- setIsBackgroundShellListOpen(true);
1395
+ setIsBackgroundTaskListOpen(true);
1194
1396
  }
1195
1397
  return true;
1196
1398
  }
@@ -1201,28 +1403,60 @@ Logging in with Google... Restarting Cell CLI to continue.
1201
1403
  setShowErrorDetails,
1202
1404
  config,
1203
1405
  ideContextState,
1204
- setCtrlCPressCount,
1205
- setCtrlDPressCount,
1406
+ handleCtrlCPress,
1407
+ handleCtrlDPress,
1206
1408
  handleSlashCommand,
1207
1409
  cancelOngoingRequest,
1208
1410
  activePtyId,
1411
+ handleSuspend,
1209
1412
  embeddedShellFocused,
1210
1413
  settings.merged.general.debugKeystrokeLogging,
1211
1414
  refreshStatic,
1212
1415
  setCopyModeEnabled,
1213
- copyModeEnabled,
1416
+ tabFocusTimeoutRef,
1214
1417
  isAlternateBuffer,
1215
- backgroundCurrentShell,
1216
- toggleBackgroundShell,
1217
- backgroundShells,
1218
- isBackgroundShellVisible,
1219
- setIsBackgroundShellListOpen,
1418
+ shortcutsHelpVisible,
1419
+ backgroundCurrentExecution,
1420
+ toggleBackgroundTasks,
1421
+ backgroundTasks,
1422
+ isBackgroundTaskVisible,
1423
+ setIsBackgroundTaskListOpen,
1220
1424
  lastOutputTimeRef,
1221
- tabFocusTimeoutRef,
1222
1425
  showTransientMessage,
1223
1426
  settings.merged.general.devtools,
1427
+ showErrorDetails,
1428
+ triggerExpandHint,
1429
+ keyMatchers,
1430
+ isHelpDismissKey,
1431
+ historyManager.history,
1432
+ pendingHistoryItems,
1433
+ toggleAllExpansion,
1434
+ dumpCurrentFrame,
1435
+ startRecording,
1436
+ stopRecording,
1437
+ mouseMode,
1224
1438
  ]);
1225
1439
  useKeypress(handleGlobalKeypress, { isActive: true, priority: true });
1440
+ useKeypress((key) => {
1441
+ if (keyMatchers[Command.SCROLL_UP](key) ||
1442
+ keyMatchers[Command.SCROLL_DOWN](key) ||
1443
+ keyMatchers[Command.PAGE_UP](key) ||
1444
+ keyMatchers[Command.PAGE_DOWN](key) ||
1445
+ keyMatchers[Command.SCROLL_HOME](key) ||
1446
+ keyMatchers[Command.SCROLL_END](key)) {
1447
+ return false;
1448
+ }
1449
+ setCopyModeEnabled(false);
1450
+ if (mouseMode) {
1451
+ enableMouseEvents();
1452
+ }
1453
+ return true;
1454
+ }, {
1455
+ isActive: copyModeEnabled,
1456
+ // We need to receive keypresses first so they do not bubble to other
1457
+ // handlers.
1458
+ priority: KeypressPriority.Critical,
1459
+ });
1226
1460
  useEffect(() => {
1227
1461
  // Respect hideWindowTitle settings
1228
1462
  if (settings.merged.ui.hideWindowTitle)
@@ -1279,27 +1513,28 @@ Logging in with Google... Restarting Cell CLI to continue.
1279
1513
  debugLogger.warn(`[Feedback Details for "${payload.message}"]`, payload.error);
1280
1514
  }
1281
1515
  };
1516
+ const handleHookSystemMessage = (payload) => {
1517
+ historyManager.addItem({
1518
+ type: MessageType.INFO,
1519
+ text: payload.message,
1520
+ source: payload.hookName,
1521
+ }, Date.now());
1522
+ };
1282
1523
  coreEvents.on(CoreEvent.UserFeedback, handleUserFeedback);
1524
+ coreEvents.on(CoreEvent.HookSystemMessage, handleHookSystemMessage);
1283
1525
  // Flush any messages that happened during startup before this component
1284
1526
  // mounted.
1285
1527
  coreEvents.drainBacklogs();
1286
1528
  return () => {
1287
1529
  coreEvents.off(CoreEvent.UserFeedback, handleUserFeedback);
1530
+ coreEvents.off(CoreEvent.HookSystemMessage, handleHookSystemMessage);
1288
1531
  };
1289
1532
  }, [historyManager]);
1290
- const filteredConsoleMessages = useMemo(() => {
1291
- if (config.getDebugMode()) {
1292
- return consoleMessages;
1293
- }
1294
- return consoleMessages.filter((msg) => msg.type !== 'debug');
1295
- }, [consoleMessages, config]);
1296
- // Computed values
1297
- const errorCount = useMemo(() => filteredConsoleMessages
1298
- .filter((msg) => msg.type === 'error')
1299
- .reduce((total, msg) => total + msg.count, 0), [filteredConsoleMessages]);
1300
1533
  const nightly = props.version.includes('nightly');
1301
1534
  const dialogsVisible = shouldShowIdePrompt ||
1535
+ shouldShowIdePrompt ||
1302
1536
  isFolderTrustDialogOpen ||
1537
+ isPolicyUpdateDialogOpen ||
1303
1538
  adminSettingsChanged ||
1304
1539
  !!commandConfirmationRequest ||
1305
1540
  !!authConsentRequest ||
@@ -1319,13 +1554,117 @@ Logging in with Google... Restarting Cell CLI to continue.
1319
1554
  showIdeRestartPrompt ||
1320
1555
  !!proQuotaRequest ||
1321
1556
  !!validationRequest ||
1557
+ !!overageMenuRequest ||
1558
+ !!emptyWalletRequest ||
1322
1559
  isSessionBrowserOpen ||
1323
1560
  authState === AuthState.AwaitingApiKeyInput ||
1324
1561
  !!newAgents;
1325
- const pendingHistoryItems = useMemo(() => [...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems], [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
1326
- const allToolCalls = useMemo(() => pendingHistoryItems
1327
- .filter((item) => item.type === 'tool_group')
1328
- .flatMap((item) => item.tools), [pendingHistoryItems]);
1562
+ const hasPendingToolConfirmation = useMemo(() => isToolAwaitingConfirmation(pendingHistoryItems), [pendingHistoryItems]);
1563
+ const hasConfirmUpdateExtensionRequests = confirmUpdateExtensionRequests.length > 0;
1564
+ const hasLoopDetectionConfirmationRequest = !!loopDetectionConfirmationRequest;
1565
+ const hasPendingActionRequired = hasPendingToolConfirmation ||
1566
+ !!commandConfirmationRequest ||
1567
+ !!authConsentRequest ||
1568
+ hasConfirmUpdateExtensionRequests ||
1569
+ hasLoopDetectionConfirmationRequest ||
1570
+ !!proQuotaRequest ||
1571
+ !!validationRequest ||
1572
+ !!overageMenuRequest ||
1573
+ !!emptyWalletRequest ||
1574
+ !!customDialog;
1575
+ const loadingPhrases = settings.merged.ui.loadingPhrases;
1576
+ const showStatusTips = loadingPhrases === 'tips' || loadingPhrases === 'all';
1577
+ const showStatusWit = loadingPhrases === 'witty' || loadingPhrases === 'all';
1578
+ const showLoadingIndicator = (!embeddedShellFocused || isBackgroundTaskVisible) &&
1579
+ streamingState === StreamingState.Responding &&
1580
+ !hasPendingActionRequired;
1581
+ let estimatedStatusLength = 0;
1582
+ if (activeHooks.length > 0 && settings.merged.hooksConfig.notifications) {
1583
+ const hookLabel = activeHooks.length > 1 ? 'Executing Hooks' : 'Executing Hook';
1584
+ const hookNames = activeHooks
1585
+ .map((h) => h.name +
1586
+ (h.index && h.total && h.total > 1 ? ` (${h.index}/${h.total})` : ''))
1587
+ .join(', ');
1588
+ estimatedStatusLength = hookLabel.length + hookNames.length + 10;
1589
+ }
1590
+ else if (showLoadingIndicator) {
1591
+ const thoughtText = thought?.subject || 'Waiting for model...';
1592
+ estimatedStatusLength = thoughtText.length + 25;
1593
+ }
1594
+ else if (hasPendingActionRequired) {
1595
+ estimatedStatusLength = 35;
1596
+ }
1597
+ const maxLength = terminalWidth - estimatedStatusLength - 5;
1598
+ const { elapsedTime, currentLoadingPhrase, currentTip, currentWittyPhrase } = useLoadingIndicator({
1599
+ streamingState,
1600
+ shouldShowFocusHint,
1601
+ retryStatus,
1602
+ showTips: showStatusTips,
1603
+ showWit: showStatusWit,
1604
+ customWittyPhrases: settings.merged.ui.customWittyPhrases,
1605
+ errorVerbosity: settings.merged.ui.errorVerbosity,
1606
+ maxLength,
1607
+ });
1608
+ const allowPlanMode = config.isPlanEnabled() &&
1609
+ streamingState === StreamingState.Idle &&
1610
+ !hasPendingActionRequired;
1611
+ const showApprovalModeIndicator = useApprovalModeIndicator({
1612
+ config,
1613
+ addItem: historyManager.addItem,
1614
+ onApprovalModeChange: handleApprovalModeChangeWithUiReveal,
1615
+ isActive: !embeddedShellFocused,
1616
+ allowPlanMode,
1617
+ });
1618
+ useRunEventNotifications({
1619
+ notificationsEnabled,
1620
+ isFocused,
1621
+ hasReceivedFocusEvent,
1622
+ streamingState,
1623
+ hasPendingActionRequired,
1624
+ pendingHistoryItems,
1625
+ commandConfirmationRequest,
1626
+ authConsentRequest,
1627
+ permissionConfirmationRequest,
1628
+ hasConfirmUpdateExtensionRequests,
1629
+ hasLoopDetectionConfirmationRequest,
1630
+ });
1631
+ const isPassiveShortcutsHelpState = isInputActive &&
1632
+ streamingState === StreamingState.Idle &&
1633
+ !hasPendingActionRequired;
1634
+ useEffect(() => {
1635
+ if (shortcutsHelpVisible && !isPassiveShortcutsHelpState) {
1636
+ setShortcutsHelpVisible(false);
1637
+ }
1638
+ }, [
1639
+ shortcutsHelpVisible,
1640
+ isPassiveShortcutsHelpState,
1641
+ setShortcutsHelpVisible,
1642
+ ]);
1643
+ useEffect(() => {
1644
+ if (!isConfigInitialized ||
1645
+ !config.isModelSteeringEnabled() ||
1646
+ streamingState !== StreamingState.Idle ||
1647
+ !isMcpReady ||
1648
+ isToolAwaitingConfirmation(pendingHistoryItems)) {
1649
+ return;
1650
+ }
1651
+ const pendingHint = consumePendingHints();
1652
+ if (!pendingHint) {
1653
+ return;
1654
+ }
1655
+ void submitQuery([{ text: buildUserSteeringHintPrompt(pendingHint) }]);
1656
+ }, [
1657
+ config,
1658
+ historyManager,
1659
+ isConfigInitialized,
1660
+ isMcpReady,
1661
+ streamingState,
1662
+ submitQuery,
1663
+ consumePendingHints,
1664
+ pendingHistoryItems,
1665
+ pendingHintCount,
1666
+ ]);
1667
+ const allToolCalls = useMemo(() => getAllToolCalls(pendingHistoryItems), [pendingHistoryItems]);
1329
1668
  const [geminiMdFileCount, setGeminiMdFileCount] = useState(config.getGeminiMdFileCount());
1330
1669
  useEffect(() => {
1331
1670
  const handleMemoryChanged = (result) => {
@@ -1340,8 +1679,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1340
1679
  let isMounted = true;
1341
1680
  const fetchBannerTexts = async () => {
1342
1681
  const [defaultBanner, warningBanner] = await Promise.all([
1343
- // TODO: temporarily disabling the banner, it will be re-added.
1344
- '',
1682
+ config.getBannerTextNoCapacityIssues(),
1345
1683
  config.getBannerTextCapacityIssues(),
1346
1684
  ]);
1347
1685
  if (isMounted) {
@@ -1356,6 +1694,23 @@ Logging in with Google... Restarting Cell CLI to continue.
1356
1694
  isMounted = false;
1357
1695
  };
1358
1696
  }, [config, refreshStatic]);
1697
+ const inputState = useMemo(() => ({
1698
+ buffer,
1699
+ userMessages: inputHistory,
1700
+ shellModeActive,
1701
+ showEscapePrompt,
1702
+ copyModeEnabled,
1703
+ inputWidth,
1704
+ suggestionsWidth,
1705
+ }), [
1706
+ buffer,
1707
+ inputHistory,
1708
+ shellModeActive,
1709
+ showEscapePrompt,
1710
+ copyModeEnabled,
1711
+ inputWidth,
1712
+ suggestionsWidth,
1713
+ ]);
1359
1714
  const uiState = useMemo(() => ({
1360
1715
  history: historyManager.history,
1361
1716
  historyManager,
@@ -1365,12 +1720,14 @@ Logging in with Google... Restarting Cell CLI to continue.
1365
1720
  isConfigInitialized,
1366
1721
  authError,
1367
1722
  authMessage: authError ?? authInfo ?? '',
1723
+ accountSuspensionInfo,
1368
1724
  isAuthDialogOpen,
1369
1725
  isAwaitingApiKeyInput: authState === AuthState.AwaitingApiKeyInput,
1370
1726
  apiKeyDefaultValue,
1371
1727
  editorError,
1372
1728
  isEditorDialogOpen,
1373
1729
  showPrivacyNotice,
1730
+ mouseMode,
1374
1731
  corgiMode,
1375
1732
  debugMessage,
1376
1733
  awaitingFeedback,
@@ -1401,44 +1758,48 @@ Logging in with Google... Restarting Cell CLI to continue.
1401
1758
  initError,
1402
1759
  pendingGeminiHistoryItems,
1403
1760
  thought,
1404
- shellModeActive,
1405
- userMessages: inputHistory,
1406
- buffer,
1407
- inputWidth,
1408
- suggestionsWidth,
1409
1761
  isInputActive,
1410
1762
  isResuming,
1411
1763
  shouldShowIdePrompt,
1412
1764
  isFolderTrustDialogOpen: isFolderTrustDialogOpen ?? false,
1765
+ folderDiscoveryResults,
1766
+ isPolicyUpdateDialogOpen,
1767
+ policyUpdateConfirmationRequest,
1413
1768
  isTrustedFolder,
1414
1769
  constrainHeight,
1415
1770
  showErrorDetails,
1416
1771
  showFullTodos,
1417
- filteredConsoleMessages,
1418
1772
  ideContextState,
1419
1773
  renderMarkdown,
1420
1774
  ctrlCPressedOnce: ctrlCPressCount >= 1,
1421
1775
  ctrlDPressedOnce: ctrlDPressCount >= 1,
1422
- showEscapePrompt,
1423
1776
  shortcutsHelpVisible,
1777
+ cleanUiDetailsVisible,
1424
1778
  isFocused,
1425
1779
  elapsedTime,
1426
1780
  currentLoadingPhrase,
1781
+ currentTip,
1782
+ currentWittyPhrase,
1427
1783
  historyRemountKey,
1428
1784
  activeHooks,
1429
1785
  messageQueue,
1430
1786
  queueErrorMessage,
1431
1787
  showApprovalModeIndicator,
1788
+ allowPlanMode,
1432
1789
  currentModel,
1433
1790
  quota: {
1434
1791
  userTier,
1435
1792
  stats: quotaStats,
1436
1793
  proQuotaRequest,
1437
1794
  validationRequest,
1795
+ // G1 AI Credits dialog state
1796
+ overageMenuRequest,
1797
+ emptyWalletRequest,
1438
1798
  },
1439
1799
  contextFileNames,
1440
1800
  errorCount,
1441
1801
  availableTerminalHeight,
1802
+ stableControlsHeight,
1442
1803
  mainAreaWidth,
1443
1804
  staticAreaMaxItemHeight,
1444
1805
  staticExtraHeight,
@@ -1458,23 +1819,25 @@ Logging in with Google... Restarting Cell CLI to continue.
1458
1819
  isRestarting,
1459
1820
  extensionsUpdateState,
1460
1821
  activePtyId,
1461
- backgroundShellCount,
1462
- isBackgroundShellVisible,
1822
+ backgroundTaskCount,
1823
+ isBackgroundTaskVisible,
1463
1824
  embeddedShellFocused,
1464
1825
  showDebugProfiler,
1465
1826
  customDialog,
1466
- copyModeEnabled,
1467
1827
  transientMessage,
1468
1828
  bannerData,
1469
1829
  bannerVisible,
1470
1830
  terminalBackgroundColor: config.getTerminalBackground(),
1471
1831
  settingsNonce,
1472
- backgroundShells,
1473
- activeBackgroundShellPid,
1474
- backgroundShellHeight,
1475
- isBackgroundShellListOpen,
1832
+ backgroundTasks,
1833
+ activeBackgroundTaskPid,
1834
+ backgroundTaskHeight,
1835
+ isBackgroundTaskListOpen,
1476
1836
  adminSettingsChanged,
1477
1837
  newAgents,
1838
+ showIsExpandableHint,
1839
+ hintMode: config.isModelSteeringEnabled() && isToolExecuting(pendingHistoryItems),
1840
+ hintBuffer: '',
1478
1841
  }), [
1479
1842
  isThemeDialogOpen,
1480
1843
  themeError,
@@ -1482,10 +1845,12 @@ Logging in with Google... Restarting Cell CLI to continue.
1482
1845
  isConfigInitialized,
1483
1846
  authError,
1484
1847
  authInfo,
1848
+ accountSuspensionInfo,
1485
1849
  isAuthDialogOpen,
1486
1850
  editorError,
1487
1851
  isEditorDialogOpen,
1488
1852
  showPrivacyNotice,
1853
+ mouseMode,
1489
1854
  corgiMode,
1490
1855
  debugMessage,
1491
1856
  quittingMessages,
@@ -1511,41 +1876,44 @@ Logging in with Google... Restarting Cell CLI to continue.
1511
1876
  initError,
1512
1877
  pendingGeminiHistoryItems,
1513
1878
  thought,
1514
- shellModeActive,
1515
- inputHistory,
1516
- buffer,
1517
- inputWidth,
1518
- suggestionsWidth,
1519
1879
  isInputActive,
1520
1880
  isResuming,
1521
1881
  shouldShowIdePrompt,
1522
1882
  isFolderTrustDialogOpen,
1883
+ folderDiscoveryResults,
1884
+ isPolicyUpdateDialogOpen,
1885
+ policyUpdateConfirmationRequest,
1523
1886
  isTrustedFolder,
1524
1887
  constrainHeight,
1525
1888
  showErrorDetails,
1526
1889
  showFullTodos,
1527
- filteredConsoleMessages,
1528
1890
  ideContextState,
1529
1891
  renderMarkdown,
1530
1892
  ctrlCPressCount,
1531
1893
  ctrlDPressCount,
1532
- showEscapePrompt,
1533
1894
  shortcutsHelpVisible,
1895
+ cleanUiDetailsVisible,
1534
1896
  isFocused,
1535
1897
  elapsedTime,
1536
1898
  currentLoadingPhrase,
1899
+ currentTip,
1900
+ currentWittyPhrase,
1537
1901
  historyRemountKey,
1538
1902
  activeHooks,
1539
1903
  messageQueue,
1540
1904
  queueErrorMessage,
1541
1905
  showApprovalModeIndicator,
1906
+ allowPlanMode,
1542
1907
  userTier,
1543
1908
  quotaStats,
1544
1909
  proQuotaRequest,
1545
1910
  validationRequest,
1911
+ overageMenuRequest,
1912
+ emptyWalletRequest,
1546
1913
  contextFileNames,
1547
1914
  errorCount,
1548
1915
  availableTerminalHeight,
1916
+ stableControlsHeight,
1549
1917
  mainAreaWidth,
1550
1918
  staticAreaMaxItemHeight,
1551
1919
  staticExtraHeight,
@@ -1566,8 +1934,8 @@ Logging in with Google... Restarting Cell CLI to continue.
1566
1934
  currentModel,
1567
1935
  extensionsUpdateState,
1568
1936
  activePtyId,
1569
- backgroundShellCount,
1570
- isBackgroundShellVisible,
1937
+ backgroundTaskCount,
1938
+ isBackgroundTaskVisible,
1571
1939
  historyManager,
1572
1940
  embeddedShellFocused,
1573
1941
  awaitingFeedback,
@@ -1575,18 +1943,18 @@ Logging in with Google... Restarting Cell CLI to continue.
1575
1943
  customDialog,
1576
1944
  apiKeyDefaultValue,
1577
1945
  authState,
1578
- copyModeEnabled,
1579
1946
  transientMessage,
1580
1947
  bannerData,
1581
1948
  bannerVisible,
1582
1949
  config,
1583
1950
  settingsNonce,
1584
- backgroundShellHeight,
1585
- isBackgroundShellListOpen,
1586
- activeBackgroundShellPid,
1587
- backgroundShells,
1951
+ backgroundTaskHeight,
1952
+ isBackgroundTaskListOpen,
1953
+ activeBackgroundTaskPid,
1954
+ backgroundTasks,
1588
1955
  adminSettingsChanged,
1589
1956
  newAgents,
1957
+ showIsExpandableHint,
1590
1958
  ]);
1591
1959
  const exitPrivacyNotice = useCallback(() => setShowPrivacyNotice(false), [setShowPrivacyNotice]);
1592
1960
  const uiActions = useMemo(() => ({
@@ -1609,6 +1977,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1609
1977
  vimHandleInput,
1610
1978
  handleIdePromptComplete,
1611
1979
  handleFolderTrustSelect,
1980
+ setIsPolicyUpdateDialogOpen,
1612
1981
  setConstrainHeight,
1613
1982
  onEscapePromptChange: handleEscapePromptChange,
1614
1983
  refreshStatic,
@@ -1616,21 +1985,33 @@ Logging in with Google... Restarting Cell CLI to continue.
1616
1985
  handleClearScreen,
1617
1986
  handleProQuotaChoice,
1618
1987
  handleValidationChoice,
1988
+ // G1 AI Credits handlers
1989
+ handleOverageMenuChoice,
1990
+ handleEmptyWalletChoice,
1619
1991
  openSessionBrowser,
1620
1992
  closeSessionBrowser,
1621
1993
  handleResumeSession,
1622
1994
  handleDeleteSession,
1623
1995
  setQueueErrorMessage,
1996
+ addMessage,
1624
1997
  popAllMessages,
1625
1998
  handleApiKeySubmit,
1626
1999
  handleApiKeyCancel,
1627
2000
  setBannerVisible,
1628
2001
  setShortcutsHelpVisible,
2002
+ setCleanUiDetailsVisible,
2003
+ toggleCleanUiDetailsVisible,
2004
+ revealCleanUiDetailsTemporarily,
2005
+ handleWarning,
1629
2006
  setEmbeddedShellFocused,
1630
- dismissBackgroundShell,
1631
- setActiveBackgroundShellPid,
1632
- setIsBackgroundShellListOpen,
2007
+ dismissBackgroundTask,
2008
+ setActiveBackgroundTaskPid,
2009
+ setIsBackgroundTaskListOpen,
1633
2010
  setAuthContext,
2011
+ onHintInput: () => { },
2012
+ onHintBackspace: () => { },
2013
+ onHintClear: () => { },
2014
+ onHintSubmit: () => { },
1634
2015
  handleRestart: async () => {
1635
2016
  if (process.send) {
1636
2017
  const remoteSettings = config.getRemoteAdminSettings();
@@ -1641,8 +2022,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1641
2022
  });
1642
2023
  }
1643
2024
  }
1644
- await runExitCleanup();
1645
- process.exit(RELAUNCH_EXIT_CODE);
2025
+ await relaunchApp();
1646
2026
  },
1647
2027
  handleNewAgentsSelect: async (choice) => {
1648
2028
  if (newAgents && choice === NewAgentsChoice.ACKNOWLEDGE) {
@@ -1660,6 +2040,11 @@ Logging in with Google... Restarting Cell CLI to continue.
1660
2040
  }
1661
2041
  setNewAgents(null);
1662
2042
  },
2043
+ getPreferredEditor,
2044
+ clearAccountSuspension: () => {
2045
+ setAccountSuspensionInfo(null);
2046
+ setAuthState(AuthState.Updating);
2047
+ },
1663
2048
  }), [
1664
2049
  handleThemeSelect,
1665
2050
  closeThemeDialog,
@@ -1680,6 +2065,7 @@ Logging in with Google... Restarting Cell CLI to continue.
1680
2065
  vimHandleInput,
1681
2066
  handleIdePromptComplete,
1682
2067
  handleFolderTrustSelect,
2068
+ setIsPolicyUpdateDialogOpen,
1683
2069
  setConstrainHeight,
1684
2070
  handleEscapePromptChange,
1685
2071
  refreshStatic,
@@ -1687,24 +2073,33 @@ Logging in with Google... Restarting Cell CLI to continue.
1687
2073
  handleClearScreen,
1688
2074
  handleProQuotaChoice,
1689
2075
  handleValidationChoice,
2076
+ handleOverageMenuChoice,
2077
+ handleEmptyWalletChoice,
1690
2078
  openSessionBrowser,
1691
2079
  closeSessionBrowser,
1692
2080
  handleResumeSession,
1693
2081
  handleDeleteSession,
1694
2082
  setQueueErrorMessage,
2083
+ addMessage,
1695
2084
  popAllMessages,
1696
2085
  handleApiKeySubmit,
1697
2086
  handleApiKeyCancel,
1698
2087
  setBannerVisible,
1699
2088
  setShortcutsHelpVisible,
2089
+ setCleanUiDetailsVisible,
2090
+ toggleCleanUiDetailsVisible,
2091
+ revealCleanUiDetailsTemporarily,
2092
+ handleWarning,
1700
2093
  setEmbeddedShellFocused,
1701
- dismissBackgroundShell,
1702
- setActiveBackgroundShellPid,
1703
- setIsBackgroundShellListOpen,
2094
+ dismissBackgroundTask,
2095
+ setActiveBackgroundTaskPid,
2096
+ setIsBackgroundTaskListOpen,
1704
2097
  setAuthContext,
2098
+ setAccountSuspensionInfo,
1705
2099
  newAgents,
1706
2100
  config,
1707
2101
  historyManager,
2102
+ getPreferredEditor,
1708
2103
  ]);
1709
2104
  if (authState === AuthState.AwaitingGoogleLoginRestart) {
1710
2105
  return (_jsx(LoginWithGoogleRestartDialog, { onDismiss: () => {
@@ -1712,9 +2107,9 @@ Logging in with Google... Restarting Cell CLI to continue.
1712
2107
  setAuthState(AuthState.Updating);
1713
2108
  }, config: config }));
1714
2109
  }
1715
- return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
1716
- version: props.version,
1717
- startupWarnings: props.startupWarnings || [],
1718
- }, children: _jsx(ToolActionsProvider, { config: config, toolCalls: allToolCalls, children: _jsx(ShellFocusContext.Provider, { value: isFocused, children: _jsx(App, {}) }) }) }) }) }) }));
2110
+ return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(InputContext.Provider, { value: inputState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
2111
+ version: props.version,
2112
+ startupWarnings: props.startupWarnings || [],
2113
+ }, children: _jsx(ToolActionsProvider, { config: config, toolCalls: allToolCalls, isExpanded: isExpanded, toggleExpansion: toggleExpansion, toggleAllExpansion: toggleAllExpansion, children: _jsx(ShellFocusContext.Provider, { value: isFocused, children: _jsx(MouseProvider, { mouseEventsEnabled: mouseMode, children: _jsx(ScrollProvider, { children: _jsx(App, {}, `app-${forceRerenderKey}`) }) }) }) }) }) }) }) }) }));
1719
2114
  };
1720
2115
  //# sourceMappingURL=AppContainer.js.map