@machina.ai/cell-cli 1.0.21-rc4 → 1.4.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 (631) hide show
  1. package/dist/index.js +9 -0
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +7 -9
  4. package/dist/src/commands/extensions/disable.d.ts +14 -0
  5. package/dist/src/commands/extensions/disable.js +42 -0
  6. package/dist/src/commands/extensions/disable.js.map +1 -0
  7. package/dist/src/commands/extensions/enable.d.ts +14 -0
  8. package/dist/src/commands/extensions/enable.js +48 -0
  9. package/dist/src/commands/extensions/enable.js.map +1 -0
  10. package/dist/src/commands/extensions/examples/context/GEMINI.md +8 -0
  11. package/dist/src/commands/extensions/examples/context/gemini-extension.json +5 -0
  12. package/dist/src/commands/extensions/examples/custom-commands/commands/fs/grep-code.toml +6 -0
  13. package/dist/src/commands/extensions/examples/custom-commands/gemini-extension.json +4 -0
  14. package/dist/src/commands/extensions/examples/exclude-tools/gemini-extension.json +5 -0
  15. package/dist/src/commands/extensions/examples/mcp-server/example.d.ts +6 -0
  16. package/dist/src/commands/extensions/examples/mcp-server/example.js +46 -0
  17. package/dist/src/commands/extensions/examples/mcp-server/example.js.map +1 -0
  18. package/dist/src/commands/extensions/examples/mcp-server/example.ts +60 -0
  19. package/dist/src/commands/extensions/examples/mcp-server/gemini-extension.json +10 -0
  20. package/dist/src/commands/extensions/install.d.ts +13 -0
  21. package/dist/src/commands/extensions/install.js +69 -0
  22. package/dist/src/commands/extensions/install.js.map +1 -0
  23. package/dist/src/commands/extensions/install.test.d.ts +6 -0
  24. package/dist/src/commands/extensions/install.test.js +22 -0
  25. package/dist/src/commands/extensions/install.test.js.map +1 -0
  26. package/dist/src/commands/extensions/link.d.ts +12 -0
  27. package/dist/src/commands/extensions/link.js +37 -0
  28. package/dist/src/commands/extensions/link.js.map +1 -0
  29. package/dist/src/commands/extensions/list.d.ts +8 -0
  30. package/dist/src/commands/extensions/list.js +32 -0
  31. package/dist/src/commands/extensions/list.js.map +1 -0
  32. package/dist/src/commands/extensions/new.d.ts +7 -0
  33. package/dist/src/commands/extensions/new.js +70 -0
  34. package/dist/src/commands/extensions/new.js.map +1 -0
  35. package/dist/src/commands/extensions/new.test.d.ts +6 -0
  36. package/dist/src/commands/extensions/new.test.js +50 -0
  37. package/dist/src/commands/extensions/new.test.js.map +1 -0
  38. package/dist/src/commands/extensions/uninstall.d.ts +12 -0
  39. package/dist/src/commands/extensions/uninstall.js +38 -0
  40. package/dist/src/commands/extensions/uninstall.js.map +1 -0
  41. package/dist/src/commands/extensions/uninstall.test.d.ts +6 -0
  42. package/dist/src/commands/extensions/uninstall.test.js +15 -0
  43. package/dist/src/commands/extensions/uninstall.test.js.map +1 -0
  44. package/dist/src/commands/extensions/update.d.ts +13 -0
  45. package/dist/src/commands/extensions/update.js +59 -0
  46. package/dist/src/commands/extensions/update.js.map +1 -0
  47. package/dist/src/commands/extensions.d.ts +7 -0
  48. package/dist/src/commands/extensions.js +33 -0
  49. package/dist/src/commands/extensions.js.map +1 -0
  50. package/dist/src/commands/mcp/add.js +1 -1
  51. package/dist/src/commands/mcp/add.js.map +1 -1
  52. package/dist/src/commands/mcp/list.js +3 -3
  53. package/dist/src/commands/mcp/list.js.map +1 -1
  54. package/dist/src/commands/mcp/remove.js +1 -1
  55. package/dist/src/commands/mcp/remove.js.map +1 -1
  56. package/dist/src/config/auth.js +3 -3
  57. package/dist/src/config/auth.js.map +1 -1
  58. package/dist/src/config/auth.test.js +9 -4
  59. package/dist/src/config/auth.test.js.map +1 -1
  60. package/dist/src/config/config.d.ts +11 -7
  61. package/dist/src/config/config.js +100 -65
  62. package/dist/src/config/config.js.map +1 -1
  63. package/dist/src/config/extension.d.ts +44 -3
  64. package/dist/src/config/extension.js +347 -20
  65. package/dist/src/config/extension.js.map +1 -1
  66. package/dist/src/config/extensions/variableSchema.d.ts +28 -0
  67. package/dist/src/config/extensions/variableSchema.js +18 -0
  68. package/dist/src/config/extensions/variableSchema.js.map +1 -0
  69. package/dist/src/config/extensions/variables.d.ts +17 -0
  70. package/dist/src/config/extensions/variables.js +40 -0
  71. package/dist/src/config/extensions/variables.js.map +1 -0
  72. package/dist/src/config/extensions/variables.test.d.ts +6 -0
  73. package/dist/src/config/extensions/variables.test.js +17 -0
  74. package/dist/src/config/extensions/variables.test.js.map +1 -0
  75. package/dist/src/config/keyBindings.d.ts +1 -0
  76. package/dist/src/config/keyBindings.js +6 -25
  77. package/dist/src/config/keyBindings.js.map +1 -1
  78. package/dist/src/config/keyBindings.test.js +1 -1
  79. package/dist/src/config/keyBindings.test.js.map +1 -1
  80. package/dist/src/config/sandboxConfig.d.ts +2 -2
  81. package/dist/src/config/sandboxConfig.js +5 -7
  82. package/dist/src/config/sandboxConfig.js.map +1 -1
  83. package/dist/src/config/settings.d.ts +15 -9
  84. package/dist/src/config/settings.js +316 -135
  85. package/dist/src/config/settings.js.map +1 -1
  86. package/dist/src/config/settingsSchema.d.ts +736 -338
  87. package/dist/src/config/settingsSchema.js +730 -333
  88. package/dist/src/config/settingsSchema.js.map +1 -1
  89. package/dist/src/config/settingsSchema.test.js +87 -89
  90. package/dist/src/config/settingsSchema.test.js.map +1 -1
  91. package/dist/src/config/trustedFolders.d.ts +14 -4
  92. package/dist/src/config/trustedFolders.js +63 -44
  93. package/dist/src/config/trustedFolders.js.map +1 -1
  94. package/dist/src/config/trustedFolders.test.js +89 -6
  95. package/dist/src/config/trustedFolders.test.js.map +1 -1
  96. package/dist/src/gemini.d.ts +3 -1
  97. package/dist/src/gemini.js +115 -82
  98. package/dist/src/gemini.js.map +1 -1
  99. package/dist/src/gemini.test.js +70 -44
  100. package/dist/src/gemini.test.js.map +1 -1
  101. package/dist/src/generated/git-commit.d.ts +2 -2
  102. package/dist/src/generated/git-commit.js +2 -2
  103. package/dist/src/generated/git-commit.js.map +1 -1
  104. package/dist/src/nonInteractiveCli.d.ts +1 -1
  105. package/dist/src/nonInteractiveCli.js +25 -37
  106. package/dist/src/nonInteractiveCli.js.map +1 -1
  107. package/dist/src/services/BuiltinCommandLoader.d.ts +3 -3
  108. package/dist/src/services/BuiltinCommandLoader.js +1 -1
  109. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  110. package/dist/src/services/BuiltinCommandLoader.test.js +3 -3
  111. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  112. package/dist/src/services/CommandService.d.ts +2 -2
  113. package/dist/src/services/CommandService.test.js +1 -0
  114. package/dist/src/services/CommandService.test.js.map +1 -1
  115. package/dist/src/services/FileCommandLoader.d.ts +5 -3
  116. package/dist/src/services/FileCommandLoader.js +33 -16
  117. package/dist/src/services/FileCommandLoader.js.map +1 -1
  118. package/dist/src/services/McpPromptLoader.d.ts +14 -4
  119. package/dist/src/services/McpPromptLoader.js +44 -18
  120. package/dist/src/services/McpPromptLoader.js.map +1 -1
  121. package/dist/src/services/McpPromptLoader.test.d.ts +6 -0
  122. package/dist/src/services/McpPromptLoader.test.js +114 -0
  123. package/dist/src/services/McpPromptLoader.test.js.map +1 -0
  124. package/dist/src/services/prompt-processors/argumentProcessor.d.ts +3 -3
  125. package/dist/src/services/prompt-processors/argumentProcessor.js +3 -2
  126. package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -1
  127. package/dist/src/services/prompt-processors/atFileProcessor.d.ts +12 -0
  128. package/dist/src/services/prompt-processors/atFileProcessor.js +62 -0
  129. package/dist/src/services/prompt-processors/atFileProcessor.js.map +1 -0
  130. package/dist/src/services/prompt-processors/atFileProcessor.test.d.ts +6 -0
  131. package/dist/src/services/prompt-processors/atFileProcessor.test.js +174 -0
  132. package/dist/src/services/prompt-processors/atFileProcessor.test.js.map +1 -0
  133. package/dist/src/services/prompt-processors/injectionParser.d.ts +29 -0
  134. package/dist/src/services/prompt-processors/injectionParser.js +60 -0
  135. package/dist/src/services/prompt-processors/injectionParser.js.map +1 -0
  136. package/dist/src/services/prompt-processors/injectionParser.test.d.ts +6 -0
  137. package/dist/src/services/prompt-processors/injectionParser.test.js +189 -0
  138. package/dist/src/services/prompt-processors/injectionParser.test.js.map +1 -0
  139. package/dist/src/services/prompt-processors/shellProcessor.d.ts +4 -12
  140. package/dist/src/services/prompt-processors/shellProcessor.js +19 -68
  141. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  142. package/dist/src/services/prompt-processors/types.d.ts +13 -8
  143. package/dist/src/services/prompt-processors/types.js +4 -0
  144. package/dist/src/services/prompt-processors/types.js.map +1 -1
  145. package/dist/src/services/types.d.ts +1 -1
  146. package/dist/src/test-utils/customMatchers.js +0 -6
  147. package/dist/src/test-utils/customMatchers.js.map +1 -1
  148. package/dist/src/test-utils/mockCommandContext.d.ts +1 -1
  149. package/dist/src/test-utils/render.d.ts +1 -1
  150. package/dist/src/ui/App.d.ts +2 -2
  151. package/dist/src/ui/App.js +158 -70
  152. package/dist/src/ui/App.js.map +1 -1
  153. package/dist/src/ui/IdeIntegrationNudge.d.ts +1 -1
  154. package/dist/src/ui/IdeIntegrationNudge.js +3 -8
  155. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  156. package/dist/src/ui/colors.d.ts +1 -1
  157. package/dist/src/ui/commands/aboutCommand.d.ts +1 -1
  158. package/dist/src/ui/commands/aboutCommand.js +10 -4
  159. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  160. package/dist/src/ui/commands/authCommand.d.ts +1 -1
  161. package/dist/src/ui/commands/authCommand.js.map +1 -1
  162. package/dist/src/ui/commands/bugCommand.js +9 -4
  163. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  164. package/dist/src/ui/commands/chatCommand.d.ts +1 -1
  165. package/dist/src/ui/commands/chatCommand.js +6 -5
  166. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  167. package/dist/src/ui/commands/clearCommand.d.ts +1 -1
  168. package/dist/src/ui/commands/clearCommand.js +1 -1
  169. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  170. package/dist/src/ui/commands/compressCommand.d.ts +1 -1
  171. package/dist/src/ui/commands/compressCommand.js +2 -0
  172. package/dist/src/ui/commands/compressCommand.js.map +1 -1
  173. package/dist/src/ui/commands/copyCommand.d.ts +1 -1
  174. package/dist/src/ui/commands/copyCommand.js +2 -2
  175. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  176. package/dist/src/ui/commands/directoryCommand.d.ts +1 -1
  177. package/dist/src/ui/commands/directoryCommand.js +6 -5
  178. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  179. package/dist/src/ui/commands/helpCommand.d.ts +1 -1
  180. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  181. package/dist/src/ui/commands/ideCommand.d.ts +2 -3
  182. package/dist/src/ui/commands/ideCommand.js +46 -18
  183. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  184. package/dist/src/ui/commands/initCommand.d.ts +1 -1
  185. package/dist/src/ui/commands/initCommand.js +3 -3
  186. package/dist/src/ui/commands/initCommand.js.map +1 -1
  187. package/dist/src/ui/commands/mcpCommand.d.ts +1 -1
  188. package/dist/src/ui/commands/mcpCommand.js +12 -10
  189. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  190. package/dist/src/ui/commands/memoryCommand.d.ts +1 -1
  191. package/dist/src/ui/commands/memoryCommand.js +5 -4
  192. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  193. package/dist/src/ui/commands/privacyCommand.d.ts +1 -1
  194. package/dist/src/ui/commands/privacyCommand.js.map +1 -1
  195. package/dist/src/ui/commands/restoreCommand.d.ts +1 -1
  196. package/dist/src/ui/commands/restoreCommand.js +5 -9
  197. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  198. package/dist/src/ui/commands/settingsCommand.d.ts +1 -1
  199. package/dist/src/ui/commands/settingsCommand.js.map +1 -1
  200. package/dist/src/ui/commands/setupGithubCommand.d.ts +3 -1
  201. package/dist/src/ui/commands/setupGithubCommand.js +48 -9
  202. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  203. package/dist/src/ui/commands/setupGithubCommand.test.js +100 -7
  204. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
  205. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  206. package/dist/src/ui/commands/terminalSetupCommand.d.ts +1 -1
  207. package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -1
  208. package/dist/src/ui/commands/themeCommand.d.ts +1 -1
  209. package/dist/src/ui/commands/themeCommand.js.map +1 -1
  210. package/dist/src/ui/commands/toolsCommand.js +2 -2
  211. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  212. package/dist/src/ui/commands/types.d.ts +7 -8
  213. package/dist/src/ui/commands/types.js +1 -0
  214. package/dist/src/ui/commands/types.js.map +1 -1
  215. package/dist/src/ui/commands/vimCommand.d.ts +1 -1
  216. package/dist/src/ui/commands/vimCommand.js.map +1 -1
  217. package/dist/src/ui/components/AboutBox.d.ts +1 -1
  218. package/dist/src/ui/components/AsciiArt.d.ts +3 -3
  219. package/dist/src/ui/components/AsciiArt.js +3 -3
  220. package/dist/src/ui/components/AuthDialog.d.ts +4 -3
  221. package/dist/src/ui/components/AuthDialog.js +16 -10
  222. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  223. package/dist/src/ui/components/AuthDialog.test.js +80 -19
  224. package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
  225. package/dist/src/ui/components/AuthInProgress.d.ts +1 -1
  226. package/dist/src/ui/components/AuthInProgress.js +0 -5
  227. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  228. package/dist/src/ui/components/AutoAcceptIndicator.d.ts +2 -2
  229. package/dist/src/ui/components/AutoAcceptIndicator.js +1 -1
  230. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
  231. package/dist/src/ui/components/ConsoleSummaryDisplay.d.ts +1 -1
  232. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +2 -2
  233. package/dist/src/ui/components/ContextSummaryDisplay.js +1 -0
  234. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  235. package/dist/src/ui/components/ContextUsageDisplay.js +1 -1
  236. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
  237. package/dist/src/ui/components/DetailedMessagesDisplay.d.ts +2 -2
  238. package/dist/src/ui/components/DetailedMessagesDisplay.js +1 -1
  239. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  240. package/dist/src/ui/components/EditorSettingsDialog.d.ts +4 -3
  241. package/dist/src/ui/components/EditorSettingsDialog.js +9 -12
  242. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  243. package/dist/src/ui/components/FolderTrustDialog.d.ts +2 -1
  244. package/dist/src/ui/components/FolderTrustDialog.js +13 -5
  245. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  246. package/dist/src/ui/components/FolderTrustDialog.test.js +55 -3
  247. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  248. package/dist/src/ui/components/Footer.d.ts +4 -1
  249. package/dist/src/ui/components/Footer.js +5 -4
  250. package/dist/src/ui/components/Footer.js.map +1 -1
  251. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +1 -1
  252. package/dist/src/ui/components/GeminiRespondingSpinner.js +5 -3
  253. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  254. package/dist/src/ui/components/Header.d.ts +1 -1
  255. package/dist/src/ui/components/Help.d.ts +2 -2
  256. package/dist/src/ui/components/Help.js +1 -1
  257. package/dist/src/ui/components/Help.js.map +1 -1
  258. package/dist/src/ui/components/HistoryItemDisplay.d.ts +4 -4
  259. package/dist/src/ui/components/HistoryItemDisplay.test.js +2 -0
  260. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  261. package/dist/src/ui/components/InputPrompt.d.ts +5 -5
  262. package/dist/src/ui/components/InputPrompt.js +161 -29
  263. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  264. package/dist/src/ui/components/LoadingIndicator.d.ts +2 -2
  265. package/dist/src/ui/components/MemoryUsageDisplay.d.ts +1 -1
  266. package/dist/src/ui/components/MemoryUsageDisplay.js +1 -6
  267. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  268. package/dist/src/ui/components/ModelStatsDisplay.d.ts +1 -1
  269. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  270. package/dist/src/ui/components/PrepareLabel.d.ts +1 -1
  271. package/dist/src/ui/components/ProQuotaDialog.d.ts +13 -0
  272. package/dist/src/ui/components/ProQuotaDialog.js +21 -0
  273. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -0
  274. package/dist/src/ui/components/ProQuotaDialog.test.d.ts +6 -0
  275. package/dist/src/ui/components/ProQuotaDialog.test.js +56 -0
  276. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -0
  277. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +1 -1
  278. package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
  279. package/dist/src/ui/components/SettingsDialog.js +67 -36
  280. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  281. package/dist/src/ui/components/SettingsDialog.test.js +134 -56
  282. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  283. package/dist/src/ui/components/ShellConfirmationDialog.d.ts +2 -2
  284. package/dist/src/ui/components/ShellConfirmationDialog.js +2 -2
  285. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  286. package/dist/src/ui/components/ShellModeIndicator.d.ts +1 -1
  287. package/dist/src/ui/components/StatsDisplay.d.ts +1 -1
  288. package/dist/src/ui/components/StatsDisplay.js +3 -3
  289. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  290. package/dist/src/ui/components/SuggestionsDisplay.js +12 -4
  291. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  292. package/dist/src/ui/components/ThemeDialog.d.ts +3 -2
  293. package/dist/src/ui/components/ThemeDialog.js +5 -10
  294. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  295. package/dist/src/ui/components/Tips.d.ts +2 -2
  296. package/dist/src/ui/components/Tips.js +1 -0
  297. package/dist/src/ui/components/Tips.js.map +1 -1
  298. package/dist/src/ui/components/ToolStatsDisplay.d.ts +1 -1
  299. package/dist/src/ui/components/WorkspaceMigrationDialog.d.ts +11 -0
  300. package/dist/src/ui/components/WorkspaceMigrationDialog.js +42 -0
  301. package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -0
  302. package/dist/src/ui/components/messages/CompressionMessage.d.ts +2 -2
  303. package/dist/src/ui/components/messages/CompressionMessage.js +2 -1
  304. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  305. package/dist/src/ui/components/messages/DiffRenderer.d.ts +1 -1
  306. package/dist/src/ui/components/messages/DiffRenderer.js +6 -2
  307. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  308. package/dist/src/ui/components/messages/ErrorMessage.d.ts +1 -1
  309. package/dist/src/ui/components/messages/GeminiMessage.d.ts +1 -1
  310. package/dist/src/ui/components/messages/GeminiMessage.js +2 -1
  311. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  312. package/dist/src/ui/components/messages/GeminiMessageContent.d.ts +1 -1
  313. package/dist/src/ui/components/messages/InfoMessage.d.ts +1 -1
  314. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +3 -3
  315. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +41 -24
  316. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  317. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +79 -2
  318. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  319. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +4 -4
  320. package/dist/src/ui/components/messages/ToolGroupMessage.js +1 -6
  321. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  322. package/dist/src/ui/components/messages/ToolGroupMessage.test.d.ts +6 -0
  323. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +259 -0
  324. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -0
  325. package/dist/src/ui/components/messages/ToolMessage.d.ts +1 -1
  326. package/dist/src/ui/components/messages/ToolMessage.js +2 -1
  327. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  328. package/dist/src/ui/components/messages/ToolMessage.test.js +6 -6
  329. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  330. package/dist/src/ui/components/messages/UserMessage.d.ts +1 -1
  331. package/dist/src/ui/components/messages/UserMessage.js +4 -2
  332. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  333. package/dist/src/ui/components/messages/UserShellMessage.d.ts +1 -1
  334. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  335. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +1 -1
  336. package/dist/src/ui/components/shared/RadioButtonSelect.js +1 -6
  337. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  338. package/dist/src/ui/components/shared/text-buffer.js +41 -101
  339. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  340. package/dist/src/ui/components/shared/vim-buffer-actions.d.ts +1 -1
  341. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -1
  342. package/dist/src/ui/constants.d.ts +8 -0
  343. package/dist/src/ui/constants.js +9 -0
  344. package/dist/src/ui/constants.js.map +1 -1
  345. package/dist/src/ui/contexts/KeypressContext.d.ts +4 -3
  346. package/dist/src/ui/contexts/KeypressContext.js +276 -54
  347. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  348. package/dist/src/ui/contexts/KeypressContext.test.js +290 -10
  349. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  350. package/dist/src/ui/contexts/OverflowContext.d.ts +1 -1
  351. package/dist/src/ui/contexts/OverflowContext.js +0 -5
  352. package/dist/src/ui/contexts/OverflowContext.js.map +1 -1
  353. package/dist/src/ui/contexts/SessionContext.d.ts +2 -2
  354. package/dist/src/ui/contexts/SessionContext.js +1 -6
  355. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  356. package/dist/src/ui/contexts/SettingsContext.d.ts +1 -1
  357. package/dist/src/ui/contexts/StreamingContext.d.ts +1 -1
  358. package/dist/src/ui/contexts/VimModeContext.d.ts +1 -1
  359. package/dist/src/ui/contexts/VimModeContext.js +4 -4
  360. package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
  361. package/dist/src/ui/editors/editorSettingsManager.d.ts +1 -1
  362. package/dist/src/ui/editors/editorSettingsManager.js +1 -1
  363. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
  364. package/dist/src/ui/hooks/atCommandProcessor.d.ts +3 -3
  365. package/dist/src/ui/hooks/atCommandProcessor.js +5 -8
  366. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  367. package/dist/src/ui/hooks/atCommandProcessor.test.js +33 -10
  368. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  369. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +3 -3
  370. package/dist/src/ui/hooks/shellCommandProcessor.js +15 -19
  371. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  372. package/dist/src/ui/hooks/shellCommandProcessor.test.js +16 -19
  373. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  374. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +5 -4
  375. package/dist/src/ui/hooks/slashCommandProcessor.js +16 -9
  376. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  377. package/dist/src/ui/hooks/useAtCompletion.d.ts +2 -2
  378. package/dist/src/ui/hooks/useAtCompletion.js +3 -2
  379. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  380. package/dist/src/ui/hooks/useAuthCommand.d.ts +2 -2
  381. package/dist/src/ui/hooks/useAuthCommand.js +5 -4
  382. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  383. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +4 -2
  384. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +14 -5
  385. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  386. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +124 -4
  387. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
  388. package/dist/src/ui/hooks/useCommandCompletion.d.ts +8 -5
  389. package/dist/src/ui/hooks/useCommandCompletion.js +30 -9
  390. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  391. package/dist/src/ui/hooks/useCompletion.d.ts +1 -1
  392. package/dist/src/ui/hooks/useCompletion.js +1 -1
  393. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  394. package/dist/src/ui/hooks/useConsoleMessages.d.ts +1 -1
  395. package/dist/src/ui/hooks/useEditorSettings.d.ts +2 -2
  396. package/dist/src/ui/hooks/useEditorSettings.js +1 -1
  397. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
  398. package/dist/src/ui/hooks/useEditorSettings.test.js +3 -3
  399. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
  400. package/dist/src/ui/hooks/useFolderTrust.d.ts +2 -1
  401. package/dist/src/ui/hooks/useFolderTrust.js +24 -13
  402. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  403. package/dist/src/ui/hooks/useGeminiStream.d.ts +6 -5
  404. package/dist/src/ui/hooks/useGeminiStream.js +81 -46
  405. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  406. package/dist/src/ui/hooks/useGitBranchName.js +1 -1
  407. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  408. package/dist/src/ui/hooks/useGitBranchName.test.js +1 -1
  409. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  410. package/dist/src/ui/hooks/useHistoryManager.d.ts +1 -1
  411. package/dist/src/ui/hooks/useIdeTrustListener.d.ts +14 -0
  412. package/dist/src/ui/hooks/useIdeTrustListener.js +39 -0
  413. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -0
  414. package/dist/src/ui/hooks/useInputHistoryStore.d.ts +19 -0
  415. package/dist/src/ui/hooks/useInputHistoryStore.js +81 -0
  416. package/dist/src/ui/hooks/useInputHistoryStore.js.map +1 -0
  417. package/dist/src/ui/hooks/useInputHistoryStore.test.d.ts +6 -0
  418. package/dist/src/ui/hooks/useInputHistoryStore.test.js +234 -0
  419. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -0
  420. package/dist/src/ui/hooks/useKeypress.d.ts +2 -2
  421. package/dist/src/ui/hooks/useKeypress.js +1 -1
  422. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  423. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  424. package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
  425. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  426. package/dist/src/ui/hooks/useLoadingIndicator.test.js +2 -2
  427. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  428. package/dist/src/ui/hooks/useLogger.d.ts +3 -2
  429. package/dist/src/ui/hooks/useLogger.js +4 -4
  430. package/dist/src/ui/hooks/useLogger.js.map +1 -1
  431. package/dist/src/ui/hooks/usePhraseCycler.d.ts +1 -1
  432. package/dist/src/ui/hooks/usePhraseCycler.js +11 -8
  433. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  434. package/dist/src/ui/hooks/usePrivacySettings.d.ts +1 -1
  435. package/dist/src/ui/hooks/usePrivacySettings.js +8 -13
  436. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  437. package/dist/src/ui/hooks/usePrivacySettings.test.js +33 -97
  438. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +1 -1
  439. package/dist/src/ui/hooks/usePromptCompletion.d.ts +23 -0
  440. package/dist/src/ui/hooks/usePromptCompletion.js +177 -0
  441. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -0
  442. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +2 -2
  443. package/dist/src/ui/hooks/useReactToolScheduler.js +2 -3
  444. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  445. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +2 -2
  446. package/dist/src/ui/hooks/useShellHistory.d.ts +2 -1
  447. package/dist/src/ui/hooks/useShellHistory.js +9 -10
  448. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  449. package/dist/src/ui/hooks/useShellHistory.test.js +30 -4
  450. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -1
  451. package/dist/src/ui/hooks/useShowMemoryCommand.d.ts +3 -3
  452. package/dist/src/ui/hooks/useShowMemoryCommand.js +1 -1
  453. package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -1
  454. package/dist/src/ui/hooks/useSlashCompletion.d.ts +2 -2
  455. package/dist/src/ui/hooks/useSlashCompletion.js +263 -67
  456. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  457. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +4 -1
  458. package/dist/src/ui/hooks/useSlashCompletion.test.js +452 -59
  459. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  460. package/dist/src/ui/hooks/useThemeCommand.d.ts +1 -1
  461. package/dist/src/ui/hooks/useThemeCommand.js +8 -8
  462. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  463. package/dist/src/ui/hooks/useToolScheduler.test.js +100 -98
  464. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  465. package/dist/src/ui/hooks/useWorkspaceMigration.d.ts +13 -0
  466. package/dist/src/ui/hooks/useWorkspaceMigration.js +54 -0
  467. package/dist/src/ui/hooks/useWorkspaceMigration.js.map +1 -0
  468. package/dist/src/ui/keyMatchers.d.ts +2 -1
  469. package/dist/src/ui/keyMatchers.js +1 -1
  470. package/dist/src/ui/keyMatchers.js.map +1 -1
  471. package/dist/src/ui/keyMatchers.test.js +9 -0
  472. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  473. package/dist/src/ui/privacy/CloudFreePrivacyNotice.d.ts +1 -1
  474. package/dist/src/ui/privacy/PrivacyNotice.d.ts +1 -1
  475. package/dist/src/ui/privacy/PrivacyNotice.js +1 -1
  476. package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -1
  477. package/dist/src/ui/semantic-colors.d.ts +1 -1
  478. package/dist/src/ui/textConstants.d.ts +9 -0
  479. package/dist/src/ui/textConstants.js +10 -0
  480. package/dist/src/ui/textConstants.js.map +1 -0
  481. package/dist/src/ui/themes/atom-one-dark.js +1 -2
  482. package/dist/src/ui/themes/atom-one-dark.js.map +1 -1
  483. package/dist/src/ui/themes/ayu-light.js +1 -2
  484. package/dist/src/ui/themes/ayu-light.js.map +1 -1
  485. package/dist/src/ui/themes/ayu.js +1 -2
  486. package/dist/src/ui/themes/ayu.js.map +1 -1
  487. package/dist/src/ui/themes/default-light.js +1 -2
  488. package/dist/src/ui/themes/default-light.js.map +1 -1
  489. package/dist/src/ui/themes/default.js +1 -2
  490. package/dist/src/ui/themes/default.js.map +1 -1
  491. package/dist/src/ui/themes/dracula.js +1 -2
  492. package/dist/src/ui/themes/dracula.js.map +1 -1
  493. package/dist/src/ui/themes/github-dark.js +1 -2
  494. package/dist/src/ui/themes/github-dark.js.map +1 -1
  495. package/dist/src/ui/themes/github-light.js +1 -2
  496. package/dist/src/ui/themes/github-light.js.map +1 -1
  497. package/dist/src/ui/themes/googlecode.js +2 -3
  498. package/dist/src/ui/themes/googlecode.js.map +1 -1
  499. package/dist/src/ui/themes/no-color.js.map +1 -1
  500. package/dist/src/ui/themes/shades-of-purple.js +1 -2
  501. package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
  502. package/dist/src/ui/themes/theme-manager.d.ts +4 -2
  503. package/dist/src/ui/themes/theme-manager.js +73 -6
  504. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  505. package/dist/src/ui/themes/theme-manager.test.js +60 -1
  506. package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
  507. package/dist/src/ui/themes/theme.d.ts +3 -3
  508. package/dist/src/ui/themes/theme.js +30 -2
  509. package/dist/src/ui/themes/theme.js.map +1 -1
  510. package/dist/src/ui/themes/xcode.js +1 -2
  511. package/dist/src/ui/themes/xcode.js.map +1 -1
  512. package/dist/src/ui/types.d.ts +4 -2
  513. package/dist/src/ui/types.js.map +1 -1
  514. package/dist/src/ui/utils/CodeColorizer.d.ts +2 -2
  515. package/dist/src/ui/utils/CodeColorizer.js +1 -1
  516. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  517. package/dist/src/ui/utils/ConsolePatcher.d.ts +1 -1
  518. package/dist/src/ui/utils/ConsolePatcher.js +1 -1
  519. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  520. package/dist/src/ui/utils/MarkdownDisplay.js +2 -1
  521. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  522. package/dist/src/ui/utils/MarkdownDisplay.test.js +17 -16
  523. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  524. package/dist/src/ui/utils/clipboardUtils.js +6 -6
  525. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  526. package/dist/src/ui/utils/commandUtils.d.ts +1 -1
  527. package/dist/src/ui/utils/commandUtils.js +52 -14
  528. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  529. package/dist/src/ui/utils/commandUtils.test.js +76 -21
  530. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  531. package/dist/src/ui/utils/computeStats.d.ts +1 -1
  532. package/dist/src/ui/utils/highlight.d.ts +10 -0
  533. package/dist/src/ui/utils/highlight.js +41 -0
  534. package/dist/src/ui/utils/highlight.js.map +1 -0
  535. package/dist/src/ui/utils/highlight.test.d.ts +6 -0
  536. package/dist/src/ui/utils/highlight.test.js +93 -0
  537. package/dist/src/ui/utils/highlight.test.js.map +1 -0
  538. package/dist/src/ui/utils/platformConstants.d.ts +33 -1
  539. package/dist/src/ui/utils/platformConstants.js +35 -1
  540. package/dist/src/ui/utils/platformConstants.js.map +1 -1
  541. package/dist/src/ui/utils/terminalSetup.js +5 -5
  542. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  543. package/dist/src/ui/utils/textUtils.d.ts +18 -0
  544. package/dist/src/ui/utils/textUtils.js +44 -0
  545. package/dist/src/ui/utils/textUtils.js.map +1 -1
  546. package/dist/src/ui/utils/updateCheck.d.ts +1 -1
  547. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  548. package/dist/src/utils/cleanup.js +5 -4
  549. package/dist/src/utils/cleanup.js.map +1 -1
  550. package/dist/src/utils/deepMerge.d.ts +10 -0
  551. package/dist/src/utils/deepMerge.js +58 -0
  552. package/dist/src/utils/deepMerge.js.map +1 -0
  553. package/dist/src/utils/deepMerge.test.d.ts +6 -0
  554. package/dist/src/utils/deepMerge.test.js +143 -0
  555. package/dist/src/utils/deepMerge.test.js.map +1 -0
  556. package/dist/src/utils/dialogScopeUtils.d.ts +2 -1
  557. package/dist/src/utils/dialogScopeUtils.js.map +1 -1
  558. package/dist/src/utils/envVarResolver.d.ts +39 -0
  559. package/dist/src/utils/envVarResolver.js +97 -0
  560. package/dist/src/utils/envVarResolver.js.map +1 -0
  561. package/dist/src/utils/envVarResolver.test.d.ts +6 -0
  562. package/dist/src/utils/envVarResolver.test.js +221 -0
  563. package/dist/src/utils/envVarResolver.test.js.map +1 -0
  564. package/dist/src/utils/errors.d.ts +6 -0
  565. package/dist/src/utils/errors.js +12 -0
  566. package/dist/src/utils/errors.js.map +1 -0
  567. package/dist/src/utils/events.d.ts +1 -1
  568. package/dist/src/utils/events.js +1 -1
  569. package/dist/src/utils/events.js.map +1 -1
  570. package/dist/src/utils/gitUtils.js +1 -1
  571. package/dist/src/utils/gitUtils.js.map +1 -1
  572. package/dist/src/utils/gitUtils.test.js +4 -4
  573. package/dist/src/utils/gitUtils.test.js.map +1 -1
  574. package/dist/src/utils/handleAutoUpdate.d.ts +4 -4
  575. package/dist/src/utils/handleAutoUpdate.js +4 -3
  576. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  577. package/dist/src/utils/installationInfo.js +4 -4
  578. package/dist/src/utils/installationInfo.js.map +1 -1
  579. package/dist/src/utils/installationInfo.test.js +5 -5
  580. package/dist/src/utils/installationInfo.test.js.map +1 -1
  581. package/dist/src/utils/package.js +2 -2
  582. package/dist/src/utils/package.js.map +1 -1
  583. package/dist/src/utils/readStdin.js +15 -0
  584. package/dist/src/utils/readStdin.js.map +1 -1
  585. package/dist/src/utils/readStdin.test.d.ts +6 -0
  586. package/dist/src/utils/readStdin.test.js +88 -0
  587. package/dist/src/utils/readStdin.test.js.map +1 -0
  588. package/dist/src/utils/resolvePath.js +2 -2
  589. package/dist/src/utils/resolvePath.js.map +1 -1
  590. package/dist/src/utils/sandbox-macos-permissive-closed.sb +1 -1
  591. package/dist/src/utils/sandbox-macos-permissive-open.sb +2 -2
  592. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +1 -1
  593. package/dist/src/utils/sandbox-macos-restrictive-closed.sb +2 -2
  594. package/dist/src/utils/sandbox-macos-restrictive-open.sb +2 -2
  595. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +1 -1
  596. package/dist/src/utils/sandbox.d.ts +2 -2
  597. package/dist/src/utils/sandbox.js +20 -27
  598. package/dist/src/utils/sandbox.js.map +1 -1
  599. package/dist/src/utils/settingsUtils.d.ts +2 -2
  600. package/dist/src/utils/settingsUtils.js +2 -8
  601. package/dist/src/utils/settingsUtils.js.map +1 -1
  602. package/dist/src/utils/settingsUtils.test.js +145 -148
  603. package/dist/src/utils/settingsUtils.test.js.map +1 -1
  604. package/dist/src/utils/spawnWrapper.d.ts +1 -1
  605. package/dist/src/utils/spawnWrapper.js +1 -1
  606. package/dist/src/utils/spawnWrapper.js.map +1 -1
  607. package/dist/src/utils/startupWarnings.js +3 -3
  608. package/dist/src/utils/startupWarnings.js.map +1 -1
  609. package/dist/src/utils/updateEventEmitter.d.ts +1 -1
  610. package/dist/src/utils/updateEventEmitter.js +1 -1
  611. package/dist/src/utils/updateEventEmitter.js.map +1 -1
  612. package/dist/src/utils/userStartupWarnings.d.ts +1 -1
  613. package/dist/src/utils/userStartupWarnings.js +4 -4
  614. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  615. package/dist/src/utils/userStartupWarnings.test.js +3 -3
  616. package/dist/src/utils/userStartupWarnings.test.js.map +1 -1
  617. package/dist/src/validateNonInterActiveAuth.d.ts +2 -1
  618. package/dist/src/validateNonInterActiveAuth.js +1 -1
  619. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  620. package/dist/src/zed-integration/acp.d.ts +1 -1
  621. package/dist/src/zed-integration/acp.js +2 -1
  622. package/dist/src/zed-integration/acp.js.map +1 -1
  623. package/dist/src/zed-integration/fileSystemService.d.ts +2 -2
  624. package/dist/src/zed-integration/schema.d.ts +116 -13
  625. package/dist/src/zed-integration/schema.js +7 -1
  626. package/dist/src/zed-integration/schema.js.map +1 -1
  627. package/dist/src/zed-integration/zedIntegration.d.ts +4 -4
  628. package/dist/src/zed-integration/zedIntegration.js +197 -159
  629. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  630. package/dist/tsconfig.tsbuildinfo +1 -1
  631. package/package.json +9 -11
