@umsai/ums-code 0.0.11-post5 → 0.0.13-v1

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 (647) hide show
  1. package/dist/index.js +9 -0
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +9 -6
  4. package/dist/src/commands/extensions/disable.d.ts +14 -0
  5. package/dist/src/commands/extensions/disable.js +42 -0
  6. package/dist/src/commands/extensions/disable.js.map +1 -0
  7. package/dist/src/commands/extensions/enable.d.ts +14 -0
  8. package/dist/src/commands/extensions/enable.js +48 -0
  9. package/dist/src/commands/extensions/enable.js.map +1 -0
  10. package/dist/src/commands/extensions/install.d.ts +13 -0
  11. package/dist/src/commands/extensions/install.js +48 -0
  12. package/dist/src/commands/extensions/install.js.map +1 -0
  13. package/dist/src/commands/extensions/install.test.d.ts +6 -0
  14. package/dist/src/commands/extensions/install.test.js +25 -0
  15. package/dist/src/commands/extensions/install.test.js.map +1 -0
  16. package/dist/src/commands/extensions/list.d.ts +8 -0
  17. package/dist/src/commands/extensions/list.js +32 -0
  18. package/dist/src/commands/extensions/list.js.map +1 -0
  19. package/dist/src/commands/extensions/uninstall.d.ts +12 -0
  20. package/dist/src/commands/extensions/uninstall.js +38 -0
  21. package/dist/src/commands/extensions/uninstall.js.map +1 -0
  22. package/dist/src/commands/extensions/uninstall.test.d.ts +6 -0
  23. package/dist/src/commands/extensions/uninstall.test.js +18 -0
  24. package/dist/src/commands/extensions/uninstall.test.js.map +1 -0
  25. package/dist/src/commands/extensions/update.d.ts +12 -0
  26. package/dist/src/commands/extensions/update.js +38 -0
  27. package/dist/src/commands/extensions/update.js.map +1 -0
  28. package/dist/src/commands/extensions.d.ts +7 -0
  29. package/dist/src/commands/extensions.js +29 -0
  30. package/dist/src/commands/extensions.js.map +1 -0
  31. package/dist/src/commands/mcp/add.js +1 -0
  32. package/dist/src/commands/mcp/add.js.map +1 -1
  33. package/dist/src/commands/mcp/list.js +1 -1
  34. package/dist/src/commands/mcp/list.js.map +1 -1
  35. package/dist/src/config/auth.js +1 -1
  36. package/dist/src/config/auth.js.map +1 -1
  37. package/dist/src/config/config.d.ts +8 -6
  38. package/dist/src/config/config.js +128 -82
  39. package/dist/src/config/config.js.map +1 -1
  40. package/dist/src/config/extension.d.ts +41 -4
  41. package/dist/src/config/extension.js +270 -16
  42. package/dist/src/config/extension.js.map +1 -1
  43. package/dist/src/config/extensions/variableSchema.d.ts +28 -0
  44. package/dist/src/config/extensions/variableSchema.js +18 -0
  45. package/dist/src/config/extensions/variableSchema.js.map +1 -0
  46. package/dist/src/config/extensions/variables.d.ts +17 -0
  47. package/dist/src/config/extensions/variables.js +40 -0
  48. package/dist/src/config/extensions/variables.js.map +1 -0
  49. package/dist/src/config/extensions/variables.test.d.ts +6 -0
  50. package/dist/src/config/extensions/variables.test.js +17 -0
  51. package/dist/src/config/extensions/variables.test.js.map +1 -0
  52. package/dist/src/config/keyBindings.test.js +1 -1
  53. package/dist/src/config/keyBindings.test.js.map +1 -1
  54. package/dist/src/config/sandboxConfig.d.ts +2 -2
  55. package/dist/src/config/sandboxConfig.js +5 -7
  56. package/dist/src/config/sandboxConfig.js.map +1 -1
  57. package/dist/src/config/settings.d.ts +12 -6
  58. package/dist/src/config/settings.js +398 -87
  59. package/dist/src/config/settings.js.map +1 -1
  60. package/dist/src/config/settingsSchema.d.ts +664 -393
  61. package/dist/src/config/settingsSchema.js +659 -388
  62. package/dist/src/config/settingsSchema.js.map +1 -1
  63. package/dist/src/config/settingsSchema.test.js +87 -89
  64. package/dist/src/config/settingsSchema.test.js.map +1 -1
  65. package/dist/src/config/trustedFolders.d.ts +2 -2
  66. package/dist/src/config/trustedFolders.js +6 -6
  67. package/dist/src/config/trustedFolders.js.map +1 -1
  68. package/dist/src/config/trustedFolders.test.js +9 -5
  69. package/dist/src/config/trustedFolders.test.js.map +1 -1
  70. package/dist/src/gemini.d.ts +3 -1
  71. package/dist/src/gemini.js +96 -73
  72. package/dist/src/gemini.js.map +1 -1
  73. package/dist/src/gemini.test.js +78 -24
  74. package/dist/src/gemini.test.js.map +1 -1
  75. package/dist/src/generated/git-commit.d.ts +2 -2
  76. package/dist/src/generated/git-commit.js +2 -2
  77. package/dist/src/generated/git-commit.js.map +1 -1
  78. package/dist/src/nonInteractiveCli.d.ts +1 -1
  79. package/dist/src/nonInteractiveCli.js +24 -35
  80. package/dist/src/nonInteractiveCli.js.map +1 -1
  81. package/dist/src/services/BuiltinCommandLoader.d.ts +3 -3
  82. package/dist/src/services/BuiltinCommandLoader.js +7 -3
  83. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  84. package/dist/src/services/BuiltinCommandLoader.test.js +19 -0
  85. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  86. package/dist/src/services/CommandService.d.ts +2 -2
  87. package/dist/src/services/CommandService.test.js +1 -0
  88. package/dist/src/services/CommandService.test.js.map +1 -1
  89. package/dist/src/services/FileCommandLoader.d.ts +3 -3
  90. package/dist/src/services/FileCommandLoader.js +26 -16
  91. package/dist/src/services/FileCommandLoader.js.map +1 -1
  92. package/dist/src/services/McpPromptLoader.d.ts +14 -4
  93. package/dist/src/services/McpPromptLoader.js +43 -17
  94. package/dist/src/services/McpPromptLoader.js.map +1 -1
  95. package/dist/src/services/McpPromptLoader.test.d.ts +6 -0
  96. package/dist/src/services/McpPromptLoader.test.js +114 -0
  97. package/dist/src/services/McpPromptLoader.test.js.map +1 -0
  98. package/dist/src/services/prompt-processors/argumentProcessor.d.ts +3 -3
  99. package/dist/src/services/prompt-processors/argumentProcessor.js +3 -2
  100. package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -1
  101. package/dist/src/services/prompt-processors/atFileProcessor.d.ts +12 -0
  102. package/dist/src/services/prompt-processors/atFileProcessor.js +62 -0
  103. package/dist/src/services/prompt-processors/atFileProcessor.js.map +1 -0
  104. package/dist/src/services/prompt-processors/atFileProcessor.test.d.ts +6 -0
  105. package/dist/src/services/prompt-processors/atFileProcessor.test.js +174 -0
  106. package/dist/src/services/prompt-processors/atFileProcessor.test.js.map +1 -0
  107. package/dist/src/services/prompt-processors/injectionParser.d.ts +29 -0
  108. package/dist/src/services/prompt-processors/injectionParser.js +60 -0
  109. package/dist/src/services/prompt-processors/injectionParser.js.map +1 -0
  110. package/dist/src/services/prompt-processors/injectionParser.test.d.ts +6 -0
  111. package/dist/src/services/prompt-processors/injectionParser.test.js +189 -0
  112. package/dist/src/services/prompt-processors/injectionParser.test.js.map +1 -0
  113. package/dist/src/services/prompt-processors/shellProcessor.d.ts +4 -12
  114. package/dist/src/services/prompt-processors/shellProcessor.js +17 -58
  115. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  116. package/dist/src/services/prompt-processors/types.d.ts +13 -8
  117. package/dist/src/services/prompt-processors/types.js +4 -0
  118. package/dist/src/services/prompt-processors/types.js.map +1 -1
  119. package/dist/src/services/types.d.ts +1 -1
  120. package/dist/src/test-utils/customMatchers.js +0 -6
  121. package/dist/src/test-utils/customMatchers.js.map +1 -1
  122. package/dist/src/test-utils/mockCommandContext.d.ts +1 -1
  123. package/dist/src/test-utils/mockCommandContext.js +4 -1
  124. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  125. package/dist/src/test-utils/render.d.ts +1 -1
  126. package/dist/src/ui/App.d.ts +2 -2
  127. package/dist/src/ui/App.js +131 -38
  128. package/dist/src/ui/App.js.map +1 -1
  129. package/dist/src/ui/IdeIntegrationNudge.d.ts +1 -1
  130. package/dist/src/ui/IdeIntegrationNudge.js +2 -2
  131. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  132. package/dist/src/ui/colors.d.ts +1 -1
  133. package/dist/src/ui/commands/aboutCommand.d.ts +1 -1
  134. package/dist/src/ui/commands/aboutCommand.js +1 -1
  135. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  136. package/dist/src/ui/commands/agentsCommand.d.ts +1 -1
  137. package/dist/src/ui/commands/agentsCommand.js +1 -1
  138. package/dist/src/ui/commands/agentsCommand.js.map +1 -1
  139. package/dist/src/ui/commands/approvalModeCommand.d.ts +7 -0
  140. package/dist/src/ui/commands/approvalModeCommand.js +340 -0
  141. package/dist/src/ui/commands/approvalModeCommand.js.map +1 -0
  142. package/dist/src/ui/commands/approvalModeCommand.test.d.ts +6 -0
  143. package/dist/src/ui/commands/approvalModeCommand.test.js +293 -0
  144. package/dist/src/ui/commands/approvalModeCommand.test.js.map +1 -0
  145. package/dist/src/ui/commands/authCommand.d.ts +1 -1
  146. package/dist/src/ui/commands/authCommand.js.map +1 -1
  147. package/dist/src/ui/commands/chatCommand.d.ts +1 -1
  148. package/dist/src/ui/commands/chatCommand.js +4 -3
  149. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  150. package/dist/src/ui/commands/clearCommand.d.ts +1 -1
  151. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  152. package/dist/src/ui/commands/compressCommand.d.ts +1 -1
  153. package/dist/src/ui/commands/compressCommand.js +2 -0
  154. package/dist/src/ui/commands/compressCommand.js.map +1 -1
  155. package/dist/src/ui/commands/copyCommand.d.ts +1 -1
  156. package/dist/src/ui/commands/copyCommand.js +2 -2
  157. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  158. package/dist/src/ui/commands/directoryCommand.d.ts +1 -1
  159. package/dist/src/ui/commands/directoryCommand.js +20 -18
  160. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  161. package/dist/src/ui/commands/helpCommand.d.ts +1 -1
  162. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  163. package/dist/src/ui/commands/ideCommand.d.ts +2 -2
  164. package/dist/src/ui/commands/ideCommand.js +6 -8
  165. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  166. package/dist/src/ui/commands/initCommand.d.ts +1 -1
  167. package/dist/src/ui/commands/initCommand.js +3 -3
  168. package/dist/src/ui/commands/initCommand.js.map +1 -1
  169. package/dist/src/ui/commands/mcpCommand.d.ts +1 -1
  170. package/dist/src/ui/commands/mcpCommand.js +1 -1
  171. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  172. package/dist/src/ui/commands/memoryCommand.d.ts +1 -1
  173. package/dist/src/ui/commands/memoryCommand.js +6 -5
  174. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  175. package/dist/src/ui/commands/modelCommand.d.ts +7 -0
  176. package/dist/src/ui/commands/modelCommand.js +68 -0
  177. package/dist/src/ui/commands/modelCommand.js.map +1 -0
  178. package/dist/src/ui/commands/modelCommand.test.d.ts +6 -0
  179. package/dist/src/ui/commands/modelCommand.test.js +138 -0
  180. package/dist/src/ui/commands/modelCommand.test.js.map +1 -0
  181. package/dist/src/ui/commands/privacyCommand.d.ts +1 -1
  182. package/dist/src/ui/commands/privacyCommand.js.map +1 -1
  183. package/dist/src/ui/commands/restoreCommand.d.ts +1 -1
  184. package/dist/src/ui/commands/restoreCommand.js +4 -8
  185. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  186. package/dist/src/ui/commands/settingsCommand.d.ts +1 -1
  187. package/dist/src/ui/commands/settingsCommand.js.map +1 -1
  188. package/dist/src/ui/commands/setupGithubCommand.d.ts +1 -1
  189. package/dist/src/ui/commands/setupGithubCommand.js +1 -1
  190. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  191. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  192. package/dist/src/ui/commands/summaryCommand.d.ts +1 -1
  193. package/dist/src/ui/commands/summaryCommand.js +4 -4
  194. package/dist/src/ui/commands/summaryCommand.js.map +1 -1
  195. package/dist/src/ui/commands/terminalSetupCommand.d.ts +1 -1
  196. package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -1
  197. package/dist/src/ui/commands/themeCommand.d.ts +1 -1
  198. package/dist/src/ui/commands/themeCommand.js.map +1 -1
  199. package/dist/src/ui/commands/toolsCommand.js +1 -1
  200. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  201. package/dist/src/ui/commands/types.d.ts +8 -9
  202. package/dist/src/ui/commands/types.js +1 -0
  203. package/dist/src/ui/commands/types.js.map +1 -1
  204. package/dist/src/ui/commands/ums/umsInitCommand.d.ts +1 -1
  205. package/dist/src/ui/commands/ums/umsInitCommand.js +2 -2
  206. package/dist/src/ui/commands/ums/umsInitCommand.js.map +1 -1
  207. package/dist/src/ui/commands/vimCommand.d.ts +1 -1
  208. package/dist/src/ui/commands/vimCommand.js.map +1 -1
  209. package/dist/src/ui/components/AboutBox.d.ts +1 -1
  210. package/dist/src/ui/components/AuthDialog.d.ts +2 -2
  211. package/dist/src/ui/components/AuthDialog.js +7 -12
  212. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  213. package/dist/src/ui/components/AuthDialog.test.js +116 -56
  214. package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
  215. package/dist/src/ui/components/AuthInProgress.d.ts +1 -1
  216. package/dist/src/ui/components/AuthInProgress.js +0 -5
  217. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  218. package/dist/src/ui/components/AutoAcceptIndicator.d.ts +1 -1
  219. package/dist/src/ui/components/AutoAcceptIndicator.js +8 -3
  220. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
  221. package/dist/src/ui/components/ConsoleSummaryDisplay.d.ts +1 -1
  222. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +1 -1
  223. package/dist/src/ui/components/ContextSummaryDisplay.js +1 -0
  224. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  225. package/dist/src/ui/components/DetailedMessagesDisplay.d.ts +2 -2
  226. package/dist/src/ui/components/DetailedMessagesDisplay.js +1 -1
  227. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  228. package/dist/src/ui/components/EditorSettingsDialog.d.ts +4 -3
  229. package/dist/src/ui/components/EditorSettingsDialog.js +8 -11
  230. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  231. package/dist/src/ui/components/FolderTrustDialog.d.ts +2 -1
  232. package/dist/src/ui/components/FolderTrustDialog.js +10 -4
  233. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  234. package/dist/src/ui/components/FolderTrustDialog.test.js +41 -4
  235. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  236. package/dist/src/ui/components/Footer.d.ts +1 -1
  237. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +1 -1
  238. package/dist/src/ui/components/GeminiRespondingSpinner.js +5 -3
  239. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  240. package/dist/src/ui/components/Header.d.ts +1 -1
  241. package/dist/src/ui/components/Help.d.ts +2 -2
  242. package/dist/src/ui/components/Help.js +1 -1
  243. package/dist/src/ui/components/Help.js.map +1 -1
  244. package/dist/src/ui/components/HistoryItemDisplay.d.ts +5 -5
  245. package/dist/src/ui/components/HistoryItemDisplay.js +4 -1
  246. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  247. package/dist/src/ui/components/HistoryItemDisplay.test.js +2 -0
  248. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  249. package/dist/src/ui/components/InputPrompt.d.ts +5 -5
  250. package/dist/src/ui/components/InputPrompt.js +142 -20
  251. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  252. package/dist/src/ui/components/LoadingIndicator.d.ts +2 -2
  253. package/dist/src/ui/components/MemoryUsageDisplay.d.ts +1 -1
  254. package/dist/src/ui/components/MemoryUsageDisplay.js +0 -5
  255. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  256. package/dist/src/ui/components/ModelSelectionDialog.d.ts +14 -0
  257. package/dist/src/ui/components/ModelSelectionDialog.js +26 -0
  258. package/dist/src/ui/components/ModelSelectionDialog.js.map +1 -0
  259. package/dist/src/ui/components/ModelSelectionDialog.test.d.ts +6 -0
  260. package/dist/src/ui/components/ModelSelectionDialog.test.js +124 -0
  261. package/dist/src/ui/components/ModelSelectionDialog.test.js.map +1 -0
  262. package/dist/src/ui/components/ModelStatsDisplay.d.ts +1 -1
  263. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  264. package/dist/src/ui/components/ModelSwitchDialog.d.ts +15 -0
  265. package/dist/src/ui/components/ModelSwitchDialog.js +37 -0
  266. package/dist/src/ui/components/ModelSwitchDialog.js.map +1 -0
  267. package/dist/src/ui/components/ModelSwitchDialog.test.d.ts +6 -0
  268. package/dist/src/ui/components/ModelSwitchDialog.test.js +125 -0
  269. package/dist/src/ui/components/ModelSwitchDialog.test.js.map +1 -0
  270. package/dist/src/ui/components/OpenAIKeyPrompt.d.ts +1 -1
  271. package/dist/src/ui/components/OpenAIKeyPrompt.js +0 -5
  272. package/dist/src/ui/components/OpenAIKeyPrompt.js.map +1 -1
  273. package/dist/src/ui/components/PlanSummaryDisplay.d.ts +14 -0
  274. package/dist/src/ui/components/PlanSummaryDisplay.js +9 -0
  275. package/dist/src/ui/components/PlanSummaryDisplay.js.map +1 -0
  276. package/dist/src/ui/components/PrepareLabel.d.ts +1 -1
  277. package/dist/src/ui/components/QuitConfirmationDialog.d.ts +1 -1
  278. package/dist/src/ui/components/QwenOAuthProgress.d.ts +2 -2
  279. package/dist/src/ui/components/QwenOAuthProgress.js +0 -5
  280. package/dist/src/ui/components/QwenOAuthProgress.js.map +1 -1
  281. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +1 -1
  282. package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
  283. package/dist/src/ui/components/SettingsDialog.js +68 -37
  284. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  285. package/dist/src/ui/components/SettingsDialog.test.js +135 -57
  286. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  287. package/dist/src/ui/components/ShellConfirmationDialog.d.ts +1 -1
  288. package/dist/src/ui/components/ShellConfirmationDialog.js +2 -2
  289. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  290. package/dist/src/ui/components/ShellModeIndicator.d.ts +1 -1
  291. package/dist/src/ui/components/StatsDisplay.d.ts +1 -1
  292. package/dist/src/ui/components/StatsDisplay.js +3 -3
  293. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  294. package/dist/src/ui/components/SuggestionsDisplay.js +12 -4
  295. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  296. package/dist/src/ui/components/ThemeDialog.d.ts +3 -2
  297. package/dist/src/ui/components/ThemeDialog.js +5 -10
  298. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  299. package/dist/src/ui/components/Tips.d.ts +1 -1
  300. package/dist/src/ui/components/Tips.js +1 -0
  301. package/dist/src/ui/components/Tips.js.map +1 -1
  302. package/dist/src/ui/components/TodoDisplay.d.ts +1 -1
  303. package/dist/src/ui/components/TodoDisplay.test.js.map +1 -1
  304. package/dist/src/ui/components/ToolStatsDisplay.d.ts +1 -1
  305. package/dist/src/ui/components/WelcomeBackDialog.d.ts +1 -1
  306. package/dist/src/ui/components/WelcomeBackDialog.js +1 -0
  307. package/dist/src/ui/components/WelcomeBackDialog.js.map +1 -1
  308. package/dist/src/ui/components/WorkspaceMigrationDialog.d.ts +11 -0
  309. package/dist/src/ui/components/WorkspaceMigrationDialog.js +42 -0
  310. package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -0
  311. package/dist/src/ui/components/messages/CompressionMessage.d.ts +2 -2
  312. package/dist/src/ui/components/messages/CompressionMessage.js +2 -1
  313. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  314. package/dist/src/ui/components/messages/DiffRenderer.d.ts +1 -1
  315. package/dist/src/ui/components/messages/DiffRenderer.js +6 -2
  316. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  317. package/dist/src/ui/components/messages/ErrorMessage.d.ts +1 -1
  318. package/dist/src/ui/components/messages/GeminiMessage.d.ts +1 -1
  319. package/dist/src/ui/components/messages/GeminiMessage.js +2 -1
  320. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  321. package/dist/src/ui/components/messages/GeminiMessageContent.d.ts +1 -1
  322. package/dist/src/ui/components/messages/InfoMessage.d.ts +1 -1
  323. package/dist/src/ui/components/messages/SummaryMessage.d.ts +2 -2
  324. package/dist/src/ui/components/messages/ToolConfirmationMessage.d.ts +4 -3
  325. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +79 -25
  326. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  327. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +102 -2
  328. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  329. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +4 -4
  330. package/dist/src/ui/components/messages/ToolGroupMessage.js +1 -6
  331. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  332. package/dist/src/ui/components/messages/ToolGroupMessage.test.d.ts +6 -0
  333. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +259 -0
  334. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -0
  335. package/dist/src/ui/components/messages/ToolMessage.d.ts +3 -1
  336. package/dist/src/ui/components/messages/ToolMessage.js +16 -4
  337. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  338. package/dist/src/ui/components/messages/ToolMessage.test.js +3 -0
  339. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  340. package/dist/src/ui/components/messages/UserMessage.d.ts +1 -1
  341. package/dist/src/ui/components/messages/UserMessage.js +4 -2
  342. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  343. package/dist/src/ui/components/messages/UserShellMessage.d.ts +1 -1
  344. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +1 -1
  345. package/dist/src/ui/components/shared/RadioButtonSelect.js +1 -6
  346. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  347. package/dist/src/ui/components/shared/text-buffer.js +5 -49
  348. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  349. package/dist/src/ui/components/shared/vim-buffer-actions.d.ts +1 -1
  350. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -1
  351. package/dist/src/ui/components/subagents/create/AgentCreationWizard.d.ts +1 -1
  352. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js +20 -17
  353. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js.map +1 -1
  354. package/dist/src/ui/components/subagents/create/ColorSelector.js +1 -0
  355. package/dist/src/ui/components/subagents/create/ColorSelector.js.map +1 -1
  356. package/dist/src/ui/components/subagents/create/CreationSummary.d.ts +1 -1
  357. package/dist/src/ui/components/subagents/create/CreationSummary.js +2 -2
  358. package/dist/src/ui/components/subagents/create/CreationSummary.js.map +1 -1
  359. package/dist/src/ui/components/subagents/create/DescriptionInput.d.ts +1 -1
  360. package/dist/src/ui/components/subagents/create/DescriptionInput.js.map +1 -1
  361. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.d.ts +1 -1
  362. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js +1 -1
  363. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js.map +1 -1
  364. package/dist/src/ui/components/subagents/create/LocationSelector.d.ts +1 -1
  365. package/dist/src/ui/components/subagents/create/LocationSelector.js +2 -2
  366. package/dist/src/ui/components/subagents/create/LocationSelector.js.map +1 -1
  367. package/dist/src/ui/components/subagents/create/TextEntryStep.d.ts +1 -1
  368. package/dist/src/ui/components/subagents/create/ToolSelector.d.ts +1 -1
  369. package/dist/src/ui/components/subagents/create/ToolSelector.js.map +1 -1
  370. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.d.ts +1 -1
  371. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js +1 -0
  372. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js.map +1 -1
  373. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.d.ts +2 -2
  374. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js +1 -0
  375. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js.map +1 -1
  376. package/dist/src/ui/components/subagents/manage/AgentEditStep.d.ts +1 -1
  377. package/dist/src/ui/components/subagents/manage/AgentEditStep.js +1 -0
  378. package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +1 -1
  379. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.d.ts +1 -1
  380. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +2 -1
  381. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +1 -1
  382. package/dist/src/ui/components/subagents/manage/AgentViewerStep.d.ts +1 -1
  383. package/dist/src/ui/components/subagents/manage/AgentViewerStep.js +1 -0
  384. package/dist/src/ui/components/subagents/manage/AgentViewerStep.js.map +1 -1
  385. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.d.ts +1 -1
  386. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js +16 -24
  387. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js.map +1 -1
  388. package/dist/src/ui/components/subagents/reducers.d.ts +1 -1
  389. package/dist/src/ui/components/subagents/reducers.js +1 -0
  390. package/dist/src/ui/components/subagents/reducers.js.map +1 -1
  391. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.d.ts +4 -3
  392. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +22 -12
  393. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js.map +1 -1
  394. package/dist/src/ui/components/subagents/types.d.ts +1 -1
  395. package/dist/src/ui/components/ums/UMSKeyPrompt.js +2 -2
  396. package/dist/src/ui/components/ums/UMSKeyPrompt.js.map +1 -1
  397. package/dist/src/ui/components/ums/useUMSAuth.d.ts +1 -1
  398. package/dist/src/ui/components/ums/useUMSAuth.js +1 -1
  399. package/dist/src/ui/components/ums/useUMSAuth.js.map +1 -1
  400. package/dist/src/ui/constants.d.ts +8 -0
  401. package/dist/src/ui/constants.js +9 -0
  402. package/dist/src/ui/constants.js.map +1 -1
  403. package/dist/src/ui/contexts/KeypressContext.d.ts +4 -3
  404. package/dist/src/ui/contexts/KeypressContext.js +30 -47
  405. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  406. package/dist/src/ui/contexts/KeypressContext.test.js +184 -44
  407. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  408. package/dist/src/ui/contexts/OverflowContext.d.ts +1 -1
  409. package/dist/src/ui/contexts/OverflowContext.js +0 -5
  410. package/dist/src/ui/contexts/OverflowContext.js.map +1 -1
  411. package/dist/src/ui/contexts/SessionContext.d.ts +2 -2
  412. package/dist/src/ui/contexts/SessionContext.js +1 -6
  413. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  414. package/dist/src/ui/contexts/SettingsContext.d.ts +1 -1
  415. package/dist/src/ui/contexts/StreamingContext.d.ts +1 -1
  416. package/dist/src/ui/contexts/VimModeContext.d.ts +1 -1
  417. package/dist/src/ui/contexts/VimModeContext.js +4 -4
  418. package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
  419. package/dist/src/ui/hooks/atCommandProcessor.d.ts +3 -3
  420. package/dist/src/ui/hooks/atCommandProcessor.js +3 -4
  421. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  422. package/dist/src/ui/hooks/atCommandProcessor.test.js +16 -8
  423. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  424. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +3 -3
  425. package/dist/src/ui/hooks/shellCommandProcessor.js +7 -6
  426. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  427. package/dist/src/ui/hooks/shellCommandProcessor.test.js +5 -4
  428. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  429. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -5
  430. package/dist/src/ui/hooks/slashCommandProcessor.js +11 -5
  431. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  432. package/dist/src/ui/hooks/useAtCompletion.d.ts +2 -2
  433. package/dist/src/ui/hooks/useAtCompletion.js +3 -2
  434. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  435. package/dist/src/ui/hooks/useAuthCommand.d.ts +2 -2
  436. package/dist/src/ui/hooks/useAuthCommand.js +6 -5
  437. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  438. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +4 -2
  439. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +16 -15
  440. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  441. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +88 -16
  442. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
  443. package/dist/src/ui/hooks/useCommandCompletion.d.ts +8 -5
  444. package/dist/src/ui/hooks/useCommandCompletion.js +30 -9
  445. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  446. package/dist/src/ui/hooks/useCompletion.d.ts +1 -1
  447. package/dist/src/ui/hooks/useCompletion.js +1 -1
  448. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  449. package/dist/src/ui/hooks/useConsoleMessages.d.ts +1 -1
  450. package/dist/src/ui/hooks/useDialogClose.d.ts +1 -1
  451. package/dist/src/ui/hooks/useEditorSettings.d.ts +2 -2
  452. package/dist/src/ui/hooks/useEditorSettings.js.map +1 -1
  453. package/dist/src/ui/hooks/useEditorSettings.test.js.map +1 -1
  454. package/dist/src/ui/hooks/useFolderTrust.d.ts +2 -1
  455. package/dist/src/ui/hooks/useFolderTrust.js +19 -10
  456. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  457. package/dist/src/ui/hooks/useGeminiStream.d.ts +9 -5
  458. package/dist/src/ui/hooks/useGeminiStream.js +87 -57
  459. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  460. package/dist/src/ui/hooks/useGitBranchName.js +1 -1
  461. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  462. package/dist/src/ui/hooks/useGitBranchName.test.js +169 -233
  463. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  464. package/dist/src/ui/hooks/useHistoryManager.d.ts +1 -1
  465. package/dist/src/ui/hooks/useKeypress.d.ts +2 -2
  466. package/dist/src/ui/hooks/useKeypress.js +1 -1
  467. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  468. package/dist/src/ui/hooks/useLaunchEditor.js +2 -2
  469. package/dist/src/ui/hooks/useLaunchEditor.js.map +1 -1
  470. package/dist/src/ui/hooks/useLogger.d.ts +2 -1
  471. package/dist/src/ui/hooks/useLogger.js +3 -3
  472. package/dist/src/ui/hooks/useLogger.js.map +1 -1
  473. package/dist/src/ui/hooks/usePrivacySettings.d.ts +1 -1
  474. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  475. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +1 -1
  476. package/dist/src/ui/hooks/usePromptCompletion.d.ts +23 -0
  477. package/dist/src/ui/hooks/usePromptCompletion.js +177 -0
  478. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -0
  479. package/dist/src/ui/hooks/useQwenAuth.d.ts +1 -1
  480. package/dist/src/ui/hooks/useQwenAuth.js +1 -1
  481. package/dist/src/ui/hooks/useQwenAuth.js.map +1 -1
  482. package/dist/src/ui/hooks/useQwenAuth.test.js +5 -1
  483. package/dist/src/ui/hooks/useQwenAuth.test.js.map +1 -1
  484. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +2 -2
  485. package/dist/src/ui/hooks/useReactToolScheduler.js +2 -3
  486. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  487. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +2 -2
  488. package/dist/src/ui/hooks/useShellHistory.d.ts +2 -1
  489. package/dist/src/ui/hooks/useShellHistory.js +9 -10
  490. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  491. package/dist/src/ui/hooks/useShellHistory.test.js +30 -5
  492. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -1
  493. package/dist/src/ui/hooks/useShowMemoryCommand.d.ts +3 -3
  494. package/dist/src/ui/hooks/useShowMemoryCommand.js +1 -1
  495. package/dist/src/ui/hooks/useShowMemoryCommand.js.map +1 -1
  496. package/dist/src/ui/hooks/useSlashCompletion.d.ts +2 -2
  497. package/dist/src/ui/hooks/useThemeCommand.d.ts +1 -1
  498. package/dist/src/ui/hooks/useThemeCommand.js +8 -8
  499. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  500. package/dist/src/ui/hooks/useToolScheduler.test.js +41 -37
  501. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  502. package/dist/src/ui/hooks/useVisionAutoSwitch.d.ts +47 -0
  503. package/dist/src/ui/hooks/useVisionAutoSwitch.js +262 -0
  504. package/dist/src/ui/hooks/useVisionAutoSwitch.js.map +1 -0
  505. package/dist/src/ui/hooks/useVisionAutoSwitch.test.d.ts +6 -0
  506. package/dist/src/ui/hooks/useVisionAutoSwitch.test.js +515 -0
  507. package/dist/src/ui/hooks/useVisionAutoSwitch.test.js.map +1 -0
  508. package/dist/src/ui/hooks/useWelcomeBack.js +2 -1
  509. package/dist/src/ui/hooks/useWelcomeBack.js.map +1 -1
  510. package/dist/src/ui/hooks/useWorkspaceMigration.d.ts +13 -0
  511. package/dist/src/ui/hooks/useWorkspaceMigration.js +53 -0
  512. package/dist/src/ui/hooks/useWorkspaceMigration.js.map +1 -0
  513. package/dist/src/ui/keyMatchers.d.ts +2 -1
  514. package/dist/src/ui/keyMatchers.js +1 -1
  515. package/dist/src/ui/keyMatchers.js.map +1 -1
  516. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  517. package/dist/src/ui/models/availableModels.d.ts +29 -0
  518. package/dist/src/ui/models/availableModels.js +40 -0
  519. package/dist/src/ui/models/availableModels.js.map +1 -0
  520. package/dist/src/ui/privacy/CloudFreePrivacyNotice.d.ts +1 -1
  521. package/dist/src/ui/semantic-colors.d.ts +1 -1
  522. package/dist/src/ui/textConstants.d.ts +9 -0
  523. package/dist/src/ui/textConstants.js +10 -0
  524. package/dist/src/ui/textConstants.js.map +1 -0
  525. package/dist/src/ui/themes/atom-one-dark.js +1 -2
  526. package/dist/src/ui/themes/atom-one-dark.js.map +1 -1
  527. package/dist/src/ui/themes/ayu-light.js +1 -2
  528. package/dist/src/ui/themes/ayu-light.js.map +1 -1
  529. package/dist/src/ui/themes/ayu.js +1 -2
  530. package/dist/src/ui/themes/ayu.js.map +1 -1
  531. package/dist/src/ui/themes/default-light.js +1 -2
  532. package/dist/src/ui/themes/default-light.js.map +1 -1
  533. package/dist/src/ui/themes/default.js +1 -2
  534. package/dist/src/ui/themes/default.js.map +1 -1
  535. package/dist/src/ui/themes/dracula.js +1 -2
  536. package/dist/src/ui/themes/dracula.js.map +1 -1
  537. package/dist/src/ui/themes/github-dark.js +1 -2
  538. package/dist/src/ui/themes/github-dark.js.map +1 -1
  539. package/dist/src/ui/themes/github-light.js +1 -2
  540. package/dist/src/ui/themes/github-light.js.map +1 -1
  541. package/dist/src/ui/themes/googlecode.js +2 -3
  542. package/dist/src/ui/themes/googlecode.js.map +1 -1
  543. package/dist/src/ui/themes/no-color.js.map +1 -1
  544. package/dist/src/ui/themes/shades-of-purple.js +1 -2
  545. package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
  546. package/dist/src/ui/themes/theme-manager.d.ts +4 -2
  547. package/dist/src/ui/themes/theme-manager.js +73 -6
  548. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  549. package/dist/src/ui/themes/theme-manager.test.js +60 -1
  550. package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
  551. package/dist/src/ui/themes/theme.d.ts +3 -3
  552. package/dist/src/ui/themes/theme.js +30 -2
  553. package/dist/src/ui/themes/theme.js.map +1 -1
  554. package/dist/src/ui/themes/xcode.js +1 -2
  555. package/dist/src/ui/themes/xcode.js.map +1 -1
  556. package/dist/src/ui/types.d.ts +4 -2
  557. package/dist/src/ui/types.js.map +1 -1
  558. package/dist/src/ui/utils/CodeColorizer.d.ts +2 -2
  559. package/dist/src/ui/utils/CodeColorizer.js +1 -1
  560. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  561. package/dist/src/ui/utils/ConsolePatcher.d.ts +1 -1
  562. package/dist/src/ui/utils/ConsolePatcher.js +1 -1
  563. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  564. package/dist/src/ui/utils/MarkdownDisplay.js +1 -1
  565. package/dist/src/ui/utils/MarkdownDisplay.test.js +12 -2
  566. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  567. package/dist/src/ui/utils/clipboardUtils.js +4 -4
  568. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  569. package/dist/src/ui/utils/commandUtils.d.ts +1 -1
  570. package/dist/src/ui/utils/commandUtils.js +52 -14
  571. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  572. package/dist/src/ui/utils/commandUtils.test.js +76 -21
  573. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  574. package/dist/src/ui/utils/computeStats.d.ts +1 -1
  575. package/dist/src/ui/utils/platformConstants.d.ts +7 -0
  576. package/dist/src/ui/utils/platformConstants.js +7 -0
  577. package/dist/src/ui/utils/platformConstants.js.map +1 -1
  578. package/dist/src/ui/utils/terminalSetup.js +5 -5
  579. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  580. package/dist/src/ui/utils/textUtils.d.ts +18 -0
  581. package/dist/src/ui/utils/textUtils.js +44 -0
  582. package/dist/src/ui/utils/textUtils.js.map +1 -1
  583. package/dist/src/ui/utils/updateCheck.d.ts +1 -1
  584. package/dist/src/ui/utils/updateCheck.js +8 -2
  585. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  586. package/dist/src/utils/cleanup.js +5 -4
  587. package/dist/src/utils/cleanup.js.map +1 -1
  588. package/dist/src/utils/dialogScopeUtils.d.ts +2 -1
  589. package/dist/src/utils/dialogScopeUtils.js.map +1 -1
  590. package/dist/src/utils/errors.d.ts +6 -0
  591. package/dist/src/utils/errors.js +12 -0
  592. package/dist/src/utils/errors.js.map +1 -0
  593. package/dist/src/utils/events.d.ts +1 -1
  594. package/dist/src/utils/events.js +1 -1
  595. package/dist/src/utils/events.js.map +1 -1
  596. package/dist/src/utils/gitUtils.js +1 -1
  597. package/dist/src/utils/gitUtils.js.map +1 -1
  598. package/dist/src/utils/gitUtils.test.js +4 -4
  599. package/dist/src/utils/gitUtils.test.js.map +1 -1
  600. package/dist/src/utils/handleAutoUpdate.d.ts +4 -4
  601. package/dist/src/utils/handleAutoUpdate.js +4 -3
  602. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  603. package/dist/src/utils/installationInfo.js +8 -8
  604. package/dist/src/utils/installationInfo.js.map +1 -1
  605. package/dist/src/utils/installationInfo.test.js +9 -9
  606. package/dist/src/utils/installationInfo.test.js.map +1 -1
  607. package/dist/src/utils/package.js +2 -2
  608. package/dist/src/utils/package.js.map +1 -1
  609. package/dist/src/utils/readStdin.js +15 -0
  610. package/dist/src/utils/readStdin.js.map +1 -1
  611. package/dist/src/utils/readStdin.test.d.ts +6 -0
  612. package/dist/src/utils/readStdin.test.js +88 -0
  613. package/dist/src/utils/readStdin.test.js.map +1 -0
  614. package/dist/src/utils/resolvePath.js +2 -2
  615. package/dist/src/utils/resolvePath.js.map +1 -1
  616. package/dist/src/utils/sandbox.d.ts +2 -2
  617. package/dist/src/utils/sandbox.js +20 -27
  618. package/dist/src/utils/sandbox.js.map +1 -1
  619. package/dist/src/utils/settingsUtils.d.ts +2 -2
  620. package/dist/src/utils/settingsUtils.js +2 -8
  621. package/dist/src/utils/settingsUtils.js.map +1 -1
  622. package/dist/src/utils/settingsUtils.test.js +145 -148
  623. package/dist/src/utils/settingsUtils.test.js.map +1 -1
  624. package/dist/src/utils/spawnWrapper.d.ts +1 -1
  625. package/dist/src/utils/spawnWrapper.js +1 -1
  626. package/dist/src/utils/spawnWrapper.js.map +1 -1
  627. package/dist/src/utils/startupWarnings.js +2 -2
  628. package/dist/src/utils/startupWarnings.js.map +1 -1
  629. package/dist/src/utils/updateEventEmitter.d.ts +1 -1
  630. package/dist/src/utils/updateEventEmitter.js +1 -1
  631. package/dist/src/utils/updateEventEmitter.js.map +1 -1
  632. package/dist/src/utils/userStartupWarnings.js +3 -3
  633. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  634. package/dist/src/utils/userStartupWarnings.test.js +3 -3
  635. package/dist/src/utils/userStartupWarnings.test.js.map +1 -1
  636. package/dist/src/validateNonInterActiveAuth.d.ts +1 -1
  637. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  638. package/dist/src/zed-integration/acp.d.ts +1 -1
  639. package/dist/src/zed-integration/acp.js +2 -1
  640. package/dist/src/zed-integration/acp.js.map +1 -1
  641. package/dist/src/zed-integration/fileSystemService.d.ts +2 -2
  642. package/dist/src/zed-integration/schema.d.ts +592 -592
  643. package/dist/src/zed-integration/zedIntegration.d.ts +4 -4
  644. package/dist/src/zed-integration/zedIntegration.js +43 -21
  645. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  646. package/dist/tsconfig.tsbuildinfo +1 -1
  647. package/package.json +9 -6
