@machina.ai/cell-cli 1.5.5-rc1 → 1.6.1-rc2

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 (374) hide show
  1. package/dist/package.json +11 -8
  2. package/dist/src/commands/extensions/disable.d.ts +2 -3
  3. package/dist/src/commands/extensions/disable.js +20 -6
  4. package/dist/src/commands/extensions/disable.js.map +1 -1
  5. package/dist/src/commands/extensions/enable.d.ts +2 -3
  6. package/dist/src/commands/extensions/enable.js +20 -9
  7. package/dist/src/commands/extensions/enable.js.map +1 -1
  8. package/dist/src/commands/extensions/install.d.ts +2 -0
  9. package/dist/src/commands/extensions/install.js +20 -4
  10. package/dist/src/commands/extensions/install.js.map +1 -1
  11. package/dist/src/commands/extensions/install.test.js +80 -3
  12. package/dist/src/commands/extensions/install.test.js.map +1 -1
  13. package/dist/src/commands/extensions/link.js +1 -1
  14. package/dist/src/commands/extensions/link.js.map +1 -1
  15. package/dist/src/commands/extensions/uninstall.js +1 -1
  16. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  17. package/dist/src/commands/extensions/update.js +42 -11
  18. package/dist/src/commands/extensions/update.js.map +1 -1
  19. package/dist/src/config/config.d.ts +2 -1
  20. package/dist/src/config/config.js +20 -6
  21. package/dist/src/config/config.js.map +1 -1
  22. package/dist/src/config/extension.d.ts +10 -14
  23. package/dist/src/config/extension.js +156 -145
  24. package/dist/src/config/extension.js.map +1 -1
  25. package/dist/src/config/extensions/extensionEnablement.d.ts +44 -0
  26. package/dist/src/config/extensions/extensionEnablement.js +161 -0
  27. package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
  28. package/dist/src/config/extensions/extensionEnablement.test.d.ts +6 -0
  29. package/dist/src/config/extensions/extensionEnablement.test.js +261 -0
  30. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -0
  31. package/dist/src/config/extensions/github.d.ts +29 -0
  32. package/dist/src/config/extensions/github.js +306 -0
  33. package/dist/src/config/extensions/github.js.map +1 -0
  34. package/dist/src/config/extensions/github.test.d.ts +6 -0
  35. package/dist/src/config/extensions/github.test.js +267 -0
  36. package/dist/src/config/extensions/github.test.js.map +1 -0
  37. package/dist/src/config/extensions/update.d.ts +20 -0
  38. package/dist/src/config/extensions/update.js +94 -0
  39. package/dist/src/config/extensions/update.js.map +1 -0
  40. package/dist/src/config/extensions/update.test.d.ts +6 -0
  41. package/dist/src/config/extensions/update.test.js +324 -0
  42. package/dist/src/config/extensions/update.test.js.map +1 -0
  43. package/dist/src/config/extensions/variableSchema.d.ts +8 -0
  44. package/dist/src/config/extensions/variableSchema.js +4 -0
  45. package/dist/src/config/extensions/variableSchema.js.map +1 -1
  46. package/dist/src/config/keyBindings.d.ts +4 -1
  47. package/dist/src/config/keyBindings.js +8 -0
  48. package/dist/src/config/keyBindings.js.map +1 -1
  49. package/dist/src/config/settings.d.ts +3 -0
  50. package/dist/src/config/settings.js +56 -16
  51. package/dist/src/config/settings.js.map +1 -1
  52. package/dist/src/config/settingsSchema.d.ts +74 -8
  53. package/dist/src/config/settingsSchema.js +71 -8
  54. package/dist/src/config/settingsSchema.js.map +1 -1
  55. package/dist/src/config/settingsSchema.test.js +6 -0
  56. package/dist/src/config/settingsSchema.test.js.map +1 -1
  57. package/dist/src/config/trustedFolders.d.ts +1 -1
  58. package/dist/src/config/trustedFolders.js +9 -4
  59. package/dist/src/config/trustedFolders.js.map +1 -1
  60. package/dist/src/config/trustedFolders.test.js +41 -25
  61. package/dist/src/config/trustedFolders.test.js.map +1 -1
  62. package/dist/src/core/initializer.js +6 -1
  63. package/dist/src/core/initializer.js.map +1 -1
  64. package/dist/src/gemini.js +23 -21
  65. package/dist/src/gemini.js.map +1 -1
  66. package/dist/src/gemini.test.js +20 -1
  67. package/dist/src/gemini.test.js.map +1 -1
  68. package/dist/src/generated/git-commit.d.ts +2 -2
  69. package/dist/src/generated/git-commit.js +2 -2
  70. package/dist/src/nonInteractiveCli.js +23 -9
  71. package/dist/src/nonInteractiveCli.js.map +1 -1
  72. package/dist/src/services/FeedbackService.d.ts +21 -0
  73. package/dist/src/services/FeedbackService.js +124 -0
  74. package/dist/src/services/FeedbackService.js.map +1 -0
  75. package/dist/src/services/McpPromptLoader.js +43 -8
  76. package/dist/src/services/McpPromptLoader.js.map +1 -1
  77. package/dist/src/services/McpPromptLoader.test.js +228 -1
  78. package/dist/src/services/McpPromptLoader.test.js.map +1 -1
  79. package/dist/src/services/prompt-processors/shellProcessor.js +8 -1
  80. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  81. package/dist/src/test-utils/createExtension.d.ts +15 -0
  82. package/dist/src/test-utils/createExtension.js +25 -0
  83. package/dist/src/test-utils/createExtension.js.map +1 -0
  84. package/dist/src/test-utils/mockCommandContext.js +2 -0
  85. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  86. package/dist/src/ui/App.js +4 -0
  87. package/dist/src/ui/App.js.map +1 -1
  88. package/dist/src/ui/AppContainer.js +102 -34
  89. package/dist/src/ui/AppContainer.js.map +1 -1
  90. package/dist/src/ui/AppContainer.test.js +45 -1
  91. package/dist/src/ui/AppContainer.test.js.map +1 -1
  92. package/dist/src/ui/IdeIntegrationNudge.js +2 -1
  93. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  94. package/dist/src/ui/auth/AuthDialog.js +2 -2
  95. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  96. package/dist/src/ui/auth/AuthInProgress.js +2 -2
  97. package/dist/src/ui/auth/AuthInProgress.js.map +1 -1
  98. package/dist/src/ui/commands/chatCommand.d.ts +2 -0
  99. package/dist/src/ui/commands/chatCommand.js +82 -3
  100. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  101. package/dist/src/ui/commands/extensionsCommand.js +86 -16
  102. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  103. package/dist/src/ui/commands/ideCommand.js +2 -2
  104. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  105. package/dist/src/ui/commands/types.d.ts +4 -1
  106. package/dist/src/ui/commands/types.js +0 -1
  107. package/dist/src/ui/commands/types.js.map +1 -1
  108. package/dist/src/ui/components/AboutBox.js +2 -2
  109. package/dist/src/ui/components/AboutBox.js.map +1 -1
  110. package/dist/src/ui/components/AnsiOutput.d.ts +13 -0
  111. package/dist/src/ui/components/AnsiOutput.js +12 -0
  112. package/dist/src/ui/components/AnsiOutput.js.map +1 -0
  113. package/dist/src/ui/components/AnsiOutput.test.d.ts +6 -0
  114. package/dist/src/ui/components/AnsiOutput.test.js +97 -0
  115. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -0
  116. package/dist/src/ui/components/AsciiArt.d.ts +3 -3
  117. package/dist/src/ui/components/AsciiArt.js +3 -3
  118. package/dist/src/ui/components/AutoAcceptIndicator.js +4 -4
  119. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
  120. package/dist/src/ui/components/Composer.js +10 -5
  121. package/dist/src/ui/components/Composer.js.map +1 -1
  122. package/dist/src/ui/components/ConfigInitDisplay.js +2 -1
  123. package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -1
  124. package/dist/src/ui/components/ConsoleSummaryDisplay.js +2 -2
  125. package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -1
  126. package/dist/src/ui/components/ContextSummaryDisplay.js +3 -3
  127. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  128. package/dist/src/ui/components/ContextUsageDisplay.js +2 -2
  129. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
  130. package/dist/src/ui/components/DebugProfiler.js +2 -2
  131. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  132. package/dist/src/ui/components/DetailedMessagesDisplay.js +7 -7
  133. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  134. package/dist/src/ui/components/DialogManager.js +9 -5
  135. package/dist/src/ui/components/DialogManager.js.map +1 -1
  136. package/dist/src/ui/components/EditorSettingsDialog.js +5 -5
  137. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  138. package/dist/src/ui/components/FolderTrustDialog.js +1 -2
  139. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  140. package/dist/src/ui/components/FolderTrustDialog.test.js +6 -1
  141. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  142. package/dist/src/ui/components/Footer.d.ts +3 -0
  143. package/dist/src/ui/components/Footer.js +8 -3
  144. package/dist/src/ui/components/Footer.js.map +1 -1
  145. package/dist/src/ui/components/GeminiRespondingSpinner.js +3 -2
  146. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  147. package/dist/src/ui/components/Header.js +2 -2
  148. package/dist/src/ui/components/Header.js.map +1 -1
  149. package/dist/src/ui/components/Help.js +5 -5
  150. package/dist/src/ui/components/Help.js.map +1 -1
  151. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -0
  152. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  153. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  154. package/dist/src/ui/components/InputPrompt.d.ts +3 -0
  155. package/dist/src/ui/components/InputPrompt.js +97 -19
  156. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  157. package/dist/src/ui/components/LoadingIndicator.js +2 -2
  158. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  159. package/dist/src/ui/components/LoopDetectionConfirmation.d.ts +13 -0
  160. package/dist/src/ui/components/LoopDetectionConfirmation.js +35 -0
  161. package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -0
  162. package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +6 -0
  163. package/dist/src/ui/components/LoopDetectionConfirmation.test.js +25 -0
  164. package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -0
  165. package/dist/src/ui/components/MainContent.js +1 -1
  166. package/dist/src/ui/components/MainContent.js.map +1 -1
  167. package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
  168. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  169. package/dist/src/ui/components/ModelStatsDisplay.js +7 -7
  170. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  171. package/dist/src/ui/components/Notifications.js +2 -2
  172. package/dist/src/ui/components/Notifications.js.map +1 -1
  173. package/dist/src/ui/components/PrepareLabel.d.ts +5 -5
  174. package/dist/src/ui/components/PrepareLabel.js +67 -11
  175. package/dist/src/ui/components/PrepareLabel.js.map +1 -1
  176. package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
  177. package/dist/src/ui/components/PrepareLabel.test.js +71 -0
  178. package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
  179. package/dist/src/ui/components/ProQuotaDialog.js +2 -2
  180. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  181. package/dist/src/ui/components/RatingWidget.d.ts +14 -0
  182. package/dist/src/ui/components/RatingWidget.js +60 -0
  183. package/dist/src/ui/components/RatingWidget.js.map +1 -0
  184. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +4 -0
  185. package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
  186. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  187. package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
  188. package/dist/src/ui/components/SettingsDialog.js +73 -17
  189. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  190. package/dist/src/ui/components/SettingsDialog.test.js +291 -0
  191. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  192. package/dist/src/ui/components/ShellConfirmationDialog.js +2 -2
  193. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  194. package/dist/src/ui/components/ShellInputPrompt.d.ts +11 -0
  195. package/dist/src/ui/components/ShellInputPrompt.js +36 -0
  196. package/dist/src/ui/components/ShellInputPrompt.js.map +1 -0
  197. package/dist/src/ui/components/ShellModeIndicator.js +2 -2
  198. package/dist/src/ui/components/ShellModeIndicator.js.map +1 -1
  199. package/dist/src/ui/components/ShowMoreLines.js +2 -2
  200. package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
  201. package/dist/src/ui/components/StatsDisplay.d.ts +4 -0
  202. package/dist/src/ui/components/StatsDisplay.js +10 -7
  203. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  204. package/dist/src/ui/components/SuggestionsDisplay.d.ts +5 -2
  205. package/dist/src/ui/components/SuggestionsDisplay.js +17 -11
  206. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  207. package/dist/src/ui/components/ThemeDialog.js +4 -4
  208. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  209. package/dist/src/ui/components/ThemeDialog.test.js +10 -0
  210. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
  211. package/dist/src/ui/components/Tips.js +2 -2
  212. package/dist/src/ui/components/Tips.js.map +1 -1
  213. package/dist/src/ui/components/ToolStatsDisplay.js +4 -4
  214. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
  215. package/dist/src/ui/components/UpdateNotification.js +2 -2
  216. package/dist/src/ui/components/UpdateNotification.js.map +1 -1
  217. package/dist/src/ui/components/WorkspaceMigrationDialog.js +4 -4
  218. package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
  219. package/dist/src/ui/components/messages/CompressionMessage.d.ts +1 -2
  220. package/dist/src/ui/components/messages/CompressionMessage.js +37 -8
  221. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  222. package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +6 -0
  223. package/dist/src/ui/components/messages/CompressionMessage.test.js +160 -0
  224. package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -0
  225. package/dist/src/ui/components/messages/DiffRenderer.d.ts +2 -1
  226. package/dist/src/ui/components/messages/DiffRenderer.js +14 -22
  227. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  228. package/dist/src/ui/components/messages/ErrorMessage.js +2 -2
  229. package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -1
  230. package/dist/src/ui/components/messages/GeminiMessage.js +2 -2
  231. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  232. package/dist/src/ui/components/messages/InfoMessage.js +2 -2
  233. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  234. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +31 -19
  235. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  236. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -0
  237. package/dist/src/ui/components/messages/ToolGroupMessage.js +14 -8
  238. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  239. package/dist/src/ui/components/messages/ToolMessage.d.ts +4 -0
  240. package/dist/src/ui/components/messages/ToolMessage.js +24 -10
  241. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  242. package/dist/src/ui/components/messages/ToolMessage.test.js +33 -1
  243. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  244. package/dist/src/ui/components/messages/UserMessage.js +3 -3
  245. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  246. package/dist/src/ui/components/messages/UserShellMessage.js +2 -2
  247. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
  248. package/dist/src/ui/components/shared/MaxSizedBox.js +2 -2
  249. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  250. package/dist/src/ui/components/shared/RadioButtonSelect.js +12 -12
  251. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  252. package/dist/src/ui/components/shared/text-buffer.d.ts +19 -2
  253. package/dist/src/ui/components/shared/text-buffer.js +191 -133
  254. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  255. package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
  256. package/dist/src/ui/components/views/ExtensionsList.js +47 -0
  257. package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
  258. package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
  259. package/dist/src/ui/components/views/ExtensionsList.test.js +97 -0
  260. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
  261. package/dist/src/ui/constants.d.ts +1 -0
  262. package/dist/src/ui/constants.js +1 -0
  263. package/dist/src/ui/constants.js.map +1 -1
  264. package/dist/src/ui/contexts/UIStateContext.d.ts +12 -1
  265. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  266. package/dist/src/ui/hooks/keyToAnsi.d.ts +15 -0
  267. package/dist/src/ui/hooks/keyToAnsi.js +67 -0
  268. package/dist/src/ui/hooks/keyToAnsi.js.map +1 -0
  269. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +2 -1
  270. package/dist/src/ui/hooks/shellCommandProcessor.js +60 -15
  271. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  272. package/dist/src/ui/hooks/shellCommandProcessor.test.js +196 -17
  273. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  274. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +4 -1
  275. package/dist/src/ui/hooks/slashCommandProcessor.js +15 -45
  276. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  277. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +3 -2
  278. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +9 -5
  279. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  280. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +69 -0
  281. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
  282. package/dist/src/ui/hooks/useExtensionUpdates.d.ts +12 -0
  283. package/dist/src/ui/hooks/useExtensionUpdates.js +64 -0
  284. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -0
  285. package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +6 -0
  286. package/dist/src/ui/hooks/useExtensionUpdates.test.js +162 -0
  287. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
  288. package/dist/src/ui/hooks/useGeminiStream.d.ts +11 -1
  289. package/dist/src/ui/hooks/useGeminiStream.js +89 -26
  290. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  291. package/dist/src/ui/hooks/useGitBranchName.js +15 -18
  292. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  293. package/dist/src/ui/hooks/useGitBranchName.test.js +49 -53
  294. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  295. package/dist/src/ui/hooks/useIdeTrustListener.js +2 -2
  296. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -1
  297. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +0 -2
  298. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
  299. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
  300. package/dist/src/ui/hooks/useReactToolScheduler.js +21 -17
  301. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  302. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +1 -1
  303. package/dist/src/ui/hooks/useReverseSearchCompletion.js +67 -20
  304. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
  305. package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
  306. package/dist/src/ui/hooks/useSlashCompletion.js +12 -1
  307. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  308. package/dist/src/ui/hooks/useSlashCompletion.test.js +14 -2
  309. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  310. package/dist/src/ui/hooks/useToolScheduler.test.js +6 -4
  311. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  312. package/dist/src/ui/keyMatchers.test.js +8 -0
  313. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  314. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +8 -8
  315. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  316. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +2 -2
  317. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -1
  318. package/dist/src/ui/privacy/GeminiPrivacyNotice.js +2 -2
  319. package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -1
  320. package/dist/src/ui/state/extensions.d.ts +15 -0
  321. package/dist/src/ui/state/extensions.js +17 -0
  322. package/dist/src/ui/state/extensions.js.map +1 -0
  323. package/dist/src/ui/themes/ayu.js +1 -1
  324. package/dist/src/ui/themes/dracula.js +2 -2
  325. package/dist/src/ui/themes/github-dark.js +1 -1
  326. package/dist/src/ui/themes/theme.js +17 -17
  327. package/dist/src/ui/themes/theme.js.map +1 -1
  328. package/dist/src/ui/types.d.ts +12 -2
  329. package/dist/src/ui/types.js +1 -0
  330. package/dist/src/ui/types.js.map +1 -1
  331. package/dist/src/ui/utils/CodeColorizer.js +3 -2
  332. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  333. package/dist/src/ui/utils/InlineMarkdownRenderer.js +7 -7
  334. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  335. package/dist/src/ui/utils/MarkdownDisplay.js +10 -10
  336. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  337. package/dist/src/ui/utils/MarkdownDisplay.test.js +6 -2
  338. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  339. package/dist/src/ui/utils/TableRenderer.js +4 -4
  340. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  341. package/dist/src/ui/utils/clipboardUtils.js +5 -6
  342. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  343. package/dist/src/ui/utils/displayUtils.js +4 -4
  344. package/dist/src/ui/utils/displayUtils.js.map +1 -1
  345. package/dist/src/ui/utils/textUtils.d.ts +9 -0
  346. package/dist/src/ui/utils/textUtils.js +52 -3
  347. package/dist/src/ui/utils/textUtils.js.map +1 -1
  348. package/dist/src/utils/commands.d.ts +20 -0
  349. package/dist/src/utils/commands.js +53 -0
  350. package/dist/src/utils/commands.js.map +1 -0
  351. package/dist/src/utils/commands.test.d.ts +6 -0
  352. package/dist/src/utils/commands.test.js +115 -0
  353. package/dist/src/utils/commands.test.js.map +1 -0
  354. package/dist/src/utils/commentJson.d.ts +9 -0
  355. package/dist/src/utils/commentJson.js +48 -0
  356. package/dist/src/utils/commentJson.js.map +1 -0
  357. package/dist/src/utils/commentJson.test.d.ts +6 -0
  358. package/dist/src/utils/commentJson.test.js +146 -0
  359. package/dist/src/utils/commentJson.test.js.map +1 -0
  360. package/dist/src/utils/errors.d.ts +21 -0
  361. package/dist/src/utils/errors.js +93 -0
  362. package/dist/src/utils/errors.js.map +1 -1
  363. package/dist/src/utils/errors.test.d.ts +6 -0
  364. package/dist/src/utils/errors.test.js +303 -0
  365. package/dist/src/utils/errors.test.js.map +1 -0
  366. package/dist/src/utils/sandbox.js +2 -0
  367. package/dist/src/utils/sandbox.js.map +1 -1
  368. package/dist/src/utils/settingsUtils.test.js +37 -2
  369. package/dist/src/utils/settingsUtils.test.js.map +1 -1
  370. package/dist/src/zed-integration/schema.d.ts +22 -22
  371. package/dist/src/zed-integration/zedIntegration.js +10 -7
  372. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  373. package/dist/tsconfig.tsbuildinfo +1 -1
  374. package/package.json +12 -9