@@ -6,13 +6,14 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
6
6
  */
7
7
  import { useCallback, useEffect, useMemo, useState, useRef } from 'react';
8
8
  import { Box, measureElement, Static, Text, useStdin, useStdout, } from 'ink';
9
- import { StreamingState, MessageType } from './types.js';
9
+ import { StreamingState, MessageType, ToolCallStatus, } from './types.js';
10
10
  import { useTerminalSize } from './hooks/useTerminalSize.js';
11
11
  import { useGeminiStream } from './hooks/useGeminiStream.js';
12
12
  import { useLoadingIndicator } from './hooks/useLoadingIndicator.js';
13
13
  import { useThemeCommand } from './hooks/useThemeCommand.js';
14
14
  import { useAuthCommand } from './hooks/useAuthCommand.js';
15
15
  import { useFolderTrust } from './hooks/useFolderTrust.js';
16
+ import { useIdeTrustListener } from './hooks/useIdeTrustListener.js';
16
17
  import { useEditorSettings } from './hooks/useEditorSettings.js';
17
18
  import { useSlashCommandProcessor } from './hooks/slashCommandProcessor.js';
18
19
  import { useAutoAcceptIndicator } from './hooks/useAutoAcceptIndicator.js';
@@ -41,9 +42,10 @@ import { DetailedMessagesDisplay } from './components/DetailedMessagesDisplay.js
41
42
  import { HistoryItemDisplay } from './components/HistoryItemDisplay.js';