@@ -6,20 +6,26 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  */
7
7
  import { Box, Text } from 'ink';
8
8
  import { Colors } from '../colors.js';
9
- import { RadioButtonSelect, } from './shared/RadioButtonSelect.js';
9
+ import { RadioButtonSelect } from './shared/RadioButtonSelect.js';
10
10
  import { useKeypress } from '../hooks/useKeypress.js';
11
+ import * as process from 'node:process';
11
12
  export var FolderTrustChoice;
12
13
  (function (FolderTrustChoice) {
13
14
  FolderTrustChoice["TRUST_FOLDER"] = "trust_folder";
14
15
  FolderTrustChoice["TRUST_PARENT"] = "trust_parent";
15
16
  FolderTrustChoice["DO_NOT_TRUST"] = "do_not_trust";
16
17
  })(FolderTrustChoice || (FolderTrustChoice = {}));
17
- export const FolderTrustDialog = ({ onSelect, }) => {
18
+ export const FolderTrustDialog = ({ onSelect, isRestarting, }) => {
18
19
  useKeypress((key) => {
19
20
  if (key.name === 'escape') {
20
21
  onSelect(FolderTrustChoice.DO_NOT_TRUST);
21
22
  }
22
- }, { isActive: true });
23
+ }, { isActive: !isRestarting });
24
+ useKeypress((key) => {
25
+ if (key.name === 'r') {
26
+ process.exit(0);
27
+ }
28
+ }, { isActive: !!isRestarting });
23
29
  const options = [
24
30
  {
25
31
  label: 'Trust folder',
@@ -34,6 +40,6 @@ export const FolderTrustDialog = ({ onSelect, }) => {
34
40
  value: FolderTrustChoice.DO_NOT_TRUST,
35
41
  },
36
42
  ];
37
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: Colors.AccentYellow, padding: 1, width: "100%", marginLeft: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Do you trust this folder?" }), _jsx(Text, { children: "Trusting a folder allows Gemini to execute commands it suggests. This is a security feature to prevent accidental execution in untrusted directories." })] }), _jsx(RadioButtonSelect, { items: options, onSelect: onSelect, isFocused: true })] }));
43
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: Colors.AccentYellow, padding: 1, width: "100%", marginLeft: 1, children: [_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Text, { bold: true, children: "Do you trust this folder?" }), _jsx(Text, { children: "Trusting a folder allows UMS Code to execute commands it suggests. This is a security feature to prevent accidental execution in untrusted directories." })] }), _jsx(RadioButtonSelect, { items: options, onSelect: onSelect, isFocused: !isRestarting })] }), isRestarting && (_jsx(Box, { marginLeft: 1, marginTop: 1, children: _jsx(Text, { color: Colors.AccentYellow, children: "To see changes, UMS Code must be restarted. Press r to exit and apply changes now." }) }))] }));
38
44
  };