@@ -1 +1 @@
1
- {"version":3,"file":"ModelStatsDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/ModelStatsDisplay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelStatsDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/ModelStatsDisplay.tsx"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
7
7
  import { Box, Text } from 'ink';
8
8
  import { useAppContext } from '../contexts/AppContext.js';
9
9
  import { useUIState } from '../contexts/UIStateContext.js';
10
- import { Colors } from '../colors.js';
10
+ import { theme } from '../semantic-colors.js';
11
11
  import { StreamingState } from '../types.js';
12
12
  import { UpdateNotification } from './UpdateNotification.js';
13
13
  export const Notifications = () => {
@@ -18,6 +18,6 @@ export const Notifications = () => {
18
18
  if (!showStartupWarnings && !showInitError && !updateInfo) {
19
19
  return null;
20
20
  }
21
- return (_jsxs(_Fragment, { children: [updateInfo && _jsx(UpdateNotification, { message: updateInfo.message }), showStartupWarnings && (_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))) })), showInitError && (_jsxs(Box, { borderStyle: "round", borderColor: Colors.AccentRed, paddingX: 1, marginBottom: 1, children: [_jsxs(Text, { color: Colors.AccentRed, children: ["Initialization Error: ", initError] }), _jsxs(Text, { color: Colors.AccentRed, children: [' ', "Please check API key and configuration."] })] }))] }));
21
+ return (_jsxs(_Fragment, { children: [updateInfo && _jsx(UpdateNotification, { message: updateInfo.message }), showStartupWarnings && (_jsx(Box, { borderStyle: "round", borderColor: theme.status.warning, paddingX: 1, marginY: 1, flexDirection: "column", children: startupWarnings.map((warning, index) => (_jsx(Text, { color: theme.status.warning, children: warning }, index))) })), showInitError && (_jsxs(Box, { borderStyle: "round", borderColor: theme.status.error, paddingX: 1, marginBottom: 1, children: [_jsxs(Text, { color: theme.status.error, children: ["Initialization Error: ", initError] }), _jsxs(Text, { color: theme.status.error, children: [' ', "Please check API key and configuration."] })] }))] }));
22
22
  };
