@machina.ai/cell-cli 1.8.2-rc1 → 1.11.0-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 (637) hide show
  1. package/dist/index.js +5 -5
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +8 -7
  4. package/dist/src/commands/extensions/disable.js +8 -5
  5. package/dist/src/commands/extensions/disable.js.map +1 -1
  6. package/dist/src/commands/extensions/enable.js +8 -6
  7. package/dist/src/commands/extensions/enable.js.map +1 -1
  8. package/dist/src/commands/extensions/examples/context/GEMINI.md +9 -3
  9. package/dist/src/commands/extensions/examples/mcp-server/example.d.ts +6 -0
  10. package/dist/src/commands/extensions/examples/mcp-server/example.js +46 -0
  11. package/dist/src/commands/extensions/examples/mcp-server/example.js.map +1 -0
  12. package/dist/src/commands/extensions/install.d.ts +2 -0
  13. package/dist/src/commands/extensions/install.js +25 -5
  14. package/dist/src/commands/extensions/install.js.map +1 -1
  15. package/dist/src/commands/extensions/install.test.js +9 -9
  16. package/dist/src/commands/extensions/install.test.js.map +1 -1
  17. package/dist/src/commands/extensions/link.js +5 -4
  18. package/dist/src/commands/extensions/link.js.map +1 -1
  19. package/dist/src/commands/extensions/list.js +7 -5
  20. package/dist/src/commands/extensions/list.js.map +1 -1
  21. package/dist/src/commands/extensions/new.js +14 -20
  22. package/dist/src/commands/extensions/new.js.map +1 -1
  23. package/dist/src/commands/extensions/uninstall.js +4 -3
  24. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  25. package/dist/src/commands/extensions/update.js +18 -22
  26. package/dist/src/commands/extensions/update.js.map +1 -1
  27. package/dist/src/commands/mcp/add.js +7 -4
  28. package/dist/src/commands/mcp/add.js.map +1 -1
  29. package/dist/src/commands/mcp/add.test.d.ts +6 -0
  30. package/dist/src/commands/mcp/add.test.js +244 -0
  31. package/dist/src/commands/mcp/add.test.js.map +1 -0
  32. package/dist/src/commands/mcp/list.js +11 -9
  33. package/dist/src/commands/mcp/list.js.map +1 -1
  34. package/dist/src/commands/mcp/list.test.d.ts +6 -0
  35. package/dist/src/commands/mcp/list.test.js +118 -0
  36. package/dist/src/commands/mcp/list.test.js.map +1 -0
  37. package/dist/src/commands/mcp/remove.js +3 -2
  38. package/dist/src/commands/mcp/remove.js.map +1 -1
  39. package/dist/src/commands/mcp/remove.test.d.ts +6 -0
  40. package/dist/src/commands/mcp/remove.test.js +175 -0
  41. package/dist/src/commands/mcp/remove.test.js.map +1 -0
  42. package/dist/src/commands/mcp.test.d.ts +6 -0
  43. package/dist/src/commands/mcp.test.js +62 -0
  44. package/dist/src/commands/mcp.test.js.map +1 -0
  45. package/dist/src/config/auth.js +3 -1
  46. package/dist/src/config/auth.js.map +1 -1
  47. package/dist/src/config/config.d.ts +4 -16
  48. package/dist/src/config/config.integration.test.d.ts +6 -0
  49. package/dist/src/config/config.integration.test.js +321 -0
  50. package/dist/src/config/config.integration.test.js.map +1 -0
  51. package/dist/src/config/config.js +80 -105
  52. package/dist/src/config/config.js.map +1 -1
  53. package/dist/src/config/config.test.d.ts +6 -0
  54. package/dist/src/config/config.test.js +1949 -0
  55. package/dist/src/config/config.test.js.map +1 -0
  56. package/dist/src/config/extension.d.ts +19 -27
  57. package/dist/src/config/extension.js +159 -139
  58. package/dist/src/config/extension.js.map +1 -1
  59. package/dist/src/config/extension.test.d.ts +6 -0
  60. package/dist/src/config/extension.test.js +1088 -0
  61. package/dist/src/config/extension.test.js.map +1 -0
  62. package/dist/src/config/extensions/extensionEnablement.d.ts +3 -3
  63. package/dist/src/config/extensions/extensionEnablement.js +5 -5
  64. package/dist/src/config/extensions/extensionEnablement.js.map +1 -1
  65. package/dist/src/config/extensions/extensionEnablement.test.js +26 -22
  66. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -1
  67. package/dist/src/config/extensions/github.d.ts +23 -7
  68. package/dist/src/config/extensions/github.js +139 -88
  69. package/dist/src/config/extensions/github.js.map +1 -1
  70. package/dist/src/config/extensions/github.test.js +74 -22
  71. package/dist/src/config/extensions/github.test.js.map +1 -1
  72. package/dist/src/config/extensions/github_fetch.d.ts +7 -0
  73. package/dist/src/config/extensions/github_fetch.js +34 -0
  74. package/dist/src/config/extensions/github_fetch.js.map +1 -0
  75. package/dist/src/config/extensions/update.d.ts +5 -4
  76. package/dist/src/config/extensions/update.js +23 -16
  77. package/dist/src/config/extensions/update.js.map +1 -1
  78. package/dist/src/config/extensions/update.test.js +57 -57
  79. package/dist/src/config/extensions/update.test.js.map +1 -1
  80. package/dist/src/config/extensions/variableSchema.d.ts +2 -0
  81. package/dist/src/config/extensions/variableSchema.js.map +1 -1
  82. package/dist/src/config/keyBindings.d.ts +2 -1
  83. package/dist/src/config/keyBindings.js +5 -3
  84. package/dist/src/config/keyBindings.js.map +1 -1
  85. package/dist/src/config/policy.d.ts +3 -2
  86. package/dist/src/config/policy.js +33 -24
  87. package/dist/src/config/policy.js.map +1 -1
  88. package/dist/src/config/policy.test.js +60 -36
  89. package/dist/src/config/policy.test.js.map +1 -1
  90. package/dist/src/config/sandboxConfig.d.ts +0 -1
  91. package/dist/src/config/sandboxConfig.js +1 -3
  92. package/dist/src/config/sandboxConfig.js.map +1 -1
  93. package/dist/src/config/settings.d.ts +10 -1
  94. package/dist/src/config/settings.js +24 -9
  95. package/dist/src/config/settings.js.map +1 -1
  96. package/dist/src/config/settings.test.d.ts +6 -0
  97. package/dist/src/config/settings.test.js +1941 -0
  98. package/dist/src/config/settings.test.js.map +1 -0
  99. package/dist/src/config/settingsSchema.d.ts +124 -3
  100. package/dist/src/config/settingsSchema.js +125 -4
  101. package/dist/src/config/settingsSchema.js.map +1 -1
  102. package/dist/src/config/trustedFolders.d.ts +0 -1
  103. package/dist/src/config/trustedFolders.js +2 -3
  104. package/dist/src/config/trustedFolders.js.map +1 -1
  105. package/dist/src/gemini.js +46 -33
  106. package/dist/src/gemini.js.map +1 -1
  107. package/dist/src/gemini.test.js +62 -19
  108. package/dist/src/gemini.test.js.map +1 -1
  109. package/dist/src/generated/git-commit.d.ts +2 -2
  110. package/dist/src/generated/git-commit.js +2 -2
  111. package/dist/src/generated/git-commit.js.map +1 -1
  112. package/dist/src/nonInteractiveCli.js +105 -4
  113. package/dist/src/nonInteractiveCli.js.map +1 -1
  114. package/dist/src/nonInteractiveCli.test.d.ts +6 -0
  115. package/dist/src/nonInteractiveCli.test.js +741 -0
  116. package/dist/src/nonInteractiveCli.test.js.map +1 -0
  117. package/dist/src/nonInteractiveCliCommands.js +2 -3
  118. package/dist/src/nonInteractiveCliCommands.js.map +1 -1
  119. package/dist/src/services/BuiltinCommandLoader.js +3 -0
  120. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  121. package/dist/src/services/BuiltinCommandLoader.test.js +37 -0
  122. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  123. package/dist/src/services/CommandService.js +2 -1
  124. package/dist/src/services/CommandService.js.map +1 -1
  125. package/dist/src/services/FileCommandLoader.d.ts +1 -1
  126. package/dist/src/services/FileCommandLoader.js +4 -4
  127. package/dist/src/services/FileCommandLoader.js.map +1 -1
  128. package/dist/src/services/FileCommandLoader.test.d.ts +6 -0
  129. package/dist/src/services/FileCommandLoader.test.js +971 -0
  130. package/dist/src/services/FileCommandLoader.test.js.map +1 -0
  131. package/dist/src/services/prompt-processors/argumentProcessor.test.d.ts +6 -0
  132. package/dist/src/services/prompt-processors/argumentProcessor.test.js +40 -0
  133. package/dist/src/services/prompt-processors/argumentProcessor.test.js.map +1 -0
  134. package/dist/src/services/prompt-processors/atFileProcessor.js +3 -2
  135. package/dist/src/services/prompt-processors/atFileProcessor.js.map +1 -1
  136. package/dist/src/services/prompt-processors/shellProcessor.js +1 -1
  137. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  138. package/dist/src/services/prompt-processors/shellProcessor.test.d.ts +6 -0
  139. package/dist/src/services/prompt-processors/shellProcessor.test.js +482 -0
  140. package/dist/src/services/prompt-processors/shellProcessor.test.js.map +1 -0
  141. package/dist/src/test-utils/render.d.ts +12 -4
  142. package/dist/src/test-utils/render.js +56 -2
  143. package/dist/src/test-utils/render.js.map +1 -1
  144. package/dist/src/ui/App.js +1 -17
  145. package/dist/src/ui/App.js.map +1 -1
  146. package/dist/src/ui/App.test.d.ts +6 -0
  147. package/dist/src/ui/App.test.js +110 -0
  148. package/dist/src/ui/App.test.js.map +1 -0
  149. package/dist/src/ui/AppContainer.js +69 -39
  150. package/dist/src/ui/AppContainer.js.map +1 -1
  151. package/dist/src/ui/AppContainer.test.js +35 -9
  152. package/dist/src/ui/AppContainer.test.js.map +1 -1
  153. package/dist/src/ui/auth/AuthDialog.d.ts +1 -1
  154. package/dist/src/ui/auth/AuthDialog.js +5 -3
  155. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  156. package/dist/src/ui/auth/AuthInProgress.js +2 -2
  157. package/dist/src/ui/auth/AuthInProgress.js.map +1 -1
  158. package/dist/src/ui/auth/useAuth.d.ts +1 -1
  159. package/dist/src/ui/auth/useAuth.js +5 -3
  160. package/dist/src/ui/auth/useAuth.js.map +1 -1
  161. package/dist/src/ui/commands/aboutCommand.js +1 -1
  162. package/dist/src/ui/commands/aboutCommand.test.d.ts +6 -0
  163. package/dist/src/ui/commands/aboutCommand.test.js +130 -0
  164. package/dist/src/ui/commands/aboutCommand.test.js.map +1 -0
  165. package/dist/src/ui/commands/authCommand.js +1 -1
  166. package/dist/src/ui/commands/authCommand.test.d.ts +6 -0
  167. package/dist/src/ui/commands/authCommand.test.js +30 -0
  168. package/dist/src/ui/commands/authCommand.test.js.map +1 -0
  169. package/dist/src/ui/commands/bugCommand.js +1 -1
  170. package/dist/src/ui/commands/bugCommand.test.d.ts +6 -0
  171. package/dist/src/ui/commands/bugCommand.test.js +105 -0
  172. package/dist/src/ui/commands/bugCommand.test.js.map +1 -0
  173. package/dist/src/ui/commands/chatCommand.js +8 -25
  174. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  175. package/dist/src/ui/commands/chatCommand.test.d.ts +6 -0
  176. package/dist/src/ui/commands/chatCommand.test.js +555 -0
  177. package/dist/src/ui/commands/chatCommand.test.js.map +1 -0
  178. package/dist/src/ui/commands/clearCommand.js +1 -1
  179. package/dist/src/ui/commands/clearCommand.test.d.ts +6 -0
  180. package/dist/src/ui/commands/clearCommand.test.js +76 -0
  181. package/dist/src/ui/commands/clearCommand.test.js.map +1 -0
  182. package/dist/src/ui/commands/compressCommand.js +1 -1
  183. package/dist/src/ui/commands/compressCommand.js.map +1 -1
  184. package/dist/src/ui/commands/compressCommand.test.d.ts +6 -0
  185. package/dist/src/ui/commands/compressCommand.test.js +98 -0
  186. package/dist/src/ui/commands/compressCommand.test.js.map +1 -0
  187. package/dist/src/ui/commands/copyCommand.js +2 -1
  188. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  189. package/dist/src/ui/commands/copyCommand.test.d.ts +6 -0
  190. package/dist/src/ui/commands/copyCommand.test.js +242 -0
  191. package/dist/src/ui/commands/copyCommand.test.js.map +1 -0
  192. package/dist/src/ui/commands/corgiCommand.js +1 -1
  193. package/dist/src/ui/commands/corgiCommand.js.map +1 -1
  194. package/dist/src/ui/commands/corgiCommand.test.d.ts +6 -0
  195. package/dist/src/ui/commands/corgiCommand.test.js +28 -0
  196. package/dist/src/ui/commands/corgiCommand.test.js.map +1 -0
  197. package/dist/src/ui/commands/directoryCommand.js +1 -1
  198. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  199. package/dist/src/ui/commands/directoryCommand.test.d.ts +6 -0
  200. package/dist/src/ui/commands/directoryCommand.test.js +144 -0
  201. package/dist/src/ui/commands/directoryCommand.test.js.map +1 -0
  202. package/dist/src/ui/commands/docsCommand.js +1 -1
  203. package/dist/src/ui/commands/docsCommand.test.d.ts +6 -0
  204. package/dist/src/ui/commands/docsCommand.test.js +72 -0
  205. package/dist/src/ui/commands/docsCommand.test.js.map +1 -0
  206. package/dist/src/ui/commands/editorCommand.js +1 -1
  207. package/dist/src/ui/commands/editorCommand.test.d.ts +6 -0
  208. package/dist/src/ui/commands/editorCommand.test.js +27 -0
  209. package/dist/src/ui/commands/editorCommand.test.js.map +1 -0
  210. package/dist/src/ui/commands/extensionsCommand.js +30 -32
  211. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  212. package/dist/src/ui/commands/extensionsCommand.test.d.ts +6 -0
  213. package/dist/src/ui/commands/extensionsCommand.test.js +244 -0
  214. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -0
  215. package/dist/src/ui/commands/helpCommand.js +1 -1
  216. package/dist/src/ui/commands/helpCommand.test.d.ts +6 -0
  217. package/dist/src/ui/commands/helpCommand.test.js +42 -0
  218. package/dist/src/ui/commands/helpCommand.test.js.map +1 -0
  219. package/dist/src/ui/commands/ideCommand.js +6 -6
  220. package/dist/src/ui/commands/ideCommand.test.d.ts +6 -0
  221. package/dist/src/ui/commands/ideCommand.test.js +205 -0
  222. package/dist/src/ui/commands/ideCommand.test.js.map +1 -0
  223. package/dist/src/ui/commands/initCommand.js +1 -1
  224. package/dist/src/ui/commands/initCommand.js.map +1 -1
  225. package/dist/src/ui/commands/initCommand.test.d.ts +6 -0
  226. package/dist/src/ui/commands/initCommand.test.js +80 -0
  227. package/dist/src/ui/commands/initCommand.test.js.map +1 -0
  228. package/dist/src/ui/commands/mcpCommand.js +98 -88
  229. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  230. package/dist/src/ui/commands/mcpCommand.test.d.ts +6 -0
  231. package/dist/src/ui/commands/mcpCommand.test.js +148 -0
  232. package/dist/src/ui/commands/mcpCommand.test.js.map +1 -0
  233. package/dist/src/ui/commands/memoryCommand.js +27 -9
  234. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  235. package/dist/src/ui/commands/memoryCommand.test.d.ts +6 -0
  236. package/dist/src/ui/commands/memoryCommand.test.js +266 -0
  237. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -0
  238. package/dist/src/ui/commands/privacyCommand.js +1 -1
  239. package/dist/src/ui/commands/privacyCommand.test.d.ts +6 -0
  240. package/dist/src/ui/commands/privacyCommand.test.js +32 -0
  241. package/dist/src/ui/commands/privacyCommand.test.js.map +1 -0
  242. package/dist/src/ui/commands/profileCommand.d.ts +7 -0
  243. package/dist/src/ui/commands/profileCommand.js +23 -0
  244. package/dist/src/ui/commands/profileCommand.js.map +1 -0
  245. package/dist/src/ui/commands/quitCommand.js +1 -1
  246. package/dist/src/ui/commands/quitCommand.test.d.ts +6 -0
  247. package/dist/src/ui/commands/quitCommand.test.js +50 -0
  248. package/dist/src/ui/commands/quitCommand.test.js.map +1 -0
  249. package/dist/src/ui/commands/restoreCommand.test.d.ts +6 -0
  250. package/dist/src/ui/commands/restoreCommand.test.js +190 -0
  251. package/dist/src/ui/commands/restoreCommand.test.js.map +1 -0
  252. package/dist/src/ui/commands/settingsCommand.test.d.ts +6 -0
  253. package/dist/src/ui/commands/settingsCommand.test.js +30 -0
  254. package/dist/src/ui/commands/settingsCommand.test.js.map +1 -0
  255. package/dist/src/ui/commands/setupGithubCommand.js +4 -3
  256. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  257. package/dist/src/ui/commands/statsCommand.js +3 -3
  258. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  259. package/dist/src/ui/commands/statsCommand.test.d.ts +6 -0
  260. package/dist/src/ui/commands/statsCommand.test.js +53 -0
  261. package/dist/src/ui/commands/statsCommand.test.js.map +1 -0
  262. package/dist/src/ui/commands/terminalSetupCommand.test.d.ts +6 -0
  263. package/dist/src/ui/commands/terminalSetupCommand.test.js +66 -0
  264. package/dist/src/ui/commands/terminalSetupCommand.test.js.map +1 -0
  265. package/dist/src/ui/commands/themeCommand.js +1 -1
  266. package/dist/src/ui/commands/themeCommand.test.d.ts +6 -0
  267. package/dist/src/ui/commands/themeCommand.test.js +32 -0
  268. package/dist/src/ui/commands/themeCommand.test.js.map +1 -0
  269. package/dist/src/ui/commands/toolsCommand.js +1 -1
  270. package/dist/src/ui/commands/toolsCommand.test.d.ts +6 -0
  271. package/dist/src/ui/commands/toolsCommand.test.js +100 -0
  272. package/dist/src/ui/commands/toolsCommand.test.js.map +1 -0
  273. package/dist/src/ui/commands/types.d.ts +2 -0
  274. package/dist/src/ui/commands/types.js.map +1 -1
  275. package/dist/src/ui/commands/vimCommand.js +1 -1
  276. package/dist/src/ui/components/AnsiOutput.d.ts +1 -0
  277. package/dist/src/ui/components/AnsiOutput.js +5 -5
  278. package/dist/src/ui/components/AnsiOutput.js.map +1 -1
  279. package/dist/src/ui/components/AnsiOutput.test.js +6 -6
  280. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
  281. package/dist/src/ui/components/AsciiArt.d.ts +3 -3
  282. package/dist/src/ui/components/AsciiArt.js +3 -3
  283. package/dist/src/ui/components/CliSpinner.d.ts +10 -0
  284. package/dist/src/ui/components/CliSpinner.js +20 -0
  285. package/dist/src/ui/components/CliSpinner.js.map +1 -0
  286. package/dist/src/ui/components/Composer.js +8 -9
  287. package/dist/src/ui/components/Composer.js.map +1 -1
  288. package/dist/src/ui/components/Composer.test.js +16 -1
  289. package/dist/src/ui/components/Composer.test.js.map +1 -1
  290. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +0 -1
  291. package/dist/src/ui/components/ContextSummaryDisplay.js +4 -14
  292. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  293. package/dist/src/ui/components/ContextSummaryDisplay.test.d.ts +6 -0
  294. package/dist/src/ui/components/ContextSummaryDisplay.test.js +66 -0
  295. package/dist/src/ui/components/ContextSummaryDisplay.test.js.map +1 -0
  296. package/dist/src/ui/components/DebugProfiler.d.ts +18 -0
  297. package/dist/src/ui/components/DebugProfiler.js +158 -12
  298. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  299. package/dist/src/ui/components/DebugProfiler.test.d.ts +6 -0
  300. package/dist/src/ui/components/DebugProfiler.test.js +140 -0
  301. package/dist/src/ui/components/DebugProfiler.test.js.map +1 -0
  302. package/dist/src/ui/components/DialogManager.js +1 -5
  303. package/dist/src/ui/components/DialogManager.js.map +1 -1
  304. package/dist/src/ui/components/EditorSettingsDialog.js +1 -1
  305. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  306. package/dist/src/ui/components/FolderTrustDialog.js +9 -5
  307. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  308. package/dist/src/ui/components/FolderTrustDialog.test.js +14 -14
  309. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  310. package/dist/src/ui/components/Footer.js +7 -6
  311. package/dist/src/ui/components/Footer.js.map +1 -1
  312. package/dist/src/ui/components/Footer.test.d.ts +6 -0
  313. package/dist/src/ui/components/Footer.test.js +231 -0
  314. package/dist/src/ui/components/Footer.test.js.map +1 -0
  315. package/dist/src/ui/components/GeminiRespondingSpinner.js +2 -2
  316. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  317. package/dist/src/ui/components/Help.js +1 -1
  318. package/dist/src/ui/components/Help.js.map +1 -1
  319. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  320. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  321. package/dist/src/ui/components/InputPrompt.d.ts +11 -1
  322. package/dist/src/ui/components/InputPrompt.js +103 -29
  323. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  324. package/dist/src/ui/components/InputPrompt.test.d.ts +6 -0
  325. package/dist/src/ui/components/InputPrompt.test.js +1737 -0
  326. package/dist/src/ui/components/InputPrompt.test.js.map +1 -0
  327. package/dist/src/ui/components/MainContent.js +1 -1
  328. package/dist/src/ui/components/MainContent.js.map +1 -1
  329. package/dist/src/ui/components/ModelStatsDisplay.test.d.ts +6 -0
  330. package/dist/src/ui/components/ModelStatsDisplay.test.js +285 -0
  331. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -0
  332. package/dist/src/ui/components/Notifications.js +12 -4
  333. package/dist/src/ui/components/Notifications.js.map +1 -1
  334. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +22 -18
  335. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -1
  336. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +10 -2
  337. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -1
  338. package/dist/src/ui/components/QueuedMessageDisplay.js +3 -3
  339. package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -1
  340. package/dist/src/ui/components/QueuedMessageDisplay.test.js +4 -0
  341. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -1
  342. package/dist/src/ui/components/RawMarkdownIndicator.d.ts +7 -0
  343. package/dist/src/ui/components/RawMarkdownIndicator.js +8 -0
  344. package/dist/src/ui/components/RawMarkdownIndicator.js.map +1 -0
  345. package/dist/src/ui/components/SessionSummaryDisplay.test.d.ts +6 -0
  346. package/dist/src/ui/components/SessionSummaryDisplay.test.js +74 -0
  347. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -0
  348. package/dist/src/ui/components/SettingsDialog.js +12 -11
  349. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  350. package/dist/src/ui/components/SettingsDialog.test.js +190 -77
  351. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  352. package/dist/src/ui/components/StatsDisplay.test.d.ts +6 -0
  353. package/dist/src/ui/components/StatsDisplay.test.js +351 -0
  354. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -0
  355. package/dist/src/ui/components/ThemeDialog.d.ts +4 -2
  356. package/dist/src/ui/components/ThemeDialog.js +3 -3
  357. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  358. package/dist/src/ui/components/ThemeDialog.test.js +13 -0
  359. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
  360. package/dist/src/ui/components/ToolStatsDisplay.test.d.ts +6 -0
  361. package/dist/src/ui/components/ToolStatsDisplay.test.js +227 -0
  362. package/dist/src/ui/components/ToolStatsDisplay.test.js.map +1 -0
  363. package/dist/src/ui/components/messages/CompressionMessage.js +3 -3
  364. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  365. package/dist/src/ui/components/messages/GeminiMessage.js +3 -1
  366. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  367. package/dist/src/ui/components/messages/GeminiMessage.test.d.ts +6 -0
  368. package/dist/src/ui/components/messages/GeminiMessage.test.js +35 -0
  369. package/dist/src/ui/components/messages/GeminiMessage.test.js.map +1 -0
  370. package/dist/src/ui/components/messages/GeminiMessageContent.js +3 -1
  371. package/dist/src/ui/components/messages/GeminiMessageContent.js.map +1 -1
  372. package/dist/src/ui/components/messages/Todo.d.ts +7 -0
  373. package/dist/src/ui/components/messages/Todo.js +69 -0
  374. package/dist/src/ui/components/messages/Todo.js.map +1 -0
  375. package/dist/src/ui/components/messages/Todo.test.d.ts +6 -0
  376. package/dist/src/ui/components/messages/Todo.test.js +102 -0
  377. package/dist/src/ui/components/messages/Todo.test.js.map +1 -0
  378. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +1 -1
  379. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  380. package/dist/src/ui/components/messages/ToolGroupMessage.js +2 -2
  381. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  382. package/dist/src/ui/components/messages/ToolMessage.js +9 -4
  383. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  384. package/dist/src/ui/components/messages/ToolMessage.test.js +2 -2
  385. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  386. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.d.ts +6 -0
  387. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js +30 -0
  388. package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js.map +1 -0
  389. package/dist/src/ui/components/messages/UserShellMessage.js +1 -1
  390. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
  391. package/dist/src/ui/components/shared/BaseSelectionList.test.js +33 -24
  392. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -1
  393. package/dist/src/ui/components/shared/text-buffer.js +1 -1
  394. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  395. package/dist/src/ui/components/shared/text-buffer.test.d.ts +6 -0
  396. package/dist/src/ui/components/shared/text-buffer.test.js +1578 -0
  397. package/dist/src/ui/components/shared/text-buffer.test.js.map +1 -0
  398. package/dist/src/ui/components/shared/vim-buffer-actions.test.d.ts +6 -0
  399. package/dist/src/ui/components/shared/vim-buffer-actions.test.js +951 -0
  400. package/dist/src/ui/components/shared/vim-buffer-actions.test.js.map +1 -0
  401. package/dist/src/ui/components/views/ChatList.d.ts +12 -0
  402. package/dist/src/ui/components/views/ChatList.js +17 -0
  403. package/dist/src/ui/components/views/ChatList.js.map +1 -0
  404. package/dist/src/ui/components/views/ChatList.test.d.ts +6 -0
  405. package/dist/src/ui/components/views/ChatList.test.js +42 -0
  406. package/dist/src/ui/components/views/ChatList.test.js.map +1 -0
  407. package/dist/src/ui/components/views/ExtensionsList.js +3 -4
  408. package/dist/src/ui/components/views/ExtensionsList.js.map +1 -1
  409. package/dist/src/ui/components/views/ExtensionsList.test.js +2 -9
  410. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -1
  411. package/dist/src/ui/components/views/McpStatus.d.ts +0 -1
  412. package/dist/src/ui/components/views/McpStatus.js +4 -4
  413. package/dist/src/ui/components/views/McpStatus.js.map +1 -1
  414. package/dist/src/ui/components/views/McpStatus.test.js +0 -5
  415. package/dist/src/ui/components/views/McpStatus.test.js.map +1 -1
  416. package/dist/src/ui/components/views/ToolsList.test.js +4 -4
  417. package/dist/src/ui/components/views/ToolsList.test.js.map +1 -1
  418. package/dist/src/ui/contexts/KeypressContext.d.ts +1 -0
  419. package/dist/src/ui/contexts/KeypressContext.js +219 -53
  420. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  421. package/dist/src/ui/contexts/KeypressContext.test.js +536 -10
  422. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  423. package/dist/src/ui/contexts/SessionContext.test.d.ts +6 -0
  424. package/dist/src/ui/contexts/SessionContext.test.js +177 -0
  425. package/dist/src/ui/contexts/SessionContext.test.js.map +1 -0
  426. package/dist/src/ui/contexts/UIActionsContext.d.ts +5 -4
  427. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  428. package/dist/src/ui/contexts/UIStateContext.d.ts +6 -4
  429. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  430. package/dist/src/ui/hooks/atCommandProcessor.js +2 -2
  431. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  432. package/dist/src/ui/hooks/shellCommandProcessor.js +5 -7
  433. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  434. package/dist/src/ui/hooks/shellCommandProcessor.test.js +19 -32
  435. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  436. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -1
  437. package/dist/src/ui/hooks/slashCommandProcessor.js +11 -7
  438. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  439. package/dist/src/ui/hooks/slashCommandProcessor.test.d.ts +6 -0
  440. package/dist/src/ui/hooks/slashCommandProcessor.test.js +779 -0
  441. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -0
  442. package/dist/src/ui/hooks/useAtCompletion.js +2 -2
  443. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  444. package/dist/src/ui/hooks/useAtCompletion.test.d.ts +6 -0
  445. package/dist/src/ui/hooks/useAtCompletion.test.js +385 -0
  446. package/dist/src/ui/hooks/useAtCompletion.test.js.map +1 -0
  447. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +0 -1
  448. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
  449. package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -1
  450. package/dist/src/ui/hooks/useCommandCompletion.js +5 -3
  451. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  452. package/dist/src/ui/hooks/useCommandCompletion.test.d.ts +6 -0
  453. package/dist/src/ui/hooks/useCommandCompletion.test.js +375 -0
  454. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -0
  455. package/dist/src/ui/hooks/useConsoleMessages.test.d.ts +6 -0
  456. package/dist/src/ui/hooks/useConsoleMessages.test.js +110 -0
  457. package/dist/src/ui/hooks/useConsoleMessages.test.js.map +1 -0
  458. package/dist/src/ui/hooks/useExtensionUpdates.d.ts +2 -1
  459. package/dist/src/ui/hooks/useExtensionUpdates.js +71 -19
  460. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -1
  461. package/dist/src/ui/hooks/useExtensionUpdates.test.js +28 -13
  462. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -1
  463. package/dist/src/ui/hooks/useFlickerDetector.d.ts +14 -0
  464. package/dist/src/ui/hooks/useFlickerDetector.js +37 -0
  465. package/dist/src/ui/hooks/useFlickerDetector.js.map +1 -0
  466. package/dist/src/ui/hooks/useFlickerDetector.test.d.ts +6 -0
  467. package/dist/src/ui/hooks/useFlickerDetector.test.js +102 -0
  468. package/dist/src/ui/hooks/useFlickerDetector.test.js.map +1 -0
  469. package/dist/src/ui/hooks/useFocus.test.d.ts +6 -0
  470. package/dist/src/ui/hooks/useFocus.test.js +115 -0
  471. package/dist/src/ui/hooks/useFocus.test.js.map +1 -0
  472. package/dist/src/ui/hooks/useFolderTrust.d.ts +2 -1
  473. package/dist/src/ui/hooks/useFolderTrust.js +12 -3
  474. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  475. package/dist/src/ui/hooks/useFolderTrust.test.d.ts +6 -0
  476. package/dist/src/ui/hooks/useFolderTrust.test.js +164 -0
  477. package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -0
  478. package/dist/src/ui/hooks/useGeminiStream.js +95 -56
  479. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  480. package/dist/src/ui/hooks/useGeminiStream.test.d.ts +6 -0
  481. package/dist/src/ui/hooks/useGeminiStream.test.js +1971 -0
  482. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -0
  483. package/dist/src/ui/hooks/useHistoryManager.js +3 -3
  484. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  485. package/dist/src/ui/hooks/useInputHistoryStore.js +2 -1
  486. package/dist/src/ui/hooks/useInputHistoryStore.js.map +1 -1
  487. package/dist/src/ui/hooks/useKeypress.test.d.ts +6 -0
  488. package/dist/src/ui/hooks/useKeypress.test.js +234 -0
  489. package/dist/src/ui/hooks/useKeypress.test.js.map +1 -0
  490. package/dist/src/ui/hooks/useLoadingIndicator.test.js +5 -0
  491. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  492. package/dist/src/ui/hooks/useMessageQueue.d.ts +1 -0
  493. package/dist/src/ui/hooks/useMessageQueue.js +14 -0
  494. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
  495. package/dist/src/ui/hooks/useMessageQueue.test.js +121 -0
  496. package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -1
  497. package/dist/src/ui/hooks/usePhraseCycler.d.ts +1 -0
  498. package/dist/src/ui/hooks/usePhraseCycler.js +157 -5
  499. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  500. package/dist/src/ui/hooks/usePhraseCycler.test.d.ts +6 -0
  501. package/dist/src/ui/hooks/usePhraseCycler.test.js +155 -0
  502. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -0
  503. package/dist/src/ui/hooks/useReactToolScheduler.js +2 -2
  504. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  505. package/dist/src/ui/hooks/useSelectionList.js +50 -23
  506. package/dist/src/ui/hooks/useSelectionList.js.map +1 -1
  507. package/dist/src/ui/hooks/useSelectionList.test.js +24 -0
  508. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -1
  509. package/dist/src/ui/hooks/useShellHistory.test.js +16 -10
  510. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -1
  511. package/dist/src/ui/hooks/useShowMemoryCommand.d.ts +1 -1
  512. package/dist/src/ui/hooks/useShowMemoryCommand.js +4 -3
  513. package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -1
  514. package/dist/src/ui/hooks/useSlashCompletion.js +2 -1
  515. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  516. package/dist/src/ui/hooks/useTerminalSize.js +2 -3
  517. package/dist/src/ui/hooks/useTerminalSize.js.map +1 -1
  518. package/dist/src/ui/hooks/useThemeCommand.d.ts +2 -1
  519. package/dist/src/ui/hooks/useThemeCommand.js +6 -0
  520. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  521. package/dist/src/ui/hooks/useToolScheduler.test.js +3 -0
  522. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  523. package/dist/src/ui/hooks/vim.js +2 -1
  524. package/dist/src/ui/hooks/vim.js.map +1 -1
  525. package/dist/src/ui/hooks/vim.test.d.ts +6 -0
  526. package/dist/src/ui/hooks/vim.test.js +1389 -0
  527. package/dist/src/ui/hooks/vim.test.js.map +1 -0
  528. package/dist/src/ui/keyMatchers.test.js +9 -3
  529. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  530. package/dist/src/ui/layouts/DefaultAppLayout.d.ts +1 -3
  531. package/dist/src/ui/layouts/DefaultAppLayout.js +5 -2
  532. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -1
  533. package/dist/src/ui/layouts/ScreenReaderAppLayout.js +4 -1
  534. package/dist/src/ui/layouts/ScreenReaderAppLayout.js.map +1 -1
  535. package/dist/src/ui/noninteractive/nonInteractiveUi.js +1 -0
  536. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -1
  537. package/dist/src/ui/state/extensions.d.ts +22 -3
  538. package/dist/src/ui/state/extensions.js +26 -4
  539. package/dist/src/ui/state/extensions.js.map +1 -1
  540. package/dist/src/ui/themes/color-utils.js +2 -1
  541. package/dist/src/ui/themes/color-utils.js.map +1 -1
  542. package/dist/src/ui/themes/theme-manager.js +8 -7
  543. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  544. package/dist/src/ui/themes/theme.test.d.ts +6 -0
  545. package/dist/src/ui/themes/theme.test.js +85 -0
  546. package/dist/src/ui/themes/theme.test.js.map +1 -0
  547. package/dist/src/ui/types.d.ts +11 -3
  548. package/dist/src/ui/types.js +1 -0
  549. package/dist/src/ui/types.js.map +1 -1
  550. package/dist/src/ui/utils/CodeColorizer.d.ts +1 -1
  551. package/dist/src/ui/utils/CodeColorizer.js +4 -2
  552. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  553. package/dist/src/ui/utils/MarkdownDisplay.d.ts +1 -0
  554. package/dist/src/ui/utils/MarkdownDisplay.js +8 -1
  555. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  556. package/dist/src/ui/utils/commandUtils.js +20 -3
  557. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  558. package/dist/src/ui/utils/commandUtils.test.js +61 -6
  559. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  560. package/dist/src/ui/utils/computeStats.js +5 -2
  561. package/dist/src/ui/utils/computeStats.js.map +1 -1
  562. package/dist/src/ui/utils/computeStats.test.d.ts +6 -0
  563. package/dist/src/ui/utils/computeStats.test.js +262 -0
  564. package/dist/src/ui/utils/computeStats.test.js.map +1 -0
  565. package/dist/src/ui/utils/terminalSetup.js +3 -2
  566. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  567. package/dist/src/ui/utils/ui-sizing.d.ts +7 -0
  568. package/dist/src/ui/utils/ui-sizing.js +23 -0
  569. package/dist/src/ui/utils/ui-sizing.js.map +1 -0
  570. package/dist/src/ui/utils/updateCheck.d.ts +2 -1
  571. package/dist/src/ui/utils/updateCheck.js +6 -2
  572. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  573. package/dist/src/ui/utils/updateCheck.test.js +25 -10
  574. package/dist/src/ui/utils/updateCheck.test.js.map +1 -1
  575. package/dist/src/utils/cleanup.test.d.ts +6 -0
  576. package/dist/src/utils/cleanup.test.js +49 -0
  577. package/dist/src/utils/cleanup.test.js.map +1 -0
  578. package/dist/src/utils/commentJson.js +95 -13
  579. package/dist/src/utils/commentJson.js.map +1 -1
  580. package/dist/src/utils/commentJson.test.js +161 -0
  581. package/dist/src/utils/commentJson.test.js.map +1 -1
  582. package/dist/src/utils/errors.d.ts +9 -3
  583. package/dist/src/utils/errors.js +87 -16
  584. package/dist/src/utils/errors.js.map +1 -1
  585. package/dist/src/utils/errors.test.js +40 -46
  586. package/dist/src/utils/errors.test.js.map +1 -1
  587. package/dist/src/utils/events.d.ts +2 -1
  588. package/dist/src/utils/events.js +1 -0
  589. package/dist/src/utils/events.js.map +1 -1
  590. package/dist/src/utils/gitUtils.js +3 -2
  591. package/dist/src/utils/gitUtils.js.map +1 -1
  592. package/dist/src/utils/handleAutoUpdate.js +4 -1
  593. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  594. package/dist/src/utils/handleAutoUpdate.test.d.ts +6 -0
  595. package/dist/src/utils/handleAutoUpdate.test.js +225 -0
  596. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -0
  597. package/dist/src/utils/installationInfo.d.ts +1 -0
  598. package/dist/src/utils/installationInfo.js +4 -2
  599. package/dist/src/utils/installationInfo.js.map +1 -1
  600. package/dist/src/utils/installationInfo.test.js +8 -4
  601. package/dist/src/utils/installationInfo.test.js.map +1 -1
  602. package/dist/src/utils/readStdin.js +2 -1
  603. package/dist/src/utils/readStdin.js.map +1 -1
  604. package/dist/src/utils/sandbox-macos-permissive-open.sb +2 -0
  605. package/dist/src/utils/sandbox.js +20 -20
  606. package/dist/src/utils/sandbox.js.map +1 -1
  607. package/dist/src/utils/sessionCleanup.d.ts +22 -0
  608. package/dist/src/utils/sessionCleanup.integration.test.d.ts +6 -0
  609. package/dist/src/utils/sessionCleanup.integration.test.js +182 -0
  610. package/dist/src/utils/sessionCleanup.integration.test.js.map +1 -0
  611. package/dist/src/utils/sessionCleanup.js +214 -0
  612. package/dist/src/utils/sessionCleanup.js.map +1 -0
  613. package/dist/src/utils/sessionCleanup.test.d.ts +6 -0
  614. package/dist/src/utils/sessionCleanup.test.js +1232 -0
  615. package/dist/src/utils/sessionCleanup.test.js.map +1 -0
  616. package/dist/src/utils/sessionUtils.d.ts +37 -0
  617. package/dist/src/utils/sessionUtils.js +71 -0
  618. package/dist/src/utils/sessionUtils.js.map +1 -0
  619. package/dist/src/utils/startupWarnings.test.d.ts +6 -0
  620. package/dist/src/utils/startupWarnings.test.js +61 -0
  621. package/dist/src/utils/startupWarnings.test.js.map +1 -0
  622. package/dist/src/validateNonInterActiveAuth.js +8 -9
  623. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  624. package/dist/src/zed-integration/acp.js +1 -2
  625. package/dist/src/zed-integration/acp.js.map +1 -1
  626. package/dist/src/zed-integration/schema.d.ts +176 -176
  627. package/dist/src/zed-integration/zedIntegration.d.ts +2 -3
  628. package/dist/src/zed-integration/zedIntegration.js +12 -33
  629. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  630. package/dist/tsconfig.tsbuildinfo +1 -1
  631. package/package.json +7 -6
  632. package/dist/src/ui/components/WorkspaceMigrationDialog.d.ts +0 -11
  633. package/dist/src/ui/components/WorkspaceMigrationDialog.js +0 -44
  634. package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +0 -1
  635. package/dist/src/ui/hooks/useWorkspaceMigration.d.ts +0 -13
  636. package/dist/src/ui/hooks/useWorkspaceMigration.js +0 -54
  637. package/dist/src/ui/hooks/useWorkspaceMigration.js.map +0 -1
