@umsai/ums-code 0.1.4-v2 → 0.3.0-v2

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 (382) hide show
  1. package/dist/package.json +11 -3
  2. package/dist/src/config/config.d.ts +6 -0
  3. package/dist/src/config/config.js +102 -11
  4. package/dist/src/config/config.js.map +1 -1
  5. package/dist/src/config/settings.d.ts +5 -0
  6. package/dist/src/config/settings.js +15 -1
  7. package/dist/src/config/settings.js.map +1 -1
  8. package/dist/src/config/settingsSchema.d.ts +75 -17
  9. package/dist/src/config/settingsSchema.js +57 -17
  10. package/dist/src/config/settingsSchema.js.map +1 -1
  11. package/dist/src/config/webSearch.d.ts +35 -0
  12. package/dist/src/config/webSearch.js +87 -0
  13. package/dist/src/config/webSearch.js.map +1 -0
  14. package/dist/src/core/auth.d.ts +1 -1
  15. package/dist/src/core/auth.js +19 -3
  16. package/dist/src/core/auth.js.map +1 -1
  17. package/dist/src/core/initializer.js +13 -2
  18. package/dist/src/core/initializer.js.map +1 -1
  19. package/dist/src/core/theme.js +4 -1
  20. package/dist/src/core/theme.js.map +1 -1
  21. package/dist/src/gemini.d.ts +1 -1
  22. package/dist/src/gemini.js +53 -44
  23. package/dist/src/gemini.js.map +1 -1
  24. package/dist/src/gemini.test.js +117 -0
  25. package/dist/src/gemini.test.js.map +1 -1
  26. package/dist/src/generated/git-commit.d.ts +2 -2
  27. package/dist/src/generated/git-commit.js +2 -2
  28. package/dist/src/i18n/index.d.ts +18 -0
  29. package/dist/src/i18n/index.js +184 -0
  30. package/dist/src/i18n/index.js.map +1 -0
  31. package/dist/src/i18n/locales/en.js +1129 -0
  32. package/dist/src/i18n/locales/zh.js +1052 -0
  33. package/dist/src/nonInteractive/control/ControlContext.d.ts +63 -0
  34. package/dist/src/nonInteractive/control/ControlContext.js +31 -0
  35. package/dist/src/nonInteractive/control/ControlContext.js.map +1 -0
  36. package/dist/src/nonInteractive/control/ControlDispatcher.d.ts +86 -0
  37. package/dist/src/nonInteractive/control/ControlDispatcher.js +238 -0
  38. package/dist/src/nonInteractive/control/ControlDispatcher.js.map +1 -0
  39. package/dist/src/nonInteractive/control/ControlDispatcher.test.d.ts +6 -0
  40. package/dist/src/nonInteractive/control/ControlDispatcher.test.js +549 -0
  41. package/dist/src/nonInteractive/control/ControlDispatcher.test.js.map +1 -0
  42. package/dist/src/nonInteractive/control/ControlService.d.ts +78 -0
  43. package/dist/src/nonInteractive/control/ControlService.js +154 -0
  44. package/dist/src/nonInteractive/control/ControlService.js.map +1 -0
  45. package/dist/src/nonInteractive/control/controllers/baseController.d.ts +50 -0
  46. package/dist/src/nonInteractive/control/controllers/baseController.js +102 -0
  47. package/dist/src/nonInteractive/control/controllers/baseController.js.map +1 -0
  48. package/dist/src/nonInteractive/control/controllers/hookController.d.ts +25 -0
  49. package/dist/src/nonInteractive/control/controllers/hookController.js +42 -0
  50. package/dist/src/nonInteractive/control/controllers/hookController.js.map +1 -0
  51. package/dist/src/nonInteractive/control/controllers/mcpController.d.ts +42 -0
  52. package/dist/src/nonInteractive/control/controllers/mcpController.js +205 -0
  53. package/dist/src/nonInteractive/control/controllers/mcpController.js.map +1 -0
  54. package/dist/src/nonInteractive/control/controllers/permissionController.d.ts +78 -0
  55. package/dist/src/nonInteractive/control/controllers/permissionController.js +358 -0
  56. package/dist/src/nonInteractive/control/controllers/permissionController.js.map +1 -0
  57. package/dist/src/nonInteractive/control/controllers/systemController.d.ts +56 -0
  58. package/dist/src/nonInteractive/control/controllers/systemController.js +166 -0
  59. package/dist/src/nonInteractive/control/controllers/systemController.js.map +1 -0
  60. package/dist/src/nonInteractive/control/types/serviceAPIs.d.ts +120 -0
  61. package/dist/src/nonInteractive/control/types/serviceAPIs.js +7 -0
  62. package/dist/src/nonInteractive/control/types/serviceAPIs.js.map +1 -0
  63. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.d.ts +446 -0
  64. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js +891 -0
  65. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.js.map +1 -0
  66. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.d.ts +6 -0
  67. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js +1197 -0
  68. package/dist/src/nonInteractive/io/BaseJsonOutputAdapter.test.js.map +1 -0
  69. package/dist/src/nonInteractive/io/JsonOutputAdapter.d.ts +29 -0
  70. package/dist/src/nonInteractive/io/JsonOutputAdapter.js +56 -0
  71. package/dist/src/nonInteractive/io/JsonOutputAdapter.js.map +1 -0
  72. package/dist/src/nonInteractive/io/JsonOutputAdapter.test.d.ts +6 -0
  73. package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js +624 -0
  74. package/dist/src/nonInteractive/io/JsonOutputAdapter.test.js.map +1 -0
  75. package/dist/src/nonInteractive/io/StreamJsonInputReader.d.ts +16 -0
  76. package/dist/src/nonInteractive/io/StreamJsonInputReader.js +54 -0
  77. package/dist/src/nonInteractive/io/StreamJsonInputReader.js.map +1 -0
  78. package/dist/src/nonInteractive/io/StreamJsonInputReader.test.d.ts +6 -0
  79. package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js +178 -0
  80. package/dist/src/nonInteractive/io/StreamJsonInputReader.test.js.map +1 -0
  81. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.d.ts +69 -0
  82. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js +185 -0
  83. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.js.map +1 -0
  84. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.d.ts +6 -0
  85. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js +808 -0
  86. package/dist/src/nonInteractive/io/StreamJsonOutputAdapter.test.js.map +1 -0
  87. package/dist/src/nonInteractive/session.d.ts +23 -0
  88. package/dist/src/nonInteractive/session.js +549 -0
  89. package/dist/src/nonInteractive/session.js.map +1 -0
  90. package/dist/src/nonInteractive/session.test.d.ts +6 -0
  91. package/dist/src/nonInteractive/session.test.js +407 -0
  92. package/dist/src/nonInteractive/session.test.js.map +1 -0
  93. package/dist/src/nonInteractive/types.d.ts +344 -0
  94. package/dist/src/nonInteractive/types.js +78 -0
  95. package/dist/src/nonInteractive/types.js.map +1 -0
  96. package/dist/src/nonInteractiveCli.d.ts +21 -1
  97. package/dist/src/nonInteractiveCli.js +204 -57
  98. package/dist/src/nonInteractiveCli.js.map +1 -1
  99. package/dist/src/nonInteractiveCliCommands.d.ts +19 -1
  100. package/dist/src/nonInteractiveCliCommands.js +69 -4
  101. package/dist/src/nonInteractiveCliCommands.js.map +1 -1
  102. package/dist/src/services/BuiltinCommandLoader.js +2 -0
  103. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  104. package/dist/src/services/FileCommandLoader.js +4 -1
  105. package/dist/src/services/FileCommandLoader.js.map +1 -1
  106. package/dist/src/ui/AppContainer.js +41 -38
  107. package/dist/src/ui/AppContainer.js.map +1 -1
  108. package/dist/src/ui/auth/AuthDialog.d.ts +1 -13
  109. package/dist/src/ui/auth/AuthDialog.js +41 -111
  110. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  111. package/dist/src/ui/auth/AuthDialog.test.js +49 -19
  112. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  113. package/dist/src/ui/auth/AuthInProgress.js +2 -1
  114. package/dist/src/ui/auth/AuthInProgress.js.map +1 -1
  115. package/dist/src/ui/auth/useAuth.d.ts +9 -8
  116. package/dist/src/ui/auth/useAuth.js +135 -63
  117. package/dist/src/ui/auth/useAuth.js.map +1 -1
  118. package/dist/src/ui/commands/aboutCommand.js +7 -31
  119. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  120. package/dist/src/ui/commands/agentsCommand.js +10 -3
  121. package/dist/src/ui/commands/agentsCommand.js.map +1 -1
  122. package/dist/src/ui/commands/approvalModeCommand.js +8 -329
  123. package/dist/src/ui/commands/approvalModeCommand.js.map +1 -1
  124. package/dist/src/ui/commands/approvalModeCommand.test.js +19 -263
  125. package/dist/src/ui/commands/approvalModeCommand.test.js.map +1 -1
  126. package/dist/src/ui/commands/authCommand.js +4 -1
  127. package/dist/src/ui/commands/authCommand.js.map +1 -1
  128. package/dist/src/ui/commands/bugCommand.js +13 -47
  129. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  130. package/dist/src/ui/commands/chatCommand.js +51 -25
  131. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  132. package/dist/src/ui/commands/clearCommand.js +6 -3
  133. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  134. package/dist/src/ui/commands/compressCommand.js +9 -4
  135. package/dist/src/ui/commands/compressCommand.js.map +1 -1
  136. package/dist/src/ui/commands/copyCommand.js +4 -1
  137. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  138. package/dist/src/ui/commands/directoryCommand.js +30 -12
  139. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  140. package/dist/src/ui/commands/docsCommand.js +9 -3
  141. package/dist/src/ui/commands/docsCommand.js.map +1 -1
  142. package/dist/src/ui/commands/editorCommand.js +4 -1
  143. package/dist/src/ui/commands/editorCommand.js.map +1 -1
  144. package/dist/src/ui/commands/extensionsCommand.js +10 -3
  145. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  146. package/dist/src/ui/commands/helpCommand.js +4 -1
  147. package/dist/src/ui/commands/helpCommand.js.map +1 -1
  148. package/dist/src/ui/commands/ideCommand.js +23 -7
  149. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  150. package/dist/src/ui/commands/initCommand.js +5 -3
  151. package/dist/src/ui/commands/initCommand.js.map +1 -1
  152. package/dist/src/ui/commands/languageCommand.d.ts +7 -0
  153. package/dist/src/ui/commands/languageCommand.js +386 -0
  154. package/dist/src/ui/commands/languageCommand.js.map +1 -0
  155. package/dist/src/ui/commands/mcpCommand.js +38 -18
  156. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  157. package/dist/src/ui/commands/memoryCommand.js +54 -25
  158. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  159. package/dist/src/ui/commands/modelCommand.js +9 -4
  160. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  161. package/dist/src/ui/commands/permissionsCommand.js +4 -1
  162. package/dist/src/ui/commands/permissionsCommand.js.map +1 -1
  163. package/dist/src/ui/commands/quitCommand.js +7 -2
  164. package/dist/src/ui/commands/quitCommand.js.map +1 -1
  165. package/dist/src/ui/commands/settingsCommand.js +4 -1
  166. package/dist/src/ui/commands/settingsCommand.js.map +1 -1
  167. package/dist/src/ui/commands/setupGithubCommand.js +4 -1
  168. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  169. package/dist/src/ui/commands/statsCommand.js +11 -4
  170. package/dist/src/ui/commands/statsCommand.js.map +1 -1
  171. package/dist/src/ui/commands/summaryCommand.js +15 -8
  172. package/dist/src/ui/commands/summaryCommand.js.map +1 -1
  173. package/dist/src/ui/commands/terminalSetupCommand.js +9 -3
  174. package/dist/src/ui/commands/terminalSetupCommand.js.map +1 -1
  175. package/dist/src/ui/commands/themeCommand.js +4 -1
  176. package/dist/src/ui/commands/themeCommand.js.map +1 -1
  177. package/dist/src/ui/commands/toolsCommand.js +5 -2
  178. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  179. package/dist/src/ui/commands/types.d.ts +1 -1
  180. package/dist/src/ui/commands/types.js.map +1 -1
  181. package/dist/src/ui/commands/vimCommand.js +4 -1
  182. package/dist/src/ui/commands/vimCommand.js.map +1 -1
  183. package/dist/src/ui/components/AboutBox.d.ts +2 -9
  184. package/dist/src/ui/components/AboutBox.js +6 -2
  185. package/dist/src/ui/components/AboutBox.js.map +1 -1
  186. package/dist/src/ui/components/ApprovalModeDialog.d.ts +21 -0
  187. package/dist/src/ui/components/ApprovalModeDialog.js +68 -0
  188. package/dist/src/ui/components/ApprovalModeDialog.js.map +1 -0
  189. package/dist/src/ui/components/AutoAcceptIndicator.js +7 -6
  190. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
  191. package/dist/src/ui/components/Composer.js +4 -3
  192. package/dist/src/ui/components/Composer.js.map +1 -1
  193. package/dist/src/ui/components/ConfigInitDisplay.js +7 -3
  194. package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -1
  195. package/dist/src/ui/components/ContextSummaryDisplay.js +33 -9
  196. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  197. package/dist/src/ui/components/DialogManager.js +60 -13
  198. package/dist/src/ui/components/DialogManager.js.map +1 -1
  199. package/dist/src/ui/components/EditorSettingsDialog.js +8 -3
  200. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  201. package/dist/src/ui/components/Help.js +14 -4
  202. package/dist/src/ui/components/Help.js.map +1 -1
  203. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  204. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  205. package/dist/src/ui/components/HistoryItemDisplay.test.js +17 -8
  206. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  207. package/dist/src/ui/components/InputPrompt.js +10 -136
  208. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  209. package/dist/src/ui/components/LoadingIndicator.js +6 -1
  210. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  211. package/dist/src/ui/components/ModelDialog.js +2 -1
  212. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  213. package/dist/src/ui/components/ModelStatsDisplay.js +6 -5
  214. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  215. package/dist/src/ui/components/OpenAIKeyPrompt.d.ts +19 -1
  216. package/dist/src/ui/components/OpenAIKeyPrompt.js +38 -6
  217. package/dist/src/ui/components/OpenAIKeyPrompt.js.map +1 -1
  218. package/dist/src/ui/components/ProQuotaDialog.js +5 -4
  219. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  220. package/dist/src/ui/components/QuitConfirmationDialog.js +6 -5
  221. package/dist/src/ui/components/QuitConfirmationDialog.js.map +1 -1
  222. package/dist/src/ui/components/QwenOAuthProgress.d.ts +2 -2
  223. package/dist/src/ui/components/QwenOAuthProgress.js +14 -7
  224. package/dist/src/ui/components/QwenOAuthProgress.js.map +1 -1
  225. package/dist/src/ui/components/QwenOAuthProgress.test.js +1 -0
  226. package/dist/src/ui/components/QwenOAuthProgress.test.js.map +1 -1
  227. package/dist/src/ui/components/SessionSummaryDisplay.js +2 -1
  228. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  229. package/dist/src/ui/components/SettingsDialog.d.ts +3 -1
  230. package/dist/src/ui/components/SettingsDialog.js +35 -12
  231. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  232. package/dist/src/ui/components/SettingsDialog.test.js +5 -4
  233. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  234. package/dist/src/ui/components/ShellConfirmationDialog.js +5 -4
  235. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  236. package/dist/src/ui/components/StatsDisplay.js +5 -4
  237. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  238. package/dist/src/ui/components/ThemeDialog.js +5 -2
  239. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  240. package/dist/src/ui/components/ToolStatsDisplay.js +3 -2
  241. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
  242. package/dist/src/ui/components/WelcomeBackDialog.js +13 -4
  243. package/dist/src/ui/components/WelcomeBackDialog.js.map +1 -1
  244. package/dist/src/ui/components/messages/CompressionMessage.js +10 -6
  245. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  246. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +40 -29
  247. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  248. package/dist/src/ui/components/shared/BaseSelectionList.test.js +1 -1
  249. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -1
  250. package/dist/src/ui/components/shared/ScopeSelector.js +3 -1
  251. package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -1
  252. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js +39 -26
  253. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js.map +1 -1
  254. package/dist/src/ui/components/subagents/create/CreationSummary.js +20 -10
  255. package/dist/src/ui/components/subagents/create/CreationSummary.js.map +1 -1
  256. package/dist/src/ui/components/subagents/create/DescriptionInput.js +6 -3
  257. package/dist/src/ui/components/subagents/create/DescriptionInput.js.map +1 -1
  258. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js +7 -2
  259. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js.map +1 -1
  260. package/dist/src/ui/components/subagents/create/LocationSelector.js +7 -2
  261. package/dist/src/ui/components/subagents/create/LocationSelector.js.map +1 -1
  262. package/dist/src/ui/components/subagents/create/ToolSelector.js +8 -7
  263. package/dist/src/ui/components/subagents/create/ToolSelector.js.map +1 -1
  264. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js +29 -4
  265. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js.map +1 -1
  266. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js +6 -3
  267. package/dist/src/ui/components/subagents/manage/AgentDeleteStep.js.map +1 -1
  268. package/dist/src/ui/components/subagents/manage/AgentEditStep.js +14 -5
  269. package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +1 -1
  270. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +13 -6
  271. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +1 -1
  272. package/dist/src/ui/components/subagents/manage/AgentViewerStep.js +3 -2
  273. package/dist/src/ui/components/subagents/manage/AgentViewerStep.js.map +1 -1
  274. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js +14 -13
  275. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js.map +1 -1
  276. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +8 -8
  277. package/dist/src/ui/components/views/McpStatus.js +28 -15
  278. package/dist/src/ui/components/views/McpStatus.js.map +1 -1
  279. package/dist/src/ui/components/views/ToolsList.js +2 -1
  280. package/dist/src/ui/components/views/ToolsList.js.map +1 -1
  281. package/dist/src/ui/contexts/UIActionsContext.d.ts +5 -4
  282. package/dist/src/ui/contexts/UIActionsContext.js +1 -0
  283. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  284. package/dist/src/ui/contexts/UIStateContext.d.ts +5 -7
  285. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  286. package/dist/src/ui/editors/editorSettingsManager.js +1 -0
  287. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
  288. package/dist/src/ui/hooks/atCommandProcessor.test.js +2 -0
  289. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  290. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +1 -0
  291. package/dist/src/ui/hooks/slashCommandProcessor.js +4 -7
  292. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  293. package/dist/src/ui/hooks/useApprovalModeCommand.d.ts +14 -0
  294. package/dist/src/ui/hooks/useApprovalModeCommand.js +33 -0
  295. package/dist/src/ui/hooks/useApprovalModeCommand.js.map +1 -0
  296. package/dist/src/ui/hooks/useAttentionNotifications.d.ts +14 -0
  297. package/dist/src/ui/hooks/useAttentionNotifications.js +41 -0
  298. package/dist/src/ui/hooks/useAttentionNotifications.js.map +1 -0
  299. package/dist/src/ui/hooks/useAttentionNotifications.test.d.ts +6 -0
  300. package/dist/src/ui/hooks/useAttentionNotifications.test.js +113 -0
  301. package/dist/src/ui/hooks/useAttentionNotifications.test.js.map +1 -0
  302. package/dist/src/ui/hooks/useCommandCompletion.d.ts +1 -4
  303. package/dist/src/ui/hooks/useCommandCompletion.js +1 -23
  304. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  305. package/dist/src/ui/hooks/useDialogClose.d.ts +6 -3
  306. package/dist/src/ui/hooks/useDialogClose.js +5 -0
  307. package/dist/src/ui/hooks/useDialogClose.js.map +1 -1
  308. package/dist/src/ui/hooks/useGitBranchName.js +6 -3
  309. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  310. package/dist/src/ui/hooks/useGitBranchName.test.js +39 -21
  311. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  312. package/dist/src/ui/hooks/useInitializationAuthError.d.ts +22 -0
  313. package/dist/src/ui/hooks/useInitializationAuthError.js +40 -0
  314. package/dist/src/ui/hooks/useInitializationAuthError.js.map +1 -0
  315. package/dist/src/ui/hooks/usePhraseCycler.js +6 -4
  316. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  317. package/dist/src/ui/hooks/useQwenAuth.d.ts +7 -12
  318. package/dist/src/ui/hooks/useQwenAuth.js +4 -8
  319. package/dist/src/ui/hooks/useQwenAuth.js.map +1 -1
  320. package/dist/src/ui/hooks/useQwenAuth.test.js +72 -98
  321. package/dist/src/ui/hooks/useQwenAuth.test.js.map +1 -1
  322. package/dist/src/ui/hooks/useThemeCommand.js +8 -3
  323. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  324. package/dist/src/ui/models/availableModels.js +7 -2
  325. package/dist/src/ui/models/availableModels.js.map +1 -1
  326. package/dist/src/ui/types.d.ts +32 -14
  327. package/dist/src/ui/types.js.map +1 -1
  328. package/dist/src/ui/utils/clipboardUtils.js +3 -3
  329. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  330. package/dist/src/ui/utils/commandUtils.d.ts +16 -0
  331. package/dist/src/ui/utils/commandUtils.js +16 -1
  332. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  333. package/dist/src/ui/utils/commandUtils.test.js +5 -2
  334. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  335. package/dist/src/ui/utils/terminalSetup.js +45 -18
  336. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  337. package/dist/src/utils/attentionNotification.d.ts +20 -0
  338. package/dist/src/utils/attentionNotification.js +34 -0
  339. package/dist/src/utils/attentionNotification.js.map +1 -0
  340. package/dist/src/utils/attentionNotification.test.d.ts +6 -0
  341. package/dist/src/utils/attentionNotification.test.js +46 -0
  342. package/dist/src/utils/attentionNotification.test.js.map +1 -0
  343. package/dist/src/utils/dialogScopeUtils.d.ts +0 -4
  344. package/dist/src/utils/dialogScopeUtils.js +5 -2
  345. package/dist/src/utils/dialogScopeUtils.js.map +1 -1
  346. package/dist/src/utils/errors.d.ts +10 -2
  347. package/dist/src/utils/errors.js +14 -13
  348. package/dist/src/utils/errors.js.map +1 -1
  349. package/dist/src/utils/errors.test.js +91 -54
  350. package/dist/src/utils/errors.test.js.map +1 -1
  351. package/dist/src/utils/nonInteractiveHelpers.d.ts +88 -0
  352. package/dist/src/utils/nonInteractiveHelpers.js +470 -0
  353. package/dist/src/utils/nonInteractiveHelpers.js.map +1 -0
  354. package/dist/src/utils/nonInteractiveHelpers.test.d.ts +6 -0
  355. package/dist/src/utils/nonInteractiveHelpers.test.js +945 -0
  356. package/dist/src/utils/nonInteractiveHelpers.test.js.map +1 -0
  357. package/dist/src/utils/sandbox.js +1 -1
  358. package/dist/src/utils/sandbox.js.map +1 -1
  359. package/dist/src/utils/settingsUtils.js +7 -1
  360. package/dist/src/utils/settingsUtils.js.map +1 -1
  361. package/dist/src/utils/systemInfo.d.ts +66 -0
  362. package/dist/src/utils/systemInfo.js +125 -0
  363. package/dist/src/utils/systemInfo.js.map +1 -0
  364. package/dist/src/utils/systemInfo.test.d.ts +6 -0
  365. package/dist/src/utils/systemInfo.test.js +259 -0
  366. package/dist/src/utils/systemInfo.test.js.map +1 -0
  367. package/dist/src/utils/systemInfoFields.d.ts +22 -0
  368. package/dist/src/utils/systemInfoFields.js +96 -0
  369. package/dist/src/utils/systemInfoFields.js.map +1 -0
  370. package/dist/src/utils/userStartupWarnings.js +9 -4
  371. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  372. package/dist/src/validateNonInterActiveAuth.js +27 -6
  373. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  374. package/dist/src/zed-integration/acp.js +1 -2
  375. package/dist/src/zed-integration/acp.js.map +1 -1
  376. package/dist/src/zed-integration/schema.d.ts +506 -264
  377. package/dist/src/zed-integration/schema.js +13 -0
  378. package/dist/src/zed-integration/schema.js.map +1 -1
  379. package/dist/src/zed-integration/zedIntegration.js +376 -32
  380. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  381. package/dist/tsconfig.tsbuildinfo +1 -1
  382. package/package.json +12 -4