23
23
  //# sourceMappingURL=Notifications.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Notifications.js","sourceRoot":"","sources":["../../../../src/ui/components/Notifications.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAE/D,MAAM,mBAAmB,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,MAAM,aAAa,GACjB,SAAS,IAAI,cAAc,KAAK,cAAc,CAAC,UAAU,CAAC;IAE5D,IAAI,CAAC,mBAAmB,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,8BACG,UAAU,IAAI,KAAC,kBAAkB,IAAC,OAAO,EAAE,UAAU,CAAC,OAAO,GAAI,EACjE,mBAAmB,IAAI,CACtB,KAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,YAAY,EAChC,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC,EACV,aAAa,EAAC,QAAQ,YAErB,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CACvC,KAAC,IAAI,IAAa,KAAK,EAAE,MAAM,CAAC,YAAY,YACzC,OAAO,IADC,KAAK,CAET,CACR,CAAC,GACE,CACP,EACA,aAAa,IAAI,CAChB,MAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,SAAS,EAC7B,QAAQ,EAAE,CAAC,EACX,YAAY,EAAE,CAAC,aAEf,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,uCACJ,SAAS,IAC3B,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,SAAS,aAC1B,GAAG,+CAEC,IACH,CACP,IACA,CACJ,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Notifications.js","sourceRoot":"","sources":["../../../../src/ui/components/Notifications.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,EAAE;IAChC,MAAM,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAAC;IAE/D,MAAM,mBAAmB,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,MAAM,aAAa,GACjB,SAAS,IAAI,cAAc,KAAK,cAAc,CAAC,UAAU,CAAC;IAE5D,IAAI,CAAC,mBAAmB,IAAI,CAAC,aAAa,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,8BACG,UAAU,IAAI,KAAC,kBAAkB,IAAC,OAAO,EAAE,UAAU,CAAC,OAAO,GAAI,EACjE,mBAAmB,IAAI,CACtB,KAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EACjC,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,CAAC,EACV,aAAa,EAAC,QAAQ,YAErB,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CACvC,KAAC,IAAI,IAAa,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,YAC1C,OAAO,IADC,KAAK,CAET,CACR,CAAC,GACE,CACP,EACA,aAAa,IAAI,CAChB,MAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAC/B,QAAQ,EAAE,CAAC,EACX,YAAY,EAAE,CAAC,aAEf,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,uCACN,SAAS,IAC3B,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,aAC5B,GAAG,+CAEC,IACH,CACP,IACA,CACJ,CAAC;AACJ,CAAC,CAAC"}