@@ -5,37 +5,21 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  * SPDX-License-Identifier: Apache-2.0
6
6
  */
7
7
  import { useIsScreenReaderEnabled } from 'ink';
8
- import { useTerminalSize } from './hooks/useTerminalSize.js';
9
- import { lerp } from '../utils/math.js';
10
8
  import { useUIState } from './contexts/UIStateContext.js';
11
9
  import { StreamingContext } from './contexts/StreamingContext.js';
12
10
  import { QuittingDisplay } from './components/QuittingDisplay.js';
13
11
  import { SessionSummaryDisplay } from './components/SessionSummaryDisplay.js';
14
12
  import { ScreenReaderAppLayout } from './layouts/ScreenReaderAppLayout.js';
15
13
  import { DefaultAppLayout } from './layouts/DefaultAppLayout.js';
16
- const getContainerWidth = (terminalWidth) => {
17
- if (terminalWidth <= 80) {
18
- return '98%';
19
- }
20
- if (terminalWidth >= 132) {
21
- return '90%';
22
- }
23
- // Linearly interpolate between 80 columns (98%) and 132 columns (90%).
24
- const t = (terminalWidth - 80) / (132 - 80);
25
- const percentage = lerp(98, 90, t);
26
- return `${Math.round(percentage)}%`;
27
- };
28
14
  export const App = () => {
29
15
  const uiState = useUIState();
30
16
  const isScreenReaderEnabled = useIsScreenReaderEnabled();
31
- const { columns } = useTerminalSize();
32
- const containerWidth = getContainerWidth(columns);
33
17
  if (uiState.awaitingFeedback) {
34
18
  return (_jsx(SessionSummaryDisplay, { duration: uiState.duration, onFeedbackSubmit: uiState.onFeedbackSubmit }));
35
19
  }
36
20
  if (uiState.quittingMessages) {
37
21
  return _jsx(QuittingDisplay, {});
38
22
  }
39
- return (_jsx(StreamingContext.Provider, { value: uiState.streamingState, children: isScreenReaderEnabled ? (_jsx(ScreenReaderAppLayout, {})) : (_jsx(DefaultAppLayout, { width: containerWidth })) }));
23
+ return (_jsx(StreamingContext.Provider, { value: uiState.streamingState, children: isScreenReaderEnabled ? _jsx(ScreenReaderAppLayout, {}) : _jsx(DefaultAppLayout, {}) }));
40
24
  };
