@google/gemini-cli 0.31.0 → 0.32.0

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 (327) hide show
  1. package/dist/package.json +2 -2
  2. package/dist/src/commands/extensions/examples/policies/README.md +41 -0
  3. package/dist/src/commands/extensions/examples/policies/gemini-extension.json +5 -0
  4. package/dist/src/commands/extensions/examples/policies/policies/policies.toml +28 -0
  5. package/dist/src/commands/extensions/link.test.js +5 -21
  6. package/dist/src/commands/extensions/link.test.js.map +1 -1
  7. package/dist/src/commands/extensions/list.test.js +10 -24
  8. package/dist/src/commands/extensions/list.test.js.map +1 -1
  9. package/dist/src/commands/mcp/list.js +32 -14
  10. package/dist/src/commands/mcp/list.js.map +1 -1
  11. package/dist/src/commands/mcp/list.test.js +22 -1
  12. package/dist/src/commands/mcp/list.test.js.map +1 -1
  13. package/dist/src/commands/skills/disable.test.js +4 -7
  14. package/dist/src/commands/skills/disable.test.js.map +1 -1
  15. package/dist/src/commands/skills/enable.test.js +4 -7
  16. package/dist/src/commands/skills/enable.test.js.map +1 -1
  17. package/dist/src/commands/skills/install.test.js +12 -9
  18. package/dist/src/commands/skills/install.test.js.map +1 -1
  19. package/dist/src/commands/skills/link.test.js +5 -2
  20. package/dist/src/commands/skills/link.test.js.map +1 -1
  21. package/dist/src/commands/skills/list.test.js +16 -29
  22. package/dist/src/commands/skills/list.test.js.map +1 -1
  23. package/dist/src/commands/skills/uninstall.test.js +9 -6
  24. package/dist/src/commands/skills/uninstall.test.js.map +1 -1
  25. package/dist/src/config/config.js +3 -0
  26. package/dist/src/config/config.js.map +1 -1
  27. package/dist/src/config/config.test.js +55 -0
  28. package/dist/src/config/config.test.js.map +1 -1
  29. package/dist/src/config/extension-manager.d.ts +8 -1
  30. package/dist/src/config/extension-manager.js +88 -23
  31. package/dist/src/config/extension-manager.js.map +1 -1
  32. package/dist/src/config/extension-manager.test.d.ts +6 -0
  33. package/dist/src/config/extension-manager.test.js +138 -0
  34. package/dist/src/config/extension-manager.test.js.map +1 -0
  35. package/dist/src/config/extension.test.js +93 -4
  36. package/dist/src/config/extension.test.js.map +1 -1
  37. package/dist/src/config/extensions/consent.test.js +35 -43
  38. package/dist/src/config/extensions/consent.test.js.map +1 -1
  39. package/dist/src/config/keyBindings.js +1 -1
  40. package/dist/src/config/keyBindings.js.map +1 -1
  41. package/dist/src/config/policy-engine.integration.test.js +12 -12
  42. package/dist/src/config/settingsSchema.d.ts +98 -3
  43. package/dist/src/config/settingsSchema.js +92 -1
  44. package/dist/src/config/settingsSchema.js.map +1 -1
  45. package/dist/src/config/settingsSchema.test.js +49 -0
  46. package/dist/src/config/settingsSchema.test.js.map +1 -1
  47. package/dist/src/gemini.js +7 -8
  48. package/dist/src/gemini.js.map +1 -1
  49. package/dist/src/gemini.test.js +5 -1
  50. package/dist/src/gemini.test.js.map +1 -1
  51. package/dist/src/generated/git-commit.d.ts +2 -2
  52. package/dist/src/generated/git-commit.js +2 -2
  53. package/dist/src/test-utils/AppRig.d.ts +26 -0
  54. package/dist/src/test-utils/AppRig.js +128 -6
  55. package/dist/src/test-utils/AppRig.js.map +1 -1
  56. package/dist/src/test-utils/customMatchers.d.ts +25 -5
  57. package/dist/src/test-utils/customMatchers.js +46 -0
  58. package/dist/src/test-utils/customMatchers.js.map +1 -1
  59. package/dist/src/test-utils/mockConfig.js +4 -0
  60. package/dist/src/test-utils/mockConfig.js.map +1 -1
  61. package/dist/src/test-utils/mockDebugLogger.d.ts +35 -0
  62. package/dist/src/test-utils/mockDebugLogger.js +67 -0
  63. package/dist/src/test-utils/mockDebugLogger.js.map +1 -0
  64. package/dist/src/test-utils/render.d.ts +13 -0
  65. package/dist/src/test-utils/render.js +48 -8
  66. package/dist/src/test-utils/render.js.map +1 -1
  67. package/dist/src/test-utils/svg.d.ts +7 -0
  68. package/dist/src/test-utils/svg.js +163 -0
  69. package/dist/src/test-utils/svg.js.map +1 -0
  70. package/dist/src/ui/AppContainer.js +48 -66
  71. package/dist/src/ui/AppContainer.js.map +1 -1
  72. package/dist/src/ui/AppContainer.test.js +89 -0
  73. package/dist/src/ui/AppContainer.test.js.map +1 -1
  74. package/dist/src/ui/commands/mcpCommand.js +17 -3
  75. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  76. package/dist/src/ui/commands/mcpCommand.test.js +10 -3
  77. package/dist/src/ui/commands/mcpCommand.test.js.map +1 -1
  78. package/dist/src/ui/commands/setupGithubCommand.js +2 -0
  79. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  80. package/dist/src/ui/commands/statsCommand.js +10 -4
  81. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  82. package/dist/src/ui/commands/statsCommand.test.js +12 -3
  83. package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
  84. package/dist/src/ui/components/AnsiOutput.test.js +3 -3
  85. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
  86. package/dist/src/ui/components/AskUserDialog.d.ts +4 -0
  87. package/dist/src/ui/components/AskUserDialog.js +5 -5
  88. package/dist/src/ui/components/AskUserDialog.js.map +1 -1
  89. package/dist/src/ui/components/AskUserDialog.test.js +6 -7
  90. package/dist/src/ui/components/AskUserDialog.test.js.map +1 -1
  91. package/dist/src/ui/components/Composer.js +17 -6
  92. package/dist/src/ui/components/Composer.js.map +1 -1
  93. package/dist/src/ui/components/Composer.test.js +47 -6
  94. package/dist/src/ui/components/Composer.test.js.map +1 -1
  95. package/dist/src/ui/components/ConfigInitDisplay.js +1 -1
  96. package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -1
  97. package/dist/src/ui/components/ConfigInitDisplay.test.js +6 -6
  98. package/dist/src/ui/components/ConfigInitDisplay.test.js.map +1 -1
  99. package/dist/src/ui/components/DetailedMessagesDisplay.js +6 -1
  100. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  101. package/dist/src/ui/components/DetailedMessagesDisplay.test.js +43 -4
  102. package/dist/src/ui/components/DetailedMessagesDisplay.test.js.map +1 -1
  103. package/dist/src/ui/components/DialogManager.js +9 -1
  104. package/dist/src/ui/components/DialogManager.js.map +1 -1
  105. package/dist/src/ui/components/DialogManager.test.js +4 -0
  106. package/dist/src/ui/components/DialogManager.test.js.map +1 -1
  107. package/dist/src/ui/components/EmptyWalletDialog.d.ts +22 -0
  108. package/dist/src/ui/components/EmptyWalletDialog.js +33 -0
  109. package/dist/src/ui/components/EmptyWalletDialog.js.map +1 -0
  110. package/dist/src/ui/components/EmptyWalletDialog.test.d.ts +6 -0
  111. package/dist/src/ui/components/EmptyWalletDialog.test.js +127 -0
  112. package/dist/src/ui/components/EmptyWalletDialog.test.js.map +1 -0
  113. package/dist/src/ui/components/ExitPlanModeDialog.d.ts +2 -1
  114. package/dist/src/ui/components/ExitPlanModeDialog.js +34 -7
  115. package/dist/src/ui/components/ExitPlanModeDialog.js.map +1 -1
  116. package/dist/src/ui/components/ExitPlanModeDialog.test.js +31 -2
  117. package/dist/src/ui/components/ExitPlanModeDialog.test.js.map +1 -1
  118. package/dist/src/ui/components/FolderTrustDialog.test.js +1 -1
  119. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  120. package/dist/src/ui/components/Footer.js +3 -1
  121. package/dist/src/ui/components/Footer.js.map +1 -1
  122. package/dist/src/ui/components/Footer.test.js +63 -1
  123. package/dist/src/ui/components/Footer.test.js.map +1 -1
  124. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +0 -5
  125. package/dist/src/ui/components/GeminiRespondingSpinner.js +1 -32
  126. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  127. package/dist/src/ui/components/GeminiRespondingSpinner.test.js +5 -10
  128. package/dist/src/ui/components/GeminiRespondingSpinner.test.js.map +1 -1
  129. package/dist/src/ui/components/GeminiSpinner.d.ts +13 -0
  130. package/dist/src/ui/components/GeminiSpinner.js +35 -0
  131. package/dist/src/ui/components/GeminiSpinner.js.map +1 -0
  132. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  133. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  134. package/dist/src/ui/components/InputPrompt.js +31 -3
  135. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  136. package/dist/src/ui/components/InputPrompt.test.js +82 -18
  137. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  138. package/dist/src/ui/components/OverageMenuDialog.d.ts +22 -0
  139. package/dist/src/ui/components/OverageMenuDialog.js +32 -0
  140. package/dist/src/ui/components/OverageMenuDialog.js.map +1 -0
  141. package/dist/src/ui/components/OverageMenuDialog.test.d.ts +6 -0
  142. package/dist/src/ui/components/OverageMenuDialog.test.js +129 -0
  143. package/dist/src/ui/components/OverageMenuDialog.test.js.map +1 -0
  144. package/dist/src/ui/components/ProQuotaDialog.d.ts +3 -1
  145. package/dist/src/ui/components/ProQuotaDialog.js +11 -6
  146. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  147. package/dist/src/ui/components/ProQuotaDialog.test.js +27 -14
  148. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
  149. package/dist/src/ui/components/SettingsDialog.test.js +9 -11
  150. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  151. package/dist/src/ui/components/StatsDisplay.d.ts +1 -0
  152. package/dist/src/ui/components/StatsDisplay.js +2 -2
  153. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  154. package/dist/src/ui/components/Table.test.js +23 -4
  155. package/dist/src/ui/components/Table.test.js.map +1 -1
  156. package/dist/src/ui/components/ToastDisplay.js +1 -1
  157. package/dist/src/ui/components/ToastDisplay.js.map +1 -1
  158. package/dist/src/ui/components/ToastDisplay.test.js +2 -2
  159. package/dist/src/ui/components/ToastDisplay.test.js.map +1 -1
  160. package/dist/src/ui/components/ToolConfirmationQueue.js +3 -1
  161. package/dist/src/ui/components/ToolConfirmationQueue.js.map +1 -1
  162. package/dist/src/ui/components/ToolConfirmationQueue.test.js +3 -2
  163. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
  164. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js +1 -1
  165. package/dist/src/ui/components/messages/RedirectionConfirmation.test.js.map +1 -1
  166. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +2 -1
  167. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +3 -2
  168. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  169. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +17 -17
  170. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  171. package/dist/src/ui/components/messages/ToolGroupMessage.js +17 -7
  172. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  173. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +88 -5
  174. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  175. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js +1 -1
  176. package/dist/src/ui/components/messages/ToolOverflowConsistencyChecks.test.js.map +1 -1
  177. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js +11 -4
  178. package/dist/src/ui/components/messages/ToolResultDisplayOverflow.test.js.map +1 -1
  179. package/dist/src/ui/components/shared/DialogFooter.d.ts +2 -0
  180. package/dist/src/ui/components/shared/DialogFooter.js +2 -1
  181. package/dist/src/ui/components/shared/DialogFooter.js.map +1 -1
  182. package/dist/src/ui/components/shared/ExpandableText.test.js +21 -16
  183. package/dist/src/ui/components/shared/ExpandableText.test.js.map +1 -1
  184. package/dist/src/ui/components/shared/MaxSizedBox.js +10 -1
  185. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  186. package/dist/src/ui/components/shared/MaxSizedBox.test.js +8 -8
  187. package/dist/src/ui/components/shared/MaxSizedBox.test.js.map +1 -1
  188. package/dist/src/ui/components/shared/Scrollable.d.ts +1 -1
  189. package/dist/src/ui/components/shared/Scrollable.js +76 -43
  190. package/dist/src/ui/components/shared/Scrollable.js.map +1 -1
  191. package/dist/src/ui/components/shared/Scrollable.test.js +15 -20
  192. package/dist/src/ui/components/shared/Scrollable.test.js.map +1 -1
  193. package/dist/src/ui/components/shared/ScrollableList.js +14 -9
  194. package/dist/src/ui/components/shared/ScrollableList.js.map +1 -1
  195. package/dist/src/ui/components/shared/ScrollableList.test.js +153 -0
  196. package/dist/src/ui/components/shared/ScrollableList.test.js.map +1 -1
  197. package/dist/src/ui/components/shared/VirtualizedList.js +133 -88
  198. package/dist/src/ui/components/shared/VirtualizedList.js.map +1 -1
  199. package/dist/src/ui/components/shared/VirtualizedList.test.js +6 -3
  200. package/dist/src/ui/components/shared/VirtualizedList.test.js.map +1 -1
  201. package/dist/src/ui/components/shared/text-buffer.js +3 -30
  202. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  203. package/dist/src/ui/components/views/McpStatus.d.ts +1 -0
  204. package/dist/src/ui/components/views/McpStatus.js +2 -2
  205. package/dist/src/ui/components/views/McpStatus.js.map +1 -1
  206. package/dist/src/ui/components/views/McpStatus.test.js +7 -0
  207. package/dist/src/ui/components/views/McpStatus.test.js.map +1 -1
  208. package/dist/src/ui/contexts/UIActionsContext.d.ts +3 -0
  209. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  210. package/dist/src/ui/contexts/UIStateContext.d.ts +24 -1
  211. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  212. package/dist/src/ui/hooks/atCommandProcessor.js +4 -0
  213. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  214. package/dist/src/ui/hooks/creditsFlowHandler.d.ts +35 -0
  215. package/dist/src/ui/hooks/creditsFlowHandler.js +144 -0
  216. package/dist/src/ui/hooks/creditsFlowHandler.js.map +1 -0
  217. package/dist/src/ui/hooks/creditsFlowHandler.test.d.ts +6 -0
  218. package/dist/src/ui/hooks/creditsFlowHandler.test.js +180 -0
  219. package/dist/src/ui/hooks/creditsFlowHandler.test.js.map +1 -0
  220. package/dist/src/ui/hooks/shell-completions/gitProvider.d.ts +7 -0
  221. package/dist/src/ui/hooks/shell-completions/gitProvider.js +73 -0
  222. package/dist/src/ui/hooks/shell-completions/gitProvider.js.map +1 -0
  223. package/dist/src/ui/hooks/shell-completions/gitProvider.test.d.ts +6 -0
  224. package/dist/src/ui/hooks/shell-completions/gitProvider.test.js +73 -0
  225. package/dist/src/ui/hooks/shell-completions/gitProvider.test.js.map +1 -0
  226. package/dist/src/ui/hooks/shell-completions/index.d.ts +7 -0
  227. package/dist/src/ui/hooks/shell-completions/index.js +16 -0
  228. package/dist/src/ui/hooks/shell-completions/index.js.map +1 -0
  229. package/dist/src/ui/hooks/shell-completions/npmProvider.d.ts +7 -0
  230. package/dist/src/ui/hooks/shell-completions/npmProvider.js +67 -0
  231. package/dist/src/ui/hooks/shell-completions/npmProvider.js.map +1 -0
  232. package/dist/src/ui/hooks/shell-completions/npmProvider.test.d.ts +6 -0
  233. package/dist/src/ui/hooks/shell-completions/npmProvider.test.js +69 -0
  234. package/dist/src/ui/hooks/shell-completions/npmProvider.test.js.map +1 -0
  235. package/dist/src/ui/hooks/shell-completions/types.d.ts +16 -0
  236. package/dist/src/ui/hooks/shell-completions/types.js +7 -0
  237. package/dist/src/ui/hooks/shell-completions/types.js.map +1 -0
  238. package/dist/src/ui/hooks/shellCommandProcessor.js +1 -0
  239. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  240. package/dist/src/ui/hooks/slashCommandProcessor.js +1 -0
  241. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  242. package/dist/src/ui/hooks/toolMapping.js +1 -0
  243. package/dist/src/ui/hooks/toolMapping.js.map +1 -1
  244. package/dist/src/ui/hooks/toolMapping.test.js +25 -0
  245. package/dist/src/ui/hooks/toolMapping.test.js.map +1 -1
  246. package/dist/src/ui/hooks/useAlternateBuffer.d.ts +2 -2
  247. package/dist/src/ui/hooks/useAlternateBuffer.js +5 -4
  248. package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -1
  249. package/dist/src/ui/hooks/useAlternateBuffer.test.d.ts +6 -0
  250. package/dist/src/ui/hooks/useAlternateBuffer.test.js +57 -0
  251. package/dist/src/ui/hooks/useAlternateBuffer.test.js.map +1 -0
  252. package/dist/src/ui/hooks/useCommandCompletion.d.ts +2 -1
  253. package/dist/src/ui/hooks/useCommandCompletion.js +37 -5
  254. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  255. package/dist/src/ui/hooks/useCommandCompletion.test.js +23 -1
  256. package/dist/src/ui/hooks/useCommandCompletion.test.js.map +1 -1
  257. package/dist/src/ui/hooks/useGeminiStream.js +83 -5
  258. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  259. package/dist/src/ui/hooks/useGeminiStream.test.js +110 -4
  260. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  261. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +2 -1
  262. package/dist/src/ui/hooks/useLoadingIndicator.js +7 -2
  263. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  264. package/dist/src/ui/hooks/useLoadingIndicator.test.js +25 -4
  265. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  266. package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
  267. package/dist/src/ui/hooks/usePrivacySettings.js +9 -3
  268. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  269. package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +11 -3
  270. package/dist/src/ui/hooks/useQuotaAndFallback.js +84 -12
  271. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
  272. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +278 -16
  273. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
  274. package/dist/src/ui/hooks/useShellCompletion.d.ts +49 -0
  275. package/dist/src/ui/hooks/useShellCompletion.js +489 -0
  276. package/dist/src/ui/hooks/useShellCompletion.js.map +1 -0
  277. package/dist/src/ui/hooks/useShellCompletion.test.d.ts +6 -0
  278. package/dist/src/ui/hooks/useShellCompletion.test.js +354 -0
  279. package/dist/src/ui/hooks/useShellCompletion.test.js.map +1 -0
  280. package/dist/src/ui/hooks/useTimedMessage.d.ts +1 -1
  281. package/dist/src/ui/hooks/useTimedMessage.js +5 -3
  282. package/dist/src/ui/hooks/useTimedMessage.js.map +1 -1
  283. package/dist/src/ui/hooks/useToolScheduler.js +5 -0
  284. package/dist/src/ui/hooks/useToolScheduler.js.map +1 -1
  285. package/dist/src/ui/hooks/useToolScheduler.test.js +28 -19
  286. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  287. package/dist/src/ui/types.d.ts +3 -0
  288. package/dist/src/ui/types.js.map +1 -1
  289. package/dist/src/ui/utils/InlineMarkdownRenderer.js +4 -86
  290. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  291. package/dist/src/ui/utils/MarkdownDisplay.test.js +2 -2
  292. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  293. package/dist/src/ui/utils/TableRenderer.js +18 -12
  294. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  295. package/dist/src/ui/utils/TableRenderer.test.js +152 -22
  296. package/dist/src/ui/utils/TableRenderer.test.js.map +1 -1
  297. package/dist/src/ui/utils/borderStyles.js +4 -1
  298. package/dist/src/ui/utils/borderStyles.js.map +1 -1
  299. package/dist/src/ui/utils/borderStyles.test.d.ts +6 -0
  300. package/dist/src/ui/utils/borderStyles.test.js +141 -0
  301. package/dist/src/ui/utils/borderStyles.test.js.map +1 -0
  302. package/dist/src/ui/utils/editorUtils.d.ts +17 -0
  303. package/dist/src/ui/utils/editorUtils.js +104 -0
  304. package/dist/src/ui/utils/editorUtils.js.map +1 -0
  305. package/dist/src/ui/utils/markdownParsingUtils.d.ts +10 -0
  306. package/dist/src/ui/utils/markdownParsingUtils.js +150 -0
  307. package/dist/src/ui/utils/markdownParsingUtils.js.map +1 -0
  308. package/dist/src/ui/utils/markdownParsingUtils.test.d.ts +6 -0
  309. package/dist/src/ui/utils/markdownParsingUtils.test.js +163 -0
  310. package/dist/src/ui/utils/markdownParsingUtils.test.js.map +1 -0
  311. package/dist/src/ui/utils/ui-sizing.d.ts +2 -2
  312. package/dist/src/ui/utils/ui-sizing.js +2 -3
  313. package/dist/src/ui/utils/ui-sizing.js.map +1 -1
  314. package/dist/src/ui/utils/ui-sizing.test.js +5 -19
  315. package/dist/src/ui/utils/ui-sizing.test.js.map +1 -1
  316. package/dist/src/utils/cleanup.d.ts +2 -0
  317. package/dist/src/utils/cleanup.js +51 -1
  318. package/dist/src/utils/cleanup.js.map +1 -1
  319. package/dist/src/utils/cleanup.test.js +130 -2
  320. package/dist/src/utils/cleanup.test.js.map +1 -1
  321. package/dist/src/zed-integration/zedIntegration.d.ts +2 -1
  322. package/dist/src/zed-integration/zedIntegration.js +35 -11
  323. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  324. package/dist/src/zed-integration/zedIntegration.test.js +17 -1
  325. package/dist/src/zed-integration/zedIntegration.test.js.map +1 -1
  326. package/dist/tsconfig.tsbuildinfo +1 -1
  327. package/package.json +3 -3
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type React from 'react';
7
+ /** Available choices in the overage menu dialog */
8
+ export type OverageMenuChoice = 'use_credits' | 'use_fallback' | 'manage' | 'stop';
9
+ interface OverageMenuDialogProps {
10
+ /** The model that hit the quota limit */
11
+ failedModel: string;
12
+ /** The fallback model to offer (omit if none available) */
13
+ fallbackModel?: string;
14
+ /** Time when access resets (human-readable) */
15
+ resetTime?: string;
16
+ /** Available G1 AI credit balance */
17
+ creditBalance: number;
18
+ /** Callback when user makes a selection */
19
+ onChoice: (choice: OverageMenuChoice) => void;
20
+ }
21
+ export declare function OverageMenuDialog({ failedModel, fallbackModel, resetTime, creditBalance, onChoice, }: OverageMenuDialogProps): React.JSX.Element;
22
+ export {};
@@ -0,0 +1,32 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
4
+ import { theme } from '../semantic-colors.js';
5
+ export function OverageMenuDialog({ failedModel, fallbackModel, resetTime, creditBalance, onChoice, }) {
6
+ const items = [
7
+ {
8
+ label: 'Use AI Credits - Continue this request (Overage)',
9
+ value: 'use_credits',
10
+ key: 'use_credits',
11
+ },
12
+ {
13
+ label: 'Manage - View balance and purchase more credits',
14
+ value: 'manage',
15
+ key: 'manage',
16
+ },
17
+ ];
18
+ if (fallbackModel) {
19
+ items.push({
20
+ label: `Switch to ${fallbackModel}`,
21
+ value: 'use_fallback',
22
+ key: 'use_fallback',
23
+ });
24
+ }
25
+ items.push({
26
+ label: 'Stop - Abort request',
27
+ value: 'stop',
28
+ key: 'stop',
29
+ });
30
+ return (_jsxs(Box, { borderStyle: "round", flexDirection: "column", padding: 1, children: [_jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsxs(Text, { color: theme.status.warning, children: ["Usage limit reached for ", failedModel, "."] }), resetTime && _jsxs(Text, { children: ["Access resets at ", resetTime, "."] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "/stats" }), ' ', "model for usage details"] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "/model" }), ' ', "to switch models."] }), _jsxs(Text, { children: [_jsx(Text, { bold: true, color: theme.text.accent, children: "/auth" }), ' ', "to switch to API key."] })] }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["You have", ' ', _jsx(Text, { bold: true, color: theme.status.success, children: creditBalance }), ' ', "AI Credits available."] }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { children: "How would you like to proceed?" }) }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(RadioButtonSelect, { items: items, onSelect: onChoice }) })] }));
31
+ }
32
+ //# sourceMappingURL=OverageMenuDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverageMenuDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/OverageMenuDialog.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAsB9C,MAAM,UAAU,iBAAiB,CAAC,EAChC,WAAW,EACX,aAAa,EACb,SAAS,EACT,aAAa,EACb,QAAQ,GACe;IACvB,MAAM,KAAK,GAIN;QACH;YACE,KAAK,EAAE,kDAAkD;YACzD,KAAK,EAAE,aAAa;YACpB,GAAG,EAAE,aAAa;SACnB;QACD;YACE,KAAK,EAAE,iDAAiD;YACxD,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE,QAAQ;SACd;KACF,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,aAAa,aAAa,EAAE;YACnC,KAAK,EAAE,cAAc;YACrB,GAAG,EAAE,cAAc;SACpB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC;QACT,KAAK,EAAE,sBAAsB;QAC7B,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aACxD,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aAC1C,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,yCACN,WAAW,SAC/B,EACN,SAAS,IAAI,MAAC,IAAI,oCAAmB,SAAS,SAAS,EACxD,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,uBAE5B,EAAC,GAAG,+BAEN,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,uBAE5B,EAAC,GAAG,yBAEN,EACP,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,sBAE5B,EAAC,GAAG,6BAEN,IACH,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,MAAC,IAAI,2BACM,GAAG,EACZ,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,YACnC,aAAa,GACT,EAAC,GAAG,6BAEN,GACH,EACN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,iDAAsC,GACvC,EACN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,iBAAiB,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,GACnD,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,129 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { renderWithProviders } from '../../test-utils/render.js';
8
+ import { waitFor } from '../../test-utils/async.js';
9
+ import { act } from 'react';
10
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
11
+ import { OverageMenuDialog } from './OverageMenuDialog.js';
12
+ const writeKey = (stdin, key) => {
13
+ act(() => {
14
+ stdin.write(key);
15
+ });
16
+ };
17
+ describe('OverageMenuDialog', () => {
18
+ const mockOnChoice = vi.fn();
19
+ beforeEach(() => {
20
+ vi.clearAllMocks();
21
+ });
22
+ afterEach(() => {
23
+ vi.restoreAllMocks();
24
+ });
25
+ describe('rendering', () => {
26
+ it('should match snapshot with fallback available', async () => {
27
+ const { lastFrame, unmount, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", fallbackModel: "gemini-3-flash-preview", resetTime: "2:00 PM", creditBalance: 500, onChoice: mockOnChoice }));
28
+ await waitUntilReady();
29
+ expect(lastFrame()).toMatchSnapshot();
30
+ unmount();
31
+ });
32
+ it('should match snapshot without fallback', async () => {
33
+ const { lastFrame, unmount, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", creditBalance: 500, onChoice: mockOnChoice }));
34
+ await waitUntilReady();
35
+ expect(lastFrame()).toMatchSnapshot();
36
+ unmount();
37
+ });
38
+ it('should display the credit balance', async () => {
39
+ const { lastFrame, unmount, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", creditBalance: 200, onChoice: mockOnChoice }));
40
+ await waitUntilReady();
41
+ const output = lastFrame() ?? '';
42
+ expect(output).toContain('200');
43
+ expect(output).toContain('AI Credits available');
44
+ unmount();
45
+ });
46
+ it('should display the model name', async () => {
47
+ const { lastFrame, unmount, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", creditBalance: 100, onChoice: mockOnChoice }));
48
+ await waitUntilReady();
49
+ const output = lastFrame() ?? '';
50
+ expect(output).toContain('gemini-2.5-pro');
51
+ expect(output).toContain('Usage limit reached');
52
+ unmount();
53
+ });
54
+ it('should display reset time when provided', async () => {
55
+ const { lastFrame, unmount, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", resetTime: "3:45 PM", creditBalance: 100, onChoice: mockOnChoice }));
56
+ await waitUntilReady();
57
+ const output = lastFrame() ?? '';
58
+ expect(output).toContain('3:45 PM');
59
+ expect(output).toContain('Access resets at');
60
+ unmount();
61
+ });
62
+ it('should not display reset time when not provided', async () => {
63
+ const { lastFrame, unmount, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", creditBalance: 100, onChoice: mockOnChoice }));
64
+ await waitUntilReady();
65
+ const output = lastFrame() ?? '';
66
+ expect(output).not.toContain('Access resets at');
67
+ unmount();
68
+ });
69
+ it('should display slash command hints', async () => {
70
+ const { lastFrame, unmount, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", creditBalance: 100, onChoice: mockOnChoice }));
71
+ await waitUntilReady();
72
+ const output = lastFrame() ?? '';
73
+ expect(output).toContain('/stats');
74
+ expect(output).toContain('/model');
75
+ expect(output).toContain('/auth');
76
+ unmount();
77
+ });
78
+ });
79
+ describe('onChoice handling', () => {
80
+ it('should call onChoice with use_credits when selected', async () => {
81
+ // use_credits is the first item, so just press Enter
82
+ const { unmount, stdin, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", creditBalance: 100, onChoice: mockOnChoice }));
83
+ await waitUntilReady();
84
+ writeKey(stdin, '\r');
85
+ await waitFor(() => {
86
+ expect(mockOnChoice).toHaveBeenCalledWith('use_credits');
87
+ });
88
+ unmount();
89
+ });
90
+ it('should call onChoice with manage when selected', async () => {
91
+ // manage is the second item: Down + Enter
92
+ const { unmount, stdin, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", creditBalance: 100, onChoice: mockOnChoice }));
93
+ await waitUntilReady();
94
+ writeKey(stdin, '\x1b[B'); // Down arrow
95
+ writeKey(stdin, '\r');
96
+ await waitFor(() => {
97
+ expect(mockOnChoice).toHaveBeenCalledWith('manage');
98
+ });
99
+ unmount();
100
+ });
101
+ it('should call onChoice with use_fallback when selected', async () => {
102
+ // With fallback: items are [use_credits, manage, use_fallback, stop]
103
+ // use_fallback is the third item: Down x2 + Enter
104
+ const { unmount, stdin, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", fallbackModel: "gemini-3-flash-preview", creditBalance: 100, onChoice: mockOnChoice }));
105
+ await waitUntilReady();
106
+ writeKey(stdin, '\x1b[B'); // Down arrow
107
+ writeKey(stdin, '\x1b[B'); // Down arrow
108
+ writeKey(stdin, '\r');
109
+ await waitFor(() => {
110
+ expect(mockOnChoice).toHaveBeenCalledWith('use_fallback');
111
+ });
112
+ unmount();
113
+ });
114
+ it('should call onChoice with stop when selected', async () => {
115
+ // Without fallback: items are [use_credits, manage, stop]
116
+ // stop is the third item: Down x2 + Enter
117
+ const { unmount, stdin, waitUntilReady } = renderWithProviders(_jsx(OverageMenuDialog, { failedModel: "gemini-2.5-pro", creditBalance: 100, onChoice: mockOnChoice }));
118
+ await waitUntilReady();
119
+ writeKey(stdin, '\x1b[B'); // Down arrow
120
+ writeKey(stdin, '\x1b[B'); // Down arrow
121
+ writeKey(stdin, '\r');
122
+ await waitFor(() => {
123
+ expect(mockOnChoice).toHaveBeenCalledWith('stop');
124
+ });
125
+ unmount();
126
+ });
127
+ });
128
+ });
129
+ //# sourceMappingURL=OverageMenuDialog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverageMenuDialog.test.js","sourceRoot":"","sources":["../../../../src/ui/components/OverageMenuDialog.test.tsx"],"names":[],"mappings":"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"}
@@ -4,13 +4,15 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import type React from 'react';
7
+ import { AuthType } from '@google/gemini-cli-core';
7
8
  interface ProQuotaDialogProps {
8
9
  failedModel: string;
9
10
  fallbackModel: string;
10
11
  message: string;
11
12
  isTerminalQuotaError: boolean;
12
13
  isModelNotFoundError?: boolean;
14
+ authType?: AuthType;
13
15
  onChoice: (choice: 'retry_later' | 'retry_once' | 'retry_always' | 'upgrade') => void;
14
16
  }
15
- export declare function ProQuotaDialog({ failedModel, fallbackModel, message, isTerminalQuotaError, isModelNotFoundError, onChoice, }: ProQuotaDialogProps): React.JSX.Element;
17
+ export declare function ProQuotaDialog({ failedModel, fallbackModel, message, isTerminalQuotaError, isModelNotFoundError, authType, onChoice, }: ProQuotaDialogProps): React.JSX.Element;
16
18
  export {};
@@ -2,7 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
3
  import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
4
4
  import { theme } from '../semantic-colors.js';
5
- export function ProQuotaDialog({ failedModel, fallbackModel, message, isTerminalQuotaError, isModelNotFoundError, onChoice, }) {
5
+ import { AuthType } from '@google/gemini-cli-core';
6
+ export function ProQuotaDialog({ failedModel, fallbackModel, message, isTerminalQuotaError, isModelNotFoundError, authType, onChoice, }) {
6
7
  let items;
7
8
  // Do not provide a fallback option if failed model and fallbackmodel are same.
8
9
  if (failedModel === fallbackModel) {
@@ -27,11 +28,15 @@ export function ProQuotaDialog({ failedModel, fallbackModel, message, isTerminal
27
28
  value: 'retry_always',
28
29
  key: 'retry_always',
29
30
  },
30
- {
31
- label: 'Upgrade for higher limits',
32
- value: 'upgrade',
33
- key: 'upgrade',
34
- },
31
+ ...(authType === AuthType.LOGIN_WITH_GOOGLE
32
+ ? [
33
+ {
34
+ label: 'Upgrade for higher limits',
35
+ value: 'upgrade',
36
+ key: 'upgrade',
37
+ },
38
+ ]
39
+ : []),
35
40
  {
36
41
  label: `Stop`,
37
42
  value: 'retry_later',
@@ -1 +1 @@
1
- {"version":3,"file":"ProQuotaDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/ProQuotaDialog.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAa9C,MAAM,UAAU,cAAc,CAAC,EAC7B,WAAW,EACX,aAAa,EACb,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,QAAQ,GACY;IACpB,IAAI,KAAK,CAAC;IACV,+EAA+E;IAC/E,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;QAClC,KAAK,GAAG;YACN;gBACE,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,YAAqB;gBAC5B,GAAG,EAAE,YAAY;aAClB;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,aAAsB;gBAC7B,GAAG,EAAE,aAAa;aACnB;SACF,CAAC;IACJ,CAAC;SAAM,IAAI,oBAAoB,IAAI,oBAAoB,EAAE,CAAC;QACxD,0FAA0F;QAC1F,KAAK,GAAG;YACN;gBACE,KAAK,EAAE,aAAa,aAAa,EAAE;gBACnC,KAAK,EAAE,cAAuB;gBAC9B,GAAG,EAAE,cAAc;aACpB;YACD;gBACE,KAAK,EAAE,2BAA2B;gBAClC,KAAK,EAAE,SAAkB;gBACzB,GAAG,EAAE,SAAS;aACf;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,aAAsB;gBAC7B,GAAG,EAAE,aAAa;aACnB;SACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,iBAAiB;QACjB,KAAK,GAAG;YACN;gBACE,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,YAAqB;gBAC5B,GAAG,EAAE,YAAY;aAClB;YACD;gBACE,KAAK,EAAE,aAAa,aAAa,EAAE;gBACnC,KAAK,EAAE,cAAuB;gBAC9B,GAAG,EAAE,cAAc;aACpB;YACD;gBACE,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,aAAsB;gBAC7B,GAAG,EAAE,aAAa;aACnB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,CACnB,MAAiE,EACjE,EAAE;QACF,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,2DAA2D;IAC3D,MAAM,aAAa,GAAG,CAAC,GAAW,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,CACL,KAAC,IAAI,cACF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACzB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,OAAO,CACL,KAAC,IAAI,IAAa,IAAI,QAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,YAC5C,IAAI,IADI,KAAK,CAET,CACR,CAAC;gBACJ,CAAC;gBACD,OAAO,KAAC,IAAI,cAAc,IAAI,IAAZ,KAAK,CAAe,CAAC;YACzC,CAAC,CAAC,GACG,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aACxD,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAAG,aAAa,CAAC,OAAO,CAAC,GAAO,EACpD,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,iBAAiB,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,GAAI,GACvD,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"ProQuotaDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/ProQuotaDialog.tsx"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { act } from 'react';
9
9
  import { describe, it, expect, vi, beforeEach } from 'vitest';
10
10
  import { ProQuotaDialog } from './ProQuotaDialog.js';
11
11
  import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
12
- import { PREVIEW_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, } from '@google/gemini-cli-core';
12
+ import { PREVIEW_GEMINI_MODEL, DEFAULT_GEMINI_FLASH_MODEL, AuthType, } from '@google/gemini-cli-core';
13
13
  // Mock the child component to make it easier to test the parent
14
14
  vi.mock('./shared/RadioButtonSelect.js', () => ({
15
15
  RadioButtonSelect: vi.fn(),
@@ -41,8 +41,8 @@ describe('ProQuotaDialog', () => {
41
41
  });
42
42
  describe('for non-flash model failures', () => {
43
43
  describe('when it is a terminal quota error', () => {
44
- it('should render switch, upgrade, and stop options for paid tiers', () => {
45
- const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: "gemini-2.5-pro", fallbackModel: "gemini-2.5-flash", message: "paid tier quota error", isTerminalQuotaError: true, isModelNotFoundError: false, onChoice: mockOnChoice }));
44
+ it('should render switch, upgrade, and stop options for LOGIN_WITH_GOOGLE', () => {
45
+ const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: "gemini-2.5-pro", fallbackModel: "gemini-2.5-flash", message: "paid tier quota error", isTerminalQuotaError: true, isModelNotFoundError: false, authType: AuthType.LOGIN_WITH_GOOGLE, onChoice: mockOnChoice }));
46
46
  expect(RadioButtonSelect).toHaveBeenCalledWith(expect.objectContaining({
47
47
  items: [
48
48
  {
@@ -64,6 +64,24 @@ describe('ProQuotaDialog', () => {
64
64
  }), undefined);
65
65
  unmount();
66
66
  });
67
+ it('should NOT render upgrade option for USE_GEMINI', () => {
68
+ const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: "gemini-2.5-pro", fallbackModel: "gemini-2.5-flash", message: "paid tier quota error", isTerminalQuotaError: true, isModelNotFoundError: false, authType: AuthType.USE_GEMINI, onChoice: mockOnChoice }));
69
+ expect(RadioButtonSelect).toHaveBeenCalledWith(expect.objectContaining({
70
+ items: [
71
+ {
72
+ label: 'Switch to gemini-2.5-flash',
73
+ value: 'retry_always',
74
+ key: 'retry_always',
75
+ },
76
+ {
77
+ label: 'Stop',
78
+ value: 'retry_later',
79
+ key: 'retry_later',
80
+ },
81
+ ],
82
+ }), undefined);
83
+ unmount();
84
+ });
67
85
  it('should render "Keep trying" and "Stop" options when failed model and fallback model are the same', () => {
68
86
  const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: PREVIEW_GEMINI_MODEL, fallbackModel: PREVIEW_GEMINI_MODEL, message: "flash error", isTerminalQuotaError: true, onChoice: mockOnChoice }));
69
87
  expect(RadioButtonSelect).toHaveBeenCalledWith(expect.objectContaining({
@@ -82,8 +100,8 @@ describe('ProQuotaDialog', () => {
82
100
  }), undefined);
83
101
  unmount();
84
102
  });
85
- it('should render switch, upgrade, and stop options for free tier', () => {
86
- const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: "gemini-2.5-pro", fallbackModel: "gemini-2.5-flash", message: "free tier quota error", isTerminalQuotaError: true, isModelNotFoundError: false, onChoice: mockOnChoice }));
103
+ it('should render switch, upgrade, and stop options for LOGIN_WITH_GOOGLE (free tier)', () => {
104
+ const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: "gemini-2.5-pro", fallbackModel: "gemini-2.5-flash", message: "free tier quota error", isTerminalQuotaError: true, isModelNotFoundError: false, authType: AuthType.LOGIN_WITH_GOOGLE, onChoice: mockOnChoice }));
87
105
  expect(RadioButtonSelect).toHaveBeenCalledWith(expect.objectContaining({
88
106
  items: [
89
107
  {
@@ -128,8 +146,8 @@ describe('ProQuotaDialog', () => {
128
146
  });
129
147
  });
130
148
  describe('when it is a model not found error', () => {
131
- it('should render switch and stop options regardless of tier', () => {
132
- const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: "gemini-3-pro-preview", fallbackModel: "gemini-2.5-pro", message: "You don't have access to gemini-3-pro-preview yet.", isTerminalQuotaError: false, isModelNotFoundError: true, onChoice: mockOnChoice }));
149
+ it('should render switch, upgrade, and stop options for LOGIN_WITH_GOOGLE', () => {
150
+ const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: "gemini-3-pro-preview", fallbackModel: "gemini-2.5-pro", message: "You don't have access to gemini-3-pro-preview yet.", isTerminalQuotaError: false, isModelNotFoundError: true, authType: AuthType.LOGIN_WITH_GOOGLE, onChoice: mockOnChoice }));
133
151
  expect(RadioButtonSelect).toHaveBeenCalledWith(expect.objectContaining({
134
152
  items: [
135
153
  {
@@ -151,8 +169,8 @@ describe('ProQuotaDialog', () => {
151
169
  }), undefined);
152
170
  unmount();
153
171
  });
154
- it('should render switch and stop options for paid tier as well', () => {
155
- const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: "gemini-3-pro-preview", fallbackModel: "gemini-2.5-pro", message: "You don't have access to gemini-3-pro-preview yet.", isTerminalQuotaError: false, isModelNotFoundError: true, onChoice: mockOnChoice }));
172
+ it('should NOT render upgrade option for USE_GEMINI', () => {
173
+ const { unmount } = render(_jsx(ProQuotaDialog, { failedModel: "gemini-3-pro-preview", fallbackModel: "gemini-2.5-pro", message: "You don't have access to gemini-3-pro-preview yet.", isTerminalQuotaError: false, isModelNotFoundError: true, authType: AuthType.USE_GEMINI, onChoice: mockOnChoice }));
156
174
  expect(RadioButtonSelect).toHaveBeenCalledWith(expect.objectContaining({
157
175
  items: [
158
176
  {
@@ -160,11 +178,6 @@ describe('ProQuotaDialog', () => {
160
178
  value: 'retry_always',
161
179
  key: 'retry_always',
162
180
  },
163
- {
164
- label: 'Upgrade for higher limits',
165
- value: 'upgrade',
166
- key: 'upgrade',
167
- },
168
181
  {
169
182
  label: 'Stop',
170
183
  value: 'retry_later',
@@ -1 +1 @@
1
- {"version":3,"file":"ProQuotaDialog.test.js","sourceRoot":"","sources":["../../../../src/ui/components/ProQuotaDialog.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProQuotaDialog.test.js","sourceRoot":"","sources":["../../../../src/ui/components/ProQuotaDialog.test.tsx"],"names":[],"mappings":"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"}
@@ -211,12 +211,10 @@ describe('SettingsDialog', () => {
211
211
  it('should render settings list with visual indicators', async () => {
212
212
  const settings = createMockSettings();
213
213
  const onSelect = vi.fn();
214
- const { lastFrame, waitUntilReady, unmount } = renderDialog(settings, onSelect);
215
- await waitUntilReady();
216
- const output = lastFrame();
217
- // Use snapshot to capture visual layout including indicators
218
- expect(output).toMatchSnapshot();
219
- unmount();
214
+ const renderResult = renderDialog(settings, onSelect);
215
+ await renderResult.waitUntilReady();
216
+ await expect(renderResult).toMatchSvgSnapshot();
217
+ renderResult.unmount();
220
218
  });
221
219
  it('should use almost full height of the window but no more when the window height is 25 rows', async () => {
222
220
  const settings = createMockSettings();
@@ -1371,13 +1369,13 @@ describe('SettingsDialog', () => {
1371
1369
  },
1372
1370
  });
1373
1371
  const onSelect = vi.fn();
1374
- const { lastFrame, stdin, waitUntilReady, unmount } = renderDialog(settings, onSelect);
1375
- await waitUntilReady();
1372
+ const renderResult = renderDialog(settings, onSelect);
1373
+ await renderResult.waitUntilReady();
1376
1374
  if (stdinActions) {
1377
- await stdinActions(stdin, waitUntilReady);
1375
+ await stdinActions(renderResult.stdin, renderResult.waitUntilReady);
1378
1376
  }
1379
- expect(lastFrame()).toMatchSnapshot();
1380
- unmount();
1377
+ await expect(renderResult).toMatchSvgSnapshot();
1378
+ renderResult.unmount();
1381
1379
  });
1382
1380
  });
1383
1381
  });