@@ -3,13 +3,13 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type React from 'react';
7
- interface PrepareLabelProps {
6
+ import React from 'react';
7
+ export declare const MAX_WIDTH = 150;
8
+ export interface PrepareLabelProps {
8
9
  label: string;
9
10
  matchedIndex?: number;
10
11
  userInput: string;
11
12
  textColor: string;
12
- highlightColor?: string;
13
+ isExpanded?: boolean;
13
14
  }
14
- export declare const PrepareLabel: React.FC<PrepareLabelProps>;
15
- export {};
15
+ export declare const PrepareLabel: React.NamedExoticComponent<PrepareLabelProps>;
@@ -1,16 +1,72 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import React from 'react';
2
8
  import { Text } from 'ink';
3
- import { Colors } from '../colors.js';
4
- export const PrepareLabel = ({ label, matchedIndex, userInput, textColor, highlightColor = Colors.AccentYellow, }) => {
5
- if (matchedIndex === undefined ||
6
- matchedIndex < 0 ||
7
- matchedIndex >= label.length ||
8
- userInput.length === 0) {
9
- return _jsx(Text, { color: textColor, children: label });
9
+ import { theme } from '../semantic-colors.js';
10
+ export const MAX_WIDTH = 150; // Maximum width for the text that is shown
11
+ const _PrepareLabel = ({ label, matchedIndex, userInput, textColor, isExpanded = false, }) => {
12
+ const hasMatch = matchedIndex !== undefined &&
13
+ matchedIndex >= 0 &&
14
+ matchedIndex < label.length &&
15
+ userInput.length > 0;
16
+ // Render the plain label if there's no match
17
+ if (!hasMatch) {
18
+ const display = isExpanded
19
+ ? label
20
+ : label.length > MAX_WIDTH
21
+ ? label.slice(0, MAX_WIDTH) + '...'
22
+ : label;
23
+ return (_jsx(Text, { wrap: "wrap", color: textColor, children: display }));
10
24
  }
11
- const start = label.slice(0, matchedIndex);
12
- const match = label.slice(matchedIndex, matchedIndex + userInput.length);
13
- const end = label.slice(matchedIndex + userInput.length);
14
- return (_jsxs(Text, { children: [_jsx(Text, { color: textColor, children: start }), _jsx(Text, { color: "black", bold: true, backgroundColor: highlightColor, children: match }), _jsx(Text, { color: textColor, children: end })] }));
25
+ const matchLength = userInput.length;
26
+ let before = '';
27
+ let match = '';
28
+ let after = '';
29
+ // Case 1: Show the full string if it's expanded or already fits
30
+ if (isExpanded || label.length <= MAX_WIDTH) {
31
+ before = label.slice(0, matchedIndex);
32
+ match = label.slice(matchedIndex, matchedIndex + matchLength);
33
+ after = label.slice(matchedIndex + matchLength);
34
+ }
35
+ // Case 2: The match itself is too long, so we only show a truncated portion of the match
36
+ else if (matchLength >= MAX_WIDTH) {
37
+ match = label.slice(matchedIndex, matchedIndex + MAX_WIDTH - 1) + '...';
38
+ }
39
+ // Case 3: Truncate the string to create a window around the match
40
+ else {
41
+ const contextSpace = MAX_WIDTH - matchLength;
42
+ const beforeSpace = Math.floor(contextSpace / 2);
43
+ const afterSpace = Math.ceil(contextSpace / 2);
44
+ let start = matchedIndex - beforeSpace;
45
+ let end = matchedIndex + matchLength + afterSpace;
46
+ if (start < 0) {
47
+ end += -start; // Slide window right
48
+ start = 0;
49
+ }
50
+ if (end > label.length) {
51
+ start -= end - label.length; // Slide window left
52
+ end = label.length;
53
+ }
54
+ start = Math.max(0, start);
55
+ const finalMatchIndex = matchedIndex - start;
56
+ const slicedLabel = label.slice(start, end);
57
+ before = slicedLabel.slice(0, finalMatchIndex);
58
+ match = slicedLabel.slice(finalMatchIndex, finalMatchIndex + matchLength);
59
+ after = slicedLabel.slice(finalMatchIndex + matchLength);
60
+ if (start > 0) {
61
+ before = before.length >= 3 ? '...' + before.slice(3) : '...';
62
+ }
63
+ if (end < label.length) {
64
+ after = after.length >= 3 ? after.slice(0, -3) + '...' : '...';
65
+ }
66
+ }
67
+ return (_jsxs(Text, { color: textColor, wrap: "wrap", children: [before, match
68
+ ? match.split(/(\s+)/).map((part, index) => (_jsx(Text, { color: theme.background.primary, backgroundColor: theme.text.primary, children: part }, `match-${index}`)))
69
+ : null, after] }));
15
70
  };
71
+ export const PrepareLabel = React.memo(_PrepareLabel);
16
72
  //# sourceMappingURL=PrepareLabel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrepareLabel.js","sourceRoot":"","sources":["../../../../src/ui/components/PrepareLabel.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAUtC,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,cAAc,GAAG,MAAM,CAAC,YAAY,GACrC,EAAE,EAAE;IACH,IACE,YAAY,KAAK,SAAS;QAC1B,YAAY,GAAG,CAAC;QAChB,YAAY,IAAI,KAAK,CAAC,MAAM;QAC5B,SAAS,CAAC,MAAM,KAAK,CAAC,EACtB,CAAC;QACD,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,KAAK,GAAQ,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEzD,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,KAAK,GAAQ,EACtC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,QAAC,eAAe,EAAE,cAAc,YACrD,KAAK,GACD,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,YAAG,GAAG,GAAQ,IAC/B,CACR,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"PrepareLabel.js","sourceRoot":"","sources":["../../../../src/ui/components/PrepareLabel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { describe, it, expect } from 'vitest';
8
+ import { render } from 'ink-testing-library';
9
+ import { PrepareLabel, MAX_WIDTH } from './PrepareLabel.js';
10
+ describe('PrepareLabel', () => {
11
+ const color = 'white';
12
+ const flat = (s) => (s ?? '').replace(/\n/g, '');
13
+ it('renders plain label when no match (short label)', () => {
14
+ const { lastFrame } = render(_jsx(PrepareLabel, { label: "simple command", userInput: "", matchedIndex: undefined, textColor: color, isExpanded: false }));
15
+ expect(lastFrame()).toMatchSnapshot();
16
+ });
17
+ it('truncates long label when collapsed and no match', () => {
18
+ const long = 'x'.repeat(MAX_WIDTH + 25);
19
+ const { lastFrame } = render(_jsx(PrepareLabel, { label: long, userInput: "", textColor: color, isExpanded: false }));
20
+ const out = lastFrame();
21
+ const f = flat(out);
22
+ expect(f.endsWith('...')).toBe(true);
23
+ expect(f.length).toBe(MAX_WIDTH + 3);
24
+ expect(out).toMatchSnapshot();
25
+ });
26
+ it('shows full long label when expanded and no match', () => {
27
+ const long = 'y'.repeat(MAX_WIDTH + 25);
28
+ const { lastFrame } = render(_jsx(PrepareLabel, { label: long, userInput: "", textColor: color, isExpanded: true }));
29
+ const out = lastFrame();
30
+ const f = flat(out);
31
+ expect(f.length).toBe(long.length);
32
+ expect(out).toMatchSnapshot();
33
+ });
34
+ it('highlights matched substring when expanded (text only visible)', () => {
35
+ const label = 'run: git commit -m "feat: add search"';
36
+ const userInput = 'commit';
37
+ const matchedIndex = label.indexOf(userInput);
38
+ const { lastFrame } = render(_jsx(PrepareLabel, { label: label, userInput: userInput, matchedIndex: matchedIndex, textColor: color, isExpanded: true }));
39
+ expect(lastFrame()).toMatchSnapshot();
40
+ });
41
+ it('creates centered window around match when collapsed', () => {
42
+ const prefix = 'cd /very/long/path/that/keeps/going/'.repeat(3);
43
+ const core = 'search-here';
44
+ const suffix = '/and/then/some/more/components/'.repeat(3);
45
+ const label = prefix + core + suffix;
46
+ const matchedIndex = prefix.length;
47
+ const { lastFrame } = render(_jsx(PrepareLabel, { label: label, userInput: core, matchedIndex: matchedIndex, textColor: color, isExpanded: false }));
48
+ const out = lastFrame();
49
+ const f = flat(out);
50
+ expect(f.includes(core)).toBe(true);
51
+ expect(f.startsWith('...')).toBe(true);
52
+ expect(f.endsWith('...')).toBe(true);
53
+ expect(out).toMatchSnapshot();
54
+ });
55
+ it('truncates match itself when match is very long', () => {
56
+ const prefix = 'find ';
57
+ const core = 'x'.repeat(MAX_WIDTH + 25);
58
+ const suffix = ' in this text';
59
+ const label = prefix + core + suffix;
60
+ const matchedIndex = prefix.length;
61
+ const { lastFrame } = render(_jsx(PrepareLabel, { label: label, userInput: core, matchedIndex: matchedIndex, textColor: color, isExpanded: false }));
62
+ const out = lastFrame();
63
+ const f = flat(out);
64
+ expect(f.includes('...')).toBe(true);
65
+ expect(f.startsWith('...')).toBe(false);
66
+ expect(f.endsWith('...')).toBe(true);
67
+ expect(f.length).toBe(MAX_WIDTH + 2);
68
+ expect(out).toMatchSnapshot();
69
+ });
70
+ });
71
+ //# sourceMappingURL=PrepareLabel.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PrepareLabel.test.js","sourceRoot":"","sources":["../../../../src/ui/components/PrepareLabel.test.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
3
  import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
4
- import { Colors } from '../colors.js';
4
+ import { theme } from '../semantic-colors.js';
5
5
  export function ProQuotaDialog({ failedModel, fallbackModel, onChoice, }) {
6
6
  const items = [
7
7
  {
@@ -16,6 +16,6 @@ export function ProQuotaDialog({ failedModel, fallbackModel, onChoice, }) {
16
16
  const handleSelect = (choice) => {
17
17
  onChoice(choice);
18
18
  };
19
- return (_jsxs(Box, { borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsxs(Text, { bold: true, color: Colors.AccentYellow, children: ["Pro quota limit reached for ", failedModel, "."] }), _jsx(Box, { marginTop: 1, children: _jsx(RadioButtonSelect, { items: items, initialIndex: 1, onSelect: handleSelect }) })] }));
19
+ return (_jsxs(Box, { borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsxs(Text, { bold: true, color: theme.status.warning, children: ["Pro quota limit reached for ", failedModel, "."] }), _jsx(Box, { marginTop: 1, children: _jsx(RadioButtonSelect, { items: items, initialIndex: 1, onSelect: handleSelect }) })] }));
20
20
  }
21
21
  //# sourceMappingURL=ProQuotaDialog.js.map
@@ -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,MAAM,EAAE,MAAM,cAAc,CAAC;AAQtC,MAAM,UAAU,cAAc,CAAC,EAC7B,WAAW,EACX,aAAa,EACb,QAAQ,GACY;IACpB,MAAM,KAAK,GAAG;QACZ;YACE,KAAK,EAAE,0CAA0C;YACjD,KAAK,EAAE,MAAe;SACvB;QACD;YACE,KAAK,EAAE,iBAAiB,aAAa,EAAE;YACvC,KAAK,EAAE,UAAmB;SAC3B;KACF,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,MAA2B,EAAE,EAAE;QACnD,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACzD,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,6CACN,WAAW,SACnC,EACP,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,iBAAiB,IAChB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,CAAC,EACf,QAAQ,EAAE,YAAY,GACtB,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
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;AAQ9C,MAAM,UAAU,cAAc,CAAC,EAC7B,WAAW,EACX,aAAa,EACb,QAAQ,GACY;IACpB,MAAM,KAAK,GAAG;QACZ;YACE,KAAK,EAAE,0CAA0C;YACjD,KAAK,EAAE,MAAe;SACvB;QACD;YACE,KAAK,EAAE,iBAAiB,aAAa,EAAE;YACvC,KAAK,EAAE,UAAmB;SAC3B;KACF,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,MAA2B,EAAE,EAAE;QACnD,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACzD,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,6CACP,WAAW,SACnC,EACP,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,iBAAiB,IAChB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,CAAC,EACf,QAAQ,EAAE,YAAY,GACtB,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type React from 'react';
7
+ interface RatingWidgetProps {
8
+ onSubmit: (result: {
9
+ rating: number;
10
+ comment: string;
11
+ } | null) => void;
12
+ }
13
+ export declare const RatingWidget: React.FC<RatingWidgetProps>;
14
+ export {};
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect } from 'react';
3
+ import { Box, Text, useInput, useFocus, useFocusManager } from 'ink';
4
+ import TextInput from 'ink-text-input';
5
+ import { theme } from '../semantic-colors.js';
6
+ const STAR_FILLED = '⭐';
7
+ const STAR_EMPTY = '✩';
8
+ export const RatingWidget = ({ onSubmit }) => {
9
+ const [rating, setRating] = useState(5);
10
+ const [comment, setComment] = useState('');
11
+ const { focus } = useFocusManager();
12
+ const { isFocused: isRatingFocused } = useFocus({ id: 'rating' });
13
+ const { isFocused: isCommentFocused } = useFocus({ id: 'comment' });
14
+ useEffect(() => {
15
+ focus('rating');
16
+ // eslint-disable-next-line react-hooks/exhaustive-deps
17
+ }, []);
18
+ useInput((input, key) => {
19
+ if (isRatingFocused) {
20
+ if (key.leftArrow) {
21
+ setRating((prev) => Math.max(0, prev - 1));
22
+ }
23
+ if (key.rightArrow) {
24
+ setRating((prev) => Math.min(5, prev + 1));
25
+ }
26
+ if (!isNaN(parseInt(input, 10))) {
27
+ const num = parseInt(input, 10);
28
+ if (num >= 1 && num <= 5) {
29
+ setRating(num);
30
+ }
31
+ }
32
+ }
33
+ if (key.tab) {
34
+ if (isRatingFocused) {
35
+ focus('comment');
36
+ }
37
+ else {
38
+ focus('rating');
39
+ }
40
+ }
41
+ if (key.return) {
42
+ if (isRatingFocused) {
43
+ focus('comment');
44
+ }
45
+ else {
46
+ onSubmit({ rating, comment });
47
+ }
48
+ }
49
+ if (key.ctrl && input === 'c') {
50
+ onSubmit(null);
51
+ }
52
+ });
53
+ const stars = Array.from({ length: 5 }, (_, i) => i < rating ? STAR_FILLED : STAR_EMPTY).join(' ');
54
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Califica tu experiencia:" }), _jsxs(Box, { children: [_jsx(Box, { marginRight: 2, children: _jsx(Text, { color: isRatingFocused ? theme.text.accent : theme.text.primary, children: stars }) }), _jsx(Box, { children: _jsx(Text, { color: theme.text.secondary, children: "(Usa \u2190/\u2192 o 1-5 para calificar)" }) }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: theme.status.error, children: isRatingFocused
55
+ ? '<- ¡Califícanos! (Presiona Enter para continuar)'
56
+ : '' }) })] }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { children: "Comentarios:" }), _jsx(Box, { width: "50%", borderStyle: "round", borderColor: isCommentFocused ? theme.border.focused : theme.border.default, marginLeft: 1, children: _jsx(TextInput, { value: comment, onChange: (value) => setComment(value.slice(0, 2000)), placeholder: " (opcional, presiona Enter para enviar)", focus: isCommentFocused }) }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: theme.status.error, children: isCommentFocused
57
+ ? '<- ¡Déjanos un comentario! (Presiona Enter para enviar)'
58
+ : '' }) })] }), _jsx(Text, { color: theme.text.secondary, children: "Tab para cambiar entre calificaci\u00F3n y comentario." })] }));
59
+ };
60
+ //# sourceMappingURL=RatingWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RatingWidget.js","sourceRoot":"","sources":["../../../../src/ui/components/RatingWidget.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,10 @@
6
6
  import type React from 'react';