41
25
  //# sourceMappingURL=App.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/ui/App.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,iBAAiB,GAAG,CAAC,aAAqB,EAAU,EAAE;IAC1D,IAAI,aAAa,IAAI,EAAE,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,aAAa,IAAI,GAAG,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE;IACtB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;IACzD,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;IACtC,MAAM,cAAc,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,CACL,KAAC,qBAAqB,IACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,GAC1C,CACH,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,KAAC,eAAe,KAAG,CAAC;IAC7B,CAAC;IAED,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,CAAC,cAAc,YACrD,qBAAqB,CAAC,CAAC,CAAC,CACvB,KAAC,qBAAqB,KAAG,CAC1B,CAAC,CAAC,CAAC,CACF,KAAC,gBAAgB,IAAC,KAAK,EAAE,cAAc,GAAI,CAC5C,GACyB,CAC7B,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/ui/App.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,EAAE;IACtB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;IAEzD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,CACL,KAAC,qBAAqB,IACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,GAC1C,CACH,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,OAAO,KAAC,eAAe,KAAG,CAAC;IAC7B,CAAC;IAED,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,CAAC,cAAc,YACrD,qBAAqB,CAAC,CAAC,CAAC,KAAC,qBAAqB,KAAG,CAAC,CAAC,CAAC,KAAC,gBAAgB,KAAG,GAC/C,CAC7B,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,110 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { describe, it, expect, vi } from 'vitest';