42
43
  import { ContextSummaryDisplay } from './components/ContextSummaryDisplay.js';
43
44
  import { useHistory } from './hooks/useHistoryManager.js';
45
+ import { useInputHistoryStore } from './hooks/useInputHistoryStore.js';
44
46
  import process from 'node:process';
45
- import { getErrorMessage, getAllGeminiMdFilenames, ApprovalMode, isEditorAvailable, FlashFallbackEvent, logFlashFallback, AuthType, ideContext, } from '@machina.ai/cell-cli-core';
46
- import { IdeIntegrationNudge, } from './IdeIntegrationNudge.js';
47
+ import { ApprovalMode, getAllGeminiMdFilenames, isEditorAvailable, getErrorMessage, AuthType, logFlashFallback, FlashFallbackEvent, ideContext, isProQuotaExceededError, isGenericQuotaExceededError, UserTierId, DEFAULT_GEMINI_FLASH_MODEL, IdeClient, } from '@google/gemini-cli-core';
48
+ import { IdeIntegrationNudge } from './IdeIntegrationNudge.js';
47
49
  import { validateAuthMethod } from '../config/auth.js';
48
50
  import { useLogger } from './hooks/useLogger.js';
49
51
  import { StreamingContext } from './contexts/StreamingContext.js';
@@ -58,24 +60,35 @@ import { useKeypress } from './hooks/useKeypress.js';
58
60
  import { KeypressProvider } from './contexts/KeypressContext.js';