@@ -3,291 +3,47 @@
3
3
  * Copyright 2025 Qwen
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
6
+ import { describe, it, expect } from 'vitest';
7
7
  import { approvalModeCommand } from './approvalModeCommand.js';
8
8
  import { CommandKind, } from './types.js';
9
9
  import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
10
- import { ApprovalMode } from '@umsai/ums-code-core';
11
- import { SettingScope } from '../../config/settings.js';
12
10
  describe('approvalModeCommand', () => {
13
11
  let mockContext;
14
- let setApprovalModeMock;
15
- let setSettingsValueMock;
16
- const originalEnv = { ...process.env };
17
- const userSettingsPath = '/mock/user/settings.json';
18
- const projectSettingsPath = '/mock/project/settings.json';
19
- const userSettingsFile = { path: userSettingsPath, settings: {} };
20
- const projectSettingsFile = { path: projectSettingsPath, settings: {} };
21
- const getModeSubCommand = (mode) => approvalModeCommand.subCommands?.find((cmd) => cmd.name === mode);
22
- const getScopeSubCommand = (mode, scope) => getModeSubCommand(mode)?.subCommands?.find((cmd) => cmd.name === scope);
23
12
  beforeEach(() => {
24
- setApprovalModeMock = vi.fn();
25
- setSettingsValueMock = vi.fn();
26
13
  mockContext = createMockCommandContext({
27
14
  services: {
28
15
  config: {
29
- getApprovalMode: vi.fn().mockReturnValue(ApprovalMode.DEFAULT),
30
- setApprovalMode: setApprovalModeMock,
16
+ getApprovalMode: () => 'default',
17
+ setApprovalMode: () => { },
31
18
  },
32
19
  settings: {
33
20
  merged: {},
34
- setValue: setSettingsValueMock,
35
- forScope: vi
36
- .fn()
37
- .mockImplementation((scope) => scope === SettingScope.User
38
- ? userSettingsFile
39
- : scope === SettingScope.Workspace
40
- ? projectSettingsFile
41
- : { path: '', settings: {} }),
21
+ setValue: () => { },
22
+ forScope: () => ({}),
42
23
  },
43
24
  },
44
25
  });
45
26
  });
46
- afterEach(() => {
47
- process.env = { ...originalEnv };
48
- vi.clearAllMocks();
49
- });
50
- it('should have the correct command properties', () => {
27
+ it('should have correct metadata', () => {
51
28
  expect(approvalModeCommand.name).toBe('approval-mode');
52
- expect(approvalModeCommand.kind).toBe(CommandKind.BUILT_IN);
53
29
  expect(approvalModeCommand.description).toBe('View or change the approval mode for tool usage');
30
+ expect(approvalModeCommand.kind).toBe(CommandKind.BUILT_IN);
54
31
  });
55
- it('should show current mode, options, and usage when no arguments provided', async () => {
56
- if (!approvalModeCommand.action) {
57
- throw new Error('approvalModeCommand must have an action.');
58
- }
59
- const result = (await approvalModeCommand.action(mockContext, ''));
60
- expect(result.type).toBe('message');
61
- expect(result.messageType).toBe('info');
62
- const expectedMessage = [
63
- 'Current approval mode: default',
64
- '',
65
- 'Available approval modes:',
66
- ' - plan: Plan mode - Analyze only, do not modify files or execute commands',
67
- ' - default: Default mode - Require approval for file edits or shell commands',
68
- ' - auto-edit: Auto-edit mode - Automatically approve file edits',
69
- ' - yolo: YOLO mode - Automatically approve all tools',
70
- '',
71
- 'Usage: /approval-mode <mode> [--session|--user|--project]',
72
- ].join('\n');
73
- expect(result.content).toBe(expectedMessage);
74
- });
75
- it('should display error when config is not available', async () => {
76
- if (!approvalModeCommand.action) {
77
- throw new Error('approvalModeCommand must have an action.');
78
- }
79
- const nullConfigContext = createMockCommandContext({
80
- services: {
81
- config: null,
82
- },
83
- });
84
- const result = (await approvalModeCommand.action(nullConfigContext, ''));
85
- expect(result.type).toBe('message');
86
- expect(result.messageType).toBe('error');
87
- expect(result.content).toBe('Configuration not available.');
88
- });
89
- it('should change approval mode when valid mode is provided', async () => {
90
- if (!approvalModeCommand.action) {
91
- throw new Error('approvalModeCommand must have an action.');
92
- }
93
- const result = (await approvalModeCommand.action(mockContext, 'plan'));
94
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.PLAN);
95
- expect(setSettingsValueMock).not.toHaveBeenCalled();
96
- expect(result.type).toBe('message');
97
- expect(result.messageType).toBe('info');
98
- expect(result.content).toBe('Approval mode changed to: plan');
99
- });
100
- it('should accept canonical auto-edit mode value', async () => {
101
- if (!approvalModeCommand.action) {
102
- throw new Error('approvalModeCommand must have an action.');
103
- }
104
- const result = (await approvalModeCommand.action(mockContext, 'auto-edit'));
105
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.AUTO_EDIT);
106
- expect(setSettingsValueMock).not.toHaveBeenCalled();
107
- expect(result.type).toBe('message');
108
- expect(result.messageType).toBe('info');
109
- expect(result.content).toBe('Approval mode changed to: auto-edit');
110
- });
111
- it('should accept auto-edit alias for compatibility', async () => {
112
- if (!approvalModeCommand.action) {
113
- throw new Error('approvalModeCommand must have an action.');
114
- }
115
- const result = (await approvalModeCommand.action(mockContext, 'auto-edit'));
116
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.AUTO_EDIT);
117
- expect(setSettingsValueMock).not.toHaveBeenCalled();
118
- expect(result.content).toBe('Approval mode changed to: auto-edit');
119
- });
120
- it('should display error when invalid mode is provided', async () => {
121
- if (!approvalModeCommand.action) {
122
- throw new Error('approvalModeCommand must have an action.');
123
- }
124
- const result = (await approvalModeCommand.action(mockContext, 'invalid'));
125
- expect(result.type).toBe('message');
126
- expect(result.messageType).toBe('error');
127
- expect(result.content).toContain('Invalid approval mode: invalid');
128
- expect(result.content).toContain('Available approval modes:');
129
- expect(result.content).toContain('Usage: /approval-mode <mode> [--session|--user|--project]');
130
- });
131
- it('should display error when setApprovalMode throws an error', async () => {
132
- if (!approvalModeCommand.action) {
133
- throw new Error('approvalModeCommand must have an action.');
134
- }
135
- const errorMessage = 'Failed to set approval mode';
136
- mockContext.services.config.setApprovalMode = vi
137
- .fn()
138
- .mockImplementation(() => {
139
- throw new Error(errorMessage);
140
- });
141
- const result = (await approvalModeCommand.action(mockContext, 'plan'));
142
- expect(result.type).toBe('message');
143
- expect(result.messageType).toBe('error');
144
- expect(result.content).toBe(`Failed to change approval mode: ${errorMessage}`);
145
- });
146
- it('should allow selecting auto-edit with user scope via nested subcommands', async () => {
147
- if (!approvalModeCommand.subCommands) {
148
- throw new Error('approvalModeCommand must have subCommands.');
149
- }
150
- const userSubCommand = getScopeSubCommand(ApprovalMode.AUTO_EDIT, '--user');
151
- if (!userSubCommand?.action) {
152
- throw new Error('--user scope subcommand must have an action.');
153
- }
154
- const result = (await userSubCommand.action(mockContext, ''));
155
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.AUTO_EDIT);
156
- expect(setSettingsValueMock).toHaveBeenCalledWith(SettingScope.User, 'approvalMode', 'auto-edit');
157
- expect(result.content).toBe(`Approval mode changed to: auto-edit (saved to user settings at ${userSettingsPath})`);
158
- });
159
- it('should allow selecting plan with project scope via nested subcommands', async () => {
160
- if (!approvalModeCommand.subCommands) {
161
- throw new Error('approvalModeCommand must have subCommands.');
162
- }
163
- const projectSubCommand = getScopeSubCommand(ApprovalMode.PLAN, '--project');
164
- if (!projectSubCommand?.action) {
165
- throw new Error('--project scope subcommand must have an action.');
166
- }
167
- const result = (await projectSubCommand.action(mockContext, ''));
168
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.PLAN);
169
- expect(setSettingsValueMock).toHaveBeenCalledWith(SettingScope.Workspace, 'approvalMode', 'plan');
170
- expect(result.content).toBe(`Approval mode changed to: plan (saved to project settings at ${projectSettingsPath})`);
171
- });
172
- it('should allow selecting plan with session scope via nested subcommands', async () => {
173
- if (!approvalModeCommand.subCommands) {
174
- throw new Error('approvalModeCommand must have subCommands.');
175
- }
176
- const sessionSubCommand = getScopeSubCommand(ApprovalMode.PLAN, '--session');
177
- if (!sessionSubCommand?.action) {
178
- throw new Error('--session scope subcommand must have an action.');
179
- }
180
- const result = (await sessionSubCommand.action(mockContext, ''));
181
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.PLAN);
182
- expect(setSettingsValueMock).not.toHaveBeenCalled();
183
- expect(result.content).toBe('Approval mode changed to: plan');
184
- });
185
- it('should allow providing a scope argument after selecting a mode subcommand', async () => {
186
- if (!approvalModeCommand.subCommands) {
187
- throw new Error('approvalModeCommand must have subCommands.');
188
- }
189
- const planSubCommand = getModeSubCommand(ApprovalMode.PLAN);
190
- if (!planSubCommand?.action) {
191
- throw new Error('plan subcommand must have an action.');
192
- }
193
- const result = (await planSubCommand.action(mockContext, '--user'));
194
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.PLAN);
195
- expect(setSettingsValueMock).toHaveBeenCalledWith(SettingScope.User, 'approvalMode', 'plan');
196
- expect(result.content).toBe(`Approval mode changed to: plan (saved to user settings at ${userSettingsPath})`);
197
- });
198
- it('should support --user plan pattern (scope first)', async () => {
199
- if (!approvalModeCommand.action) {
200
- throw new Error('approvalModeCommand must have an action.');
201
- }
202
- const result = (await approvalModeCommand.action(mockContext, '--user plan'));
203
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.PLAN);
204
- expect(setSettingsValueMock).toHaveBeenCalledWith(SettingScope.User, 'approvalMode', 'plan');
205
- expect(result.content).toBe(`Approval mode changed to: plan (saved to user settings at ${userSettingsPath})`);
206
- });
207
- it('should support plan --user pattern (mode first)', async () => {
208
- if (!approvalModeCommand.action) {
209
- throw new Error('approvalModeCommand must have an action.');
210
- }
211
- const result = (await approvalModeCommand.action(mockContext, 'plan --user'));
212
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.PLAN);
213
- expect(setSettingsValueMock).toHaveBeenCalledWith(SettingScope.User, 'approvalMode', 'plan');
214
- expect(result.content).toBe(`Approval mode changed to: plan (saved to user settings at ${userSettingsPath})`);
215
- });
216
- it('should support --project auto-edit pattern', async () => {
217
- if (!approvalModeCommand.action) {
218
- throw new Error('approvalModeCommand must have an action.');
219
- }
220
- const result = (await approvalModeCommand.action(mockContext, '--project auto-edit'));
221
- expect(setApprovalModeMock).toHaveBeenCalledWith(ApprovalMode.AUTO_EDIT);
222
- expect(setSettingsValueMock).toHaveBeenCalledWith(SettingScope.Workspace, 'approvalMode', 'auto-edit');
223
- expect(result.content).toBe(`Approval mode changed to: auto-edit (saved to project settings at ${projectSettingsPath})`);
224
- });
225
- it('should display error when only scope flag is provided', async () => {
226
- if (!approvalModeCommand.action) {
227
- throw new Error('approvalModeCommand must have an action.');
228
- }
229
- const result = (await approvalModeCommand.action(mockContext, '--user'));
230
- expect(result.type).toBe('message');
231
- expect(result.messageType).toBe('error');
232
- expect(result.content).toContain('Missing approval mode');
233
- expect(setApprovalModeMock).not.toHaveBeenCalled();
234
- expect(setSettingsValueMock).not.toHaveBeenCalled();
32
+ it('should open approval mode dialog when invoked', async () => {
33
+ const result = (await approvalModeCommand.action?.(mockContext, ''));
34
+ expect(result.type).toBe('dialog');
35
+ expect(result.dialog).toBe('approval-mode');
235
36
  });
236
- it('should display error when multiple scope flags are provided', async () => {
237
- if (!approvalModeCommand.action) {
238
- throw new Error('approvalModeCommand must have an action.');
239
- }
240
- const result = (await approvalModeCommand.action(mockContext, '--user --project plan'));
241
- expect(result.type).toBe('message');
242
- expect(result.messageType).toBe('error');
243
- expect(result.content).toContain('Multiple scope flags provided');
244
- expect(setApprovalModeMock).not.toHaveBeenCalled();
245
- expect(setSettingsValueMock).not.toHaveBeenCalled();
37
+ it('should open approval mode dialog with arguments (ignored)', async () => {
38
+ const result = (await approvalModeCommand.action?.(mockContext, 'some arguments'));
39
+ expect(result.type).toBe('dialog');
40
+ expect(result.dialog).toBe('approval-mode');
246
41
  });
247
- it('should surface a helpful error when scope subcommands receive extra arguments', async () => {
248
- if (!approvalModeCommand.subCommands) {
249
- throw new Error('approvalModeCommand must have subCommands.');
250
- }
251
- const userSubCommand = getScopeSubCommand(ApprovalMode.DEFAULT, '--user');
252
- if (!userSubCommand?.action) {
253
- throw new Error('--user scope subcommand must have an action.');
254
- }
255
- const result = (await userSubCommand.action(mockContext, 'extra'));
256
- expect(result.type).toBe('message');
257
- expect(result.messageType).toBe('error');
258
- expect(result.content).toBe('Scope subcommands do not accept additional arguments.');
259
- expect(setApprovalModeMock).not.toHaveBeenCalled();
260
- expect(setSettingsValueMock).not.toHaveBeenCalled();
42
+ it('should not have subcommands', () => {
43
+ expect(approvalModeCommand.subCommands).toBeUndefined();
261
44
  });
262
- it('should provide completion for approval modes', async () => {
263
- if (!approvalModeCommand.completion) {
264
- throw new Error('approvalModeCommand must have a completion function.');
265
- }
266
- // Test partial mode completion
267
- const result = await approvalModeCommand.completion(mockContext, 'p');
268
- expect(result).toEqual(['plan']);
269
- const result2 = await approvalModeCommand.completion(mockContext, 'a');
270
- expect(result2).toEqual(['auto-edit']);
271
- // Test empty completion - should suggest available modes first
272
- const result3 = await approvalModeCommand.completion(mockContext, '');
273
- expect(result3).toEqual(['plan', 'default', 'auto-edit', 'yolo']);
274
- const result4 = await approvalModeCommand.completion(mockContext, 'AUTO');
275
- expect(result4).toEqual(['auto-edit']);
276
- // Test mode first pattern: 'plan ' should suggest scope flags
277
- const result5 = await approvalModeCommand.completion(mockContext, 'plan ');
278
- expect(result5).toEqual(['--session', '--project', '--user']);
279
- const result6 = await approvalModeCommand.completion(mockContext, 'plan --u');
280
- expect(result6).toEqual(['--user']);
281
- // Test scope first pattern: '--user ' should suggest modes
282
- const result7 = await approvalModeCommand.completion(mockContext, '--user ');
283
- expect(result7).toEqual(['plan', 'default', 'auto-edit', 'yolo']);
284
- const result8 = await approvalModeCommand.completion(mockContext, '--user p');
285
- expect(result8).toEqual(['plan']);
286
- // Test completed patterns should return empty
287
- const result9 = await approvalModeCommand.completion(mockContext, 'plan --user ');
288
- expect(result9).toEqual([]);
289
- const result10 = await approvalModeCommand.completion(mockContext, '--user plan ');
290
- expect(result10).toEqual([]);
45
+ it('should not have completion function', () => {
46
+ expect(approvalModeCommand.completion).toBeUndefined();
291
47
  });
292
48
  });
293
49
  //# sourceMappingURL=approvalModeCommand.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"approvalModeCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/approvalModeCommand.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approvalModeCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/approvalModeCommand.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAEL,WAAW,GAEZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAGlF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,WAA2B,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,GAAG,wBAAwB,CAAC;YACrC,QAAQ,EAAE;gBACR,MAAM,EAAE;oBACN,eAAe,EAAE,GAAG,EAAE,CAAC,SAAS;oBAChC,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC;iBAC1B;gBACD,QAAQ,EAAE;oBACR,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;oBAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;iBACQ;aAC/B;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvD,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,IAAI,CAC1C,iDAAiD,CAClD,CAAC;QACF,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,MAAM,GAAG,CAAC,MAAM,mBAAmB,CAAC,MAAM,EAAE,CAChD,WAAW,EACX,EAAE,CACH,CAA2B,CAAC;QAE7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,MAAM,GAAG,CAAC,MAAM,mBAAmB,CAAC,MAAM,EAAE,CAChD,WAAW,EACX,gBAAgB,CACjB,CAA2B,CAAC;QAE7B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -4,9 +4,12 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { CommandKind } from './types.js';
7
+ import { t } from '../../i18n/index.js';
7
8
  export const authCommand = {
8
9
  name: 'auth',
9
- description: 'change the auth method',
10
+ get description() {
11
+ return t('change the auth method');
12
+ },
10
13
  kind: CommandKind.BUILT_IN,
11
14
  action: (_context, _args) => ({
12
15
  type: 'dialog',
@@ -1 +1 @@
1
- {"version":3,"file":"authCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/authCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAA0B,EAAE,CAAC,CAAC;QACpD,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM;KACf,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"authCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/authCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AAExC,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,MAAM;IACZ,IAAI,WAAW;QACb,OAAO,CAAC,CAAC,wBAAwB,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAA0B,EAAE,CAAC,CAAC;QACpD,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM;KACf,CAAC;CACH,CAAC"}
@@ -4,55 +4,28 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import open from 'open';
7
- import process from 'node:process';
8
7
  import { CommandKind, } from './types.js';
9
8
  import { MessageType } from '../types.js';
10
- import { GIT_COMMIT_INFO } from '../../generated/git-commit.js';
11
- import { formatMemoryUsage } from '../utils/formatters.js';
12
- import { getCliVersion } from '../../utils/version.js';
13
- import { IdeClient, AuthType } from '@umsai/ums-code-core';
9
+ import { getExtendedSystemInfo } from '../../utils/systemInfo.js';
10
+ import { getSystemInfoFields, getFieldValue, } from '../../utils/systemInfoFields.js';
11
+ import { t } from '../../i18n/index.js';
14
12
  export const bugCommand = {
15
13
  name: 'bug',
16
- description: 'submit a bug report',
14
+ get description() {
15
+ return t('submit a bug report');
16
+ },
17
17
  kind: CommandKind.BUILT_IN,
18
18
  action: async (context, args) => {
19
19
  const bugDescription = (args || '').trim();
20
- const { config } = context.services;
21
- const osVersion = `${process.platform} ${process.version}`;
22
- let sandboxEnv = 'no sandbox';
23
- if (process.env['SANDBOX'] && process.env['SANDBOX'] !== 'sandbox-exec') {
24
- sandboxEnv = process.env['SANDBOX'].replace(/^qwen-(?:code-)?/, '');
25
- }
26
- else if (process.env['SANDBOX'] === 'sandbox-exec') {
27
- sandboxEnv = `sandbox-exec (${process.env['SEATBELT_PROFILE'] || 'unknown'})`;
28
- }
29
- const modelVersion = config?.getModel() || 'Unknown';
30
- const cliVersion = await getCliVersion();
31
- const memoryUsage = formatMemoryUsage(process.memoryUsage().rss);
32
- const ideClient = await getIdeClientName(context);
33
- const selectedAuthType = context.services.settings.merged.security?.auth?.selectedType || '';
34
- const baseUrl = selectedAuthType === AuthType.USE_OPENAI
35
- ? config?.getContentGeneratorConfig()?.baseUrl
36
- : undefined;
37
- let info = `
38
- * **CLI Version:** ${cliVersion}
39
- * **Git Commit:** ${GIT_COMMIT_INFO}
40
- * **Session ID:** ${config?.getSessionId() || 'unknown'}
41
- * **Operating System:** ${osVersion}
42
- * **Sandbox Environment:** ${sandboxEnv}
43
- * **Auth Type:** ${selectedAuthType}`;
44
- if (baseUrl) {
45
- info += `\n* **Base URL:** ${baseUrl}`;
46
- }
47
- info += `
48
- * **Model Version:** ${modelVersion}
49
- * **Memory Usage:** ${memoryUsage}
50
- `;
51
- if (ideClient) {
52
- info += `* **IDE Client:** ${ideClient}\n`;
20
+ const systemInfo = await getExtendedSystemInfo(context);
21
+ const fields = getSystemInfoFields(systemInfo);
22
+ // Generate bug report info using the same field configuration
23
+ let info = '\n';
24
+ for (const field of fields) {
25
+ info += `* **${field.label}:** ${getFieldValue(field, systemInfo)}\n`;
53
26
  }
54
27
  let bugReportUrl = 'https://github.com/QwenLM/qwen-code/issues/new?template=bug_report.yml&title={title}&info={info}';
55
- const bugCommandSettings = config?.getBugCommand();
28
+ const bugCommandSettings = context.services.config?.getBugCommand();
56
29
  if (bugCommandSettings?.urlTemplate) {
57
30
  bugReportUrl = bugCommandSettings.urlTemplate;
58
31
  }
@@ -75,11 +48,4 @@ export const bugCommand = {
75
48
  }
76
49
  },
77
50
  };
78
- async function getIdeClientName(context) {
79
- if (!context.services.config?.getIdeMode()) {
80
- return '';
81
- }
82
- const ideClient = await IdeClient.getInstance();
83
- return ideClient.getDetectedIdeDisplayName() ?? '';
84
- }
85
51
  //# sourceMappingURL=bugCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bugCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/bugCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bugCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/bugCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAGL,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EACL,mBAAmB,EACnB,aAAa,GACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AAExC,MAAM,CAAC,MAAM,UAAU,GAAiB;IACtC,IAAI,EAAE,KAAK;IACX,IAAI,WAAW;QACb,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EAAE,OAAuB,EAAE,IAAa,EAAiB,EAAE;QACtE,MAAM,cAAc,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAExD,MAAM,MAAM,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAE/C,8DAA8D;QAC9D,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,IAAI,OAAO,KAAK,CAAC,KAAK,OAAO,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC;QACxE,CAAC;QAED,IAAI,YAAY,GACd,kGAAkG,CAAC;QAErG,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;QACpE,IAAI,kBAAkB,EAAE,WAAW,EAAE,CAAC;YACpC,YAAY,GAAG,kBAAkB,CAAC,WAAW,CAAC;QAChD,CAAC;QAED,YAAY,GAAG,YAAY;aACxB,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;aACtD,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/C,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;YACE,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,8EAA8E,YAAY,EAAE;SACnG,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACzD,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;gBACE,IAAI,EAAE,WAAW,CAAC,KAAK;gBACvB,IAAI,EAAE,kCAAkC,YAAY,EAAE;aACvD,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}