8
+ import { render } from 'ink-testing-library';
9
+ import { Text, useIsScreenReaderEnabled } from 'ink';
10
+ import { makeFakeConfig } from '@google/gemini-cli-core';
11
+ import { App } from './App.js';
12
+ import { UIStateContext } from './contexts/UIStateContext.js';
13
+ import { StreamingState } from './types.js';
14
+ import { ConfigContext } from './contexts/ConfigContext.js';
15
+ vi.mock('ink', async (importOriginal) => {
16
+ const original = await importOriginal();
17
+ return {
18
+ ...original,
19
+ useIsScreenReaderEnabled: vi.fn(),
20
+ };
21
+ });
22
+ vi.mock('./components/MainContent.js', () => ({
23
+ MainContent: () => _jsx(Text, { children: "MainContent" }),
24
+ }));
25
+ vi.mock('./components/DialogManager.js', () => ({
26
+ DialogManager: () => _jsx(Text, { children: "DialogManager" }),
27
+ }));
28
+ vi.mock('./components/Composer.js', () => ({
29
+ Composer: () => _jsx(Text, { children: "Composer" }),
30
+ }));
31
+ vi.mock('./components/Notifications.js', () => ({
32
+ Notifications: () => _jsx(Text, { children: "Notifications" }),
33
+ }));
34
+ vi.mock('./components/QuittingDisplay.js', () => ({
35
+ QuittingDisplay: () => _jsx(Text, { children: "Quitting..." }),
36
+ }));
37
+ vi.mock('./components/Footer.js', () => ({
38
+ Footer: () => _jsx(Text, { children: "Footer" }),
39
+ }));
40
+ describe('App', () => {
41
+ const mockUIState = {
42
+ streamingState: StreamingState.Idle,
43
+ quittingMessages: null,
44
+ dialogsVisible: false,
45
+ mainControlsRef: { current: null },
46
+ rootUiRef: { current: null },
47
+ historyManager: {
48
+ addItem: vi.fn(),
49
+ history: [],
50
+ updateItem: vi.fn(),
51
+ clearItems: vi.fn(),
52
+ loadHistory: vi.fn(),
53
+ },
54
+ };
55
+ const mockConfig = makeFakeConfig();
56
+ const renderWithProviders = (ui, state) => render(_jsx(ConfigContext.Provider, { value: mockConfig, children: _jsx(UIStateContext.Provider, { value: state, children: ui }) }));
57
+ it('should render main content and composer when not quitting', () => {
58
+ const { lastFrame } = renderWithProviders(_jsx(App, {}), mockUIState);
59
+ expect(lastFrame()).toContain('MainContent');
60
+ expect(lastFrame()).toContain('Notifications');
61
+ expect(lastFrame()).toContain('Composer');
62
+ });
63
+ it('should render quitting display when quittingMessages is set', () => {
64
+ const quittingUIState = {
65
+ ...mockUIState,
66
+ quittingMessages: [{ id: 1, type: 'user', text: 'test' }],
67
+ };
68
+ const { lastFrame } = renderWithProviders(_jsx(App, {}), quittingUIState);
69
+ expect(lastFrame()).toContain('Quitting...');
70
+ });
71
+ it('should render dialog manager when dialogs are visible', () => {
72
+ const dialogUIState = {
73
+ ...mockUIState,
74
+ dialogsVisible: true,
75
+ };
76
+ const { lastFrame } = renderWithProviders(_jsx(App, {}), dialogUIState);
77
+ expect(lastFrame()).toContain('MainContent');
78
+ expect(lastFrame()).toContain('Notifications');
79
+ expect(lastFrame()).toContain('DialogManager');
80
+ });
81
+ it('should show Ctrl+C exit prompt when dialogs are visible and ctrlCPressedOnce is true', () => {
82
+ const ctrlCUIState = {
83
+ ...mockUIState,
84
+ dialogsVisible: true,
85
+ ctrlCPressedOnce: true,
86
+ };
87
+ const { lastFrame } = renderWithProviders(_jsx(App, {}), ctrlCUIState);
88
+ expect(lastFrame()).toContain('Press Ctrl+C again to exit.');
89
+ });
90
+ it('should show Ctrl+D exit prompt when dialogs are visible and ctrlDPressedOnce is true', () => {
91
+ const ctrlDUIState = {
92
+ ...mockUIState,
93
+ dialogsVisible: true,
94
+ ctrlDPressedOnce: true,
95
+ };
96
+ const { lastFrame } = renderWithProviders(_jsx(App, {}), ctrlDUIState);
97
+ expect(lastFrame()).toContain('Press Ctrl+D again to exit.');
98
+ });
99
+ it('should render ScreenReaderAppLayout when screen reader is enabled', () => {
100
+ useIsScreenReaderEnabled.mockReturnValue(true);
101
+ const { lastFrame } = renderWithProviders(_jsx(App, {}), mockUIState);
102
+ expect(lastFrame()).toContain('Notifications\nFooter\nMainContent\nComposer');
103
+ });
104
+ it('should render DefaultAppLayout when screen reader is not enabled', () => {
105
+ useIsScreenReaderEnabled.mockReturnValue(false);
106
+ const { lastFrame } = renderWithProviders(_jsx(App, {}), mockUIState);
107
+ expect(lastFrame()).toContain('MainContent\nNotifications\nComposer');
108
+ });
109
+ });
110
+ //# sourceMappingURL=App.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.test.js","sourceRoot":"","sources":["../../../src/ui/App.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAa,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAgB,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;IACtC,MAAM,QAAQ,GAAG,MAAM,cAAc,EAAwB,CAAC;IAC9D,OAAO;QACL,GAAG,QAAQ;QACX,wBAAwB,EAAE,EAAE,CAAC,EAAE,EAAE;KAClC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,EAAE,CAAC,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,WAAW,EAAE,GAAG,EAAE,CAAC,KAAC,IAAI,8BAAmB;CAC5C,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,aAAa,EAAE,GAAG,EAAE,CAAC,KAAC,IAAI,gCAAqB;CAChD,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAC,IAAI,2BAAgB;CACtC,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9C,aAAa,EAAE,GAAG,EAAE,CAAC,KAAC,IAAI,gCAAqB;CAChD,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,CAAC;IAChD,eAAe,EAAE,GAAG,EAAE,CAAC,KAAC,IAAI,8BAAmB;CAChD,CAAC,CAAC,CAAC;AAEJ,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAC,IAAI,yBAAc;CAClC,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,MAAM,WAAW,GAAqB;QACpC,cAAc,EAAE,cAAc,CAAC,IAAI;QACnC,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAClC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;QAC5B,cAAc,EAAE;YACd,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;SACrB;KACF,CAAC;IAEF,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IAEpC,MAAM,mBAAmB,GAAG,CAAC,EAAsB,EAAE,KAAc,EAAE,EAAE,CACrE,MAAM,CACJ,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,UAAU,YACvC,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,EAAE,GAA2B,GAC9C,CAC1B,CAAC;IAEJ,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,GAAG,KAAG,EAAE,WAAsB,CAAC,CAAC;QAE3E,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,eAAe,GAAG;YACtB,GAAG,WAAW;YACd,gBAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SAC/C,CAAC;QAEb,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,GAAG,KAAG,EAAE,eAAe,CAAC,CAAC;QAEpE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,aAAa,GAAG;YACpB,GAAG,WAAW;YACd,cAAc,EAAE,IAAI;SACV,CAAC;QAEb,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,GAAG,KAAG,EAAE,aAAa,CAAC,CAAC;QAElE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,YAAY,GAAG;YACnB,GAAG,WAAW;YACd,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;SACZ,CAAC;QAEb,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,GAAG,KAAG,EAAE,YAAY,CAAC,CAAC;QAEjE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,YAAY,GAAG;YACnB,GAAG,WAAW;YACd,cAAc,EAAE,IAAI;YACpB,gBAAgB,EAAE,IAAI;SACZ,CAAC;QAEb,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,GAAG,KAAG,EAAE,YAAY,CAAC,CAAC;QAEjE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC1E,wBAAiC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEzD,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,GAAG,KAAG,EAAE,WAAsB,CAAC,CAAC;QAE3E,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAC3B,8CAA8C,CAC/C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QACzE,wBAAiC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAE1D,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAAC,KAAC,GAAG,KAAG,EAAE,WAAsB,CAAC,CAAC;QAE3E,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -13,7 +13,7 @@ import { UIActionsContext, } from './contexts/UIActionsContext.js';
13
13
  import { ConfigContext } from './contexts/ConfigContext.js';