59
61
  import { useKittyKeyboardProtocol } from './hooks/useKittyKeyboardProtocol.js';
60
62
  import { keyMatchers, Command } from './keyMatchers.js';
61
- import * as fs from 'fs';
63
+ import * as fs from 'node:fs';
62
64
  import { UpdateNotification } from './components/UpdateNotification.js';
63
- import { isProQuotaExceededError, isGenericQuotaExceededError, UserTierId, } from '@machina.ai/cell-cli-core';
64
65
  import ansiEscapes from 'ansi-escapes';
65
66
  import { OverflowProvider } from './contexts/OverflowContext.js';
66
67
  import { ShowMoreLines } from './components/ShowMoreLines.js';
67
68
  import { PrivacyNotice } from './privacy/PrivacyNotice.js';
68
69
  import { useSettingsCommand } from './hooks/useSettingsCommand.js';
69
70
  import { SettingsDialog } from './components/SettingsDialog.js';
71
+ import { ProQuotaDialog } from './components/ProQuotaDialog.js';
70
72
  import { setUpdateHandler } from '../utils/handleAutoUpdate.js';
71
73
  import { appEvents, AppEvent } from '../utils/events.js';
72
74
  import { isNarrowWidth } from './utils/isNarrowWidth.js';
75
+ import { useWorkspaceMigration } from './hooks/useWorkspaceMigration.js';
76
+ import { WorkspaceMigrationDialog } from './components/WorkspaceMigrationDialog.js';
77
+ import { isWorkspaceTrusted } from '../config/trustedFolders.js';
73
78
  const CTRL_EXIT_PROMPT_DURATION_MS = 1000;