39
45
  //# sourceMappingURL=FolderTrustDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FolderTrustDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/FolderTrustDialog.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,iBAAiB,GAElB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;AAC/B,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAMD,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAClE,QAAQ,GACT,EAAE,EAAE;IACH,WAAW,CACT,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IAEF,MAAM,OAAO,GAA8C;QACzD;YACE,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,iBAAiB,CAAC,YAAY;SACtC;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE,iBAAiB,CAAC,YAAY;SACtC;QACD;YACE,KAAK,EAAE,mBAAmB;YAC1B,KAAK,EAAE,iBAAiB,CAAC,YAAY;SACtC;KACF,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,YAAY,EAChC,OAAO,EAAE,CAAC,EACV,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,CAAC,aAEb,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,gDAAiC,EAC3C,KAAC,IAAI,wKAIE,IACH,EAEN,KAAC,iBAAiB,IAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,SAAG,IAC/D,CACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"FolderTrustDialog.js","sourceRoot":"","sources":["../../../../src/ui/components/FolderTrustDialog.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAExC,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;IAC7B,kDAA6B,CAAA;AAC/B,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAOD,MAAM,CAAC,MAAM,iBAAiB,GAAqC,CAAC,EAClE,QAAQ,EACR,YAAY,GACb,EAAE,EAAE;IACH,WAAW,CACT,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,CAC5B,CAAC;IAEF,WAAW,CACT,CAAC,GAAG,EAAE,EAAE;QACN,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,CAAC,YAAY,EAAE,CAC7B,CAAC;IAEF,MAAM,OAAO,GAA8C;QACzD;YACE,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,iBAAiB,CAAC,YAAY;SACtC;QACD;YACE,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE,iBAAiB,CAAC,YAAY;SACtC;QACD;YACE,KAAK,EAAE,mBAAmB;YAC1B,KAAK,EAAE,iBAAiB,CAAC,YAAY;SACtC;KACF,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,MAAM,CAAC,YAAY,EAChC,OAAO,EAAE,CAAC,EACV,KAAK,EAAC,MAAM,EACZ,UAAU,EAAE,CAAC,aAEb,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,KAAC,IAAI,IAAC,IAAI,gDAAiC,EAC3C,KAAC,IAAI,0KAIE,IACH,EAEN,KAAC,iBAAiB,IAChB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,CAAC,YAAY,GACxB,IACE,EACL,YAAY,IAAI,CACf,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YAC9B,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,YAAY,mGAGzB,GACH,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -8,19 +8,56 @@ import { renderWithProviders } from '../../test-utils/render.js';