7
7
  interface SessionSummaryDisplayProps {
8
8
  duration: string;
9
+ onFeedbackSubmit?: (result: {
10
+ rating: number;
11
+ comment: string;
12
+ } | null) => void;
9
13
  }
10
14
  export declare const SessionSummaryDisplay: React.FC<SessionSummaryDisplayProps>;
11
15
  export {};
@@ -1,4 +1,4 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { StatsDisplay } from './StatsDisplay.js';
3
- export const SessionSummaryDisplay = ({ duration, }) => (_jsx(StatsDisplay, { title: "Agent powering down. Goodbye!", duration: duration }));
3
+ export const SessionSummaryDisplay = ({ duration, onFeedbackSubmit, }) => (_jsx(StatsDisplay, { title: "Agent powering down. Goodbye!", duration: duration, onFeedbackSubmit: onFeedbackSubmit }));
4
4
  //# sourceMappingURL=SessionSummaryDisplay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionSummaryDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/SessionSummaryDisplay.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMjD,MAAM,CAAC,MAAM,qBAAqB,GAAyC,CAAC,EAC1E,QAAQ,GACT,EAAE,EAAE,CAAC,CACJ,KAAC,YAAY,IAAC,KAAK,EAAC,+BAA+B,EAAC,QAAQ,EAAE,QAAQ,GAAI,CAC3E,CAAC"}