74
79
  // Maximum number of queued messages to display in UI to prevent performance issues
75
80
  const MAX_DISPLAYED_QUEUED_MESSAGES = 3;
81
+ function isToolExecuting(pendingHistoryItems) {
82
+ return pendingHistoryItems.some((item) => {
83
+ if (item && item.type === 'tool_group') {
84
+ return item.tools.some((tool) => ToolCallStatus.Executing === tool.status);
85
+ }
86
+ return false;
87
+ });
88
+ }
76
89
  export const AppWrapper = (props) => {
77
90
  const kittyProtocolStatus = useKittyKeyboardProtocol();
78
- return (_jsx(KeypressProvider, { kittyProtocolEnabled: kittyProtocolStatus.enabled, config: props.config, children: _jsx(SessionStatsProvider, { children: _jsx(VimModeProvider, { settings: props.settings, children: _jsx(App, { ...props }) }) }) }));
91
+ return (_jsx(KeypressProvider, { kittyProtocolEnabled: kittyProtocolStatus.enabled, config: props.config, debugKeystrokeLogging: props.settings.merged.general?.debugKeystrokeLogging, children: _jsx(SessionStatsProvider, { children: _jsx(VimModeProvider, { settings: props.settings, children: _jsx(App, { ...props }) }) }) }));
79
92
  };
