@google/gemini-cli 0.30.1 → 0.31.0-preview.1

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 (727) hide show
  1. package/README.md +1 -1
  2. package/dist/google-gemini-cli-0.31.0-preview.0.tgz +0 -0
  3. package/dist/index.d.ts +1 -1
  4. package/dist/index.js +15 -2
  5. package/dist/index.js.map +1 -1
  6. package/dist/package.json +7 -6
  7. package/dist/src/commands/extensions/install.js +72 -4
  8. package/dist/src/commands/extensions/install.js.map +1 -1
  9. package/dist/src/commands/extensions/install.test.js +153 -20
  10. package/dist/src/commands/extensions/install.test.js.map +1 -1
  11. package/dist/src/commands/extensions/utils.js +1 -0
  12. package/dist/src/commands/extensions/utils.js.map +1 -1
  13. package/dist/src/config/config.js +17 -5
  14. package/dist/src/config/config.js.map +1 -1
  15. package/dist/src/config/config.test.js +79 -4
  16. package/dist/src/config/config.test.js.map +1 -1
  17. package/dist/src/config/extension-manager-hydration.test.js +2 -2
  18. package/dist/src/config/extension-manager-hydration.test.js.map +1 -1
  19. package/dist/src/config/extension-manager.js +10 -6
  20. package/dist/src/config/extension-manager.js.map +1 -1
  21. package/dist/src/config/extension.test.js +20 -20
  22. package/dist/src/config/extension.test.js.map +1 -1
  23. package/dist/src/config/extensionRegistryClient.js +3 -2
  24. package/dist/src/config/extensionRegistryClient.js.map +1 -1
  25. package/dist/src/config/extensionRegistryClient.test.js +52 -0
  26. package/dist/src/config/extensionRegistryClient.test.js.map +1 -1
  27. package/dist/src/config/extensions/consent.d.ts +10 -0
  28. package/dist/src/config/extensions/consent.js +10 -3
  29. package/dist/src/config/extensions/consent.js.map +1 -1
  30. package/dist/src/config/extensions/consent.test.js +1 -1
  31. package/dist/src/config/extensions/consent.test.js.map +1 -1
  32. package/dist/src/config/extensions/extensionEnablement.js +1 -0
  33. package/dist/src/config/extensions/extensionEnablement.js.map +1 -1
  34. package/dist/src/config/extensions/extensionSettings.js +20 -3
  35. package/dist/src/config/extensions/extensionSettings.js.map +1 -1
  36. package/dist/src/config/extensions/extensionSettings.test.js +16 -0
  37. package/dist/src/config/extensions/extensionSettings.test.js.map +1 -1
  38. package/dist/src/config/extensions/github.test.js +1 -1
  39. package/dist/src/config/extensions/github.test.js.map +1 -1
  40. package/dist/src/config/extensions/variables.js +3 -1
  41. package/dist/src/config/extensions/variables.js.map +1 -1
  42. package/dist/src/config/keyBindings.js +6 -2
  43. package/dist/src/config/keyBindings.js.map +1 -1
  44. package/dist/src/config/policy-engine.integration.test.js +51 -13
  45. package/dist/src/config/policy-engine.integration.test.js.map +1 -1
  46. package/dist/src/config/policy.d.ts +15 -3
  47. package/dist/src/config/policy.js +49 -4
  48. package/dist/src/config/policy.js.map +1 -1
  49. package/dist/src/config/policy.test.d.ts +6 -0
  50. package/dist/src/config/policy.test.js +152 -0
  51. package/dist/src/config/policy.test.js.map +1 -0
  52. package/dist/src/config/settings-validation.js +1 -1
  53. package/dist/src/config/settings-validation.js.map +1 -1
  54. package/dist/src/config/settings-validation.test.js +2 -3
  55. package/dist/src/config/settings-validation.test.js.map +1 -1
  56. package/dist/src/config/settings.d.ts +2 -0
  57. package/dist/src/config/settings.js +18 -20
  58. package/dist/src/config/settings.js.map +1 -1
  59. package/dist/src/config/settings.test.js +118 -18
  60. package/dist/src/config/settings.test.js.map +1 -1
  61. package/dist/src/config/settingsSchema.d.ts +171 -9
  62. package/dist/src/config/settingsSchema.js +159 -9
  63. package/dist/src/config/settingsSchema.js.map +1 -1
  64. package/dist/src/config/settingsSchema.test.js +26 -0
  65. package/dist/src/config/settingsSchema.test.js.map +1 -1
  66. package/dist/src/config/settings_repro.test.js +0 -1
  67. package/dist/src/config/settings_repro.test.js.map +1 -1
  68. package/dist/src/config/trustedFolders.test.js +3 -1
  69. package/dist/src/config/trustedFolders.test.js.map +1 -1
  70. package/dist/src/config/workspace-policy-cli.test.d.ts +6 -0
  71. package/dist/src/config/workspace-policy-cli.test.js +180 -0
  72. package/dist/src/config/workspace-policy-cli.test.js.map +1 -0
  73. package/dist/src/gemini.d.ts +2 -2
  74. package/dist/src/gemini.js +15 -5
  75. package/dist/src/gemini.js.map +1 -1
  76. package/dist/src/gemini.test.js +18 -2
  77. package/dist/src/gemini.test.js.map +1 -1
  78. package/dist/src/gemini_cleanup.test.js +27 -24
  79. package/dist/src/gemini_cleanup.test.js.map +1 -1
  80. package/dist/src/generated/git-commit.d.ts +2 -2
  81. package/dist/src/generated/git-commit.js +2 -2
  82. package/dist/src/generated/git-commit.js.map +1 -1
  83. package/dist/src/integration-tests/modelSteering.test.d.ts +6 -0
  84. package/dist/src/integration-tests/modelSteering.test.js +65 -0
  85. package/dist/src/integration-tests/modelSteering.test.js.map +1 -0
  86. package/dist/src/nonInteractiveCli.js +2 -3
  87. package/dist/src/nonInteractiveCli.js.map +1 -1
  88. package/dist/src/test-utils/AppRig.d.ts +1 -1
  89. package/dist/src/test-utils/AppRig.js +16 -7
  90. package/dist/src/test-utils/AppRig.js.map +1 -1
  91. package/dist/src/test-utils/AppRig.test.js +37 -2
  92. package/dist/src/test-utils/AppRig.test.js.map +1 -1
  93. package/dist/src/test-utils/async.d.ts +1 -1
  94. package/dist/src/test-utils/async.js +1 -1
  95. package/dist/src/test-utils/async.js.map +1 -1
  96. package/dist/src/test-utils/customMatchers.js +1 -1
  97. package/dist/src/test-utils/customMatchers.js.map +1 -1
  98. package/dist/src/test-utils/mockCommandContext.js +8 -2
  99. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  100. package/dist/src/test-utils/mockConfig.js +2 -1
  101. package/dist/src/test-utils/mockConfig.js.map +1 -1
  102. package/dist/src/test-utils/render.d.ts +81 -5
  103. package/dist/src/test-utils/render.js +299 -29
  104. package/dist/src/test-utils/render.js.map +1 -1
  105. package/dist/src/test-utils/render.test.js +49 -23
  106. package/dist/src/test-utils/render.test.js.map +1 -1
  107. package/dist/src/test-utils/settings.js +4 -2
  108. package/dist/src/test-utils/settings.js.map +1 -1
  109. package/dist/src/ui/App.test.js +56 -24
  110. package/dist/src/ui/App.test.js.map +1 -1
  111. package/dist/src/ui/AppContainer.d.ts +2 -2
  112. package/dist/src/ui/AppContainer.js +231 -11
  113. package/dist/src/ui/AppContainer.js.map +1 -1
  114. package/dist/src/ui/AppContainer.test.js +561 -7
  115. package/dist/src/ui/AppContainer.test.js.map +1 -1
  116. package/dist/src/ui/IdeIntegrationNudge.test.js +29 -33
  117. package/dist/src/ui/IdeIntegrationNudge.test.js.map +1 -1
  118. package/dist/src/ui/auth/ApiAuthDialog.test.js +19 -9
  119. package/dist/src/ui/auth/ApiAuthDialog.test.js.map +1 -1
  120. package/dist/src/ui/auth/AuthDialog.js +1 -1
  121. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  122. package/dist/src/ui/auth/AuthDialog.test.js +61 -27
  123. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  124. package/dist/src/ui/auth/AuthInProgress.test.js +35 -14
  125. package/dist/src/ui/auth/AuthInProgress.test.js.map +1 -1
  126. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js +11 -5
  127. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +1 -1
  128. package/dist/src/ui/colors.js +6 -0
  129. package/dist/src/ui/colors.js.map +1 -1
  130. package/dist/src/ui/commands/clearCommand.js +2 -0
  131. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  132. package/dist/src/ui/commands/clearCommand.test.js +7 -1
  133. package/dist/src/ui/commands/clearCommand.test.js.map +1 -1
  134. package/dist/src/ui/commands/copyCommand.js +2 -1
  135. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  136. package/dist/src/ui/commands/copyCommand.test.js +6 -4
  137. package/dist/src/ui/commands/copyCommand.test.js.map +1 -1
  138. package/dist/src/ui/commands/extensionsCommand.js +18 -0
  139. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  140. package/dist/src/ui/commands/extensionsCommand.test.js +4 -4
  141. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
  142. package/dist/src/ui/commands/planCommand.js +1 -1
  143. package/dist/src/ui/commands/planCommand.js.map +1 -1
  144. package/dist/src/ui/commands/planCommand.test.js +1 -1
  145. package/dist/src/ui/commands/planCommand.test.js.map +1 -1
  146. package/dist/src/ui/commands/policiesCommand.js +5 -0
  147. package/dist/src/ui/commands/policiesCommand.js.map +1 -1
  148. package/dist/src/ui/commands/policiesCommand.test.js +38 -1
  149. package/dist/src/ui/commands/policiesCommand.test.js.map +1 -1
  150. package/dist/src/ui/commands/rewindCommand.js +3 -2
  151. package/dist/src/ui/commands/rewindCommand.js.map +1 -1
  152. package/dist/src/ui/components/AboutBox.test.js +16 -8
  153. package/dist/src/ui/components/AboutBox.test.js.map +1 -1
  154. package/dist/src/ui/components/AdminSettingsChangedDialog.test.js +7 -4
  155. package/dist/src/ui/components/AdminSettingsChangedDialog.test.js.map +1 -1
  156. package/dist/src/ui/components/AgentConfigDialog.test.js +41 -19
  157. package/dist/src/ui/components/AgentConfigDialog.test.js.map +1 -1
  158. package/dist/src/ui/components/AlternateBufferQuittingDisplay.js +1 -1
  159. package/dist/src/ui/components/AlternateBufferQuittingDisplay.js.map +1 -1
  160. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js +24 -12
  161. package/dist/src/ui/components/AlternateBufferQuittingDisplay.test.js.map +1 -1
  162. package/dist/src/ui/components/AnsiOutput.test.js +35 -19
  163. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
  164. package/dist/src/ui/components/AppHeader.test.js +27 -17
  165. package/dist/src/ui/components/AppHeader.test.js.map +1 -1
  166. package/dist/src/ui/components/ApprovalModeIndicator.test.js +18 -12
  167. package/dist/src/ui/components/ApprovalModeIndicator.test.js.map +1 -1
  168. package/dist/src/ui/components/AskUserDialog.test.js +147 -85
  169. package/dist/src/ui/components/AskUserDialog.test.js.map +1 -1
  170. package/dist/src/ui/components/BackgroundShellDisplay.test.js +50 -48
  171. package/dist/src/ui/components/BackgroundShellDisplay.test.js.map +1 -1
  172. package/dist/src/ui/components/Banner.test.js +8 -4
  173. package/dist/src/ui/components/Banner.test.js.map +1 -1
  174. package/dist/src/ui/components/Checklist.test.js +17 -12
  175. package/dist/src/ui/components/Checklist.test.js.map +1 -1
  176. package/dist/src/ui/components/ChecklistItem.test.js +9 -6
  177. package/dist/src/ui/components/ChecklistItem.test.js.map +1 -1
  178. package/dist/src/ui/components/CliSpinner.test.js +8 -5
  179. package/dist/src/ui/components/CliSpinner.test.js.map +1 -1
  180. package/dist/src/ui/components/Composer.js +5 -5
  181. package/dist/src/ui/components/Composer.js.map +1 -1
  182. package/dist/src/ui/components/Composer.test.js +104 -100
  183. package/dist/src/ui/components/Composer.test.js.map +1 -1
  184. package/dist/src/ui/components/ConfigInitDisplay.test.js +3 -2
  185. package/dist/src/ui/components/ConfigInitDisplay.test.js.map +1 -1
  186. package/dist/src/ui/components/ConsentPrompt.test.js +15 -8
  187. package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -1
  188. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js +9 -5
  189. package/dist/src/ui/components/ConsoleSummaryDisplay.test.js.map +1 -1
  190. package/dist/src/ui/components/ContextSummaryDisplay.test.js +16 -14
  191. package/dist/src/ui/components/ContextSummaryDisplay.test.js.map +1 -1
  192. package/dist/src/ui/components/ContextUsageDisplay.test.js +12 -6
  193. package/dist/src/ui/components/ContextUsageDisplay.test.js.map +1 -1
  194. package/dist/src/ui/components/CopyModeWarning.test.js +9 -5
  195. package/dist/src/ui/components/CopyModeWarning.test.js.map +1 -1
  196. package/dist/src/ui/components/DebugProfiler.test.js +17 -14
  197. package/dist/src/ui/components/DebugProfiler.test.js.map +1 -1
  198. package/dist/src/ui/components/DetailedMessagesDisplay.test.js +13 -7
  199. package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -1
  200. package/dist/src/ui/components/DialogManager.js +5 -1
  201. package/dist/src/ui/components/DialogManager.js.map +1 -1
  202. package/dist/src/ui/components/DialogManager.test.js +9 -5
  203. package/dist/src/ui/components/DialogManager.test.js.map +1 -1
  204. package/dist/src/ui/components/EditorSettingsDialog.test.js +16 -8
  205. package/dist/src/ui/components/EditorSettingsDialog.test.js.map +1 -1
  206. package/dist/src/ui/components/ExitPlanModeDialog.js +2 -2
  207. package/dist/src/ui/components/ExitPlanModeDialog.js.map +1 -1
  208. package/dist/src/ui/components/ExitPlanModeDialog.test.js +2 -2
  209. package/dist/src/ui/components/ExitPlanModeDialog.test.js.map +1 -1
  210. package/dist/src/ui/components/ExitWarning.test.js +18 -10
  211. package/dist/src/ui/components/ExitWarning.test.js.map +1 -1
  212. package/dist/src/ui/components/FolderTrustDialog.d.ts +2 -0
  213. package/dist/src/ui/components/FolderTrustDialog.js +49 -3
  214. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  215. package/dist/src/ui/components/FolderTrustDialog.test.js +249 -18
  216. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  217. package/dist/src/ui/components/Footer.test.js +101 -50
  218. package/dist/src/ui/components/Footer.test.js.map +1 -1
  219. package/dist/src/ui/components/GeminiRespondingSpinner.test.js +23 -13
  220. package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +1 -1
  221. package/dist/src/ui/components/GradientRegression.test.js +20 -10
  222. package/dist/src/ui/components/GradientRegression.test.js.map +1 -1
  223. package/dist/src/ui/components/Header.test.js +2 -0
  224. package/dist/src/ui/components/Header.test.js.map +1 -1
  225. package/dist/src/ui/components/Help.test.js +9 -6
  226. package/dist/src/ui/components/Help.test.js.map +1 -1
  227. package/dist/src/ui/components/HistoryItemDisplay.d.ts +1 -2
  228. package/dist/src/ui/components/HistoryItemDisplay.js +4 -3
  229. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  230. package/dist/src/ui/components/HistoryItemDisplay.test.js +80 -35
  231. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  232. package/dist/src/ui/components/HookStatusDisplay.test.js +13 -9
  233. package/dist/src/ui/components/HookStatusDisplay.test.js.map +1 -1
  234. package/dist/src/ui/components/IdeTrustChangeDialog.test.js +36 -16
  235. package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -1
  236. package/dist/src/ui/components/InputPrompt.js +10 -12
  237. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  238. package/dist/src/ui/components/InputPrompt.test.js +127 -13
  239. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  240. package/dist/src/ui/components/LoadingIndicator.test.js +97 -47
  241. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  242. package/dist/src/ui/components/LogoutConfirmationDialog.test.js +25 -9
  243. package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +1 -1
  244. package/dist/src/ui/components/LoopDetectionConfirmation.test.js +9 -5
  245. package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -1
  246. package/dist/src/ui/components/MainContent.js +35 -14
  247. package/dist/src/ui/components/MainContent.js.map +1 -1
  248. package/dist/src/ui/components/MainContent.test.js +224 -10
  249. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  250. package/dist/src/ui/components/MemoryUsageDisplay.test.js +8 -3
  251. package/dist/src/ui/components/MemoryUsageDisplay.test.js.map +1 -1
  252. package/dist/src/ui/components/ModelDialog.js +6 -6
  253. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  254. package/dist/src/ui/components/ModelDialog.test.js +142 -16
  255. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  256. package/dist/src/ui/components/ModelStatsDisplay.test.js +38 -24
  257. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -1
  258. package/dist/src/ui/components/MultiFolderTrustDialog.test.js +32 -9
  259. package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -1
  260. package/dist/src/ui/components/NewAgentsNotification.test.js +6 -4
  261. package/dist/src/ui/components/NewAgentsNotification.test.js.map +1 -1
  262. package/dist/src/ui/components/Notifications.js +50 -4
  263. package/dist/src/ui/components/Notifications.js.map +1 -1
  264. package/dist/src/ui/components/Notifications.test.js +162 -30
  265. package/dist/src/ui/components/Notifications.test.js.map +1 -1
  266. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +36 -10
  267. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
  268. package/dist/src/ui/components/PolicyUpdateDialog.d.ts +18 -0
  269. package/dist/src/ui/components/PolicyUpdateDialog.js +59 -0
  270. package/dist/src/ui/components/PolicyUpdateDialog.js.map +1 -0
  271. package/dist/src/ui/components/PolicyUpdateDialog.test.d.ts +6 -0
  272. package/dist/src/ui/components/PolicyUpdateDialog.test.js +93 -0
  273. package/dist/src/ui/components/PolicyUpdateDialog.test.js.map +1 -0
  274. package/dist/src/ui/components/QueuedMessageDisplay.test.js +16 -11
  275. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -1
  276. package/dist/src/ui/components/QuittingDisplay.test.js +9 -5
  277. package/dist/src/ui/components/QuittingDisplay.test.js.map +1 -1
  278. package/dist/src/ui/components/QuotaDisplay.test.js +40 -22
  279. package/dist/src/ui/components/QuotaDisplay.test.js.map +1 -1
  280. package/dist/src/ui/components/RawMarkdownIndicator.test.js +8 -4
  281. package/dist/src/ui/components/RawMarkdownIndicator.test.js.map +1 -1
  282. package/dist/src/ui/components/RewindConfirmation.test.js +15 -7
  283. package/dist/src/ui/components/RewindConfirmation.test.js.map +1 -1
  284. package/dist/src/ui/components/RewindViewer.js +9 -7
  285. package/dist/src/ui/components/RewindViewer.js.map +1 -1
  286. package/dist/src/ui/components/RewindViewer.test.js +54 -17
  287. package/dist/src/ui/components/RewindViewer.test.js.map +1 -1
  288. package/dist/src/ui/components/SessionBrowser.test.js +24 -11
  289. package/dist/src/ui/components/SessionBrowser.test.js.map +1 -1
  290. package/dist/src/ui/components/SessionRetentionWarningDialog.test.js +12 -7
  291. package/dist/src/ui/components/SessionRetentionWarningDialog.test.js.map +1 -1
  292. package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
  293. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  294. package/dist/src/ui/components/SessionSummaryDisplay.test.js +7 -4
  295. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -1
  296. package/dist/src/ui/components/SettingsDialog.js +76 -7
  297. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  298. package/dist/src/ui/components/SettingsDialog.test.js +252 -109
  299. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  300. package/dist/src/ui/components/ShellInputPrompt.test.js +120 -67
  301. package/dist/src/ui/components/ShellInputPrompt.test.js.map +1 -1
  302. package/dist/src/ui/components/ShellModeIndicator.test.js +4 -2
  303. package/dist/src/ui/components/ShellModeIndicator.test.js.map +1 -1
  304. package/dist/src/ui/components/ShortcutsHelp.js +1 -1
  305. package/dist/src/ui/components/ShortcutsHelp.js.map +1 -1
  306. package/dist/src/ui/components/ShortcutsHelp.test.js +6 -3
  307. package/dist/src/ui/components/ShortcutsHelp.test.js.map +1 -1
  308. package/dist/src/ui/components/ShowMoreLines.d.ts +2 -1
  309. package/dist/src/ui/components/ShowMoreLines.js +10 -5
  310. package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
  311. package/dist/src/ui/components/ShowMoreLines.test.js +47 -7
  312. package/dist/src/ui/components/ShowMoreLines.test.js.map +1 -1
  313. package/dist/src/ui/components/StatsDisplay.d.ts +1 -0
  314. package/dist/src/ui/components/StatsDisplay.js +9 -3
  315. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  316. package/dist/src/ui/components/StatsDisplay.test.js +51 -34
  317. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
  318. package/dist/src/ui/components/StatusDisplay.test.js +30 -17
  319. package/dist/src/ui/components/StatusDisplay.test.js.map +1 -1
  320. package/dist/src/ui/components/StickyHeader.test.js +4 -2
  321. package/dist/src/ui/components/StickyHeader.test.js.map +1 -1
  322. package/dist/src/ui/components/SuggestionsDisplay.test.js +19 -13
  323. package/dist/src/ui/components/SuggestionsDisplay.test.js.map +1 -1
  324. package/dist/src/ui/components/Table.test.js +9 -6
  325. package/dist/src/ui/components/Table.test.js.map +1 -1
  326. package/dist/src/ui/components/ThemeDialog.test.js +42 -19
  327. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
  328. package/dist/src/ui/components/ThemedGradient.test.js +4 -2
  329. package/dist/src/ui/components/ThemedGradient.test.js.map +1 -1
  330. package/dist/src/ui/components/Tips.test.js +4 -2
  331. package/dist/src/ui/components/Tips.test.js.map +1 -1
  332. package/dist/src/ui/components/ToastDisplay.js +6 -1
  333. package/dist/src/ui/components/ToastDisplay.js.map +1 -1
  334. package/dist/src/ui/components/ToastDisplay.test.js +48 -17
  335. package/dist/src/ui/components/ToastDisplay.test.js.map +1 -1
  336. package/dist/src/ui/components/ToolConfirmationQueue.js +11 -8
  337. package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
  338. package/dist/src/ui/components/ToolConfirmationQueue.test.js +75 -17
  339. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
  340. package/dist/src/ui/components/ToolStatsDisplay.test.js +19 -12
  341. package/dist/src/ui/components/ToolStatsDisplay.test.js.map +1 -1
  342. package/dist/src/ui/components/UpdateNotification.test.js +4 -2
  343. package/dist/src/ui/components/UpdateNotification.test.js.map +1 -1
  344. package/dist/src/ui/components/UserIdentity.test.js +16 -11
  345. package/dist/src/ui/components/UserIdentity.test.js.map +1 -1
  346. package/dist/src/ui/components/ValidationDialog.test.js +33 -16
  347. package/dist/src/ui/components/ValidationDialog.test.js.map +1 -1
  348. package/dist/src/ui/components/messages/CompressionMessage.test.js +99 -101
  349. package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -1
  350. package/dist/src/ui/components/messages/ErrorMessage.test.js +8 -4
  351. package/dist/src/ui/components/messages/ErrorMessage.test.js.map +1 -1
  352. package/dist/src/ui/components/messages/GeminiMessage.js +5 -1
  353. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  354. package/dist/src/ui/components/messages/GeminiMessage.test.js +12 -6
  355. package/dist/src/ui/components/messages/GeminiMessage.test.js.map +1 -1
  356. package/dist/src/ui/components/messages/HintMessage.d.ts +11 -0
  357. package/dist/src/ui/components/messages/HintMessage.js +14 -0
  358. package/dist/src/ui/components/messages/HintMessage.js.map +1 -0
  359. package/dist/src/ui/components/messages/InfoMessage.d.ts +1 -0
  360. package/dist/src/ui/components/messages/InfoMessage.js +2 -2
  361. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  362. package/dist/src/ui/components/messages/InfoMessage.test.js +12 -6
  363. package/dist/src/ui/components/messages/InfoMessage.test.js.map +1 -1
  364. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js +4 -2
  365. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js.map +1 -1
  366. package/dist/src/ui/components/messages/ShellToolMessage.d.ts +1 -2
  367. package/dist/src/ui/components/messages/ShellToolMessage.js +15 -29
  368. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  369. package/dist/src/ui/components/messages/ShellToolMessage.test.js +91 -22
  370. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -1
  371. package/dist/src/ui/components/messages/ThinkingMessage.test.js +25 -13
  372. package/dist/src/ui/components/messages/ThinkingMessage.test.js.map +1 -1
  373. package/dist/src/ui/components/messages/Todo.test.js +34 -19
  374. package/dist/src/ui/components/messages/Todo.test.js.map +1 -1
  375. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +128 -13
  376. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  377. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +175 -20
  378. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  379. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -4
  380. package/dist/src/ui/components/messages/ToolGroupMessage.js +91 -35
  381. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  382. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +286 -63
  383. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  384. package/dist/src/ui/components/messages/ToolMessage.js +4 -4
  385. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  386. package/dist/src/ui/components/messages/ToolMessage.test.js +118 -39
  387. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  388. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js +15 -6
  389. package/dist/src/ui/components/messages/ToolMessageFocusHint.test.js.map +1 -1
  390. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js +4 -2
  391. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js.map +1 -1
  392. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.d.ts +6 -0
  393. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js +79 -0
  394. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js.map +1 -0
  395. package/dist/src/ui/components/messages/ToolResultDisplay.js +25 -14
  396. package/dist/src/ui/components/messages/ToolResultDisplay.js.map +1 -1
  397. package/dist/src/ui/components/messages/ToolResultDisplay.test.js +81 -31
  398. package/dist/src/ui/components/messages/ToolResultDisplay.test.js.map +1 -1
  399. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js +5 -5
  400. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js.map +1 -1
  401. package/dist/src/ui/components/messages/ToolShared.d.ts +8 -0
  402. package/dist/src/ui/components/messages/ToolShared.js +27 -9
  403. package/dist/src/ui/components/messages/ToolShared.js.map +1 -1
  404. package/dist/src/ui/components/messages/ToolShared.test.d.ts +6 -0
  405. package/dist/src/ui/components/messages/ToolShared.test.js +52 -0
  406. package/dist/src/ui/components/messages/ToolShared.test.js.map +1 -0
  407. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js +11 -4
  408. package/dist/src/ui/components/messages/ToolStickyHeaderRegression.test.js.map +1 -1
  409. package/dist/src/ui/components/messages/UserMessage.js +1 -2
  410. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  411. package/dist/src/ui/components/messages/UserMessage.test.js +16 -8
  412. package/dist/src/ui/components/messages/UserMessage.test.js.map +1 -1
  413. package/dist/src/ui/components/messages/UserShellMessage.js +1 -2
  414. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
  415. package/dist/src/ui/components/messages/WarningMessage.test.js +8 -4
  416. package/dist/src/ui/components/messages/WarningMessage.test.js.map +1 -1
  417. package/dist/src/ui/components/shared/BaseSelectionList.test.js +118 -106
  418. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -1
  419. package/dist/src/ui/components/shared/BaseSettingsDialog.js +22 -24
  420. package/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
  421. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js +139 -40
  422. package/dist/src/ui/components/shared/BaseSettingsDialog.test.js.map +1 -1
  423. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +10 -6
  424. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -1
  425. package/dist/src/ui/components/shared/EnumSelector.test.js +42 -20
  426. package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -1
  427. package/dist/src/ui/components/shared/ExpandableText.test.js +21 -14
  428. package/dist/src/ui/components/shared/ExpandableText.test.js.map +1 -1
  429. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js +8 -4
  430. package/dist/src/ui/components/shared/HalfLinePaddedBox.test.js.map +1 -1
  431. package/dist/src/ui/components/shared/MaxSizedBox.test.js +41 -30
  432. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
  433. package/dist/src/ui/components/shared/Scrollable.js +2 -3
  434. package/dist/src/ui/components/shared/Scrollable.js.map +1 -1
  435. package/dist/src/ui/components/shared/Scrollable.test.js +33 -17
  436. package/dist/src/ui/components/shared/Scrollable.test.js.map +1 -1
  437. package/dist/src/ui/components/shared/ScrollableList.js +1 -1
  438. package/dist/src/ui/components/shared/ScrollableList.js.map +1 -1
  439. package/dist/src/ui/components/shared/ScrollableList.test.js +36 -6
  440. package/dist/src/ui/components/shared/ScrollableList.test.js.map +1 -1
  441. package/dist/src/ui/components/shared/SearchableList.d.ts +46 -14
  442. package/dist/src/ui/components/shared/SearchableList.js +69 -57
  443. package/dist/src/ui/components/shared/SearchableList.js.map +1 -1
  444. package/dist/src/ui/components/shared/SearchableList.test.js +67 -14
  445. package/dist/src/ui/components/shared/SearchableList.test.js.map +1 -1
  446. package/dist/src/ui/components/shared/SectionHeader.d.ts +1 -0
  447. package/dist/src/ui/components/shared/SectionHeader.js +1 -1
  448. package/dist/src/ui/components/shared/SectionHeader.js.map +1 -1
  449. package/dist/src/ui/components/shared/SectionHeader.test.js +9 -2
  450. package/dist/src/ui/components/shared/SectionHeader.test.js.map +1 -1
  451. package/dist/src/ui/components/shared/TabHeader.js +1 -1
  452. package/dist/src/ui/components/shared/TabHeader.js.map +1 -1
  453. package/dist/src/ui/components/shared/TabHeader.test.js +65 -25
  454. package/dist/src/ui/components/shared/TabHeader.test.js.map +1 -1
  455. package/dist/src/ui/components/shared/TextInput.test.js +111 -65
  456. package/dist/src/ui/components/shared/TextInput.test.js.map +1 -1
  457. package/dist/src/ui/components/shared/VirtualizedList.test.js +27 -35
  458. package/dist/src/ui/components/shared/VirtualizedList.test.js.map +1 -1
  459. package/dist/src/ui/components/triage/TriageDuplicates.js +1 -0
  460. package/dist/src/ui/components/triage/TriageDuplicates.js.map +1 -1
  461. package/dist/src/ui/components/triage/TriageIssues.js +1 -0
  462. package/dist/src/ui/components/triage/TriageIssues.js.map +1 -1
  463. package/dist/src/ui/components/views/ChatList.test.js +9 -6
  464. package/dist/src/ui/components/views/ChatList.test.js.map +1 -1
  465. package/dist/src/ui/components/views/ExtensionRegistryView.d.ts +15 -0
  466. package/dist/src/ui/components/views/ExtensionRegistryView.js +60 -0
  467. package/dist/src/ui/components/views/ExtensionRegistryView.js.map +1 -0
  468. package/dist/src/ui/components/views/ExtensionRegistryView.test.d.ts +6 -0
  469. package/dist/src/ui/components/views/ExtensionRegistryView.test.js +168 -0
  470. package/dist/src/ui/components/views/ExtensionRegistryView.test.js.map +1 -0
  471. package/dist/src/ui/components/views/ExtensionsList.test.js +21 -19
  472. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -1
  473. package/dist/src/ui/components/views/McpStatus.test.js +38 -25
  474. package/dist/src/ui/components/views/McpStatus.test.js.map +1 -1
  475. package/dist/src/ui/components/views/SkillsList.test.js +18 -12
  476. package/dist/src/ui/components/views/SkillsList.test.js.map +1 -1
  477. package/dist/src/ui/components/views/ToolsList.test.js +9 -6
  478. package/dist/src/ui/components/views/ToolsList.test.js.map +1 -1
  479. package/dist/src/ui/constants/tips.js +1 -1
  480. package/dist/src/ui/constants/tips.js.map +1 -1
  481. package/dist/src/ui/constants.d.ts +2 -1
  482. package/dist/src/ui/constants.js +2 -1
  483. package/dist/src/ui/constants.js.map +1 -1
  484. package/dist/src/ui/contexts/AppContext.d.ts +2 -1
  485. package/dist/src/ui/contexts/AppContext.js.map +1 -1
  486. package/dist/src/ui/contexts/KeypressContext.js +37 -8
  487. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  488. package/dist/src/ui/contexts/KeypressContext.test.js +68 -0
  489. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  490. package/dist/src/ui/contexts/OverflowContext.d.ts +3 -3
  491. package/dist/src/ui/contexts/OverflowContext.js +5 -1
  492. package/dist/src/ui/contexts/OverflowContext.js.map +1 -1
  493. package/dist/src/ui/contexts/TerminalContext.test.js +26 -15
  494. package/dist/src/ui/contexts/TerminalContext.test.js.map +1 -1
  495. package/dist/src/ui/contexts/UIActionsContext.d.ts +6 -1
  496. package/dist/src/ui/contexts/UIActionsContext.js +1 -1
  497. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  498. package/dist/src/ui/contexts/UIStateContext.d.ts +7 -1
  499. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  500. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  501. package/dist/src/ui/hooks/atCommandProcessor.test.js +6 -2
  502. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  503. package/dist/src/ui/hooks/slashCommandProcessor.js +23 -11
  504. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  505. package/dist/src/ui/hooks/slashCommandProcessor.test.js +30 -14
  506. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
  507. package/dist/src/ui/hooks/toolMapping.d.ts +2 -0
  508. package/dist/src/ui/hooks/toolMapping.js +13 -1
  509. package/dist/src/ui/hooks/toolMapping.js.map +1 -1
  510. package/dist/src/ui/hooks/toolMapping.test.js +42 -0
  511. package/dist/src/ui/hooks/toolMapping.test.js.map +1 -1
  512. package/dist/src/ui/hooks/useAnimatedScrollbar.js +13 -3
  513. package/dist/src/ui/hooks/useAnimatedScrollbar.js.map +1 -1
  514. package/dist/src/ui/hooks/useAtCompletion.js +74 -22
  515. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  516. package/dist/src/ui/hooks/useAtCompletion.test.js +88 -0
  517. package/dist/src/ui/hooks/useAtCompletion.test.js.map +1 -1
  518. package/dist/src/ui/hooks/useCommandCompletion.js +2 -3
  519. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  520. package/dist/src/ui/hooks/useCommandCompletion.test.js +0 -4
  521. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  522. package/dist/src/ui/hooks/useConfirmingTool.d.ts +2 -6
  523. package/dist/src/ui/hooks/useConfirmingTool.js +2 -23
  524. package/dist/src/ui/hooks/useConfirmingTool.js.map +1 -1
  525. package/dist/src/ui/hooks/useConsoleMessages.js +18 -6
  526. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  527. package/dist/src/ui/hooks/useConsoleMessages.test.js +4 -4
  528. package/dist/src/ui/hooks/useExtensionRegistry.d.ts +13 -0
  529. package/dist/src/ui/hooks/useExtensionRegistry.js +70 -0
  530. package/dist/src/ui/hooks/useExtensionRegistry.js.map +1 -0
  531. package/dist/src/ui/hooks/useFocus.d.ts +4 -1
  532. package/dist/src/ui/hooks/useFocus.js +7 -1
  533. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  534. package/dist/src/ui/hooks/useFocus.test.js +20 -11
  535. package/dist/src/ui/hooks/useFocus.test.js.map +1 -1
  536. package/dist/src/ui/hooks/useFolderTrust.d.ts +2 -0
  537. package/dist/src/ui/hooks/useFolderTrust.js +15 -3
  538. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  539. package/dist/src/ui/hooks/useFolderTrust.test.js +3 -0
  540. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
  541. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  542. package/dist/src/ui/hooks/useGeminiStream.js +86 -20
  543. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  544. package/dist/src/ui/hooks/useGeminiStream.test.js +150 -1
  545. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  546. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +3 -1
  547. package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
  548. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  549. package/dist/src/ui/hooks/useLoadingIndicator.test.js +9 -4
  550. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  551. package/dist/src/ui/hooks/useMouseClick.test.js +15 -7
  552. package/dist/src/ui/hooks/useMouseClick.test.js.map +1 -1
  553. package/dist/src/ui/hooks/usePhraseCycler.d.ts +4 -2
  554. package/dist/src/ui/hooks/usePhraseCycler.js +38 -26
  555. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  556. package/dist/src/ui/hooks/usePhraseCycler.test.js +123 -73
  557. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
  558. package/dist/src/ui/hooks/usePromptCompletion.d.ts +1 -2
  559. package/dist/src/ui/hooks/usePromptCompletion.js +2 -2
  560. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -1
  561. package/dist/src/ui/hooks/useRegistrySearch.d.ts +19 -0
  562. package/dist/src/ui/hooks/useRegistrySearch.js +35 -0
  563. package/dist/src/ui/hooks/useRegistrySearch.js.map +1 -0
  564. package/dist/src/ui/hooks/useRunEventNotifications.d.ts +22 -0
  565. package/dist/src/ui/hooks/useRunEventNotifications.js +93 -0
  566. package/dist/src/ui/hooks/useRunEventNotifications.js.map +1 -0
  567. package/dist/src/ui/hooks/useSearchBuffer.d.ts +11 -0
  568. package/dist/src/ui/hooks/useSearchBuffer.js +24 -0
  569. package/dist/src/ui/hooks/useSearchBuffer.js.map +1 -0
  570. package/dist/src/ui/hooks/useSelectionList.test.js +111 -45
  571. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -1
  572. package/dist/src/ui/hooks/useSessionBrowser.js +3 -2
  573. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  574. package/dist/src/ui/hooks/useSessionBrowser.test.js +15 -12
  575. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
  576. package/dist/src/ui/hooks/useSessionResume.js +2 -2
  577. package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
  578. package/dist/src/ui/hooks/useSlashCompletion.js +1 -0
  579. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  580. package/dist/src/ui/hooks/useStateAndRef.js +1 -0
  581. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
  582. package/dist/src/ui/hooks/useTerminalTheme.test.js +29 -18
  583. package/dist/src/ui/hooks/useTerminalTheme.test.js.map +1 -1
  584. package/dist/src/ui/hooks/useToolScheduler.js +19 -2
  585. package/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
  586. package/dist/src/ui/hooks/useToolScheduler.test.js +44 -0
  587. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  588. package/dist/src/ui/keyMatchers.test.js +1 -0
  589. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  590. package/dist/src/ui/layouts/DefaultAppLayout.test.js +12 -6
  591. package/dist/src/ui/layouts/DefaultAppLayout.test.js.map +1 -1
  592. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js +24 -8
  593. package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js.map +1 -1
  594. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js +16 -5
  595. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js.map +1 -1
  596. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js +16 -5
  597. package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js.map +1 -1
  598. package/dist/src/ui/privacy/PrivacyNotice.test.js +4 -2
  599. package/dist/src/ui/privacy/PrivacyNotice.test.js.map +1 -1
  600. package/dist/src/ui/themes/no-color.js +4 -0
  601. package/dist/src/ui/themes/no-color.js.map +1 -1
  602. package/dist/src/ui/themes/semantic-tokens.d.ts +2 -0
  603. package/dist/src/ui/themes/semantic-tokens.js +6 -2
  604. package/dist/src/ui/themes/semantic-tokens.js.map +1 -1
  605. package/dist/src/ui/themes/solarized-dark.js +2 -0
  606. package/dist/src/ui/themes/solarized-dark.js.map +1 -1
  607. package/dist/src/ui/themes/solarized-light.js +2 -0
  608. package/dist/src/ui/themes/solarized-light.js.map +1 -1
  609. package/dist/src/ui/themes/theme-manager.js +9 -4
  610. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  611. package/dist/src/ui/themes/theme.d.ts +2 -0
  612. package/dist/src/ui/themes/theme.js +20 -7
  613. package/dist/src/ui/themes/theme.js.map +1 -1
  614. package/dist/src/ui/themes/theme.test.js +7 -7
  615. package/dist/src/ui/themes/theme.test.js.map +1 -1
  616. package/dist/src/ui/types.d.ts +14 -2
  617. package/dist/src/ui/types.js +1 -0
  618. package/dist/src/ui/types.js.map +1 -1
  619. package/dist/src/ui/utils/CodeColorizer.js +3 -5
  620. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  621. package/dist/src/ui/utils/CodeColorizer.test.js +4 -2
  622. package/dist/src/ui/utils/CodeColorizer.test.js.map +1 -1
  623. package/dist/src/ui/utils/InlineMarkdownRenderer.js +3 -1
  624. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  625. package/dist/src/ui/utils/MarkdownDisplay.js +1 -1
  626. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  627. package/dist/src/ui/utils/MarkdownDisplay.test.js +65 -33
  628. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  629. package/dist/src/ui/utils/TableRenderer.js +7 -3
  630. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  631. package/dist/src/ui/utils/TableRenderer.test.js +43 -22
  632. package/dist/src/ui/utils/TableRenderer.test.js.map +1 -1
  633. package/dist/src/ui/utils/borderStyles.d.ts +18 -0
  634. package/dist/src/ui/utils/borderStyles.js +78 -0
  635. package/dist/src/ui/utils/borderStyles.js.map +1 -0
  636. package/dist/src/ui/utils/commandUtils.d.ts +2 -1
  637. package/dist/src/ui/utils/commandUtils.js +8 -3
  638. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  639. package/dist/src/ui/utils/commandUtils.test.js +18 -0
  640. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  641. package/dist/src/ui/utils/confirmingTool.d.ts +15 -0
  642. package/dist/src/ui/utils/confirmingTool.js +27 -0
  643. package/dist/src/ui/utils/confirmingTool.js.map +1 -0
  644. package/dist/src/ui/utils/pendingAttentionNotification.d.ts +12 -0
  645. package/dist/src/ui/utils/pendingAttentionNotification.js +101 -0
  646. package/dist/src/ui/utils/pendingAttentionNotification.js.map +1 -0
  647. package/dist/src/ui/utils/pendingAttentionNotification.test.d.ts +6 -0
  648. package/dist/src/ui/utils/pendingAttentionNotification.test.js +79 -0
  649. package/dist/src/ui/utils/pendingAttentionNotification.test.js.map +1 -0
  650. package/dist/src/ui/utils/terminalCapabilityManager.d.ts +2 -0
  651. package/dist/src/ui/utils/terminalCapabilityManager.js +18 -0
  652. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -1
  653. package/dist/src/ui/utils/terminalCapabilityManager.test.js +68 -0
  654. package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -1
  655. package/dist/src/ui/utils/terminalSetup.d.ts +24 -0
  656. package/dist/src/ui/utils/terminalSetup.js +130 -34
  657. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  658. package/dist/src/ui/utils/terminalSetup.test.js +35 -1
  659. package/dist/src/ui/utils/terminalSetup.test.js.map +1 -1
  660. package/dist/src/ui/utils/textUtils.d.ts +4 -0
  661. package/dist/src/ui/utils/textUtils.js +10 -1
  662. package/dist/src/ui/utils/textUtils.js.map +1 -1
  663. package/dist/src/ui/utils/textUtils.test.js +25 -2
  664. package/dist/src/ui/utils/textUtils.test.js.map +1 -1
  665. package/dist/src/ui/utils/toolLayoutUtils.d.ts +44 -0
  666. package/dist/src/ui/utils/toolLayoutUtils.js +73 -0
  667. package/dist/src/ui/utils/toolLayoutUtils.js.map +1 -0
  668. package/dist/src/ui/utils/urlSecurityUtils.d.ts +32 -0
  669. package/dist/src/ui/utils/urlSecurityUtils.js +71 -0
  670. package/dist/src/ui/utils/urlSecurityUtils.js.map +1 -0
  671. package/dist/src/ui/utils/urlSecurityUtils.test.d.ts +6 -0
  672. package/dist/src/ui/utils/urlSecurityUtils.test.js +49 -0
  673. package/dist/src/ui/utils/urlSecurityUtils.test.js.map +1 -0
  674. package/dist/src/utils/activityLogger.js +95 -24
  675. package/dist/src/utils/activityLogger.js.map +1 -1
  676. package/dist/src/utils/devtoolsService.js +1 -2
  677. package/dist/src/utils/devtoolsService.js.map +1 -1
  678. package/dist/src/utils/devtoolsService.test.js +1 -1
  679. package/dist/src/utils/devtoolsService.test.js.map +1 -1
  680. package/dist/src/utils/envVarResolver.js +4 -1
  681. package/dist/src/utils/envVarResolver.js.map +1 -1
  682. package/dist/src/utils/gitUtils.js +2 -0
  683. package/dist/src/utils/gitUtils.js.map +1 -1
  684. package/dist/src/utils/jsonoutput.js +2 -0
  685. package/dist/src/utils/jsonoutput.js.map +1 -1
  686. package/dist/src/utils/persistentState.d.ts +2 -0
  687. package/dist/src/utils/persistentState.js +1 -0
  688. package/dist/src/utils/persistentState.js.map +1 -1
  689. package/dist/src/utils/readStdin.js +1 -0
  690. package/dist/src/utils/readStdin.js.map +1 -1
  691. package/dist/src/utils/sessionUtils.d.ts +1 -6
  692. package/dist/src/utils/sessionUtils.js +8 -101
  693. package/dist/src/utils/sessionUtils.js.map +1 -1
  694. package/dist/src/utils/sessionUtils.test.js +47 -0
  695. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  696. package/dist/src/utils/settingsUtils.js +2 -0
  697. package/dist/src/utils/settingsUtils.js.map +1 -1
  698. package/dist/src/utils/skillUtils.test.js +7 -5
  699. package/dist/src/utils/skillUtils.test.js.map +1 -1
  700. package/dist/src/utils/terminalNotifications.d.ts +25 -0
  701. package/dist/src/utils/terminalNotifications.js +77 -0
  702. package/dist/src/utils/terminalNotifications.js.map +1 -0
  703. package/dist/src/utils/terminalNotifications.test.d.ts +6 -0
  704. package/dist/src/utils/terminalNotifications.test.js +123 -0
  705. package/dist/src/utils/terminalNotifications.test.js.map +1 -0
  706. package/dist/src/utils/userStartupWarnings.d.ts +4 -1
  707. package/dist/src/utils/userStartupWarnings.js +22 -4
  708. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  709. package/dist/src/utils/userStartupWarnings.test.js +53 -11
  710. package/dist/src/utils/userStartupWarnings.test.js.map +1 -1
  711. package/dist/src/zed-integration/acpErrors.js +2 -0
  712. package/dist/src/zed-integration/acpErrors.js.map +1 -1
  713. package/dist/src/zed-integration/acpResume.test.js +53 -3
  714. package/dist/src/zed-integration/acpResume.test.js.map +1 -1
  715. package/dist/src/zed-integration/fileSystemService.js +2 -0
  716. package/dist/src/zed-integration/fileSystemService.js.map +1 -1
  717. package/dist/src/zed-integration/zedIntegration.d.ts +2 -0
  718. package/dist/src/zed-integration/zedIntegration.js +77 -6
  719. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  720. package/dist/src/zed-integration/zedIntegration.test.js +176 -2
  721. package/dist/src/zed-integration/zedIntegration.test.js.map +1 -1
  722. package/dist/tsconfig.tsbuildinfo +1 -1
  723. package/package.json +8 -7
  724. package/dist/google-gemini-cli-0.30.0.tgz +0 -0
  725. package/dist/src/ui/hooks/useFuzzyList.d.ts +0 -25
  726. package/dist/src/ui/hooks/useFuzzyList.js +0 -100
  727. package/dist/src/ui/hooks/useFuzzyList.js.map +0 -1