1
+ {"version":3,"file":"SessionSummaryDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/SessionSummaryDisplay.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASjD,MAAM,CAAC,MAAM,qBAAqB,GAAyC,CAAC,EAC1E,QAAQ,EACR,gBAAgB,GACjB,EAAE,EAAE,CAAC,CACJ,KAAC,YAAY,IACX,KAAK,EAAC,+BAA+B,EACrC,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,gBAAgB,GAClC,CACH,CAAC"}
@@ -10,6 +10,7 @@ interface SettingsDialogProps {
10
10
  settings: LoadedSettings;
11
11
  onSelect: (settingName: string | undefined, scope: SettingScope) => void;
12
12
  onRestartRequest?: () => void;
13
+ availableTerminalHeight?: number;
13
14
  }
14
- export declare function SettingsDialog({ settings, onSelect, onRestartRequest, }: SettingsDialogProps): React.JSX.Element;
15
+ export declare function SettingsDialog({ settings, onSelect, onRestartRequest, availableTerminalHeight, }: SettingsDialogProps): React.JSX.Element;
15
16
  export {};
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
2
  /**
3
3
  * @license
4
4
  * Copyright 2025 Google LLC
@@ -6,7 +6,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  */
7
7
  import React, { useState, useEffect } from 'react';
8
8
  import { Box, Text } from 'ink';