8
8
  import { waitFor } from '@testing-library/react';
9
9
  import { vi } from 'vitest';
10
10
  import { FolderTrustDialog, FolderTrustChoice } from './FolderTrustDialog.js';
11
+ import * as process from 'node:process';
12
+ vi.mock('process', async () => {
13
+ const actual = await vi.importActual('process');
14
+ return {
15
+ ...actual,
16
+ exit: vi.fn(),
17
+ };
18
+ });
11
19
  describe('FolderTrustDialog', () => {
20
+ beforeEach(() => {
21
+ vi.clearAllMocks();
22
+ });
12
23
  it('should render the dialog with title and description', () => {
13
24
  const { lastFrame } = renderWithProviders(_jsx(FolderTrustDialog, { onSelect: vi.fn() }));
14
25
  expect(lastFrame()).toContain('Do you trust this folder?');
15
- expect(lastFrame()).toContain('Trusting a folder allows Gemini to execute commands it suggests.');
26
+ expect(lastFrame()).toContain('Trusting a folder allows Qwen Code to execute commands it suggests.');
16
27
  });
17
- it('should call onSelect with DO_NOT_TRUST when escape is pressed', async () => {
28
+ it('should call onSelect with DO_NOT_TRUST when escape is pressed and not restarting', async () => {
18
29
  const onSelect = vi.fn();
19
- const { stdin } = renderWithProviders(_jsx(FolderTrustDialog, { onSelect: onSelect }));
20
- stdin.write('\x1b');
30
+ const { stdin } = renderWithProviders(_jsx(FolderTrustDialog, { onSelect: onSelect, isRestarting: false }));
31
+ stdin.write('\x1b'); // escape key
21
32
  await waitFor(() => {
22
33
  expect(onSelect).toHaveBeenCalledWith(FolderTrustChoice.DO_NOT_TRUST);
23
34
  });
24
35
  });
36
+ it('should not call onSelect when escape is pressed and is restarting', async () => {
37
+ const onSelect = vi.fn();
38
+ const { stdin } = renderWithProviders(_jsx(FolderTrustDialog, { onSelect: onSelect, isRestarting: true }));
39
+ stdin.write('\x1b'); // escape key
40
+ await waitFor(() => {
41
+ expect(onSelect).not.toHaveBeenCalled();
42
+ });
43
+ });
44
+ it('should display restart message when isRestarting is true', () => {
45
+ const { lastFrame } = renderWithProviders(_jsx(FolderTrustDialog, { onSelect: vi.fn(), isRestarting: true }));
46
+ expect(lastFrame()).toContain('To see changes, Qwen Code must be restarted');
47
+ });
48
+ it('should call process.exit when "r" is pressed and isRestarting is true', async () => {
49
+ const { stdin } = renderWithProviders(_jsx(FolderTrustDialog, { onSelect: vi.fn(), isRestarting: true }));
50
+ stdin.write('r');
51
+ await waitFor(() => {
52
+ expect(process.exit).toHaveBeenCalledWith(0);
53
+ });
54
+ });
55
+ it('should not call process.exit when "r" is pressed and isRestarting is false', async () => {
56
+ const { stdin } = renderWithProviders(_jsx(FolderTrustDialog, { onSelect: vi.fn(), isRestarting: false }));
57
+ stdin.write('r');
58
+ await waitFor(() => {
59
+ expect(process.exit).not.toHaveBeenCalled();
60
+ });
61
+ });
25
62
  });
26
63
  //# sourceMappingURL=FolderTrustDialog.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FolderTrustDialog.test.js","sourceRoot":"","sources":["../../../../src/ui/components/FolderTrustDialog.test.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE9E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,EAAE,SAAS,EAAE,GAAG,mBAAmB,CACvC,KAAC,iBAAiB,IAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,GAAI,CACzC,CAAC;QAEF,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;QAC3D,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAC3B,kEAAkE,CACnE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,CACnC,KAAC,iBAAiB,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAC1C,CAAC;QAEF,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEpB,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"FolderTrustDialog.test.js","sourceRoot":"","sources":["../../../../src/ui/components/FolderTrustDialog.test.tsx"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import React from 'react';
6
+ import type React from 'react';
7
7
  interface FooterProps {
8
8
  model: string;
9
9
  targetDir: string;
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import React from 'react';
6
+ import type React from 'react';
7
7
  import type { SpinnerName } from 'cli-spinners';
8
8
  interface GeminiRespondingSpinnerProps {
9
9
  /**
@@ -1,15 +1,17 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Text } from 'ink';
2
+ import { Text, useIsScreenReaderEnabled } from 'ink';
3
3
  import Spinner from 'ink-spinner';
4
4
  import { useStreamingContext } from '../contexts/StreamingContext.js';
5
5
  import { StreamingState } from '../types.js';
6
+ import { SCREEN_READER_LOADING, SCREEN_READER_RESPONDING, } from '../textConstants.js';
6
7
  export const GeminiRespondingSpinner = ({ nonRespondingDisplay, spinnerType = 'dots' }) => {
7
8
  const streamingState = useStreamingContext();
9
+ const isScreenReaderEnabled = useIsScreenReaderEnabled();
8
10
  if (streamingState === StreamingState.Responding) {
9
- return _jsx(Spinner, { type: spinnerType });
11
+ return isScreenReaderEnabled ? (_jsx(Text, { children: SCREEN_READER_RESPONDING })) : (_jsx(Spinner, { type: spinnerType }));
10
12
  }
11
13
  else if (nonRespondingDisplay) {
12
- return _jsx(Text, { children: nonRespondingDisplay });
14
+ return isScreenReaderEnabled ? (_jsx(Text, { children: SCREEN_READER_LOADING })) : (_jsx(Text, { children: nonRespondingDisplay }));
13
15
  }
14
16
  return null;
15
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"GeminiRespondingSpinner.js","sourceRoot":"","sources":["../../../../src/ui/components/GeminiRespondingSpinner.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,OAAO,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAW7C,MAAM,CAAC,MAAM,uBAAuB,GAEhC,CAAC,EAAE,oBAAoB,EAAE,WAAW,GAAG,MAAM,EAAE,EAAE,EAAE;IACrD,MAAM,cAAc,GAAG,mBAAmB,EAAE,CAAC;IAE7C,IAAI,cAAc,KAAK,cAAc,CAAC,UAAU,EAAE,CAAC;QACjD,OAAO,KAAC,OAAO,IAAC,IAAI,EAAE,WAAW,GAAI,CAAC;IACxC,CAAC;SAAM,IAAI,oBAAoB,EAAE,CAAC;QAChC,OAAO,KAAC,IAAI,cAAE,oBAAoB,GAAQ,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
1
+ {"version":3,"file":"GeminiRespondingSpinner.js","sourceRoot":"","sources":["../../../../src/ui/components/GeminiRespondingSpinner.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,OAAO,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAW7B,MAAM,CAAC,MAAM,uBAAuB,GAEhC,CAAC,EAAE,oBAAoB,EAAE,WAAW,GAAG,MAAM,EAAE,EAAE,EAAE;IACrD,MAAM,cAAc,GAAG,mBAAmB,EAAE,CAAC;IAC7C,MAAM,qBAAqB,GAAG,wBAAwB,EAAE,CAAC;IACzD,IAAI,cAAc,KAAK,cAAc,CAAC,UAAU,EAAE,CAAC;QACjD,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAC7B,KAAC,IAAI,cAAE,wBAAwB,GAAQ,CACxC,CAAC,CAAC,CAAC,CACF,KAAC,OAAO,IAAC,IAAI,EAAE,WAAW,GAAI,CAC/B,CAAC;IACJ,CAAC;SAAM,IAAI,oBAAoB,EAAE,CAAC;QAChC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAC7B,KAAC,IAAI,cAAE,qBAAqB,GAAQ,CACrC,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,cAAE,oBAAoB,GAAQ,CACpC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -3,7 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import React from 'react';
6
+ import type React from 'react';
7
7
  interface HeaderProps {
8
8
  customAsciiArt?: string;
9
9
  version: string;
@@ -3,8 +3,8 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import React from 'react';
7
- import { SlashCommand } from '../commands/types.js';
6
+ import type React from 'react';
7
+ import type { SlashCommand } from '../commands/types.js';
8
8
  interface Help {
9
9
  commands: readonly SlashCommand[];
10
10
  }
@@ -6,5 +6,5 @@ export const Help = ({ commands }) => (_jsxs(Box, { flexDirection: "column", mar
6
6
  .map((command) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: Colors.Foreground, children: [_jsxs(Text, { bold: true, color: Colors.AccentPurple, children: [' ', "/", command.name] }), command.description && ' - ' + command.description] }), command.subCommands &&
7
7
  command.subCommands.map((subCommand) => (_jsxs(Text, { color: Colors.Foreground, children: [_jsxs(Text, { bold: true, color: Colors.AccentPurple, children: [' ', subCommand.name] }), subCommand.description && ' - ' + subCommand.description] }, subCommand.name)))] }, command.name))), _jsxs(Text, { color: Colors.Foreground, children: [_jsxs(Text, { bold: true, color: Colors.AccentPurple, children: [' ', "!", ' '] }), "- shell command"] }), _jsx(Box, { height: 1 }), _jsx(Text, { bold: true, color: Colors.Foreground, children: "Keyboard Shortcuts:" }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Alt+Left/Right" }), ' ', "- Jump through words in the input"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Ctrl+C" }), ' ', "- Close dialogs, cancel requests, or quit application"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: process.platform === 'win32' ? 'Ctrl+Enter' : 'Ctrl+J' }), ' ', process.platform === 'linux'
8
8
  ? '- New line (Alt+Enter works for certain linux distros)'
9
- : '- New line'] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Ctrl+L" }), ' ', "- Clear the screen"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: process.platform === 'darwin' ? 'Ctrl+X / Meta+Enter' : 'Ctrl+X' }), ' ', "- Open input in external editor"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Ctrl+Y" }), ' ', "- Toggle YOLO mode"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Enter" }), ' ', "- Send message"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Esc" }), ' ', "- Cancel operation"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Shift+Tab" }), ' ', "- Toggle auto-accepting edits"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Up/Down" }), ' ', "- Cycle through your prompt history"] }), _jsx(Box, { height: 1 }), _jsxs(Text, { color: Colors.Foreground, children: ["For a full list of shortcuts, see", ' ', _jsx(Text, { bold: true, color: Colors.AccentPurple, children: "docs/keyboard-shortcuts.md" })] })] }));
9
+ : '- New line'] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Ctrl+L" }), ' ', "- Clear the screen"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: process.platform === 'darwin' ? 'Ctrl+X / Meta+Enter' : 'Ctrl+X' }), ' ', "- Open input in external editor"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Enter" }), ' ', "- Send message"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Esc" }), ' ', "- Cancel operation / Clear input (double press)"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Shift+Tab" }), ' ', "- Cycle approval modes"] }), _jsxs(Text, { color: Colors.Foreground, children: [_jsx(Text, { bold: true, color: Colors.AccentPurple, children: "Up/Down" }), ' ', "- Cycle through your prompt history"] }), _jsx(Box, { height: 1 }), _jsxs(Text, { color: Colors.Foreground, children: ["For a full list of shortcuts, see", ' ', _jsx(Text, { bold: true, color: Colors.AccentPurple, children: "docs/keyboard-shortcuts.md" })] })] }));
10
10
  //# sourceMappingURL=Help.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Help.js","sourceRoot":"","sources":["../../../../src/ui/components/Help.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Help.js","sourceRoot":"","sources":["../../../../src/ui/components/Help.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAOtC,MAAM,CAAC,MAAM,IAAI,GAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CACpD,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,YAAY,EAAE,CAAC,EACf,WAAW,EAAE,MAAM,CAAC,IAAI,EACxB,WAAW,EAAC,OAAO,EACnB,OAAO,EAAE,CAAC,aAGV,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,UAAU,wBAE5B,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,4BAE9B,WACD,GAAG,EACT,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,kBAE9B,EAAC,GAAG,yCACyB,GAAG,EACvC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,+BAE9B,8CAEF,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,2BAE9B,kCACsB,GAAG,EAChC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,kBAE9B,EAAC,GAAG,YACJ,GAAG,EACV,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,+BAE9B,qCACyB,GAAG,EACnC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,6BAE9B,UAEF,EAEP,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAGlB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,UAAU,0BAE5B,EACN,QAAQ;aACN,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;aACxC,GAAG,CAAC,CAAC,OAAqB,EAAE,EAAE,CAAC,CAC9B,MAAC,GAAG,IAAoB,aAAa,EAAC,QAAQ,aAC5C,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,aAClC,GAAG,OACF,OAAO,CAAC,IAAI,IACT,EACN,OAAO,CAAC,WAAW,IAAI,KAAK,GAAG,OAAO,CAAC,WAAW,IAC9C,EACN,OAAO,CAAC,WAAW;oBAClB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CACtC,MAAC,IAAI,IAAuB,KAAK,EAAE,MAAM,CAAC,UAAU,aAClD,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,aAClC,KAAK,EACL,UAAU,CAAC,IAAI,IACX,EACN,UAAU,CAAC,WAAW,IAAI,KAAK,GAAG,UAAU,CAAC,WAAW,KALhD,UAAU,CAAC,IAAI,CAMnB,CACR,CAAC,KAjBI,OAAO,CAAC,IAAI,CAkBhB,CACP,CAAC,EACJ,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,aAClC,GAAG,OACF,GAAG,IACA,uBAEF,EAEP,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAGlB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,UAAU,oCAE5B,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,+BAE9B,EAAC,GAAG,yCAEN,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,uBAE9B,EAAC,GAAG,6DAEN,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YAClC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,GAClD,EAAC,GAAG,EACV,OAAO,CAAC,QAAQ,KAAK,OAAO;oBAC3B,CAAC,CAAC,wDAAwD;oBAC1D,CAAC,CAAC,YAAY,IACX,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,uBAE9B,EAAC,GAAG,0BAEN,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,YAClC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,GAC5D,EAAC,GAAG,uCAEN,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,sBAE9B,EAAC,GAAG,sBAEN,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,oBAE9B,EAAC,GAAG,uDAEN,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,0BAE9B,EAAC,GAAG,8BAEN,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,aAC5B,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,wBAE9B,EAAC,GAAG,2CAEN,EACP,KAAC,GAAG,IAAC,MAAM,EAAE,CAAC,GAAI,EAClB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,UAAU,kDACM,GAAG,EACrC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,MAAM,CAAC,YAAY,2CAE9B,IACF,IACH,CACP,CAAC"}
@@ -3,18 +3,18 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import React from 'react';
6
+ import type React from 'react';
7
7
  import type { HistoryItem } from '../types.js';
8
- import { Config } from '@umsai/ums-code-core';
9
- import { SlashCommand } from '../commands/types.js';
8
+ import type { Config } from '@umsai/ums-code-core';
9
+ import type { SlashCommand } from '../commands/types.js';
10
10
  interface HistoryItemDisplayProps {
11
11
  item: HistoryItem;
12
12
  availableTerminalHeight?: number;
13
13
  terminalWidth: number;
14
14
  isPending: boolean;
15
- config?: Config;
15
+ config: Config;
16
16
  isFocused?: boolean;
17
17
  commands?: readonly SlashCommand[];
18
18
  }
19
- export declare const HistoryItemDisplay: React.FC<HistoryItemDisplayProps>;
19
+ export declare const HistoryItemDisplay: React.NamedExoticComponent<HistoryItemDisplayProps>;
20
20
  export {};
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { memo } from 'react';
2
3
  import { UserMessage } from './messages/UserMessage.js';
3
4
  import { UserShellMessage } from './messages/UserShellMessage.js';
4
5
  import { GeminiMessage } from './messages/GeminiMessage.js';
@@ -15,5 +16,7 @@ import { ModelStatsDisplay } from './ModelStatsDisplay.js';
15
16
  import { ToolStatsDisplay } from './ToolStatsDisplay.js';
16
17
  import { SessionSummaryDisplay } from './SessionSummaryDisplay.js';
17
18
  import { Help } from './Help.js';
18
- export const HistoryItemDisplay = ({ item, availableTerminalHeight, terminalWidth, isPending, config, commands, isFocused = true, }) => (_jsxs(Box, { flexDirection: "column", children: [item.type === 'user' && _jsx(UserMessage, { text: item.text }), item.type === 'user_shell' && _jsx(UserShellMessage, { text: item.text }), item.type === 'gemini' && (_jsx(GeminiMessage, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'gemini_content' && (_jsx(GeminiMessageContent, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'info' && _jsx(InfoMessage, { text: item.text }), item.type === 'error' && _jsx(ErrorMessage, { text: item.text }), item.type === 'about' && (_jsx(AboutBox, { cliVersion: item.cliVersion, osVersion: item.osVersion, sandboxEnv: item.sandboxEnv, modelVersion: item.modelVersion, selectedAuthType: item.selectedAuthType, gcpProject: item.gcpProject, ideClient: item.ideClient })), item.type === 'help' && commands && _jsx(Help, { commands: commands }), item.type === 'stats' && _jsx(StatsDisplay, { duration: item.duration }), item.type === 'model_stats' && _jsx(ModelStatsDisplay, {}), item.type === 'tool_stats' && _jsx(ToolStatsDisplay, {}), item.type === 'quit' && _jsx(SessionSummaryDisplay, { duration: item.duration }), item.type === 'quit_confirmation' && (_jsx(SessionSummaryDisplay, { duration: item.duration })), item.type === 'tool_group' && (_jsx(ToolGroupMessage, { toolCalls: item.tools, groupId: item.id, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth, config: config, isFocused: isFocused })), item.type === 'compression' && (_jsx(CompressionMessage, { compression: item.compression })), item.type === 'summary' && _jsx(SummaryMessage, { summary: item.summary })] }, item.id));
19
+ const HistoryItemDisplayComponent = ({ item, availableTerminalHeight, terminalWidth, isPending, config, commands, isFocused = true, }) => (_jsxs(Box, { flexDirection: "column", children: [item.type === 'user' && _jsx(UserMessage, { text: item.text }), item.type === 'user_shell' && _jsx(UserShellMessage, { text: item.text }), item.type === 'gemini' && (_jsx(GeminiMessage, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'gemini_content' && (_jsx(GeminiMessageContent, { text: item.text, isPending: isPending, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth })), item.type === 'info' && _jsx(InfoMessage, { text: item.text }), item.type === 'error' && _jsx(ErrorMessage, { text: item.text }), item.type === 'about' && (_jsx(AboutBox, { cliVersion: item.cliVersion, osVersion: item.osVersion, sandboxEnv: item.sandboxEnv, modelVersion: item.modelVersion, selectedAuthType: item.selectedAuthType, gcpProject: item.gcpProject, ideClient: item.ideClient })), item.type === 'help' && commands && _jsx(Help, { commands: commands }), item.type === 'stats' && _jsx(StatsDisplay, { duration: item.duration }), item.type === 'model_stats' && _jsx(ModelStatsDisplay, {}), item.type === 'tool_stats' && _jsx(ToolStatsDisplay, {}), item.type === 'quit' && _jsx(SessionSummaryDisplay, { duration: item.duration }), item.type === 'quit_confirmation' && (_jsx(SessionSummaryDisplay, { duration: item.duration })), item.type === 'tool_group' && (_jsx(ToolGroupMessage, { toolCalls: item.tools, groupId: item.id, availableTerminalHeight: availableTerminalHeight, terminalWidth: terminalWidth, config: config, isFocused: isFocused })), item.type === 'compression' && (_jsx(CompressionMessage, { compression: item.compression })), item.type === 'summary' && _jsx(SummaryMessage, { summary: item.summary })] }, item.id));
20
+ HistoryItemDisplayComponent.displayName = 'HistoryItemDisplay';
21
+ export const HistoryItemDisplay = memo(HistoryItemDisplayComponent);
19
22
  //# sourceMappingURL=HistoryItemDisplay.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryItemDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HistoryItemDisplay.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.tsx"],"names":[],"mappings":"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"}
@@ -14,11 +14,13 @@ vi.mock('./messages/ToolGroupMessage.js', () => ({
14
14
  ToolGroupMessage: () => _jsx("div", {}),
15
15
  }));
16
16
  describe('<HistoryItemDisplay />', () => {
17
+ const mockConfig = {};
17
18
  const baseItem = {
18
19
  id: 1,
19
20
  timestamp: 12345,
20
21
  isPending: false,
21
22
  terminalWidth: 80,
23
+ config: mockConfig,
22
24
  };
23
25
  it('renders UserMessage for "user" type', () => {
24
26
  const item = {
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryItemDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HistoryItemDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/components/HistoryItemDisplay.test.tsx"],"names":[],"mappings":"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"}
@@ -3,11 +3,11 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import React from 'react';
7
- import { TextBuffer } from './shared/text-buffer.js';
8
- import { Key } from '../hooks/useKeypress.js';
9
- import { CommandContext, SlashCommand } from '../commands/types.js';
10
- import { Config } from '@umsai/ums-code-core';
6
+ import type React from 'react';
7
+ import type { TextBuffer } from './shared/text-buffer.js';
8
+ import type { Key } from '../hooks/useKeypress.js';
9
+ import type { CommandContext, SlashCommand } from '../commands/types.js';
10
+ import type { Config } from '@umsai/ums-code-core';
11
11
  export interface InputPromptProps {
12
12
  buffer: TextBuffer;
13
13
  onSubmit: (value: string) => void;
@@ -1,16 +1,11 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /**
3
- * @license
4
- * Copyright 2025 Google LLC
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
7
2
  import { useCallback, useEffect, useState, useRef } from 'react';
8
3
  import { Box, Text } from 'ink';
9
4
  import { theme } from '../semantic-colors.js';
10
5
  import { SuggestionsDisplay } from './SuggestionsDisplay.js';
11
6
  import { useInputHistory } from '../hooks/useInputHistory.js';
12
7
  import { logicalPosToOffset } from './shared/text-buffer.js';
13
- import { cpSlice, cpLen } from '../utils/textUtils.js';
8
+ import { cpSlice, cpLen, toCodePoints } from '../utils/textUtils.js';
14
9
  import chalk from 'chalk';
15
10
  import stringWidth from 'string-width';
16
11
  import { useShellHistory } from '../hooks/useShellHistory.js';
@@ -19,7 +14,8 @@ import { useCommandCompletion } from '../hooks/useCommandCompletion.js';
19
14
  import { useKeypress } from '../hooks/useKeypress.js';
20
15
  import { keyMatchers, Command } from '../keyMatchers.js';
21
16
  import { clipboardHasImage, saveClipboardImage, cleanupOldClipboardImages, } from '../utils/clipboardUtils.js';
22
- import * as path from 'path';
17
+ import * as path from 'node:path';
18
+ import { SCREEN_READER_USER_PREFIX } from '../textConstants.js';
23
19
  // 输入组件
24
20
  export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, config, slashCommands, commandContext, placeholder = ' Type your message or @path/to/file', focus = true, inputWidth, suggestionsWidth, shellModeActive, setShellModeActive, onEscapePromptChange, vimHandleInput, }) => {
25
21
  const [justNavigatedHistory, setJustNavigatedHistory] = useState(false);
@@ -38,7 +34,7 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
38
34
  const [cursorPosition, setCursorPosition] = useState([
39
35
  0, 0,
40
36
  ]);
41
- const shellHistory = useShellHistory(config.getProjectRoot());
37
+ const shellHistory = useShellHistory(config.getProjectRoot(), config.storage);
42
38
  const historyData = shellHistory.history;
43
39
  const completion = useCommandCompletion(buffer, dirs, config.getTargetDir(), slashCommands, commandContext, reverseSearchActive, config);
44
40
  const reverseSearchCompletion = useReverseSearchCompletion(buffer, historyData, reverseSearchActive);
@@ -287,6 +283,13 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
287
283
  return;
288
284
  }
289
285
  }
286
+ // Handle Tab key for ghost text acceptance
287
+ if (key.name === 'tab' &&
288
+ !completion.showSuggestions &&
289
+ completion.promptCompletion.text) {
290
+ completion.promptCompletion.accept();
291
+ return;
292
+ }
290
293
  if (!shellModeActive) {
291
294
  if (keyMatchers[Command.HISTORY_UP](key)) {
292
295
  inputHistory.navigateUp();
@@ -352,7 +355,6 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
352
355
  }
353
356
  if (keyMatchers[Command.END](key)) {
354
357
  buffer.move('end');
355
- buffer.moveToOffset(cpLen(buffer.text));
356
358
  return;
357
359
  }
358
360
  // Ctrl+C (Clear input)
@@ -384,6 +386,14 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
384
386
  }
385
387
  // Fall back to the text buffer's default input handling for all other keys
386
388
  buffer.handleInput(key);
389
+ // Clear ghost text when user types regular characters (not navigation/control keys)
390
+ if (completion.promptCompletion.text &&
391
+ key.sequence &&
392
+ key.sequence.length === 1 &&
393
+ !key.ctrl &&
394
+ !key.meta) {
395
+ completion.promptCompletion.clear();
396
+ }
387
397
  }, [
388
398
  focus,
389
399
  buffer,
@@ -411,13 +421,110 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
411
421
  const linesToRender = buffer.viewportVisualLines;
412
422
  const [cursorVisualRowAbsolute, cursorVisualColAbsolute] = buffer.visualCursor;
413
423
  const scrollVisualRow = buffer.visualScrollRow;
414
- return (_jsxs(_Fragment, { children: [_jsxs(Box, { borderStyle: "round", borderColor: shellModeActive ? theme.status.warning : theme.border.focused, paddingX: 1, children: [_jsx(Text, { color: shellModeActive ? theme.status.warning : theme.text.accent, children: shellModeActive ? (reverseSearchActive ? (_jsx(Text, { color: theme.text.link, children: "(r:) " })) : ('! ')) : ('> ') }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: buffer.text.length === 0 && placeholder ? (focus ? (_jsxs(Text, { children: [chalk.inverse(placeholder.slice(0, 1)), _jsx(Text, { color: theme.text.secondary, children: placeholder.slice(1) })] })) : (_jsx(Text, { color: theme.text.secondary, children: placeholder }))) : (linesToRender.map((lineText, visualIdxInRenderedSet) => {
424
+ const getGhostTextLines = useCallback(() => {
425
+ if (!completion.promptCompletion.text ||
426
+ !buffer.text ||
427
+ !completion.promptCompletion.text.startsWith(buffer.text)) {
428
+ return { inlineGhost: '', additionalLines: [] };
429
+ }
430
+ const ghostSuffix = completion.promptCompletion.text.slice(buffer.text.length);
431
+ if (!ghostSuffix) {
432
+ return { inlineGhost: '', additionalLines: [] };
433
+ }
434
+ const currentLogicalLine = buffer.lines[buffer.cursor[0]] || '';
435
+ const cursorCol = buffer.cursor[1];
436
+ const textBeforeCursor = cpSlice(currentLogicalLine, 0, cursorCol);
437
+ const usedWidth = stringWidth(textBeforeCursor);
438
+ const remainingWidth = Math.max(0, inputWidth - usedWidth);
439
+ const ghostTextLinesRaw = ghostSuffix.split('\n');
440
+ const firstLineRaw = ghostTextLinesRaw.shift() || '';
441
+ let inlineGhost = '';
442
+ let remainingFirstLine = '';
443
+ if (stringWidth(firstLineRaw) <= remainingWidth) {
444
+ inlineGhost = firstLineRaw;
445
+ }
446
+ else {
447
+ const words = firstLineRaw.split(' ');
448
+ let currentLine = '';
449
+ let wordIdx = 0;
450
+ for (const word of words) {
451
+ const prospectiveLine = currentLine ? `${currentLine} ${word}` : word;
452
+ if (stringWidth(prospectiveLine) > remainingWidth) {
453
+ break;
454
+ }
455
+ currentLine = prospectiveLine;
456
+ wordIdx++;
457
+ }
458
+ inlineGhost = currentLine;
459
+ if (words.length > wordIdx) {
460
+ remainingFirstLine = words.slice(wordIdx).join(' ');
461
+ }
462
+ }
463
+ const linesToWrap = [];
464
+ if (remainingFirstLine) {
465
+ linesToWrap.push(remainingFirstLine);
466
+ }
467
+ linesToWrap.push(...ghostTextLinesRaw);
468
+ const remainingGhostText = linesToWrap.join('\n');
469
+ const additionalLines = [];
470
+ if (remainingGhostText) {
471
+ const textLines = remainingGhostText.split('\n');
472
+ for (const textLine of textLines) {
473
+ const words = textLine.split(' ');
474
+ let currentLine = '';
475
+ for (const word of words) {
476
+ const prospectiveLine = currentLine ? `${currentLine} ${word}` : word;
477
+ const prospectiveWidth = stringWidth(prospectiveLine);
478
+ if (prospectiveWidth > inputWidth) {
479
+ if (currentLine) {
480
+ additionalLines.push(currentLine);
481
+ }
482
+ let wordToProcess = word;
483
+ while (stringWidth(wordToProcess) > inputWidth) {
484
+ let part = '';
485
+ const wordCP = toCodePoints(wordToProcess);
486
+ let partWidth = 0;
487
+ let splitIndex = 0;
488
+ for (let i = 0; i < wordCP.length; i++) {
489
+ const char = wordCP[i];
490
+ const charWidth = stringWidth(char);
491
+ if (partWidth + charWidth > inputWidth) {
492
+ break;
493
+ }
494
+ part += char;
495
+ partWidth += charWidth;
496
+ splitIndex = i + 1;
497
+ }
498
+ additionalLines.push(part);
499
+ wordToProcess = cpSlice(wordToProcess, splitIndex);
500
+ }
501
+ currentLine = wordToProcess;
502
+ }
503
+ else {
504
+ currentLine = prospectiveLine;
505
+ }
506
+ }
507
+ if (currentLine) {
508
+ additionalLines.push(currentLine);
509
+ }
510
+ }
511
+ }
512
+ return { inlineGhost, additionalLines };
513
+ }, [
514
+ completion.promptCompletion.text,
515
+ buffer.text,
516
+ buffer.lines,
517
+ buffer.cursor,
518
+ inputWidth,
519
+ ]);
520
+ const { inlineGhost, additionalLines } = getGhostTextLines();
521
+ return (_jsxs(_Fragment, { children: [_jsxs(Box, { borderStyle: "round", borderColor: shellModeActive ? theme.status.warning : theme.border.focused, paddingX: 1, children: [_jsx(Text, { color: shellModeActive ? theme.status.warning : theme.text.accent, children: shellModeActive ? (reverseSearchActive ? (_jsxs(Text, { color: theme.text.link, "aria-label": SCREEN_READER_USER_PREFIX, children: ["(r:)", ' '] })) : ('! ')) : ('> ') }), _jsx(Box, { flexGrow: 1, flexDirection: "column", children: buffer.text.length === 0 && placeholder ? (focus ? (_jsxs(Text, { children: [chalk.inverse(placeholder.slice(0, 1)), _jsx(Text, { color: theme.text.secondary, children: placeholder.slice(1) })] })) : (_jsx(Text, { color: theme.text.secondary, children: placeholder }))) : (linesToRender
522
+ .map((lineText, visualIdxInRenderedSet) => {
415
523
  const cursorVisualRow = cursorVisualRowAbsolute - scrollVisualRow;
416
524
  let display = cpSlice(lineText, 0, inputWidth);
417
- const currentVisualWidth = stringWidth(display);
418
- if (currentVisualWidth < inputWidth) {
419
- display = display + ' '.repeat(inputWidth - currentVisualWidth);
420
- }
525
+ const isOnCursorLine = focus && visualIdxInRenderedSet === cursorVisualRow;
526
+ const currentLineGhost = isOnCursorLine ? inlineGhost : '';
527
+ const ghostWidth = stringWidth(currentLineGhost);
421
528
  if (focus && visualIdxInRenderedSet === cursorVisualRow) {
422
529
  const relativeVisualColForHighlight = cursorVisualColAbsolute;
423
530
  if (relativeVisualColForHighlight >= 0) {
@@ -429,13 +536,28 @@ export const InputPrompt = ({ buffer, onSubmit, userMessages, onClearScreen, con
429
536
  highlighted +
430
537
  cpSlice(display, relativeVisualColForHighlight + 1);
431
538
  }
432
- else if (relativeVisualColForHighlight === cpLen(display) &&
433
- cpLen(display) === inputWidth) {
434
- display = display + chalk.inverse(' ');
539
+ else if (relativeVisualColForHighlight === cpLen(display)) {
540
+ if (!currentLineGhost) {
541
+ display = display + chalk.inverse(' ');
542
+ }
435
543
  }
436
544
  }
437
545
  }
438
- return (_jsx(Text, { children: display }, `line-${visualIdxInRenderedSet}`));
439
- })) })] }), completion.showSuggestions && (_jsx(Box, { paddingRight: 2, children: _jsx(SuggestionsDisplay, { suggestions: completion.suggestions, activeIndex: completion.activeSuggestionIndex, isLoading: completion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: completion.visibleStartIndex, userInput: buffer.text }) })), reverseSearchActive && (_jsx(Box, { paddingRight: 2, children: _jsx(SuggestionsDisplay, { suggestions: reverseSearchCompletion.suggestions, activeIndex: reverseSearchCompletion.activeSuggestionIndex, isLoading: reverseSearchCompletion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: reverseSearchCompletion.visibleStartIndex, userInput: buffer.text }) }))] }));
546
+ const showCursorBeforeGhost = focus &&
547
+ visualIdxInRenderedSet === cursorVisualRow &&
548
+ cursorVisualColAbsolute ===
549
+ // eslint-disable-next-line no-control-regex
550
+ cpLen(display.replace(/\x1b\[[0-9;]*m/g, '')) &&
551
+ currentLineGhost;
552
+ const actualDisplayWidth = stringWidth(display);
553
+ const cursorWidth = showCursorBeforeGhost ? 1 : 0;
554
+ const totalContentWidth = actualDisplayWidth + cursorWidth + ghostWidth;
555
+ const trailingPadding = Math.max(0, inputWidth - totalContentWidth);
556
+ return (_jsxs(Text, { children: [display, showCursorBeforeGhost && chalk.inverse(' '), currentLineGhost && (_jsx(Text, { color: theme.text.secondary, children: currentLineGhost })), trailingPadding > 0 && ' '.repeat(trailingPadding)] }, `line-${visualIdxInRenderedSet}`));
557
+ })
558
+ .concat(additionalLines.map((ghostLine, index) => {
559
+ const padding = Math.max(0, inputWidth - stringWidth(ghostLine));
560
+ return (_jsxs(Text, { color: theme.text.secondary, children: [ghostLine, ' '.repeat(padding)] }, `ghost-line-${index}`));
561
+ }))) })] }), completion.showSuggestions && (_jsx(Box, { paddingRight: 2, children: _jsx(SuggestionsDisplay, { suggestions: completion.suggestions, activeIndex: completion.activeSuggestionIndex, isLoading: completion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: completion.visibleStartIndex, userInput: buffer.text }) })), reverseSearchActive && (_jsx(Box, { paddingRight: 2, children: _jsx(SuggestionsDisplay, { suggestions: reverseSearchCompletion.suggestions, activeIndex: reverseSearchCompletion.activeSuggestionIndex, isLoading: reverseSearchCompletion.isLoadingSuggestions, width: suggestionsWidth, scrollOffset: reverseSearchCompletion.visibleStartIndex, userInput: buffer.text }) }))] }));
440
562
  };
441
563
  //# sourceMappingURL=InputPrompt.js.map