@@ -190,7 +190,11 @@ const createMockConfig = (overrides = {}) => ({
190
190
  }),
191
191
  ...overrides,
192
192
  });
193
- const renderComposer = (uiState, settings = createMockSettings(), config = createMockConfig(), uiActions = createMockUIActions()) => render(_jsx(ConfigContext.Provider, { value: config, children: _jsx(SettingsContext.Provider, { value: settings, children: _jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(Composer, {}) }) }) }) }));
193
+ const renderComposer = async (uiState, settings = createMockSettings(), config = createMockConfig(), uiActions = createMockUIActions()) => {
194
+ const result = render(_jsx(ConfigContext.Provider, { value: config, children: _jsx(SettingsContext.Provider, { value: settings, children: _jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(Composer, {}) }) }) }) }));
195
+ await result.waitUntilReady();
196
+ return result;
197
+ };
194
198
  describe('Composer', () => {
195
199
  beforeEach(() => {
196
200
  composerTestControls.suggestionsVisible = false;
@@ -200,16 +204,16 @@ describe('Composer', () => {
200
204
  vi.restoreAllMocks();
201
205
  });
202
206
  describe('Footer Display Settings', () => {
203
- it('renders Footer by default when hideFooter is false', () => {
207
+ it('renders Footer by default when hideFooter is false', async () => {
204
208
  const uiState = createMockUIState();
205
209
  const settings = createMockSettings({ ui: { hideFooter: false } });
206
- const { lastFrame } = renderComposer(uiState, settings);
210
+ const { lastFrame } = await renderComposer(uiState, settings);
207
211
  expect(lastFrame()).toContain('Footer');
208
212
  });
209
- it('does NOT render Footer when hideFooter is true', () => {
213
+ it('does NOT render Footer when hideFooter is true', async () => {
210
214
  const uiState = createMockUIState();
211
215
  const settings = createMockSettings({ ui: { hideFooter: true } });
212
- const { lastFrame } = renderComposer(uiState, settings);
216
+ const { lastFrame } = await renderComposer(uiState, settings);
213
217
  // Check for content that only appears IN the Footer component itself
214
218
  expect(lastFrame()).not.toContain('[NORMAL]'); // Vim mode indicator
215
219
  expect(lastFrame()).not.toContain('(main'); // Branch name with parentheses
@@ -250,13 +254,13 @@ describe('Composer', () => {
250
254
  toggleVimEnabled: vi.fn(),
251
255
  setVimMode: vi.fn(),
252
256
  });
253
- const { lastFrame } = renderComposer(uiState, settings, config);
257
+ const { lastFrame } = await renderComposer(uiState, settings, config);
254
258
  expect(lastFrame()).toContain('Footer');
255
259
  // Footer should be rendered with all the state passed through
256
260
  });
257
261
  });
258
262
  describe('Loading Indicator', () => {
259
- it('renders LoadingIndicator with thought when streaming', () => {
263
+ it('renders LoadingIndicator with thought when streaming', async () => {
260
264
  const uiState = createMockUIState({
261
265
  streamingState: StreamingState.Responding,
262
266
  thought: {
@@ -266,11 +270,11 @@ describe('Composer', () => {
266
270
  currentLoadingPhrase: 'Analyzing',
267
271
  elapsedTime: 1500,
268
272
  });
269
- const { lastFrame } = renderComposer(uiState);
273
+ const { lastFrame } = await renderComposer(uiState);
270
274
  const output = lastFrame();
271
275
  expect(output).toContain('LoadingIndicator: Processing');
272
276
  });
273
- it('renders generic thinking text in loading indicator when full inline thinking is enabled', () => {
277
+ it('renders generic thinking text in loading indicator when full inline thinking is enabled', async () => {
274
278
  const uiState = createMockUIState({
275
279
  streamingState: StreamingState.Responding,
276
280
  thought: {
@@ -281,35 +285,35 @@ describe('Composer', () => {
281
285
  const settings = createMockSettings({
282
286
  ui: { inlineThinkingMode: 'full' },
283
287
  });
284
- const { lastFrame } = renderComposer(uiState, settings);
288
+ const { lastFrame } = await renderComposer(uiState, settings);
285
289
  const output = lastFrame();
286
290
  expect(output).toContain('LoadingIndicator: Thinking ...');
287
291
  });
288
- it('hides shortcuts hint while loading', () => {
292
+ it('hides shortcuts hint while loading', async () => {
289
293
  const uiState = createMockUIState({
290
294
  streamingState: StreamingState.Responding,
291
295
  elapsedTime: 1,
292
296
  cleanUiDetailsVisible: false,
293
297
  });
294
- const { lastFrame } = renderComposer(uiState);
298
+ const { lastFrame } = await renderComposer(uiState);
295
299
  const output = lastFrame();
296
300
  expect(output).toContain('LoadingIndicator');
297
301
  expect(output).not.toContain('ShortcutsHint');
298
302
  });
299
- it('renders LoadingIndicator without thought when accessibility disables loading phrases', () => {
303
+ it('renders LoadingIndicator without thought when loadingPhrases is off', async () => {
300
304
  const uiState = createMockUIState({
301
305
  streamingState: StreamingState.Responding,
302
306
  thought: { subject: 'Hidden', description: 'Should not show' },
303
307
  });
304
- const config = createMockConfig({
305
- getAccessibility: vi.fn(() => ({ enableLoadingPhrases: false })),
308
+ const settings = createMockSettings({
309
+ merged: { ui: { loadingPhrases: 'off' } },
306
310
  });
307
- const { lastFrame } = renderComposer(uiState, undefined, config);
311
+ const { lastFrame } = await renderComposer(uiState, settings);
308
312
  const output = lastFrame();
309
313
  expect(output).toContain('LoadingIndicator');
310
314
  expect(output).not.toContain('Should not show');
311
315
  });
312
- it('does not render LoadingIndicator when waiting for confirmation', () => {
316
+ it('does not render LoadingIndicator when waiting for confirmation', async () => {
313
317
  const uiState = createMockUIState({
314
318
  streamingState: StreamingState.WaitingForConfirmation,
315
319
  thought: {
@@ -317,11 +321,11 @@ describe('Composer', () => {
317
321
  description: 'Should not show during confirmation',
318
322
  },
319
323
  });
320
- const { lastFrame } = renderComposer(uiState);
324
+ const { lastFrame } = await renderComposer(uiState);
321
325
  const output = lastFrame();
322
326
  expect(output).not.toContain('LoadingIndicator');
323
327
  });
324
- it('does not render LoadingIndicator when a tool confirmation is pending', () => {
328
+ it('does not render LoadingIndicator when a tool confirmation is pending', async () => {
325
329
  const uiState = createMockUIState({
326
330
  streamingState: StreamingState.Responding,
327
331
  pendingHistoryItems: [
@@ -340,22 +344,22 @@ describe('Composer', () => {
340
344
  },
341
345
  ],
342
346
  });
343
- const { lastFrame } = renderComposer(uiState);
347
+ const { lastFrame } = await renderComposer(uiState);
344
348
  const output = lastFrame();
345
349
  expect(output).not.toContain('LoadingIndicator');
346
350
  expect(output).not.toContain('esc to cancel');
347
351
  });
348
- it('renders LoadingIndicator when embedded shell is focused but background shell is visible', () => {
352
+ it('renders LoadingIndicator when embedded shell is focused but background shell is visible', async () => {
349
353
  const uiState = createMockUIState({
350
354
  streamingState: StreamingState.Responding,
351
355
  embeddedShellFocused: true,
352
356
  isBackgroundShellVisible: true,
353
357
  });
354
- const { lastFrame } = renderComposer(uiState);
358
+ const { lastFrame } = await renderComposer(uiState);
355
359
  const output = lastFrame();
356
360
  expect(output).toContain('LoadingIndicator');
357
361
  });
358
- it('renders both LoadingIndicator and ApprovalModeIndicator when streaming in full UI mode', () => {
362
+ it('renders both LoadingIndicator and ApprovalModeIndicator when streaming in full UI mode', async () => {
359
363
  const uiState = createMockUIState({
360
364
  streamingState: StreamingState.Responding,
361
365
  thought: {
@@ -364,24 +368,24 @@ describe('Composer', () => {
364
368
  },
365
369
  showApprovalModeIndicator: ApprovalMode.PLAN,
366
370
  });
367
- const { lastFrame } = renderComposer(uiState);
371
+ const { lastFrame } = await renderComposer(uiState);
368
372
  const output = lastFrame();
369
373
  expect(output).toContain('LoadingIndicator: Thinking');
370
374
  expect(output).toContain('ApprovalModeIndicator');
371
375
  });
372
- it('does NOT render LoadingIndicator when embedded shell is focused and background shell is NOT visible', () => {
376
+ it('does NOT render LoadingIndicator when embedded shell is focused and background shell is NOT visible', async () => {
373
377
  const uiState = createMockUIState({
374
378
  streamingState: StreamingState.Responding,
375
379
  embeddedShellFocused: true,
376
380
  isBackgroundShellVisible: false,
377
381
  });
378
- const { lastFrame } = renderComposer(uiState);
382
+ const { lastFrame } = await renderComposer(uiState);
379
383
  const output = lastFrame();
380
384
  expect(output).not.toContain('LoadingIndicator');
381
385
  });
382
386
  });
383
387
  describe('Message Queue Display', () => {
384
- it('displays queued messages when present', () => {
388
+ it('displays queued messages when present', async () => {
385
389
  const uiState = createMockUIState({
386
390
  messageQueue: [
387
391
  'First queued message',
@@ -389,17 +393,17 @@ describe('Composer', () => {
389
393
  'Third queued message',
390
394
  ],
391
395
  });
392
- const { lastFrame } = renderComposer(uiState);
396
+ const { lastFrame } = await renderComposer(uiState);
393
397
  const output = lastFrame();
394
398
  expect(output).toContain('First queued message');
395
399
  expect(output).toContain('Second queued message');
396
400
  expect(output).toContain('Third queued message');
397
401
  });
398
- it('renders QueuedMessageDisplay with empty message queue', () => {
402
+ it('renders QueuedMessageDisplay with empty message queue', async () => {
399
403
  const uiState = createMockUIState({
400
404
  messageQueue: [],
401
405
  });
402
- const { lastFrame } = renderComposer(uiState);
406
+ const { lastFrame } = await renderComposer(uiState);
403
407
  // The component should render but return null for empty queue
404
408
  // This test verifies that the component receives the correct prop
405
409
  const output = lastFrame();
@@ -407,47 +411,47 @@ describe('Composer', () => {
407
411
  });
408
412
  });
409
413
  describe('Context and Status Display', () => {
410
- it('shows StatusDisplay and ApprovalModeIndicator in normal state', () => {
414
+ it('shows StatusDisplay and ApprovalModeIndicator in normal state', async () => {
411
415
  const uiState = createMockUIState({
412
416
  ctrlCPressedOnce: false,
413
417
  ctrlDPressedOnce: false,
414
418
  showEscapePrompt: false,
415
419
  });
416
- const { lastFrame } = renderComposer(uiState);
420
+ const { lastFrame } = await renderComposer(uiState);
417
421
  const output = lastFrame();
418
422
  expect(output).toContain('StatusDisplay');
419
423
  expect(output).toContain('ApprovalModeIndicator');
420
424
  expect(output).not.toContain('ToastDisplay');
421
425
  });
422
- it('shows ToastDisplay and hides ApprovalModeIndicator when a toast is present', () => {
426
+ it('shows ToastDisplay and hides ApprovalModeIndicator when a toast is present', async () => {
423
427
  const uiState = createMockUIState({
424
428
  ctrlCPressedOnce: true,
425
429
  });
426
- const { lastFrame } = renderComposer(uiState);
430
+ const { lastFrame } = await renderComposer(uiState);
427
431
  const output = lastFrame();
428
432
  expect(output).toContain('ToastDisplay');
429
433
  expect(output).not.toContain('ApprovalModeIndicator');
430
434
  expect(output).toContain('StatusDisplay');
431
435
  });
432
- it('shows ToastDisplay for other toast types', () => {
436
+ it('shows ToastDisplay for other toast types', async () => {
433
437
  const uiState = createMockUIState({
434
438
  transientMessage: {
435
439
  text: 'Warning',
436
440
  type: TransientMessageType.Warning,
437
441
  },
438
442
  });
439
- const { lastFrame } = renderComposer(uiState);
443
+ const { lastFrame } = await renderComposer(uiState);
440
444
  const output = lastFrame();
441
445
  expect(output).toContain('ToastDisplay');
442
446
  expect(output).not.toContain('ApprovalModeIndicator');
443
447
  });
444
448
  });
445
449
  describe('Input and Indicators', () => {
446
- it('hides non-essential UI details in clean mode', () => {
450
+ it('hides non-essential UI details in clean mode', async () => {
447
451
  const uiState = createMockUIState({
448
452
  cleanUiDetailsVisible: false,
449
453
  });
450
- const { lastFrame } = renderComposer(uiState);
454
+ const { lastFrame } = await renderComposer(uiState);
451
455
  const output = lastFrame();
452
456
  expect(output).toContain('ShortcutsHint');
453
457
  expect(output).toContain('InputPrompt');
@@ -455,18 +459,18 @@ describe('Composer', () => {
455
459
  expect(output).not.toContain('ApprovalModeIndicator');
456
460
  expect(output).not.toContain('ContextSummaryDisplay');
457
461
  });
458
- it('renders InputPrompt when input is active', () => {
462
+ it('renders InputPrompt when input is active', async () => {
459
463
  const uiState = createMockUIState({
460
464
  isInputActive: true,
461
465
  });
462
- const { lastFrame } = renderComposer(uiState);
466
+ const { lastFrame } = await renderComposer(uiState);
463
467
  expect(lastFrame()).toContain('InputPrompt');
464
468
  });
465
- it('does not render InputPrompt when input is inactive', () => {
469
+ it('does not render InputPrompt when input is inactive', async () => {
466
470
  const uiState = createMockUIState({
467
471
  isInputActive: false,
468
472
  });
469
- const { lastFrame } = renderComposer(uiState);
473
+ const { lastFrame } = await renderComposer(uiState);
470
474
  expect(lastFrame()).not.toContain('InputPrompt');
471
475
  });
472
476
  it.each([
@@ -474,83 +478,83 @@ describe('Composer', () => {
474
478
  [ApprovalMode.AUTO_EDIT],
475
479
  [ApprovalMode.PLAN],
476
480
  [ApprovalMode.YOLO],
477
- ])('shows ApprovalModeIndicator when approval mode is %s and shell mode is inactive', (mode) => {
481
+ ])('shows ApprovalModeIndicator when approval mode is %s and shell mode is inactive', async (mode) => {
478
482
  const uiState = createMockUIState({
479
483
  showApprovalModeIndicator: mode,
480
484
  shellModeActive: false,
481
485
  });
482
- const { lastFrame } = renderComposer(uiState);
486
+ const { lastFrame } = await renderComposer(uiState);
483
487
  expect(lastFrame()).toMatch(/ApprovalModeIndic[\s\S]*ator/);
484
488
  });
485
- it('shows ShellModeIndicator when shell mode is active', () => {
489
+ it('shows ShellModeIndicator when shell mode is active', async () => {
486
490
  const uiState = createMockUIState({
487
491
  shellModeActive: true,
488
492
  });
489
- const { lastFrame } = renderComposer(uiState);
493
+ const { lastFrame } = await renderComposer(uiState);
490
494
  expect(lastFrame()).toMatch(/ShellModeIndic[\s\S]*tor/);
491
495
  });
492
- it('shows RawMarkdownIndicator when renderMarkdown is false', () => {
496
+ it('shows RawMarkdownIndicator when renderMarkdown is false', async () => {
493
497
  const uiState = createMockUIState({
494
498
  renderMarkdown: false,
495
499
  });
496
- const { lastFrame } = renderComposer(uiState);
500
+ const { lastFrame } = await renderComposer(uiState);
497
501
  expect(lastFrame()).toContain('raw markdown mode');
498
502
  });
499
- it('does not show RawMarkdownIndicator when renderMarkdown is true', () => {
503
+ it('does not show RawMarkdownIndicator when renderMarkdown is true', async () => {
500
504
  const uiState = createMockUIState({
501
505
  renderMarkdown: true,
502
506
  });
503
- const { lastFrame } = renderComposer(uiState);
507
+ const { lastFrame } = await renderComposer(uiState);
504
508
  expect(lastFrame()).not.toContain('raw markdown mode');
505
509
  });
506
510
  it.each([
507
511
  [ApprovalMode.YOLO, 'YOLO'],
508
512
  [ApprovalMode.PLAN, 'plan'],
509
513
  [ApprovalMode.AUTO_EDIT, 'auto edit'],
510
- ])('shows minimal mode badge "%s" when clean UI details are hidden', (mode, label) => {
514
+ ])('shows minimal mode badge "%s" when clean UI details are hidden', async (mode, label) => {
511
515
  const uiState = createMockUIState({
512
516
  cleanUiDetailsVisible: false,
513
517
  showApprovalModeIndicator: mode,
514
518
  });
515
- const { lastFrame } = renderComposer(uiState);
519
+ const { lastFrame } = await renderComposer(uiState);
516
520
  expect(lastFrame()).toContain(label);
517
521
  });
518
- it('hides minimal mode badge while loading in clean mode', () => {
522
+ it('hides minimal mode badge while loading in clean mode', async () => {
519
523
  const uiState = createMockUIState({
520
524
  cleanUiDetailsVisible: false,
521
525
  streamingState: StreamingState.Responding,
522
526
  elapsedTime: 1,
523
527
  showApprovalModeIndicator: ApprovalMode.PLAN,
524
528
  });
525
- const { lastFrame } = renderComposer(uiState);
529
+ const { lastFrame } = await renderComposer(uiState);
526
530
  const output = lastFrame();
527
531
  expect(output).toContain('LoadingIndicator');
528
532
  expect(output).not.toContain('plan');
529
533
  expect(output).not.toContain('ShortcutsHint');
530
534
  });
531
- it('hides minimal mode badge while action-required state is active', () => {
535
+ it('hides minimal mode badge while action-required state is active', async () => {
532
536
  const uiState = createMockUIState({
533
537
  cleanUiDetailsVisible: false,
534
538
  showApprovalModeIndicator: ApprovalMode.PLAN,
535
539
  customDialog: (_jsx(Box, { children: _jsx(Text, { children: "Prompt" }) })),
536
540
  });
537
- const { lastFrame } = renderComposer(uiState);
541
+ const { lastFrame } = await renderComposer(uiState);
538
542
  const output = lastFrame();
539
543
  expect(output).not.toContain('plan');
540
544
  expect(output).not.toContain('ShortcutsHint');
541
545
  });
542
- it('shows Esc rewind prompt in minimal mode without showing full UI', () => {
546
+ it('shows Esc rewind prompt in minimal mode without showing full UI', async () => {
543
547
  const uiState = createMockUIState({
544
548
  cleanUiDetailsVisible: false,
545
549
  showEscapePrompt: true,
546
550
  history: [{ id: 1, type: 'user', text: 'msg' }],
547
551
  });
548
- const { lastFrame } = renderComposer(uiState);
552
+ const { lastFrame } = await renderComposer(uiState);
549
553
  const output = lastFrame();
550
554
  expect(output).toContain('ToastDisplay');
551
555
  expect(output).not.toContain('ContextSummaryDisplay');
552
556
  });
553
- it('shows context usage bleed-through when over 60%', () => {
557
+ it('shows context usage bleed-through when over 60%', async () => {
554
558
  const model = 'gemini-2.5-pro';
555
559
  const uiState = createMockUIState({
556
560
  cleanUiDetailsVisible: false,
@@ -569,12 +573,12 @@ describe('Composer', () => {
569
573
  footer: { hideContextPercentage: false },
570
574
  },
571
575
  });
572
- const { lastFrame } = renderComposer(uiState, settings);
576
+ const { lastFrame } = await renderComposer(uiState, settings);
573
577
  expect(lastFrame()).toContain('%');
574
578
  });
575
579
  });
576
580
  describe('Error Details Display', () => {
577
- it('shows DetailedMessagesDisplay when showErrorDetails is true', () => {
581
+ it('shows DetailedMessagesDisplay when showErrorDetails is true', async () => {
578
582
  const uiState = createMockUIState({
579
583
  showErrorDetails: true,
580
584
  filteredConsoleMessages: [
@@ -585,15 +589,15 @@ describe('Composer', () => {
585
589
  },
586
590
  ],
587
591
  });
588
- const { lastFrame } = renderComposer(uiState);
592
+ const { lastFrame } = await renderComposer(uiState);
589
593
  expect(lastFrame()).toContain('DetailedMessagesDisplay');
590
594
  expect(lastFrame()).toContain('ShowMoreLines');
591
595
  });
592
- it('does not show error details when showErrorDetails is false', () => {
596
+ it('does not show error details when showErrorDetails is false', async () => {
593
597
  const uiState = createMockUIState({
594
598
  showErrorDetails: false,
595
599
  });
596
- const { lastFrame } = renderComposer(uiState);
600
+ const { lastFrame } = await renderComposer(uiState);
597
601
  expect(lastFrame()).not.toContain('DetailedMessagesDisplay');
598
602
  });
599
603
  });
@@ -607,7 +611,7 @@ describe('Composer', () => {
607
611
  toggleVimEnabled: vi.fn(),
608
612
  setVimMode: vi.fn(),
609
613
  });
610
- const { lastFrame } = renderComposer(uiState);
614
+ const { lastFrame } = await renderComposer(uiState);
611
615
  expect(lastFrame()).toContain("InputPrompt: Press 'Esc' for NORMAL mode.");
612
616
  });
613
617
  it('shows correct placeholder in NORMAL mode', async () => {
@@ -619,123 +623,123 @@ describe('Composer', () => {
619
623
  toggleVimEnabled: vi.fn(),
620
624
  setVimMode: vi.fn(),
621
625
  });
622
- const { lastFrame } = renderComposer(uiState);
626
+ const { lastFrame } = await renderComposer(uiState);
623
627
  expect(lastFrame()).toContain("InputPrompt: Press 'i' for INSERT mode.");
624
628
  });
625
629
  });
626
630
  describe('Shortcuts Hint', () => {
627
- it('hides shortcuts hint when showShortcutsHint setting is false', () => {
631
+ it('hides shortcuts hint when showShortcutsHint setting is false', async () => {
628
632
  const uiState = createMockUIState();
629
633
  const settings = createMockSettings({
630
634
  ui: {
631
635
  showShortcutsHint: false,
632
636
  },
633
637
  });
634
- const { lastFrame } = renderComposer(uiState, settings);
638
+ const { lastFrame } = await renderComposer(uiState, settings);
635
639
  expect(lastFrame()).not.toContain('ShortcutsHint');
636
640
  });
637
- it('hides shortcuts hint when a action is required (e.g. dialog is open)', () => {
641
+ it('hides shortcuts hint when a action is required (e.g. dialog is open)', async () => {
638
642
  const uiState = createMockUIState({
639
643
  customDialog: (_jsxs(Box, { children: [_jsx(Text, { children: "Test Dialog" }), _jsx(Text, { children: "Test Content" })] })),
640
644
  });
641
- const { lastFrame } = renderComposer(uiState);
645
+ const { lastFrame } = await renderComposer(uiState);
642
646
  expect(lastFrame()).not.toContain('ShortcutsHint');
643
647
  });
644
- it('keeps shortcuts hint visible when no action is required', () => {
648
+ it('keeps shortcuts hint visible when no action is required', async () => {
645
649
  const uiState = createMockUIState({
646
650
  cleanUiDetailsVisible: false,
647
651
  });
648
- const { lastFrame } = renderComposer(uiState);
652
+ const { lastFrame } = await renderComposer(uiState);
649
653
  expect(lastFrame()).toContain('ShortcutsHint');
650
654
  });
651
- it('shows shortcuts hint when full UI details are visible', () => {
655
+ it('shows shortcuts hint when full UI details are visible', async () => {
652
656
  const uiState = createMockUIState({
653
657
  cleanUiDetailsVisible: true,
654
658
  });
655
- const { lastFrame } = renderComposer(uiState);
659
+ const { lastFrame } = await renderComposer(uiState);
656
660
  expect(lastFrame()).toContain('ShortcutsHint');
657
661
  });
658
- it('hides shortcuts hint while loading in minimal mode', () => {
662
+ it('hides shortcuts hint while loading in minimal mode', async () => {
659
663
  const uiState = createMockUIState({
660
664
  cleanUiDetailsVisible: false,
661
665
  streamingState: StreamingState.Responding,
662
666
  elapsedTime: 1,
663
667
  });
664
- const { lastFrame } = renderComposer(uiState);
668
+ const { lastFrame } = await renderComposer(uiState);
665
669
  expect(lastFrame()).not.toContain('ShortcutsHint');
666
670
  });
667
- it('shows shortcuts help in minimal mode when toggled on', () => {
671
+ it('shows shortcuts help in minimal mode when toggled on', async () => {
668
672
  const uiState = createMockUIState({
669
673
  cleanUiDetailsVisible: false,
670
674
  shortcutsHelpVisible: true,
671
675
  });
672
- const { lastFrame } = renderComposer(uiState);
676
+ const { lastFrame } = await renderComposer(uiState);
673
677
  expect(lastFrame()).toContain('ShortcutsHelp');
674
678
  });
675
- it('hides shortcuts hint when suggestions are visible above input in alternate buffer', () => {
679
+ it('hides shortcuts hint when suggestions are visible above input in alternate buffer', async () => {
676
680
  composerTestControls.isAlternateBuffer = true;
677
681
  composerTestControls.suggestionsVisible = true;
678
682
  const uiState = createMockUIState({
679
683
  cleanUiDetailsVisible: false,
680
684
  showApprovalModeIndicator: ApprovalMode.PLAN,
681
685
  });
682
- const { lastFrame } = renderComposer(uiState);
686
+ const { lastFrame } = await renderComposer(uiState);
683
687
  expect(lastFrame()).not.toContain('ShortcutsHint');
684
688
  expect(lastFrame()).not.toContain('plan');
685
689
  });
686
- it('hides approval mode indicator when suggestions are visible above input in alternate buffer', () => {
690
+ it('hides approval mode indicator when suggestions are visible above input in alternate buffer', async () => {
687
691
  composerTestControls.isAlternateBuffer = true;
688
692
  composerTestControls.suggestionsVisible = true;
689
693
  const uiState = createMockUIState({
690
694
  cleanUiDetailsVisible: true,
691
695
  showApprovalModeIndicator: ApprovalMode.YOLO,
692
696
  });
693
- const { lastFrame } = renderComposer(uiState);
697
+ const { lastFrame } = await renderComposer(uiState);
694
698
  expect(lastFrame()).not.toContain('ApprovalModeIndicator');
695
699
  });
696
- it('keeps shortcuts hint when suggestions are visible below input in regular buffer', () => {
700
+ it('keeps shortcuts hint when suggestions are visible below input in regular buffer', async () => {
697
701
  composerTestControls.isAlternateBuffer = false;
698
702
  composerTestControls.suggestionsVisible = true;
699
703
  const uiState = createMockUIState({
700
704
  cleanUiDetailsVisible: false,
701
705
  });
702
- const { lastFrame } = renderComposer(uiState);
706
+ const { lastFrame } = await renderComposer(uiState);
703
707
  expect(lastFrame()).toContain('ShortcutsHint');
704
708
  });
705
709
  });
706
710
  describe('Shortcuts Help', () => {
707
- it('shows shortcuts help in passive state', () => {
711
+ it('shows shortcuts help in passive state', async () => {
708
712
  const uiState = createMockUIState({
709
713
  shortcutsHelpVisible: true,
710
714
  streamingState: StreamingState.Idle,
711
715
  });
712
- const { lastFrame } = renderComposer(uiState);
716
+ const { lastFrame } = await renderComposer(uiState);
713
717
  expect(lastFrame()).toContain('ShortcutsHelp');
714
718
  });
715
- it('hides shortcuts help while streaming', () => {
719
+ it('hides shortcuts help while streaming', async () => {
716
720
  const uiState = createMockUIState({
717
721
  shortcutsHelpVisible: true,
718
722
  streamingState: StreamingState.Responding,
719
723
  });
720
- const { lastFrame } = renderComposer(uiState);
724
+ const { lastFrame } = await renderComposer(uiState);
721
725
  expect(lastFrame()).not.toContain('ShortcutsHelp');
722
726
  });
723
- it('hides shortcuts help when action is required', () => {
727
+ it('hides shortcuts help when action is required', async () => {
724
728
  const uiState = createMockUIState({
725
729
  shortcutsHelpVisible: true,
726
730
  customDialog: (_jsx(Box, { children: _jsx(Text, { children: "Dialog content" }) })),
727
731
  });
728
- const { lastFrame } = renderComposer(uiState);
732
+ const { lastFrame } = await renderComposer(uiState);
729
733
  expect(lastFrame()).not.toContain('ShortcutsHelp');
730
734
  });
731
735
  });
732
736
  describe('Snapshots', () => {
733
- it('matches snapshot in idle state', () => {
737
+ it('matches snapshot in idle state', async () => {
734
738
  const uiState = createMockUIState();
735
- const { lastFrame } = renderComposer(uiState);
739
+ const { lastFrame } = await renderComposer(uiState);
736
740
  expect(lastFrame()).toMatchSnapshot();
737
741
  });
738
- it('matches snapshot while streaming', () => {
742
+ it('matches snapshot while streaming', async () => {
739
743
  const uiState = createMockUIState({
740
744
  streamingState: StreamingState.Responding,
741
745
  thought: {
@@ -743,30 +747,30 @@ describe('Composer', () => {
743
747
  description: 'Thinking about the meaning of life...',
744
748
  },
745
749
  });
746
- const { lastFrame } = renderComposer(uiState);
750
+ const { lastFrame } = await renderComposer(uiState);
747
751
  expect(lastFrame()).toMatchSnapshot();
748
752
  });
749
- it('matches snapshot in narrow view', () => {
753
+ it('matches snapshot in narrow view', async () => {
750
754
  const uiState = createMockUIState({
751
755
  terminalWidth: 40,
752
756
  });
753
- const { lastFrame } = renderComposer(uiState);
757
+ const { lastFrame } = await renderComposer(uiState);
754
758
  expect(lastFrame()).toMatchSnapshot();
755
759
  });
756
- it('matches snapshot in minimal UI mode', () => {
760
+ it('matches snapshot in minimal UI mode', async () => {
757
761
  const uiState = createMockUIState({
758
762
  cleanUiDetailsVisible: false,
759
763
  });
760
- const { lastFrame } = renderComposer(uiState);
764
+ const { lastFrame } = await renderComposer(uiState);
761
765
  expect(lastFrame()).toMatchSnapshot();
762
766
  });
763
- it('matches snapshot in minimal UI mode while loading', () => {
767
+ it('matches snapshot in minimal UI mode while loading', async () => {
764
768
  const uiState = createMockUIState({
765
769
  cleanUiDetailsVisible: false,
766
770
  streamingState: StreamingState.Responding,
767
771
  elapsedTime: 1000,
768
772
  });
769
- const { lastFrame } = renderComposer(uiState);
773
+ const { lastFrame } = await renderComposer(uiState);
770
774
  expect(lastFrame()).toMatchSnapshot();
771
775
  });
772
776
  });