9
- import { Colors } from '../colors.js';
9
+ import { theme } from '../semantic-colors.js';
10
10
  import { SettingScope } from '../../config/settings.js';
11
11
  import { getScopeItems, getScopeMessageForSetting, } from '../../utils/dialogScopeUtils.js';
12
12
  import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
@@ -17,7 +17,7 @@ import chalk from 'chalk';
17
17
  import { cpSlice, cpLen, stripUnsafeCharacters } from '../utils/textUtils.js';
18
18
  import { TOGGLE_TYPES, } from '../../config/settingsSchema.js';
19
19
  const maxItemsToShow = 8;
20
- export function SettingsDialog({ settings, onSelect, onRestartRequest, }) {
20
+ export function SettingsDialog({ settings, onSelect, onRestartRequest, availableTerminalHeight, }) {
21
21
  // Get vim mode context to sync vim mode changes
22
22
  const { vimEnabled, toggleVimEnabled } = useVimMode();
23
23
  // Focus state: 'settings' or 'scope'
@@ -253,14 +253,70 @@ export function SettingsDialog({ settings, onSelect, onRestartRequest, }) {
253
253
  handleScopeHighlight(scope);
254
254
  setFocusSection('settings');
255
255
  };
256
+ // Height constraint calculations similar to ThemeDialog
257
+ const DIALOG_PADDING = 2;
258
+ const SETTINGS_TITLE_HEIGHT = 2; // "Settings" title + spacing
259
+ const SCROLL_ARROWS_HEIGHT = 2; // Up and down arrows
260
+ const SPACING_HEIGHT = 1; // Space between settings list and scope
261
+ const SCOPE_SELECTION_HEIGHT = 4; // Apply To section height
262
+ const BOTTOM_HELP_TEXT_HEIGHT = 1; // Help text
263
+ const RESTART_PROMPT_HEIGHT = showRestartPrompt ? 1 : 0;
264
+ let currentAvailableTerminalHeight = availableTerminalHeight ?? Number.MAX_SAFE_INTEGER;
265
+ currentAvailableTerminalHeight -= 2; // Top and bottom borders
266
+ // Start with basic fixed height (without scope selection)
267
+ let totalFixedHeight = DIALOG_PADDING +
268
+ SETTINGS_TITLE_HEIGHT +
269
+ SCROLL_ARROWS_HEIGHT +
270
+ SPACING_HEIGHT +
271
+ BOTTOM_HELP_TEXT_HEIGHT +
272
+ RESTART_PROMPT_HEIGHT;
273
+ // Calculate how much space we have for settings
274
+ let availableHeightForSettings = Math.max(1, currentAvailableTerminalHeight - totalFixedHeight);
275
+ // Each setting item takes 2 lines (the setting row + spacing)
276
+ let maxVisibleItems = Math.max(1, Math.floor(availableHeightForSettings / 2));
277
+ // Decide whether to show scope selection based on remaining space
278
+ let showScopeSelection = true;
279
+ // If we have limited height, prioritize showing more settings over scope selection
280
+ if (availableTerminalHeight && availableTerminalHeight < 25) {
281
+ // For very limited height, hide scope selection to show more settings
282
+ const totalWithScope = totalFixedHeight + SCOPE_SELECTION_HEIGHT;
283
+ const availableWithScope = Math.max(1, currentAvailableTerminalHeight - totalWithScope);
284
+ const maxItemsWithScope = Math.max(1, Math.floor(availableWithScope / 2));
285
+ // If hiding scope selection allows us to show significantly more settings, do it
286
+ if (maxVisibleItems > maxItemsWithScope + 1) {
287
+ showScopeSelection = false;
288
+ }
289
+ else {
290
+ // Otherwise include scope selection and recalculate
291
+ totalFixedHeight += SCOPE_SELECTION_HEIGHT;
292
+ availableHeightForSettings = Math.max(1, currentAvailableTerminalHeight - totalFixedHeight);
293
+ maxVisibleItems = Math.max(1, Math.floor(availableHeightForSettings / 2));
294
+ }
295
+ }
296
+ else {
297
+ // For normal height, include scope selection
298
+ totalFixedHeight += SCOPE_SELECTION_HEIGHT;
299
+ availableHeightForSettings = Math.max(1, currentAvailableTerminalHeight - totalFixedHeight);
300
+ maxVisibleItems = Math.max(1, Math.floor(availableHeightForSettings / 2));
301
+ }
302
+ // Use the calculated maxVisibleItems or fall back to the original maxItemsToShow
303
+ const effectiveMaxItemsToShow = availableTerminalHeight
304
+ ? Math.min(maxVisibleItems, items.length)
305
+ : maxItemsToShow;
306
+ // Ensure focus stays on settings when scope selection is hidden
307
+ React.useEffect(() => {
308
+ if (!showScopeSelection && focusSection === 'scope') {
309
+ setFocusSection('settings');
310
+ }
311
+ }, [showScopeSelection, focusSection]);
256
312
  // Scroll logic for settings
257
- const visibleItems = items.slice(scrollOffset, scrollOffset + maxItemsToShow);
258
- // Always show arrows for consistent UI and to indicate circular navigation
259
- const showScrollUp = true;
260
- const showScrollDown = true;
313
+ const visibleItems = items.slice(scrollOffset, scrollOffset + effectiveMaxItemsToShow);
314
+ // Show arrows if there are more items than can be displayed
315
+ const showScrollUp = items.length > effectiveMaxItemsToShow;
316
+ const showScrollDown = items.length > effectiveMaxItemsToShow;
261
317
  useKeypress((key) => {
262
318
  const { name, ctrl } = key;
263
- if (name === 'tab') {
319
+ if (name === 'tab' && showScopeSelection) {
264
320
  setFocusSection((prev) => (prev === 'settings' ? 'scope' : 'settings'));
265
321
  }
266
322
  if (focusSection === 'settings') {
@@ -361,7 +417,7 @@ export function SettingsDialog({ settings, onSelect, onRestartRequest, }) {
361
417
  setActiveSettingIndex(newIndex);
362
418
  // Adjust scroll offset for wrap-around
363
419
  if (newIndex === items.length - 1) {
364
- setScrollOffset(Math.max(0, items.length - maxItemsToShow));
420
+ setScrollOffset(Math.max(0, items.length - effectiveMaxItemsToShow));
365
421
  }
366
422
  else if (newIndex < scrollOffset) {
367
423
  setScrollOffset(newIndex);
@@ -378,8 +434,8 @@ export function SettingsDialog({ settings, onSelect, onRestartRequest, }) {
378
434
  if (newIndex === 0) {
379
435
  setScrollOffset(0);
380
436
  }
381
- else if (newIndex >= scrollOffset + maxItemsToShow) {
382
- setScrollOffset(newIndex - maxItemsToShow + 1);
437
+ else if (newIndex >= scrollOffset + effectiveMaxItemsToShow) {
438
+ setScrollOffset(newIndex - effectiveMaxItemsToShow + 1);
383
439
  }
384
440
  }
385
441
  else if (name === 'return' || name === 'space') {
@@ -499,7 +555,7 @@ export function SettingsDialog({ settings, onSelect, onRestartRequest, }) {
499
555
  }
500
556
  }
501
557
  }, { isActive: true });
502
- return (_jsx(Box, { borderStyle: "round", borderColor: Colors.Gray, flexDirection: "row", padding: 1, width: "100%", height: "100%", children: _jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsx(Text, { bold: true, color: Colors.AccentBlue, children: "Settings" }), _jsx(Box, { height: 1 }), showScrollUp && _jsx(Text, { color: Colors.Gray, children: "\u25B2" }), visibleItems.map((item, idx) => {
558
+ return (_jsx(Box, { borderStyle: "round", borderColor: theme.border.default, flexDirection: "row", padding: 1, width: "100%", height: "100%", children: _jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [_jsxs(Text, { bold: focusSection === 'settings', wrap: "truncate", children: [focusSection === 'settings' ? '> ' : ' ', "Settings"] }), _jsx(Box, { height: 1 }), showScrollUp && _jsx(Text, { color: theme.text.secondary, children: "\u25B2" }), visibleItems.map((item, idx) => {
503
559
  const isActive = focusSection === 'settings' &&
504
560
  activeSettingIndex === idx + scrollOffset;
505
561
  const scopeSettings = settings.forScope(selectedScope).settings;
@@ -555,11 +611,11 @@ export function SettingsDialog({ settings, onSelect, onRestartRequest, }) {
555
611
  const shouldBeGreyedOut = isDefaultValue(item.value, scopeSettings);
556
612
  // Generate scope message for this setting
557
613
  const scopeMessage = getScopeMessageForSetting(item.value, selectedScope, settings);
558
- return (_jsxs(React.Fragment, { children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Box, { minWidth: 2, flexShrink: 0, children: _jsx(Text, { color: isActive ? Colors.AccentGreen : Colors.Gray, children: isActive ? '●' : '' }) }), _jsx(Box, { minWidth: 50, children: _jsxs(Text, { color: isActive ? Colors.AccentGreen : Colors.Foreground, children: [item.label, scopeMessage && (_jsxs(Text, { color: Colors.Gray, children: [" ", scopeMessage] }))] }) }), _jsx(Box, { minWidth: 3 }), _jsx(Text, { color: isActive
559
- ? Colors.AccentGreen
614
+ return (_jsxs(React.Fragment, { children: [_jsxs(Box, { flexDirection: "row", alignItems: "center", children: [_jsx(Box, { minWidth: 2, flexShrink: 0, children: _jsx(Text, { color: isActive ? theme.status.success : theme.text.secondary, children: isActive ? '●' : '' }) }), _jsx(Box, { minWidth: 50, children: _jsxs(Text, { color: isActive ? theme.status.success : theme.text.primary, children: [item.label, scopeMessage && (_jsxs(Text, { color: theme.text.secondary, children: [" ", scopeMessage] }))] }) }), _jsx(Box, { minWidth: 3 }), _jsx(Text, { color: isActive
615
+ ? theme.status.success
560
616
  : shouldBeGreyedOut
561
- ? Colors.Gray
562
- : Colors.Foreground, children: displayValue })] }), _jsx(Box, { height: 1 })] }, item.value));
563
- }), showScrollDown && _jsx(Text, { color: Colors.Gray, children: "\u25BC" }), _jsx(Box, { height: 1 }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { bold: focusSection === 'scope', wrap: "truncate", children: [focusSection === 'scope' ? '> ' : ' ', "Apply To"] }), _jsx(RadioButtonSelect, { items: scopeItems, initialIndex: 0, onSelect: handleScopeSelect, onHighlight: handleScopeHighlight, isFocused: focusSection === 'scope', showNumbers: focusSection === 'scope' })] }), _jsx(Box, { height: 1 }), _jsx(Text, { color: Colors.Gray, children: "(Use Enter to select, Tab to change focus)" }), showRestartPrompt && (_jsx(Text, { color: Colors.AccentYellow, children: "To see changes, Gemini CLI must be restarted. Press r to exit and apply changes now." }))] }) }));
617
+ ? theme.text.secondary
618
+ : theme.text.primary, children: displayValue })] }), _jsx(Box, { height: 1 })] }, item.value));
619
+ }), showScrollDown && _jsx(Text, { color: theme.text.secondary, children: "\u25BC" }), _jsx(Box, { height: 1 }), showScopeSelection && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Text, { bold: focusSection === 'scope', wrap: "truncate", children: [focusSection === 'scope' ? '> ' : ' ', "Apply To"] }), _jsx(RadioButtonSelect, { items: scopeItems, initialIndex: 0, onSelect: handleScopeSelect, onHighlight: handleScopeHighlight, isFocused: focusSection === 'scope', showNumbers: focusSection === 'scope' })] })), _jsx(Box, { height: 1 }), _jsxs(Text, { color: theme.text.secondary, children: ["(Use Enter to select", showScopeSelection ? ', Tab to change focus' : '', ")"] }), showRestartPrompt && (_jsx(Text, { color: theme.status.warning, children: "To see changes, Gemini CLI must be restarted. Press r to exit and apply changes now." }))] }) }));
564
620
  }
565
621
  //# sourceMappingURL=SettingsDialog.js.map