80
93
  const App = ({ config, settings, startupWarnings = [], version }) => {
81
94
  const isFocused = useFocus();
@@ -85,13 +98,20 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
85
98
  const nightly = version.includes('nightly');
86
99
  const { history, addItem, clearItems, loadHistory } = useHistory();
87
100
  const [idePromptAnswered, setIdePromptAnswered] = useState(false);
88
- const currentIDE = config.getIdeClient().getCurrentIde();
101
+ const [currentIDE, setCurrentIDE] = useState();
89
102
  useEffect(() => {
90
- registerCleanup(() => config.getIdeClient().disconnect());
103
+ (async () => {
104
+ const ideClient = await IdeClient.getInstance();
105
+ setCurrentIDE(ideClient.getCurrentIde());
106
+ })();
107
+ registerCleanup(async () => {
108
+ const ideClient = await IdeClient.getInstance();
109
+ ideClient.disconnect();
110
+ });
91
111
  }, [config]);
92
112
  const shouldShowIdePrompt = currentIDE &&
93
113
  !config.getIdeMode() &&
94
- !settings.merged.hasSeenIdeIntegrationNudge &&
114
+ !settings.merged.ide?.hasSeenNudge &&
95
115
  !idePromptAnswered;
96
116
  useEffect(() => {
97
117
  const cleanup = setUpdateHandler(addItem, setUpdateInfo);
@@ -120,7 +140,7 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
120
140
  const [editorError, setEditorError] = useState(null);
121
141
  const [footerHeight, setFooterHeight] = useState(0);
122
142
  const [corgiMode, setCorgiMode] = useState(false);
123
- const [isTrustedFolderState, setIsTrustedFolder] = useState(config.isTrustedFolder());
143
+ const [isTrustedFolderState, setIsTrustedFolder] = useState(isWorkspaceTrusted(settings.merged));
124
144
  const [currentModel, setCurrentModel] = useState(config.getModel());
125
145
  const [shellModeActive, setShellModeActive] = useState(false);
126
146
  const [showErrorDetails, setShowErrorDetails] = useState(false);
@@ -136,7 +156,11 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
136
156
  const [userTier, setUserTier] = useState(undefined);
137
157
  const [ideContextState, setIdeContextState] = useState();
138
158
  const [showEscapePrompt, setShowEscapePrompt] = useState(false);
159
+ const [showIdeRestartPrompt, setShowIdeRestartPrompt] = useState(false);
139
160
  const [isProcessing, setIsProcessing] = useState(false);
161
+ const { showWorkspaceMigrationDialog, workspaceExtensions, onWorkspaceMigrationDialogOpen, onWorkspaceMigrationDialogClose, } = useWorkspaceMigration(settings);
162
+ const [isProQuotaDialogOpen, setIsProQuotaDialogOpen] = useState(false);
163
+ const [proQuotaDialogResolver, setProQuotaDialogResolver] = useState(null);
140
164
  useEffect(() => {
141
165
  const unsubscribe = ideContext.subscribeToIdeContext(setIdeContextState);
142
166
  // Set the initial value
@@ -174,19 +198,40 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
174
198
  .reduce((total, msg) => total + msg.count, 0), [consoleMessages]);
175
199
  const { isThemeDialogOpen, openThemeDialog, handleThemeSelect, handleThemeHighlight, } = useThemeCommand(settings, setThemeError, addItem);
176
200
  const { isSettingsDialogOpen, openSettingsDialog, closeSettingsDialog } = useSettingsCommand();
177
- const { isFolderTrustDialogOpen, handleFolderTrustSelect } = useFolderTrust(settings, setIsTrustedFolder);
201
+ const { isFolderTrustDialogOpen, handleFolderTrustSelect, isRestarting } = useFolderTrust(settings, setIsTrustedFolder);
202
+ const { needsRestart: ideNeedsRestart } = useIdeTrustListener();
203
+ useEffect(() => {
204
+ if (ideNeedsRestart) {
205
+ // IDE trust changed, force a restart.
206
+ setShowIdeRestartPrompt(true);
207
+ }
208
+ }, [ideNeedsRestart]);
209
+ useKeypress((key) => {
210
+ if (key.name === 'r' || key.name === 'R') {
211
+ process.exit(0);
212
+ }
213
+ }, { isActive: showIdeRestartPrompt });
178
214
  const { isAuthDialogOpen, openAuthDialog, handleAuthSelect, isAuthenticating, cancelAuthentication, authMessage, } = useAuthCommand(settings, setAuthError, config);
179
215
  useEffect(() => {
180
- if (settings.merged.selectedAuthType && !settings.merged.useExternalAuth) {
181
- const error = validateAuthMethod(settings.merged.selectedAuthType);
216
+ if (settings.merged.security?.auth?.enforcedType &&
217
+ settings.merged.security?.auth.selectedType &&
218
+ settings.merged.security?.auth.enforcedType !==
219
+ settings.merged.security?.auth.selectedType) {
220
+ setAuthError(`Authentication is enforced to be ${settings.merged.security?.auth.enforcedType}, but you are currently using ${settings.merged.security?.auth.selectedType}.`);
221
+ openAuthDialog();
222
+ }
223
+ else if (settings.merged.security?.auth?.selectedType &&
224
+ !settings.merged.security?.auth?.useExternal) {
225
+ const error = validateAuthMethod(settings.merged.security.auth.selectedType);
182
226
  if (error) {
183
227
  setAuthError(error);
184
228
  openAuthDialog();
185
229
  }
186
230
  }
187
231
  }, [
188
- settings.merged.selectedAuthType,
189
- settings.merged.useExternalAuth,
232
+ settings.merged.security?.auth?.selectedType,
233
+ settings.merged.security?.auth?.enforcedType,
234
+ settings.merged.security?.auth?.useExternal,
190
235
  openAuthDialog,
191
236
  setAuthError,
192
237
  ]);
@@ -207,9 +252,9 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
207
252
  text: 'Refreshing hierarchical memory (GEMINI.md or other context files)...',
208
253
  }, Date.now());
209
254
  try {
210
- const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(process.cwd(), settings.merged.loadMemoryFromIncludeDirectories
255
+ const { memoryContent, fileCount } = await loadHierarchicalGeminiMemory(process.cwd(), settings.merged.context?.loadMemoryFromIncludeDirectories
211
256
  ? config.getWorkspaceContext().getDirectories()
212
- : [], config.getDebugMode(), config.getFileService(), settings.merged, config.getExtensionContextFilePaths(), settings.merged.memoryImportFormat || 'tree', // Use setting or default to 'tree'
257
+ : [], config.getDebugMode(), config.getFileService(), settings.merged, config.getExtensionContextFilePaths(), config.getFolderTrust(), settings.merged.context?.importFormat || 'tree', // Use setting or default to 'tree'
213
258
  config.getFileFilteringOptions());
214
259
  config.setUserMemory(memoryContent);
215
260
  config.setGeminiMdFileCount(fileCount);
@@ -247,6 +292,11 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
247
292
  // Set up Flash fallback handler
248
293
  useEffect(() => {
249
294
  const flashFallbackHandler = async (currentModel, fallbackModel, error) => {
295
+ // Check if we've already switched to the fallback model
296
+ if (config.isInFallbackMode()) {
297
+ // If we're already in fallback mode, don't show the dialog again
298
+ return false;
299
+ }
250
300
  let message;
251
301
  if (config.getContentGeneratorConfig().authType ===
252
302
  AuthType.LOGIN_WITH_GOOGLE) {
@@ -256,12 +306,12 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
256
306
  if (error && isProQuotaExceededError(error)) {
257
307
  if (isPaidTier) {
258
308
  message = `⚡ You have reached your daily ${currentModel} quota limit.
259
- Automatically switching from ${currentModel} to ${fallbackModel} for the remainder of this session.
309
+ You can choose to authenticate with a paid API key or continue with the fallback model.
260
310
  ⚡ To continue accessing the ${currentModel} model today, consider using /auth to switch to using a paid API key from AI Studio at https://aistudio.google.com/apikey`;
261
311
  }
262
312
  else {
263
313
  message = `⚡ You have reached your daily ${currentModel} quota limit.
264
- Automatically switching from ${currentModel} to ${fallbackModel} for the remainder of this session.
314
+ You can choose to authenticate with a paid API key or continue with the fallback model.
265
315
  ⚡ To increase your limits, upgrade to a Gemini Code Assist Standard or Enterprise plan with higher limits at https://goo.gle/set-up-gemini-code-assist
266
316
  ⚡ Or you can utilize a Gemini API Key. See: https://goo.gle/gemini-cli-docs-auth#gemini-api-key
267
317
  ⚡ You can switch authentication methods by typing /auth`;
@@ -302,6 +352,29 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
302
352
  type: MessageType.INFO,
303
353
  text: message,
304
354
  }, Date.now());
355
+ // For Pro quota errors, show the dialog and wait for user's choice
356
+ if (error && isProQuotaExceededError(error)) {
357
+ // Set the flag to prevent tool continuation
358
+ setModelSwitchedFromQuotaError(true);
359
+ // Set global quota error flag to prevent Flash model calls
360
+ config.setQuotaErrorOccurred(true);
361
+ // Show the ProQuotaDialog and wait for user's choice
362
+ const shouldContinueWithFallback = await new Promise((resolve) => {
363
+ setIsProQuotaDialogOpen(true);
364
+ setProQuotaDialogResolver(() => resolve);
365
+ });
366
+ // If user chose to continue with fallback, we don't need to stop the current prompt
367
+ if (shouldContinueWithFallback) {
368
+ // Switch to fallback model for future use
369
+ config.setModel(fallbackModel);
370
+ config.setFallbackMode(true);
371
+ logFlashFallback(config, new FlashFallbackEvent(config.getContentGeneratorConfig().authType));
372
+ return true; // Continue with current prompt using fallback model
373
+ }
374
+ // If user chose to authenticate, stop current prompt
375
+ return false;
376
+ }
377
+ // For other quota errors, automatically switch to fallback model
305
378
  // Set the flag to prevent tool continuation
306
379
  setModelSwitchedFromQuotaError(true);
307
380
  // Set global quota error flag to prevent Flash model calls
@@ -333,7 +406,7 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
333
406
  }
334
407
  }, []);
335
408
  const getPreferredEditor = useCallback(() => {
336
- const editorType = settings.merged.preferredEditor;
409
+ const editorType = settings.merged.general?.preferredEditor;
337
410
  const isValidEditor = isEditorAvailable(editorType);
338
411
  if (!isValidEditor) {
339
412
  openEditorDialog();
@@ -356,10 +429,12 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
356
429
  isValidPath,
357
430
  shellModeActive,
358
431
  });
359
- const [userMessages, setUserMessages] = useState([]);
432
+ // Independent input history management (unaffected by /clear)
433
+ const inputHistoryStore = useInputHistoryStore();
360
434
  // Stable reference for cancel handler to avoid circular dependency
361
435
  const cancelHandlerRef = useRef(() => { });
362
- const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, } = useGeminiStream(config.getGeminiClient(), history, addItem, config, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, refreshStatic, () => cancelHandlerRef.current());
436
+ const { streamingState, submitQuery, initError, pendingHistoryItems: pendingGeminiHistoryItems, thought, cancelOngoingRequest, } = useGeminiStream(config.getGeminiClient(), history, addItem, config, settings, setDebugMessage, handleSlashCommand, shellModeActive, getPreferredEditor, onAuthError, performMemoryRefresh, modelSwitchedFromQuotaError, setModelSwitchedFromQuotaError, refreshStatic, () => cancelHandlerRef.current());
437
+ const pendingHistoryItems = useMemo(() => [...pendingSlashCommandHistoryItems, ...pendingGeminiHistoryItems], [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
363
438
  // Message queue for handling input during streaming
364
439
  const { messageQueue, addMessage, clearQueue, getQueuedMessagesText } = useMessageQueue({
365
440
  streamingState,
@@ -367,7 +442,11 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
367
442
  });
368
443
  // Update the cancel handler with message queue support
369
444
  cancelHandlerRef.current = useCallback(() => {
370
- const lastUserMessage = userMessages.at(-1);
445
+ if (isToolExecuting(pendingHistoryItems)) {
446
+ buffer.setText(''); // Just clear the prompt
447
+ return;
448
+ }
449
+ const lastUserMessage = inputHistoryStore.inputHistory.at(-1);
371
450
  let textToSet = lastUserMessage || '';
372
451
  // Append queued messages if any exist
373
452
  const queuedText = getQueuedMessagesText();
@@ -378,11 +457,23 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
378
457
  if (textToSet) {
379
458
  buffer.setText(textToSet);
380
459
  }
381
- }, [buffer, userMessages, getQueuedMessagesText, clearQueue]);
460
+ }, [
461
+ buffer,
462
+ inputHistoryStore.inputHistory,
463
+ getQueuedMessagesText,
464
+ clearQueue,
465
+ pendingHistoryItems,
466
+ ]);
382
467
  // Input handling - queue messages for processing
383
468
  const handleFinalSubmit = useCallback((submittedValue) => {
469
+ const trimmedValue = submittedValue.trim();
470
+ if (trimmedValue.length > 0) {
471
+ // Add to independent input history
472
+ inputHistoryStore.addInput(trimmedValue);
473
+ }
474
+ // Always add to message queue
384
475
  addMessage(submittedValue);
385
- }, [addMessage]);
476
+ }, [addMessage, inputHistoryStore]);
386
477
  const handleIdePromptComplete = useCallback((result) => {
387
478
  if (result.userSelection === 'yes') {
388
479
  if (result.isExtensionPreInstalled) {
@@ -399,10 +490,8 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
399
490
  setIdePromptAnswered(true);
400
491
  }, [handleSlashCommand, settings]);
401
492
  const { handleInput: vimHandleInput } = useVim(buffer, handleFinalSubmit);
402
- const pendingHistoryItems = [...pendingSlashCommandHistoryItems];
403
- pendingHistoryItems.push(...pendingGeminiHistoryItems);
404
- const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState);
405
- const showAutoAcceptIndicator = useAutoAcceptIndicator({ config });
493
+ const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState, settings.merged.ui?.customWittyPhrases);
494
+ const showAutoAcceptIndicator = useAutoAcceptIndicator({ config, addItem });
406
495
  const handleExit = useCallback((pressedOnce, setPressedOnce, timerRef) => {
407
496
  if (pressedOnce) {
408
497
  if (timerRef.current) {
@@ -420,6 +509,10 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
420
509
  }
421
510
  }, [handleSlashCommand]);
422
511
  const handleGlobalKeypress = useCallback((key) => {
512
+ // Debug log keystrokes if enabled
513
+ if (settings.merged.general?.debugKeystrokeLogging) {
514
+ console.log('[DEBUG] Keystroke:', JSON.stringify(key));
515
+ }
423
516
  let enteringConstrainHeightMode = false;
424
517
  if (!constrainHeight) {
425
518
  enteringConstrainHeightMode = true;
@@ -481,6 +574,7 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
481
574
  handleSlashCommand,
482
575
  isAuthenticating,
483
576
  cancelOngoingRequest,
577
+ settings.merged.general?.debugKeystrokeLogging,
484
578
  ]);
485
579
  useKeypress(handleGlobalKeypress, {
486
580
  isActive: true,
@@ -490,40 +584,16 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
490
584
  setGeminiMdFileCount(config.getGeminiMdFileCount());
491
585
  }
492
586
  }, [config, config.getGeminiMdFileCount]);
493
- const logger = useLogger();
587
+ const logger = useLogger(config.storage);
588
+ // Initialize independent input history from logger
494
589
  useEffect(() => {
495
- const fetchUserMessages = async () => {
496
- const pastMessagesRaw = (await logger?.getPreviousUserMessages()) || []; // Newest first
497
- const currentSessionUserMessages = history
498
- .filter((item) => item.type === 'user' &&
499
- typeof item.text === 'string' &&
500
- item.text.trim() !== '')
501
- .map((item) => item.text)
502
- .reverse(); // Newest first, to match pastMessagesRaw sorting
503
- // Combine, with current session messages being more recent
504
- const combinedMessages = [
505
- ...currentSessionUserMessages,
506
- ...pastMessagesRaw,
507
- ];
508
- // Deduplicate consecutive identical messages from the combined list (still newest first)
509
- const deduplicatedMessages = [];
510
- if (combinedMessages.length > 0) {
511
- deduplicatedMessages.push(combinedMessages[0]); // Add the newest one unconditionally
512
- for (let i = 1; i < combinedMessages.length; i++) {
513
- if (combinedMessages[i] !== combinedMessages[i - 1]) {
514
- deduplicatedMessages.push(combinedMessages[i]);
515
- }
516
- }
517
- }
518
- // Reverse to oldest first for useInputHistory
519
- setUserMessages(deduplicatedMessages.reverse());
520
- };
521
- fetchUserMessages();
522
- }, [history, logger]);
590
+ inputHistoryStore.initializeFromLogger(logger);
591
+ }, [logger, inputHistoryStore]);
523
592
  const isInputActive = (streamingState === StreamingState.Idle ||
524
593
  streamingState === StreamingState.Responding) &&
525
594
  !initError &&
526
- !isProcessing;
595
+ !isProcessing &&
596
+ !isProQuotaDialogOpen;
527
597
  const handleClearScreen = useCallback(() => {
528
598
  clearItems();
529
599
  clearConsoleMessagesState();
@@ -569,12 +639,12 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
569
639
  }, [consoleMessages, config]);
570
640
  const branchName = useGitBranchName(config.getTargetDir());
571
641
  const contextFileNames = useMemo(() => {
572
- const fromSettings = settings.merged.contextFileName;
642
+ const fromSettings = settings.merged.context?.fileName;
573
643
  if (fromSettings) {
574
644
  return Array.isArray(fromSettings) ? fromSettings : [fromSettings];
575
645
  }
576
646
  return getAllGeminiMdFilenames();
577
- }, [settings.merged.contextFileName]);
647
+ }, [settings.merged.context?.fileName]);
578
648
  const initialPrompt = useMemo(() => config.getQuestion(), [config]);
579
649
  const geminiClient = config.getGeminiClient();
580
650
  useEffect(() => {
@@ -610,13 +680,30 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
610
680
  const placeholder = vimModeEnabled
611
681
  ? " Press 'i' for INSERT mode and 'Esc' for NORMAL mode."
612
682
  : ' Type your message or @path/to/file';
683
+ const hideContextSummary = settings.merged.ui?.hideContextSummary ?? false;
613
684
  return (_jsx(StreamingContext.Provider, { value: streamingState, children: _jsxs(Box, { flexDirection: "column", width: "90%", children: [_jsx(Static, { items: [
614
- _jsxs(Box, { flexDirection: "column", children: [!settings.merged.hideBanner && (_jsx(Header, { version: version, nightly: nightly })), !settings.merged.hideTips && _jsx(Tips, { config: config })] }, "header"),
685
+ _jsxs(Box, { flexDirection: "column", children: [!(settings.merged.ui?.hideBanner || config.getScreenReader()) && _jsx(Header, { version: version, nightly: nightly }), !(settings.merged.ui?.hideTips || config.getScreenReader()) && (_jsx(Tips, { config: config }))] }, "header"),
615
686
  ...history.map((h) => (_jsx(HistoryItemDisplay, { terminalWidth: mainAreaWidth, availableTerminalHeight: staticAreaMaxItemHeight, item: h, isPending: false, config: config, commands: slashCommands }, h.id))),
616
687
  ], children: (item) => item }, staticKey), _jsx(OverflowProvider, { children: _jsxs(Box, { ref: pendingHistoryItemRef, flexDirection: "column", children: [pendingHistoryItems.map((item, i) => (_jsx(HistoryItemDisplay, { availableTerminalHeight: constrainHeight ? availableTerminalHeight : undefined, terminalWidth: mainAreaWidth,
617
688
  // TODO(taehykim): It seems like references to ids aren't necessary in
618
689
  // HistoryItemDisplay. Refactor later. Use a fake id for now.
619
- item: { ...item, id: 0 }, isPending: true, config: config, isFocused: !isEditorDialogOpen }, i))), _jsx(ShowMoreLines, { constrainHeight: constrainHeight })] }) }), _jsxs(Box, { flexDirection: "column", ref: mainControlsRef, children: [updateInfo && _jsx(UpdateNotification, { message: updateInfo.message }), startupWarnings.length > 0 && (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentYellow, paddingX: 1, marginY: 1, flexDirection: "column", children: startupWarnings.map((warning, index) => (_jsx(Text, { color: Colors.AccentYellow, children: warning }, index))) })), shouldShowIdePrompt && currentIDE ? (_jsx(IdeIntegrationNudge, { ide: currentIDE, onComplete: handleIdePromptComplete })) : isFolderTrustDialogOpen ? (_jsx(FolderTrustDialog, { onSelect: handleFolderTrustSelect })) : shellConfirmationRequest ? (_jsx(ShellConfirmationDialog, { request: shellConfirmationRequest })) : confirmationRequest ? (_jsxs(Box, { flexDirection: "column", children: [confirmationRequest.prompt, _jsx(Box, { paddingY: 1, children: _jsx(RadioButtonSelect, { isFocused: !!confirmationRequest, items: [
690
+ item: { ...item, id: 0 }, isPending: true, config: config, isFocused: !isEditorDialogOpen }, i))), _jsx(ShowMoreLines, { constrainHeight: constrainHeight })] }) }), _jsxs(Box, { flexDirection: "column", ref: mainControlsRef, children: [updateInfo && _jsx(UpdateNotification, { message: updateInfo.message }), startupWarnings.length > 0 && (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentYellow, paddingX: 1, marginY: 1, flexDirection: "column", children: startupWarnings.map((warning, index) => (_jsx(Text, { color: Colors.AccentYellow, children: warning }, index))) })), showWorkspaceMigrationDialog ? (_jsx(WorkspaceMigrationDialog, { workspaceExtensions: workspaceExtensions, onOpen: onWorkspaceMigrationDialogOpen, onClose: onWorkspaceMigrationDialogClose })) : shouldShowIdePrompt && currentIDE ? (_jsx(IdeIntegrationNudge, { ide: currentIDE, onComplete: handleIdePromptComplete })) : isProQuotaDialogOpen ? (_jsx(ProQuotaDialog, { currentModel: config.getModel(), fallbackModel: DEFAULT_GEMINI_FLASH_MODEL, onChoice: (choice) => {
691
+ setIsProQuotaDialogOpen(false);
692
+ if (!proQuotaDialogResolver)
693
+ return;
694
+ const resolveValue = choice !== 'auth';
695
+ proQuotaDialogResolver(resolveValue);
696
+ setProQuotaDialogResolver(null);
697
+ if (choice === 'auth') {
698
+ openAuthDialog();
699
+ }
700
+ else {
701
+ addItem({
702
+ type: MessageType.INFO,
703
+ text: 'Switched to fallback model. Tip: Press Ctrl+P to recall your previous prompt and submit it again if you wish.',
704
+ }, Date.now());
705
+ }
706
+ } })) : showIdeRestartPrompt ? (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentYellow, paddingX: 1, children: _jsx(Text, { color: Colors.AccentYellow, children: "Workspace trust has changed. Press 'r' to restart Gemini to apply the changes." }) })) : isFolderTrustDialogOpen ? (_jsx(FolderTrustDialog, { onSelect: handleFolderTrustSelect, isRestarting: isRestarting })) : shellConfirmationRequest ? (_jsx(ShellConfirmationDialog, { request: shellConfirmationRequest })) : confirmationRequest ? (_jsxs(Box, { flexDirection: "column", children: [confirmationRequest.prompt, _jsx(Box, { paddingY: 1, children: _jsx(RadioButtonSelect, { isFocused: !!confirmationRequest, items: [
620
707
  { label: 'Yes', value: true },
621
708
  { label: 'No', value: false },
622
709
  ], onSelect: (value) => {
@@ -628,9 +715,11 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
628
715
  cancelAuthentication();
629
716
  openAuthDialog();
630
717
  }, authMessage: authMessage }), showErrorDetails && (_jsx(OverflowProvider, { children: _jsxs(Box, { flexDirection: "column", children: [_jsx(DetailedMessagesDisplay, { messages: filteredConsoleMessages, maxHeight: constrainHeight ? debugConsoleMaxHeight : undefined, width: inputWidth }), _jsx(ShowMoreLines, { constrainHeight: constrainHeight })] }) }))] })) : isAuthDialogOpen ? (_jsx(Box, { flexDirection: "column", children: _jsx(AuthDialog, { onSelect: handleAuthSelect, settings: settings, initialErrorMessage: authError }) })) : isEditorDialogOpen ? (_jsxs(Box, { flexDirection: "column", children: [editorError && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: Colors.AccentRed, children: editorError }) })), _jsx(EditorSettingsDialog, { onSelect: handleEditorSelect, settings: settings, onExit: exitEditorDialog })] })) : showPrivacyNotice ? (_jsx(PrivacyNotice, { onExit: () => setShowPrivacyNotice(false), config: config })) : (_jsxs(_Fragment, { children: [_jsx(LoadingIndicator, { thought: streamingState === StreamingState.WaitingForConfirmation ||
631
- config.getAccessibility()?.disableLoadingPhrases
718
+ config.getAccessibility()?.disableLoadingPhrases ||
719
+ config.getScreenReader()
632
720
  ? undefined
633
- : thought, currentLoadingPhrase: config.getAccessibility()?.disableLoadingPhrases
721
+ : thought, currentLoadingPhrase: config.getAccessibility()?.disableLoadingPhrases ||
722
+ config.getScreenReader()
634
723
  ? undefined
635
724
  : currentLoadingPhrase, elapsedTime: elapsedTime }), messageQueue.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [messageQueue
636
725
  .slice(0, MAX_DISPLAYED_QUEUED_MESSAGES)
@@ -641,10 +730,9 @@ const App = ({ config, settings, startupWarnings = [], version }) => {
641
730
  return (
642
731
  // Ensure the Box takes full width so truncation calculates correctly
643
732
  _jsx(Box, { paddingLeft: 2, width: "100%", children: _jsx(Text, { dimColor: true, wrap: "truncate", children: preview }) }, index));
644
- }), messageQueue.length > MAX_DISPLAYED_QUEUED_MESSAGES && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["... (+", messageQueue.length -
645
- MAX_DISPLAYED_QUEUED_MESSAGES, ' ', "more)"] }) }))] })), _jsxs(Box, { marginTop: 1, justifyContent: "space-between", width: "100%", flexDirection: isNarrow ? 'column' : 'row', alignItems: isNarrow ? 'flex-start' : 'center', children: [_jsxs(Box, { children: [process.env['GEMINI_SYSTEM_MD'] && (_jsx(Text, { color: Colors.AccentRed, children: "|\u2310\u25A0_\u25A0| " })), ctrlCPressedOnce ? (_jsx(Text, { color: Colors.AccentYellow, children: "Press Ctrl+C again to exit." })) : ctrlDPressedOnce ? (_jsx(Text, { color: Colors.AccentYellow, children: "Press Ctrl+D again to exit." })) : showEscapePrompt ? (_jsx(Text, { color: Colors.Gray, children: "Press Esc again to clear." })) : (_jsx(ContextSummaryDisplay, { ideContext: ideContextState, geminiMdFileCount: geminiMdFileCount, contextFileNames: contextFileNames, mcpServers: config.getMcpServers(), blockedMcpServers: config.getBlockedMcpServers(), showToolDescriptions: showToolDescriptions }))] }), _jsxs(Box, { paddingTop: isNarrow ? 1 : 0, children: [showAutoAcceptIndicator !== ApprovalMode.DEFAULT &&
646
- !shellModeActive && (_jsx(AutoAcceptIndicator, { approvalMode: showAutoAcceptIndicator })), shellModeActive && _jsx(ShellModeIndicator, {})] })] }), showErrorDetails && (_jsx(OverflowProvider, { children: _jsxs(Box, { flexDirection: "column", children: [_jsx(DetailedMessagesDisplay, { messages: filteredConsoleMessages, maxHeight: constrainHeight ? debugConsoleMaxHeight : undefined, width: inputWidth }), _jsx(ShowMoreLines, { constrainHeight: constrainHeight })] }) })), isInputActive && (_jsx(InputPrompt, { buffer: buffer, inputWidth: inputWidth, suggestionsWidth: suggestionsWidth, onSubmit: handleFinalSubmit, userMessages: userMessages, onClearScreen: handleClearScreen, config: config, slashCommands: slashCommands, commandContext: commandContext, shellModeActive: shellModeActive, setShellModeActive: setShellModeActive, onEscapePromptChange: handleEscapePromptChange, focus: isFocused, vimHandleInput: vimHandleInput, placeholder: placeholder }))] })), initError && streamingState !== StreamingState.Responding && (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentRed, paddingX: 1, marginBottom: 1, children: history.find((item) => item.type === 'error' && item.text?.includes(initError))?.text ? (_jsx(Text, { color: Colors.AccentRed, children: history.find((item) => item.type === 'error' && item.text?.includes(initError))?.text })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { color: Colors.AccentRed, children: ["Initialization Error: ", initError] }), _jsxs(Text, { color: Colors.AccentRed, children: [' ', "Please check API key and configuration."] })] })) })), !settings.merged.hideFooter && (_jsx(Footer, { model: currentModel, targetDir: config.getTargetDir(), debugMode: config.getDebugMode(), branchName: branchName, debugMessage: debugMessage, corgiMode: corgiMode, errorCount: errorCount, showErrorDetails: showErrorDetails, showMemoryUsage: config.getDebugMode() ||
647
- settings.merged.showMemoryUsage ||
648
- false, promptTokenCount: sessionStats.lastPromptTokenCount, nightly: nightly, vimMode: vimModeEnabled ? vimMode : undefined, isTrustedFolder: isTrustedFolderState }))] })] }) }));
733
+ }), messageQueue.length > MAX_DISPLAYED_QUEUED_MESSAGES && (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { dimColor: true, children: ["... (+", messageQueue.length - MAX_DISPLAYED_QUEUED_MESSAGES, "more)"] }) }))] })), _jsxs(Box, { marginTop: 1, justifyContent: hideContextSummary ? 'flex-start' : 'space-between', width: "100%", flexDirection: isNarrow ? 'column' : 'row', alignItems: isNarrow ? 'flex-start' : 'center', children: [_jsxs(Box, { children: [process.env['CELL_SYSTEM_MD'] && (_jsx(Text, { color: Colors.AccentRed, children: "|\u2310\u25A0_\u25A0| " })), ctrlCPressedOnce ? (_jsx(Text, { color: Colors.AccentYellow, children: "Press Ctrl+C again to exit." })) : ctrlDPressedOnce ? (_jsx(Text, { color: Colors.AccentYellow, children: "Press Ctrl+D again to exit." })) : showEscapePrompt ? (_jsx(Text, { color: Colors.Gray, children: "Press Esc again to clear." })) : !hideContextSummary ? (_jsx(ContextSummaryDisplay, { ideContext: ideContextState, geminiMdFileCount: geminiMdFileCount, contextFileNames: contextFileNames, mcpServers: config.getMcpServers(), blockedMcpServers: config.getBlockedMcpServers(), showToolDescriptions: showToolDescriptions })) : null] }), _jsxs(Box, { paddingTop: isNarrow ? 1 : 0, marginLeft: hideContextSummary ? 1 : 2, children: [showAutoAcceptIndicator !== ApprovalMode.DEFAULT &&
734
+ !shellModeActive && (_jsx(AutoAcceptIndicator, { approvalMode: showAutoAcceptIndicator })), shellModeActive && _jsx(ShellModeIndicator, {})] })] }), showErrorDetails && (_jsx(OverflowProvider, { children: _jsxs(Box, { flexDirection: "column", children: [_jsx(DetailedMessagesDisplay, { messages: filteredConsoleMessages, maxHeight: constrainHeight ? debugConsoleMaxHeight : undefined, width: inputWidth }), _jsx(ShowMoreLines, { constrainHeight: constrainHeight })] }) })), isInputActive && (_jsx(InputPrompt, { buffer: buffer, inputWidth: inputWidth, suggestionsWidth: suggestionsWidth, onSubmit: handleFinalSubmit, userMessages: inputHistoryStore.inputHistory, onClearScreen: handleClearScreen, config: config, slashCommands: slashCommands, commandContext: commandContext, shellModeActive: shellModeActive, setShellModeActive: setShellModeActive, onEscapePromptChange: handleEscapePromptChange, focus: isFocused, vimHandleInput: vimHandleInput, placeholder: placeholder }))] })), initError && streamingState !== StreamingState.Responding && (_jsx(Box, { borderStyle: "round", borderColor: Colors.AccentRed, paddingX: 1, marginBottom: 1, children: history.find((item) => item.type === 'error' && item.text?.includes(initError))?.text ? (_jsx(Text, { color: Colors.AccentRed, children: history.find((item) => item.type === 'error' && item.text?.includes(initError))?.text })) : (_jsxs(_Fragment, { children: [_jsxs(Text, { color: Colors.AccentRed, children: ["Initialization Error: ", initError] }), _jsxs(Text, { color: Colors.AccentRed, children: [' ', "Please check API key and configuration."] })] })) })), !settings.merged.ui?.hideFooter && (_jsx(Footer, { model: currentModel, targetDir: config.getTargetDir(), debugMode: config.getDebugMode(), branchName: branchName, debugMessage: debugMessage, corgiMode: corgiMode, errorCount: errorCount, showErrorDetails: showErrorDetails, showMemoryUsage: config.getDebugMode() ||
735
+ settings.merged.ui?.showMemoryUsage ||
736
+ false, promptTokenCount: sessionStats.lastPromptTokenCount, nightly: nightly, vimMode: vimModeEnabled ? vimMode : undefined, isTrustedFolder: isTrustedFolderState, hideCWD: settings.merged.ui?.footer?.hideCWD, hideSandboxStatus: settings.merged.ui?.footer?.hideSandboxStatus, hideModelInfo: settings.merged.ui?.footer?.hideModelInfo }))] })] }) }));
649
737
  };
650
738
  //# sourceMappingURL=App.js.map