14
14
  import { ToolCallStatus, AuthState, } from './types.js';
15
15
  import { MessageType, StreamingState } from './types.js';
16
- import { DEFAULT_GEMINI_FLASH_MODEL, IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, ShellExecutionService, } from '@google/gemini-cli-core';
16
+ import { DEFAULT_GEMINI_FLASH_MODEL, IdeClient, ideContextStore, getErrorMessage, getAllGeminiMdFilenames, AuthType, clearCachedCredentialFile, ShellExecutionService, debugLogger, } from '@google/gemini-cli-core';
17
17
  import { validateAuthMethod } from '../config/auth.js';
18
18
  import { loadHierarchicalGeminiMemory } from '../config/config.js';
19
19
  import process from 'node:process';
@@ -30,7 +30,8 @@ import { useVimMode } from './contexts/VimModeContext.js';
30
30
  import { useConsoleMessages } from './hooks/useConsoleMessages.js';
31
31
  import { useTerminalSize } from './hooks/useTerminalSize.js';
32
32
  import { calculatePromptWidths } from './components/InputPrompt.js';
33
- import { useStdin, useStdout } from 'ink';
33
+ import { useStdout, useStdin } from 'ink';
34
+ import { calculateMainAreaWidth } from './utils/ui-sizing.js';
34
35
  import ansiEscapes from 'ansi-escapes';
35
36
  import * as fs from 'node:fs';
36
37
  import { basename } from 'node:path';
@@ -56,13 +57,14 @@ import { ConsolePatcher } from './utils/ConsolePatcher.js';
56
57
  import { registerCleanup, runExitCleanup } from '../utils/cleanup.js';
57
58
  import { useMessageQueue } from './hooks/useMessageQueue.js';
58
59
  import { useAutoAcceptIndicator } from './hooks/useAutoAcceptIndicator.js';
59
- import { useWorkspaceMigration } from './hooks/useWorkspaceMigration.js';
60
60
  import { useSessionStats } from './contexts/SessionContext.js';
61
61
  import { useGitBranchName } from './hooks/useGitBranchName.js';
62
62
  import { useExtensionUpdates } from './hooks/useExtensionUpdates.js';
63
63
  import { FeedbackService } from '../services/FeedbackService.js';
64
64
  import { ShellFocusContext } from './contexts/ShellFocusContext.js';
65
+ import { ExtensionEnablementManager } from '../config/extensions/extensionEnablement.js';
65
66
  const CTRL_EXIT_PROMPT_DURATION_MS = 1000;
67
+ const QUEUE_ERROR_DISPLAY_DURATION_MS = 3000;
66
68
  function isToolExecuting(pendingHistoryItems) {
67
69
  return pendingHistoryItems.some((item) => {
68
70
  if (item && item.type === 'tool_group') {
@@ -93,17 +95,21 @@ export const AppContainer = (props) => {
93
95
  const [themeError, setThemeError] = useState(initializationResult.themeError);
94
96
  const [isProcessing, setIsProcessing] = useState(false);
95
97
  const [embeddedShellFocused, setEmbeddedShellFocused] = useState(false);
98
+ const [showDebugProfiler, setShowDebugProfiler] = useState(false);
96
99
  const [geminiMdFileCount, setGeminiMdFileCount] = useState(initializationResult.geminiMdFileCount);
97
100
  const [shellModeActive, setShellModeActive] = useState(false);
98
101
  const [modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError] = useState(false);
99
102
  const [historyRemountKey, setHistoryRemountKey] = useState(0);
100
103
  const [updateInfo, setUpdateInfo] = useState(null);
101
104
  const [isTrustedFolder, setIsTrustedFolder] = useState(config.isTrustedFolder());
105
+ const [queueErrorMessage, setQueueErrorMessage] = useState(null);
102
106
  const extensions = config.getExtensions();
103
- const { extensionsUpdateState, extensionsUpdateStateInternal, dispatchExtensionStateUpdate, confirmUpdateExtensionRequests, addConfirmUpdateExtensionRequest, } = useExtensionUpdates(extensions, historyManager.addItem, config.getWorkingDir());
107
+ const [extensionEnablementManager] = useState(new ExtensionEnablementManager(config.getEnabledExtensions()));
108
+ const { extensionsUpdateState, extensionsUpdateStateInternal, dispatchExtensionStateUpdate, confirmUpdateExtensionRequests, addConfirmUpdateExtensionRequest, } = useExtensionUpdates(extensions, extensionEnablementManager, historyManager.addItem, config.getWorkingDir());
104
109
  const [isPermissionsDialogOpen, setPermissionsDialogOpen] = useState(false);
105
110
  const openPermissionsDialog = useCallback(() => setPermissionsDialogOpen(true), []);
106
111
  const closePermissionsDialog = useCallback(() => setPermissionsDialogOpen(false), []);
112
+ const toggleDebugProfiler = useCallback(() => setShowDebugProfiler((prev) => !prev), []);
107
113
  // Helper to determine the effective model, considering the fallback state.
108
114
  const getEffectiveModel = useCallback(() => {
109
115
  if (config.isInFallbackMode()) {
@@ -127,6 +133,8 @@ export const AppContainer = (props) => {
127
133
  const feedbackPromiseResolveRef = useRef(() => { });
128
134
  // Layout measurements
129
135
  const mainControlsRef = useRef(null);
136
+ // For performance profiling only
137
+ const rootUiRef = useRef(null);
130
138
  const originalTitleRef = useRef(computeWindowTitle(basename(config.getTargetDir())));
131
139
  const lastTitleRef = useRef(null);
132
140
  const staticExtraHeight = 3;
@@ -164,12 +172,12 @@ export const AppContainer = (props) => {
164
172
  consolePatcher.patch();
165
173
  registerCleanup(consolePatcher.cleanup);
166
174
  }, [handleNewMessage, config]);
175
+ const mainAreaWidth = calculateMainAreaWidth(terminalWidth, settings);
167
176
  // Derive widths for InputPrompt using shared helper
168
177
  const { inputWidth, suggestionsWidth } = useMemo(() => {
169
- const { inputWidth, suggestionsWidth } = calculatePromptWidths(terminalWidth);
178
+ const { inputWidth, suggestionsWidth } = calculatePromptWidths(mainAreaWidth);
170
179
  return { inputWidth, suggestionsWidth };
171
- }, [terminalWidth]);
172
- const mainAreaWidth = Math.floor(terminalWidth * 0.9);
180
+ }, [mainAreaWidth]);
173
181
  const staticAreaMaxItemHeight = Math.max(terminalHeight * 4, 100);
174
182
  const isValidPath = useCallback((filePath) => {
175
183
  try {
@@ -217,7 +225,7 @@ export const AppContainer = (props) => {
217
225
  stdout.write(ansiEscapes.clearTerminal);
218
226
  setHistoryRemountKey((prev) => prev + 1);
219
227
  }, [setHistoryRemountKey, stdout]);
220
- const { isThemeDialogOpen, openThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, historyManager.addItem, initializationResult.themeError);
228
+ const { isThemeDialogOpen, openThemeDialog, closeThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, historyManager.addItem, initializationResult.themeError);
221
229
  const { authState, setAuthState, authError, onAuthError } = useAuthCommand(settings, config);
222
230
  const { proQuotaRequest, handleProQuotaChoice } = useQuotaAndFallback({
223
231
  config,
@@ -245,7 +253,7 @@ export const AppContainer = (props) => {
245
253
  if (authType === AuthType.LOGIN_WITH_GOOGLE &&
246
254
  config.isBrowserLaunchSuppressed()) {
247
255
  await runExitCleanup();
248
- console.log(`
256
+ debugLogger.log(`
249
257
  ----------------------------------------------------------------
250
258
  Logging in with Google... Please restart Gemini CLI to continue.
251
259
  ----------------------------------------------------------------
@@ -287,7 +295,6 @@ Logging in with Google... Please restart Gemini CLI to continue.
287
295
  const { isEditorDialogOpen, openEditorDialog, handleEditorSelect, exitEditorDialog, } = useEditorSettings(settings, setEditorError, historyManager.addItem);
288
296
  const { isSettingsDialogOpen, openSettingsDialog, closeSettingsDialog } = useSettingsCommand();
289
297
  const { isModelDialogOpen, openModelDialog, closeModelDialog } = useModelCommand();
290
- const { showWorkspaceMigrationDialog, workspaceExtensions, onWorkspaceMigrationDialogOpen, onWorkspaceMigrationDialogClose, } = useWorkspaceMigration(settings);
291
298
  const { toggleVimEnabled } = useVimMode();
292
299
  const slashCommandActions = useMemo(() => ({
293
300
  openAuthDialog: () => setAuthState(AuthState.Updating),
@@ -328,6 +335,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
328
335
  },
329
336
  setDebugMessage,
330
337
  toggleCorgiMode: () => setCorgiMode((prev) => !prev),
338
+ toggleDebugProfiler,
331
339
  dispatchExtensionStateUpdate,
332
340
  addConfirmUpdateExtensionRequest,
333
341
  }), [
@@ -345,6 +353,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
345
353
  addConfirmUpdateExtensionRequest,
346
354
  sessionStats,
347
355
  feedbackService,
356
+ toggleDebugProfiler,
348
357
  ]);
349
358
  const { handleSlashCommand, slashCommands, pendingHistoryItems: pendingSlashCommandHistoryItems, commandContext, shellConfirmationRequest, confirmationRequest, } = useSlashCommandProcessor(config, settings, historyManager.addItem, historyManager.clearItems, historyManager.loadHistory, refreshStatic, toggleVimEnabled, setIsProcessing, setGeminiMdFileCount, slashCommandActions, extensionsUpdateStateInternal, isConfigInitialized);
350
359
  const performMemoryRefresh = useCallback(async () => {
@@ -353,12 +362,13 @@ Logging in with Google... Please restart Gemini CLI to continue.
353
362
  text: 'Refreshing hierarchical memory (GEMINI.md or other context files)...',
354
363
  }, Date.now());
355
364
  try {
356
- const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(process.cwd(), settings.merged.context?.loadMemoryFromIncludeDirectories
365
+ const { memoryContent, fileCount, filePaths } = await loadHierarchicalGeminiMemory(process.cwd(), settings.merged.context?.loadMemoryFromIncludeDirectories
357
366
  ? config.getWorkspaceContext().getDirectories()
358
- : [], config.getDebugMode(), config.getFileService(), settings.merged, config.getExtensionContextFilePaths(), config.isTrustedFolder(), settings.merged.context?.importFormat || 'tree', // Use setting or default to 'tree'
367
+ : [], config.getDebugMode(), config.getFileService(), settings.merged, config.getExtensions(), config.isTrustedFolder(), settings.merged.context?.importFormat || 'tree', // Use setting or default to 'tree'
359
368
  config.getFileFilteringOptions());
360
369
  config.setUserMemory(memoryContent);
361
370
  config.setGeminiMdFileCount(fileCount);
371
+ config.setGeminiMdFilePaths(filePaths);
362
372
  setGeminiMdFileCount(fileCount);
363
373
  historyManager.addItem({
364
374
  type: MessageType.INFO,
@@ -367,7 +377,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
367
377
  : 'No memory content found.'}`,
368
378
  }, Date.now());
369
379
  if (config.getDebugMode()) {
370
- console.log(`[DEBUG] Refreshed memory content in config: ${memoryContent.substring(0, 200)}...`);
380
+ debugLogger.log(`[DEBUG] Refreshed memory content in config: ${memoryContent.substring(0, 200)}...`);
371
381
  }
372
382
  }
373
383
  catch (error) {
@@ -387,7 +397,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
387
397
  addItem: historyManager.addItem,
388
398
  onApprovalModeChange: handleApprovalModeChange,
389
399
  });
390
- const { messageQueue, addMessage, clearQueue, getQueuedMessagesText } = useMessageQueue({
400
+ const { messageQueue, addMessage, clearQueue, getQueuedMessagesText, popAllMessages, } = useMessageQueue({
391
401
  isConfigInitialized,
392
402
  streamingState,
393
403
  submitQuery,
@@ -439,6 +449,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
439
449
  */
440
450
  const isInputActive = !initError &&
441
451
  !isProcessing &&
452
+ !!slashCommands &&
442
453
  (streamingState === StreamingState.Idle ||
443
454
  streamingState === StreamingState.Responding) &&
444
455
  !proQuotaRequest;
@@ -518,7 +529,8 @@ Logging in with Google... Please restart Gemini CLI to continue.
518
529
  !settings.merged.ide?.hasSeenNudge &&
519
530
  !idePromptAnswered);
520
531
  const [showErrorDetails, setShowErrorDetails] = useState(false);
521
- const [showToolDescriptions, setShowToolDescriptions] = useState(false);
532
+ const [showFullTodos, setShowFullTodos] = useState(false);
533
+ const [renderMarkdown, setRenderMarkdown] = useState(true);
522
534
  const [ctrlCPressedOnce, setCtrlCPressedOnce] = useState(false);
523
535
  const ctrlCTimerRef = useRef(null);
524
536
  const [ctrlDPressedOnce, setCtrlDPressedOnce] = useState(false);
@@ -527,7 +539,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
527
539
  const [ideContextState, setIdeContextState] = useState();
528
540
  const [showEscapePrompt, setShowEscapePrompt] = useState(false);
529
541
  const [showIdeRestartPrompt, setShowIdeRestartPrompt] = useState(false);
530
- const { isFolderTrustDialogOpen, handleFolderTrustSelect, isRestarting } = useFolderTrust(settings, setIsTrustedFolder);
542
+ const { isFolderTrustDialogOpen, handleFolderTrustSelect, isRestarting } = useFolderTrust(settings, setIsTrustedFolder, historyManager.addItem);
531
543
  const { needsRestart: ideNeedsRestart, restartReason: ideTrustRestartReason, } = useIdeTrustListener();
532
544
  const isInitialMount = useRef(true);
533
545
  useEffect(() => {
@@ -536,6 +548,15 @@ Logging in with Google... Please restart Gemini CLI to continue.
536
548
  setShowIdeRestartPrompt(true);
537
549
  }
538
550
  }, [ideNeedsRestart]);
551
+ useEffect(() => {
552
+ if (queueErrorMessage) {
553
+ const timer = setTimeout(() => {
554
+ setQueueErrorMessage(null);
555
+ }, QUEUE_ERROR_DISPLAY_DURATION_MS);
556
+ return () => clearTimeout(timer);
557
+ }
558
+ return undefined;
559
+ }, [queueErrorMessage, setQueueErrorMessage]);
539
560
  useEffect(() => {
540
561
  if (isInitialMount.current) {
541
562
  isInitialMount.current = false;
@@ -604,7 +625,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
604
625
  const handleGlobalKeypress = useCallback((key) => {
605
626
  // Debug log keystrokes if enabled
606
627
  if (settings.merged.general?.debugKeystrokeLogging) {
607
- console.log('[DEBUG] Keystroke:', JSON.stringify(key));
628
+ debugLogger.log('[DEBUG] Keystroke:', JSON.stringify(key));
608
629
  }
609
630
  if (keyMatchers[Command.QUIT](key)) {
610
631
  if (!ctrlCPressedOnce) {
@@ -636,13 +657,16 @@ Logging in with Google... Please restart Gemini CLI to continue.
636
657
  if (keyMatchers[Command.SHOW_ERROR_DETAILS](key)) {
637
658
  setShowErrorDetails((prev) => !prev);
638
659
  }
639
- else if (keyMatchers[Command.TOGGLE_TOOL_DESCRIPTIONS](key)) {
640
- const newValue = !showToolDescriptions;
641
- setShowToolDescriptions(newValue);
642
- const mcpServers = config.getMcpServers();
643
- if (Object.keys(mcpServers || {}).length > 0) {
644
- handleSlashCommand(newValue ? '/mcp desc' : '/mcp nodesc');
645
- }
660
+ else if (keyMatchers[Command.SHOW_FULL_TODOS](key)) {
661
+ setShowFullTodos((prev) => !prev);
662
+ }
663
+ else if (keyMatchers[Command.TOGGLE_MARKDOWN](key)) {
664
+ setRenderMarkdown((prev) => {
665
+ const newValue = !prev;
666
+ // Force re-render of static content
667
+ refreshStatic();
668
+ return newValue;
669
+ });
646
670
  }
647
671
  else if (keyMatchers[Command.TOGGLE_IDE_CONTEXT_DETAIL](key) &&
648
672
  config.getIdeMode() &&
@@ -662,8 +686,6 @@ Logging in with Google... Please restart Gemini CLI to continue.
662
686
  constrainHeight,
663
687
  setConstrainHeight,
664
688
  setShowErrorDetails,
665
- showToolDescriptions,
666
- setShowToolDescriptions,
667
689
  config,
668
690
  ideContextState,
669
691
  handleExit,
@@ -679,6 +701,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
679
701
  activePtyId,
680
702
  embeddedShellFocused,
681
703
  settings.merged.general?.debugKeystrokeLogging,
704
+ refreshStatic,
682
705
  ]);
683
706
  useKeypress(handleGlobalKeypress, { isActive: true });
684
707
  // Update terminal title with Gemini CLI status and thoughts
@@ -723,8 +746,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
723
746
  .filter((msg) => msg.type === 'error')
724
747
  .reduce((total, msg) => total + msg.count, 0), [filteredConsoleMessages]);
725
748
  const nightly = props.version.includes('nightly');
726
- const dialogsVisible = showWorkspaceMigrationDialog ||
727
- shouldShowIdePrompt ||
749
+ const dialogsVisible = shouldShowIdePrompt ||
728
750
  isFolderTrustDialogOpen ||
729
751
  !!shellConfirmationRequest ||
730
752
  !!confirmationRequest ||
@@ -788,9 +810,10 @@ Logging in with Google... Please restart Gemini CLI to continue.
788
810
  isTrustedFolder,
789
811
  constrainHeight,
790
812
  showErrorDetails,
813
+ showFullTodos,
791
814
  filteredConsoleMessages,
792
815
  ideContextState,
793
- showToolDescriptions,
816
+ renderMarkdown,
794
817
  ctrlCPressedOnce,
795
818
  ctrlDPressedOnce,
796
819
  showEscapePrompt,
@@ -799,9 +822,8 @@ Logging in with Google... Please restart Gemini CLI to continue.
799
822
  currentLoadingPhrase,
800
823
  historyRemountKey,
801
824
  messageQueue,
825
+ queueErrorMessage,
802
826
  showAutoAcceptIndicator,
803
- showWorkspaceMigrationDialog,
804
- workspaceExtensions,
805
827
  currentModel,
806
828
  userTier,
807
829
  proQuotaRequest,
@@ -819,6 +841,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
819
841
  terminalWidth,
820
842
  terminalHeight,
821
843
  mainControlsRef,
844
+ rootUiRef,
822
845
  currentIDE,
823
846
  updateInfo,
824
847
  showIdeRestartPrompt,
@@ -827,6 +850,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
827
850
  extensionsUpdateState,
828
851
  activePtyId,
829
852
  embeddedShellFocused,
853
+ showDebugProfiler,
830
854
  }), [
831
855
  isThemeDialogOpen,
832
856
  themeError,
@@ -866,9 +890,10 @@ Logging in with Google... Please restart Gemini CLI to continue.
866
890
  isTrustedFolder,
867
891
  constrainHeight,
868
892
  showErrorDetails,
893
+ showFullTodos,
869
894
  filteredConsoleMessages,
870
895
  ideContextState,
871
- showToolDescriptions,
896
+ renderMarkdown,
872
897
  ctrlCPressedOnce,
873
898
  ctrlDPressedOnce,
874
899
  showEscapePrompt,
@@ -877,9 +902,8 @@ Logging in with Google... Please restart Gemini CLI to continue.
877
902
  currentLoadingPhrase,
878
903
  historyRemountKey,
879
904
  messageQueue,
905
+ queueErrorMessage,
880
906
  showAutoAcceptIndicator,
881
- showWorkspaceMigrationDialog,
882
- workspaceExtensions,
883
907
  userTier,
884
908
  proQuotaRequest,
885
909
  contextFileNames,
@@ -896,6 +920,7 @@ Logging in with Google... Please restart Gemini CLI to continue.
896
920
  terminalWidth,
897
921
  terminalHeight,
898
922
  mainControlsRef,
923
+ rootUiRef,
899
924
  currentIDE,
900
925
  updateInfo,
901
926
  showIdeRestartPrompt,
@@ -907,16 +932,19 @@ Logging in with Google... Please restart Gemini CLI to continue.
907
932
  historyManager,
908
933
  embeddedShellFocused,
909
934
  awaitingFeedback,
935
+ showDebugProfiler,
910
936
  ]);
937
+ const exitPrivacyNotice = useCallback(() => setShowPrivacyNotice(false), [setShowPrivacyNotice]);
911
938
  const uiActions = useMemo(() => ({
912
939
  handleThemeSelect,
940
+ closeThemeDialog,
913
941
  handleThemeHighlight,
914
942
  handleAuthSelect,
915
943
  setAuthState,
916
944
  onAuthError,
917
945
  handleEditorSelect,
918
946
  exitEditorDialog,
919
- exitPrivacyNotice: () => setShowPrivacyNotice(false),
947
+ exitPrivacyNotice,
920
948
  closeSettingsDialog,
921
949
  closeModelDialog,
922
950
  closePermissionsDialog,
@@ -929,17 +957,19 @@ Logging in with Google... Please restart Gemini CLI to continue.
929
957
  refreshStatic,
930
958
  handleFinalSubmit,
931
959
  handleClearScreen,
932
- onWorkspaceMigrationDialogOpen,
933
- onWorkspaceMigrationDialogClose,
934
960
  handleProQuotaChoice,
961
+ setQueueErrorMessage,
962
+ popAllMessages,
935
963
  }), [
936
964
  handleThemeSelect,
965
+ closeThemeDialog,
937
966
  handleThemeHighlight,
938
967
  handleAuthSelect,
939
968
  setAuthState,
940
969
  onAuthError,
941
970
  handleEditorSelect,
942
971
  exitEditorDialog,
972
+ exitPrivacyNotice,
943
973
  closeSettingsDialog,
944
974
  closeModelDialog,
945
975
  closePermissionsDialog,
@@ -952,9 +982,9 @@ Logging in with Google... Please restart Gemini CLI to continue.
952
982
  refreshStatic,
953
983
  handleFinalSubmit,
954
984
  handleClearScreen,
955
- onWorkspaceMigrationDialogOpen,
956
- onWorkspaceMigrationDialogClose,
957
985
  handleProQuotaChoice,
986
+ setQueueErrorMessage,
987
+ popAllMessages,
958
988
  ]);
959
989
  return (_jsx(UIStateContext.Provider, { value: uiState, children: _jsx(UIActionsContext.Provider, { value: uiActions, children: _jsx(ConfigContext.Provider, { value: config, children: _jsx(AppContext.Provider, { value: {
960
990
  version: props.version,