@rdmind/rdmind 0.0.15-alpha.0 → 0.0.15-alpha.2

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 (774) hide show
  1. package/dist/package.json +15 -10
  2. package/dist/src/commands/extensions/disable.d.ts +2 -3
  3. package/dist/src/commands/extensions/disable.js +20 -6
  4. package/dist/src/commands/extensions/disable.js.map +1 -1
  5. package/dist/src/commands/extensions/enable.d.ts +2 -3
  6. package/dist/src/commands/extensions/enable.js +21 -10
  7. package/dist/src/commands/extensions/enable.js.map +1 -1
  8. package/dist/src/commands/extensions/examples/context/QWEN.md +8 -0
  9. package/dist/src/commands/extensions/examples/context/qwen-extension.json +4 -0
  10. package/dist/src/commands/extensions/examples/custom-commands/commands/fs/grep-code.toml +6 -0
  11. package/dist/src/commands/extensions/examples/custom-commands/qwen-extension.json +4 -0
  12. package/dist/src/commands/extensions/examples/exclude-tools/qwen-extension.json +5 -0
  13. package/dist/src/commands/extensions/examples/mcp-server/example.ts +60 -0
  14. package/dist/src/commands/extensions/examples/mcp-server/package.json +18 -0
  15. package/dist/src/commands/extensions/examples/mcp-server/qwen-extension.json +11 -0
  16. package/dist/src/commands/extensions/examples/mcp-server/tsconfig.json +13 -0
  17. package/dist/src/commands/extensions/install.d.ts +3 -2
  18. package/dist/src/commands/extensions/install.js +47 -17
  19. package/dist/src/commands/extensions/install.js.map +1 -1
  20. package/dist/src/commands/extensions/install.test.js +86 -9
  21. package/dist/src/commands/extensions/install.test.js.map +1 -1
  22. package/dist/src/commands/extensions/link.d.ts +12 -0
  23. package/dist/src/commands/extensions/link.js +37 -0
  24. package/dist/src/commands/extensions/link.js.map +1 -0
  25. package/dist/src/commands/extensions/list.js +1 -1
  26. package/dist/src/commands/extensions/list.js.map +1 -1
  27. package/dist/src/commands/extensions/new.d.ts +7 -0
  28. package/dist/src/commands/extensions/new.js +90 -0
  29. package/dist/src/commands/extensions/new.js.map +1 -0
  30. package/dist/src/commands/extensions/new.test.js +59 -0
  31. package/dist/src/commands/extensions/new.test.js.map +1 -0
  32. package/dist/src/commands/extensions/uninstall.js +1 -1
  33. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  34. package/dist/src/commands/extensions/uninstall.test.js +2 -2
  35. package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
  36. package/dist/src/commands/extensions/update.d.ts +2 -1
  37. package/dist/src/commands/extensions/update.js +80 -14
  38. package/dist/src/commands/extensions/update.js.map +1 -1
  39. package/dist/src/commands/extensions.js +4 -0
  40. package/dist/src/commands/extensions.js.map +1 -1
  41. package/dist/src/commands/mcp/add.js +6 -1
  42. package/dist/src/commands/mcp/add.js.map +1 -1
  43. package/dist/src/commands/mcp/list.js +4 -3
  44. package/dist/src/commands/mcp/list.js.map +1 -1
  45. package/dist/src/commands/mcp/remove.js +1 -1
  46. package/dist/src/commands/mcp/remove.js.map +1 -1
  47. package/dist/src/config/auth.d.ts +1 -1
  48. package/dist/src/config/auth.js +4 -4
  49. package/dist/src/config/auth.js.map +1 -1
  50. package/dist/src/config/auth.test.js +15 -7
  51. package/dist/src/config/auth.test.js.map +1 -1
  52. package/dist/src/config/config.d.ts +7 -2
  53. package/dist/src/config/config.js +178 -122
  54. package/dist/src/config/config.js.map +1 -1
  55. package/dist/src/config/extension.d.ts +39 -16
  56. package/dist/src/config/extension.js +349 -192
  57. package/dist/src/config/extension.js.map +1 -1
  58. package/dist/src/config/extensions/extensionEnablement.d.ts +47 -0
  59. package/dist/src/config/extensions/extensionEnablement.js +189 -0
  60. package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
  61. package/dist/src/{ui/components/ModelSelectionDialog.test.d.ts → config/extensions/extensionEnablement.test.d.ts} +1 -1
  62. package/dist/src/config/extensions/extensionEnablement.test.js +333 -0
  63. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -0
  64. package/dist/src/config/extensions/github.d.ts +30 -0
  65. package/dist/src/config/extensions/github.js +322 -0
  66. package/dist/src/config/extensions/github.js.map +1 -0
  67. package/dist/src/config/extensions/github.test.d.ts +6 -0
  68. package/dist/src/config/extensions/github.test.js +334 -0
  69. package/dist/src/config/extensions/github.test.js.map +1 -0
  70. package/dist/src/config/extensions/update.d.ts +19 -0
  71. package/dist/src/config/extensions/update.js +113 -0
  72. package/dist/src/config/extensions/update.js.map +1 -0
  73. package/dist/src/config/extensions/update.test.d.ts +6 -0
  74. package/dist/src/config/extensions/update.test.js +342 -0
  75. package/dist/src/config/extensions/update.test.js.map +1 -0
  76. package/dist/src/config/extensions/variableSchema.d.ts +8 -0
  77. package/dist/src/config/extensions/variableSchema.js +4 -0
  78. package/dist/src/config/extensions/variableSchema.js.map +1 -1
  79. package/dist/src/config/keyBindings.d.ts +5 -1
  80. package/dist/src/config/keyBindings.js +14 -25
  81. package/dist/src/config/keyBindings.js.map +1 -1
  82. package/dist/src/config/settings.d.ts +8 -5
  83. package/dist/src/config/settings.js +178 -275
  84. package/dist/src/config/settings.js.map +1 -1
  85. package/dist/src/config/settingsSchema.d.ts +332 -141
  86. package/dist/src/config/settingsSchema.js +321 -153
  87. package/dist/src/config/settingsSchema.js.map +1 -1
  88. package/dist/src/config/settingsSchema.test.js +64 -57
  89. package/dist/src/config/settingsSchema.test.js.map +1 -1
  90. package/dist/src/config/trustedFolders.d.ts +23 -4
  91. package/dist/src/config/trustedFolders.js +97 -47
  92. package/dist/src/config/trustedFolders.js.map +1 -1
  93. package/dist/src/config/trustedFolders.test.js +196 -20
  94. package/dist/src/config/trustedFolders.test.js.map +1 -1
  95. package/dist/src/core/auth.d.ts +13 -0
  96. package/dist/src/core/auth.js +27 -0
  97. package/dist/src/core/auth.js.map +1 -0
  98. package/dist/src/core/initializer.d.ts +21 -0
  99. package/dist/src/core/initializer.js +33 -0
  100. package/dist/src/core/initializer.js.map +1 -0
  101. package/dist/src/core/theme.d.ts +12 -0
  102. package/dist/src/core/theme.js +20 -0
  103. package/dist/src/core/theme.js.map +1 -0
  104. package/dist/src/gemini.d.ts +3 -2
  105. package/dist/src/gemini.js +156 -128
  106. package/dist/src/gemini.js.map +1 -1
  107. package/dist/src/gemini.test.js +190 -47
  108. package/dist/src/gemini.test.js.map +1 -1
  109. package/dist/src/generated/git-commit.d.ts +2 -2
  110. package/dist/src/generated/git-commit.js +2 -2
  111. package/dist/src/nonInteractiveCli.d.ts +2 -1
  112. package/dist/src/nonInteractiveCli.js +101 -72
  113. package/dist/src/nonInteractiveCli.js.map +1 -1
  114. package/dist/src/nonInteractiveCliCommands.d.ts +17 -0
  115. package/dist/src/nonInteractiveCliCommands.js +79 -0
  116. package/dist/src/nonInteractiveCliCommands.js.map +1 -0
  117. package/dist/src/services/BuiltinCommandLoader.js +1 -1
  118. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  119. package/dist/src/services/BuiltinCommandLoader.test.js +30 -18
  120. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  121. package/dist/src/services/FileCommandLoader.d.ts +2 -0
  122. package/dist/src/services/FileCommandLoader.js +7 -0
  123. package/dist/src/services/FileCommandLoader.js.map +1 -1
  124. package/dist/src/services/McpPromptLoader.js +43 -8
  125. package/dist/src/services/McpPromptLoader.js.map +1 -1
  126. package/dist/src/services/McpPromptLoader.test.js +228 -1
  127. package/dist/src/services/McpPromptLoader.test.js.map +1 -1
  128. package/dist/src/services/prompt-processors/shellProcessor.js +8 -1
  129. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  130. package/dist/src/test-utils/createExtension.d.ts +15 -0
  131. package/dist/src/test-utils/createExtension.js +25 -0
  132. package/dist/src/test-utils/createExtension.js.map +1 -0
  133. package/dist/src/test-utils/mockCommandContext.js +2 -0
  134. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  135. package/dist/src/test-utils/render.d.ts +5 -1
  136. package/dist/src/test-utils/render.js +5 -1
  137. package/dist/src/test-utils/render.js.map +1 -1
  138. package/dist/src/ui/App.d.ts +1 -10
  139. package/dist/src/ui/App.js +26 -834
  140. package/dist/src/ui/App.js.map +1 -1
  141. package/dist/src/ui/AppContainer.d.ts +17 -0
  142. package/dist/src/ui/AppContainer.js +1062 -0
  143. package/dist/src/ui/AppContainer.js.map +1 -0
  144. package/dist/src/ui/AppContainer.test.d.ts +6 -0
  145. package/dist/src/ui/AppContainer.test.js +831 -0
  146. package/dist/src/ui/AppContainer.test.js.map +1 -0
  147. package/dist/src/ui/IdeIntegrationNudge.d.ts +2 -2
  148. package/dist/src/ui/IdeIntegrationNudge.js +6 -8
  149. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  150. package/dist/src/ui/{components → auth}/AuthDialog.js +8 -4
  151. package/dist/src/ui/auth/AuthDialog.js.map +1 -0
  152. package/dist/src/ui/auth/AuthDialog.test.d.ts +6 -0
  153. package/dist/src/ui/{components → auth}/AuthDialog.test.js +92 -10
  154. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -0
  155. package/dist/src/ui/{components → auth}/AuthInProgress.js +2 -2
  156. package/dist/src/ui/auth/AuthInProgress.js.map +1 -0
  157. package/dist/src/ui/{hooks/useAuthCommand.d.ts → auth/useAuth.d.ts} +9 -3
  158. package/dist/src/ui/{hooks/useAuthCommand.js → auth/useAuth.js} +49 -14
  159. package/dist/src/ui/auth/useAuth.js.map +1 -0
  160. package/dist/src/ui/commands/aboutCommand.js +9 -3
  161. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  162. package/dist/src/ui/commands/chatCommand.d.ts +2 -0
  163. package/dist/src/ui/commands/chatCommand.js +93 -3
  164. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  165. package/dist/src/ui/commands/clearCommand.js +1 -1
  166. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  167. package/dist/src/ui/commands/corgiCommand.js +1 -0
  168. package/dist/src/ui/commands/corgiCommand.js.map +1 -1
  169. package/dist/src/ui/commands/directoryCommand.d.ts +1 -0
  170. package/dist/src/ui/commands/directoryCommand.js +156 -4
  171. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  172. package/dist/src/ui/commands/extensionsCommand.js +92 -15
  173. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  174. package/dist/src/ui/commands/ideCommand.d.ts +1 -2
  175. package/dist/src/ui/commands/ideCommand.js +19 -10
  176. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  177. package/dist/src/ui/commands/mcpCommand.js +88 -261
  178. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  179. package/dist/src/ui/commands/memoryCommand.js +1 -1
  180. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  181. package/dist/src/ui/commands/modelCommand.js +1 -16
  182. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  183. package/dist/src/ui/commands/modelCommand.test.js +10 -11
  184. package/dist/src/ui/commands/modelCommand.test.js.map +1 -1
  185. package/dist/src/ui/commands/summaryCommand.js +1 -1
  186. package/dist/src/ui/commands/summaryCommand.js.map +1 -1
  187. package/dist/src/ui/commands/toolsCommand.js +10 -24
  188. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  189. package/dist/src/ui/commands/types.d.ts +7 -2
  190. package/dist/src/ui/commands/types.js +0 -1
  191. package/dist/src/ui/commands/types.js.map +1 -1
  192. package/dist/src/ui/components/AboutBox.js +2 -2
  193. package/dist/src/ui/components/AboutBox.js.map +1 -1
  194. package/dist/src/ui/components/AnsiOutput.d.ts +13 -0
  195. package/dist/src/ui/components/AnsiOutput.js +12 -0
  196. package/dist/src/ui/components/AnsiOutput.js.map +1 -0
  197. package/dist/src/ui/components/AnsiOutput.test.d.ts +6 -0
  198. package/dist/src/ui/components/AnsiOutput.test.js +97 -0
  199. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -0
  200. package/dist/src/ui/components/AppHeader.d.ts +10 -0
  201. package/dist/src/ui/components/AppHeader.js +19 -0
  202. package/dist/src/ui/components/AppHeader.js.map +1 -0
  203. package/dist/src/ui/components/AutoAcceptIndicator.js +5 -5
  204. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
  205. package/dist/src/ui/components/Composer.d.ts +6 -0
  206. package/dist/src/ui/components/Composer.js +54 -0
  207. package/dist/src/ui/components/Composer.js.map +1 -0
  208. package/dist/src/ui/components/Composer.test.d.ts +6 -0
  209. package/dist/src/ui/components/Composer.test.js +337 -0
  210. package/dist/src/ui/components/Composer.test.js.map +1 -0
  211. package/dist/src/ui/components/ConfigInitDisplay.d.ts +6 -0
  212. package/dist/src/ui/components/ConfigInitDisplay.js +38 -0
  213. package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -0
  214. package/dist/src/ui/components/ConsentPrompt.d.ts +13 -0
  215. package/dist/src/ui/components/ConsentPrompt.js +19 -0
  216. package/dist/src/ui/components/ConsentPrompt.js.map +1 -0
  217. package/dist/src/ui/components/ConsentPrompt.test.d.ts +6 -0
  218. package/dist/src/ui/components/ConsentPrompt.test.js +67 -0
  219. package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -0
  220. package/dist/src/ui/components/ConsoleSummaryDisplay.js +2 -2
  221. package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -1
  222. package/dist/src/ui/components/ContextSummaryDisplay.js +3 -3
  223. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  224. package/dist/src/ui/components/ContextUsageDisplay.d.ts +2 -1
  225. package/dist/src/ui/components/ContextUsageDisplay.js +5 -3
  226. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
  227. package/dist/src/ui/components/DebugProfiler.js +2 -2
  228. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  229. package/dist/src/ui/components/DetailedMessagesDisplay.js +7 -7
  230. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  231. package/dist/src/ui/components/DialogManager.d.ts +12 -0
  232. package/dist/src/ui/components/DialogManager.js +129 -0
  233. package/dist/src/ui/components/DialogManager.js.map +1 -0
  234. package/dist/src/ui/components/EditorSettingsDialog.js +16 -7
  235. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  236. package/dist/src/ui/components/ExitWarning.d.ts +7 -0
  237. package/dist/src/ui/components/ExitWarning.js +9 -0
  238. package/dist/src/ui/components/ExitWarning.js.map +1 -0
  239. package/dist/src/ui/components/FolderTrustDialog.js +22 -9
  240. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  241. package/dist/src/ui/components/FolderTrustDialog.test.js +37 -12
  242. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  243. package/dist/src/ui/components/Footer.d.ts +1 -17
  244. package/dist/src/ui/components/Footer.js +33 -11
  245. package/dist/src/ui/components/Footer.js.map +1 -1
  246. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +5 -0
  247. package/dist/src/ui/components/GeminiRespondingSpinner.js +7 -2
  248. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  249. package/dist/src/ui/components/Header.js +2 -2
  250. package/dist/src/ui/components/Header.js.map +1 -1
  251. package/dist/src/ui/components/Help.d.ts +1 -1
  252. package/dist/src/ui/components/Help.js +9 -6
  253. package/dist/src/ui/components/Help.js.map +1 -1
  254. package/dist/src/ui/components/Help.test.d.ts +6 -0
  255. package/dist/src/ui/components/Help.test.js +57 -0
  256. package/dist/src/ui/components/Help.test.js.map +1 -0
  257. package/dist/src/ui/components/HistoryItemDisplay.d.ts +5 -4
  258. package/dist/src/ui/components/HistoryItemDisplay.js +13 -4
  259. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  260. package/dist/src/ui/components/HistoryItemDisplay.test.js +90 -9
  261. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  262. package/dist/src/ui/components/IdeTrustChangeDialog.d.ts +11 -0
  263. package/dist/src/ui/components/IdeTrustChangeDialog.js +32 -0
  264. package/dist/src/ui/components/IdeTrustChangeDialog.js.map +1 -0
  265. package/dist/src/ui/components/IdeTrustChangeDialog.test.d.ts +6 -0
  266. package/dist/src/ui/components/IdeTrustChangeDialog.test.js +57 -0
  267. package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -0
  268. package/dist/src/ui/components/InputPrompt.d.ts +9 -0
  269. package/dist/src/ui/components/InputPrompt.js +192 -45
  270. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  271. package/dist/src/ui/components/LoadingIndicator.js +2 -2
  272. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  273. package/dist/src/ui/components/LoadingIndicator.test.js +4 -0
  274. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  275. package/dist/src/ui/components/LoopDetectionConfirmation.d.ts +13 -0
  276. package/dist/src/ui/components/LoopDetectionConfirmation.js +37 -0
  277. package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -0
  278. package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +6 -0
  279. package/dist/src/ui/components/LoopDetectionConfirmation.test.js +28 -0
  280. package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -0
  281. package/dist/src/ui/components/MainContent.d.ts +6 -0
  282. package/dist/src/ui/components/MainContent.js +28 -0
  283. package/dist/src/ui/components/MainContent.js.map +1 -0
  284. package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
  285. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  286. package/dist/src/ui/components/ModelDialog.d.ts +11 -0
  287. package/dist/src/ui/components/ModelDialog.js +42 -0
  288. package/dist/src/ui/components/ModelDialog.js.map +1 -0
  289. package/dist/src/ui/components/ModelDialog.test.d.ts +6 -0
  290. package/dist/src/ui/components/ModelDialog.test.js +158 -0
  291. package/dist/src/ui/components/ModelDialog.test.js.map +1 -0
  292. package/dist/src/ui/components/ModelStatsDisplay.js +7 -7
  293. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  294. package/dist/src/ui/components/ModelSwitchDialog.js +3 -0
  295. package/dist/src/ui/components/ModelSwitchDialog.js.map +1 -1
  296. package/dist/src/ui/components/ModelSwitchDialog.test.js +3 -0
  297. package/dist/src/ui/components/ModelSwitchDialog.test.js.map +1 -1
  298. package/dist/src/ui/components/Notifications.d.ts +6 -0
  299. package/dist/src/ui/components/Notifications.js +23 -0
  300. package/dist/src/ui/components/Notifications.js.map +1 -0
  301. package/dist/src/ui/components/OpenAIKeyPrompt.js +63 -39
  302. package/dist/src/ui/components/OpenAIKeyPrompt.js.map +1 -1
  303. package/dist/src/ui/components/OpenAIKeyPrompt.test.js +8 -1
  304. package/dist/src/ui/components/OpenAIKeyPrompt.test.js.map +1 -1
  305. package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +13 -0
  306. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +48 -0
  307. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -0
  308. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.d.ts +6 -0
  309. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +154 -0
  310. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -0
  311. package/dist/src/ui/components/PrepareLabel.d.ts +5 -5
  312. package/dist/src/ui/components/PrepareLabel.js +67 -11
  313. package/dist/src/ui/components/PrepareLabel.js.map +1 -1
  314. package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
  315. package/dist/src/ui/components/PrepareLabel.test.js +71 -0
  316. package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
  317. package/dist/src/ui/components/ProQuotaDialog.d.ts +13 -0
  318. package/dist/src/ui/components/ProQuotaDialog.js +23 -0
  319. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -0
  320. package/dist/src/ui/components/ProQuotaDialog.test.d.ts +6 -0
  321. package/dist/src/ui/components/ProQuotaDialog.test.js +58 -0
  322. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -0
  323. package/dist/src/ui/components/QueuedMessageDisplay.d.ts +9 -0
  324. package/dist/src/ui/components/QueuedMessageDisplay.js +20 -0
  325. package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -0
  326. package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +6 -0
  327. package/dist/src/ui/components/QueuedMessageDisplay.test.js +56 -0
  328. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -0
  329. package/dist/src/ui/components/QuitConfirmationDialog.js +4 -0
  330. package/dist/src/ui/components/QuitConfirmationDialog.js.map +1 -1
  331. package/dist/src/ui/components/QuittingDisplay.d.ts +6 -0
  332. package/dist/src/ui/components/QuittingDisplay.js +20 -0
  333. package/dist/src/ui/components/QuittingDisplay.js.map +1 -0
  334. package/dist/src/ui/components/QwenOAuthProgress.js +5 -4
  335. package/dist/src/ui/components/QwenOAuthProgress.js.map +1 -1
  336. package/dist/src/ui/components/QwenOAuthProgress.test.js +82 -11
  337. package/dist/src/ui/components/QwenOAuthProgress.test.js.map +1 -1
  338. package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
  339. package/dist/src/ui/components/SettingsDialog.js +97 -23
  340. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  341. package/dist/src/ui/components/SettingsDialog.test.js +474 -84
  342. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  343. package/dist/src/ui/components/ShellConfirmationDialog.js +5 -2
  344. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  345. package/dist/src/ui/components/ShellInputPrompt.d.ts +11 -0
  346. package/dist/src/ui/components/ShellInputPrompt.js +36 -0
  347. package/dist/src/ui/components/ShellInputPrompt.js.map +1 -0
  348. package/dist/src/ui/components/ShellModeIndicator.js +2 -2
  349. package/dist/src/ui/components/ShellModeIndicator.js.map +1 -1
  350. package/dist/src/ui/components/ShowMoreLines.js +2 -2
  351. package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
  352. package/dist/src/ui/components/StatsDisplay.js +6 -6
  353. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  354. package/dist/src/ui/components/SuggestionsDisplay.d.ts +7 -2
  355. package/dist/src/ui/components/SuggestionsDisplay.js +17 -17
  356. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  357. package/dist/src/ui/components/ThemeDialog.js +14 -29
  358. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  359. package/dist/src/ui/components/ThemeDialog.test.d.ts +6 -0
  360. package/dist/src/ui/components/ThemeDialog.test.js +75 -0
  361. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -0
  362. package/dist/src/ui/components/Tips.js +2 -2
  363. package/dist/src/ui/components/Tips.js.map +1 -1
  364. package/dist/src/ui/components/ToolStatsDisplay.js +4 -4
  365. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
  366. package/dist/src/ui/components/UpdateNotification.js +2 -2
  367. package/dist/src/ui/components/UpdateNotification.js.map +1 -1
  368. package/dist/src/ui/components/WelcomeBackDialog.js +2 -0
  369. package/dist/src/ui/components/WelcomeBackDialog.js.map +1 -1
  370. package/dist/src/ui/components/WorkspaceMigrationDialog.js +14 -11
  371. package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
  372. package/dist/src/ui/components/messages/CompressionMessage.d.ts +1 -2
  373. package/dist/src/ui/components/messages/CompressionMessage.js +37 -8
  374. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  375. package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +6 -0
  376. package/dist/src/ui/components/messages/CompressionMessage.test.js +160 -0
  377. package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -0
  378. package/dist/src/ui/components/messages/DiffRenderer.d.ts +2 -1
  379. package/dist/src/ui/components/messages/DiffRenderer.js +14 -22
  380. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  381. package/dist/src/ui/components/messages/ErrorMessage.js +2 -2
  382. package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -1
  383. package/dist/src/ui/components/messages/GeminiMessage.js +2 -2
  384. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  385. package/dist/src/ui/components/messages/InfoMessage.js +2 -2
  386. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  387. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +53 -21
  388. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  389. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +0 -8
  390. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  391. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -2
  392. package/dist/src/ui/components/messages/ToolGroupMessage.js +18 -10
  393. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  394. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +17 -15
  395. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  396. package/dist/src/ui/components/messages/ToolMessage.d.ts +3 -1
  397. package/dist/src/ui/components/messages/ToolMessage.js +53 -11
  398. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  399. package/dist/src/ui/components/messages/ToolMessage.test.js +34 -1
  400. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  401. package/dist/src/ui/components/messages/UserMessage.js +3 -4
  402. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  403. package/dist/src/ui/components/messages/UserShellMessage.js +2 -2
  404. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
  405. package/dist/src/ui/components/messages/WarningMessage.d.ts +11 -0
  406. package/dist/src/ui/components/messages/WarningMessage.js +10 -0
  407. package/dist/src/ui/components/messages/WarningMessage.js.map +1 -0
  408. package/dist/src/ui/components/shared/BaseSelectionList.d.ts +38 -0
  409. package/dist/src/ui/components/shared/BaseSelectionList.js +72 -0
  410. package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -0
  411. package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +6 -0
  412. package/dist/src/ui/components/shared/BaseSelectionList.test.js +376 -0
  413. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -0
  414. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +35 -0
  415. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +13 -0
  416. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -0
  417. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +6 -0
  418. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +79 -0
  419. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -0
  420. package/dist/src/ui/components/shared/EnumSelector.d.ts +18 -0
  421. package/dist/src/ui/components/shared/EnumSelector.js +44 -0
  422. package/dist/src/ui/components/shared/EnumSelector.js.map +1 -0
  423. package/dist/src/ui/components/shared/EnumSelector.test.d.ts +6 -0
  424. package/dist/src/ui/components/shared/EnumSelector.test.js +70 -0
  425. package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -0
  426. package/dist/src/ui/components/shared/MaxSizedBox.js +2 -2
  427. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  428. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +2 -3
  429. package/dist/src/ui/components/shared/RadioButtonSelect.js +10 -105
  430. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  431. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +115 -92
  432. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -1
  433. package/dist/src/ui/components/shared/ScopeSelector.d.ts +19 -0
  434. package/dist/src/ui/components/shared/ScopeSelector.js +14 -0
  435. package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -0
  436. package/dist/src/ui/components/shared/text-buffer.d.ts +25 -2
  437. package/dist/src/ui/components/shared/text-buffer.js +296 -187
  438. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  439. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js +2 -3
  440. package/dist/src/ui/components/subagents/create/AgentCreationWizard.js.map +1 -1
  441. package/dist/src/ui/components/subagents/create/ColorSelector.js +3 -2
  442. package/dist/src/ui/components/subagents/create/ColorSelector.js.map +1 -1
  443. package/dist/src/ui/components/subagents/create/CreationSummary.js +6 -5
  444. package/dist/src/ui/components/subagents/create/CreationSummary.js.map +1 -1
  445. package/dist/src/ui/components/subagents/create/DescriptionInput.js +2 -3
  446. package/dist/src/ui/components/subagents/create/DescriptionInput.js.map +1 -1
  447. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js +1 -0
  448. package/dist/src/ui/components/subagents/create/GenerationMethodSelector.js.map +1 -1
  449. package/dist/src/ui/components/subagents/create/LocationSelector.js +1 -0
  450. package/dist/src/ui/components/subagents/create/LocationSelector.js.map +1 -1
  451. package/dist/src/ui/components/subagents/create/TextEntryStep.js +2 -2
  452. package/dist/src/ui/components/subagents/create/TextEntryStep.js.map +1 -1
  453. package/dist/src/ui/components/subagents/create/ToolSelector.js +4 -3
  454. package/dist/src/ui/components/subagents/create/ToolSelector.js.map +1 -1
  455. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js +4 -4
  456. package/dist/src/ui/components/subagents/manage/ActionSelectionStep.js.map +1 -1
  457. package/dist/src/ui/components/subagents/manage/AgentEditStep.js +1 -0
  458. package/dist/src/ui/components/subagents/manage/AgentEditStep.js.map +1 -1
  459. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js +1 -2
  460. package/dist/src/ui/components/subagents/manage/AgentSelectionStep.js.map +1 -1
  461. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js +1 -2
  462. package/dist/src/ui/components/subagents/manage/AgentsManagerDialog.js.map +1 -1
  463. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js +9 -10
  464. package/dist/src/ui/components/subagents/runtime/AgentExecutionDisplay.js.map +1 -1
  465. package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
  466. package/dist/src/ui/components/views/ExtensionsList.js +47 -0
  467. package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
  468. package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
  469. package/dist/src/ui/components/views/ExtensionsList.test.js +97 -0
  470. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
  471. package/dist/src/ui/components/views/McpStatus.d.ts +27 -0
  472. package/dist/src/ui/components/views/McpStatus.js +77 -0
  473. package/dist/src/ui/components/views/McpStatus.js.map +1 -0
  474. package/dist/src/ui/components/views/McpStatus.test.d.ts +6 -0
  475. package/dist/src/ui/components/views/McpStatus.test.js +117 -0
  476. package/dist/src/ui/components/views/McpStatus.test.js.map +1 -0
  477. package/dist/src/ui/components/views/ToolsList.d.ts +14 -0
  478. package/dist/src/ui/components/views/ToolsList.js +7 -0
  479. package/dist/src/ui/components/views/ToolsList.js.map +1 -0
  480. package/dist/src/ui/components/views/ToolsList.test.d.ts +6 -0
  481. package/dist/src/ui/components/views/ToolsList.test.js +45 -0
  482. package/dist/src/ui/components/views/ToolsList.test.js.map +1 -0
  483. package/dist/src/ui/constants.d.ts +1 -0
  484. package/dist/src/ui/constants.js +1 -0
  485. package/dist/src/ui/constants.js.map +1 -1
  486. package/dist/src/ui/contexts/AppContext.d.ts +11 -0
  487. package/dist/src/ui/contexts/AppContext.js +15 -0
  488. package/dist/src/ui/contexts/AppContext.js.map +1 -0
  489. package/dist/src/ui/contexts/ConfigContext.d.ts +9 -0
  490. package/dist/src/ui/contexts/ConfigContext.js +16 -0
  491. package/dist/src/ui/contexts/ConfigContext.js.map +1 -0
  492. package/dist/src/ui/contexts/KeypressContext.d.ts +3 -0
  493. package/dist/src/ui/contexts/KeypressContext.js +309 -44
  494. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  495. package/dist/src/ui/contexts/KeypressContext.test.js +288 -2
  496. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  497. package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
  498. package/dist/src/ui/contexts/SessionContext.js +107 -5
  499. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  500. package/dist/src/ui/contexts/ShellFocusContext.d.ts +7 -0
  501. package/dist/src/ui/contexts/ShellFocusContext.js +9 -0
  502. package/dist/src/ui/contexts/ShellFocusContext.js.map +1 -0
  503. package/dist/src/ui/contexts/UIActionsContext.d.ts +45 -0
  504. package/dist/src/ui/contexts/UIActionsContext.js +21 -0
  505. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -0
  506. package/dist/src/ui/contexts/UIStateContext.d.ts +117 -0
  507. package/dist/src/ui/contexts/UIStateContext.js +17 -0
  508. package/dist/src/ui/contexts/UIStateContext.js.map +1 -0
  509. package/dist/src/ui/hooks/atCommandProcessor.js +12 -12
  510. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  511. package/dist/src/ui/hooks/atCommandProcessor.test.js +21 -19
  512. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  513. package/dist/src/ui/hooks/keyToAnsi.d.ts +15 -0
  514. package/dist/src/ui/hooks/keyToAnsi.js +67 -0
  515. package/dist/src/ui/hooks/keyToAnsi.js.map +1 -0
  516. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +2 -1
  517. package/dist/src/ui/hooks/shellCommandProcessor.js +65 -15
  518. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  519. package/dist/src/ui/hooks/shellCommandProcessor.test.js +196 -17
  520. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  521. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +20 -2
  522. package/dist/src/ui/hooks/slashCommandProcessor.js +41 -82
  523. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  524. package/dist/src/ui/hooks/useAtCompletion.js +1 -1
  525. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  526. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +3 -2
  527. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +20 -18
  528. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  529. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +43 -0
  530. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
  531. package/dist/src/ui/hooks/useExtensionUpdates.d.ts +21 -0
  532. package/dist/src/ui/hooks/useExtensionUpdates.js +116 -0
  533. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -0
  534. package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +6 -0
  535. package/dist/src/ui/hooks/useExtensionUpdates.test.js +243 -0
  536. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
  537. package/dist/src/ui/hooks/useFocus.js +10 -0
  538. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  539. package/dist/src/ui/hooks/useFolderTrust.js +6 -10
  540. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  541. package/dist/src/ui/hooks/useGeminiStream.d.ts +14 -3
  542. package/dist/src/ui/hooks/useGeminiStream.js +173 -79
  543. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  544. package/dist/src/ui/hooks/useGitBranchName.js +15 -18
  545. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  546. package/dist/src/ui/hooks/useGitBranchName.test.js +49 -53
  547. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  548. package/dist/src/ui/hooks/useIdeTrustListener.d.ts +16 -0
  549. package/dist/src/ui/hooks/useIdeTrustListener.js +65 -0
  550. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -0
  551. package/dist/src/ui/hooks/useIdeTrustListener.test.d.ts +6 -0
  552. package/dist/src/ui/hooks/useIdeTrustListener.test.js +183 -0
  553. package/dist/src/ui/hooks/useIdeTrustListener.test.js.map +1 -0
  554. package/dist/src/ui/hooks/useInputHistoryStore.d.ts +19 -0
  555. package/dist/src/ui/hooks/useInputHistoryStore.js +81 -0
  556. package/dist/src/ui/hooks/useInputHistoryStore.js.map +1 -0
  557. package/dist/src/ui/hooks/useInputHistoryStore.test.d.ts +6 -0
  558. package/dist/src/ui/hooks/useInputHistoryStore.test.js +234 -0
  559. package/dist/src/ui/hooks/useInputHistoryStore.test.js.map +1 -0
  560. package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
  561. package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
  562. package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
  563. package/dist/src/ui/hooks/useLoadingIndicator.test.js +2 -2
  564. package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
  565. package/dist/src/ui/hooks/useMemoryMonitor.d.ts +13 -0
  566. package/dist/src/ui/hooks/useMemoryMonitor.js +28 -0
  567. package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
  568. package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +6 -0
  569. package/dist/src/ui/hooks/useMemoryMonitor.test.js +57 -0
  570. package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -0
  571. package/dist/src/ui/hooks/useMessageQueue.d.ts +2 -1
  572. package/dist/src/ui/hooks/useMessageQueue.js +5 -3
  573. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
  574. package/dist/src/ui/hooks/useMessageQueue.test.js +9 -0
  575. package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -1
  576. package/dist/src/ui/hooks/useModelCommand.d.ts +12 -0
  577. package/dist/src/ui/hooks/useModelCommand.js +21 -0
  578. package/dist/src/ui/hooks/useModelCommand.js.map +1 -0
  579. package/dist/src/ui/hooks/useModelCommand.test.d.ts +6 -0
  580. package/dist/src/ui/hooks/useModelCommand.test.js +35 -0
  581. package/dist/src/ui/hooks/useModelCommand.test.js.map +1 -0
  582. package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +17 -0
  583. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +78 -0
  584. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -0
  585. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.d.ts +6 -0
  586. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +182 -0
  587. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -0
  588. package/dist/src/ui/hooks/usePhraseCycler.d.ts +1 -1
  589. package/dist/src/ui/hooks/usePhraseCycler.js +11 -8
  590. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  591. package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +21 -0
  592. package/dist/src/ui/hooks/useQuotaAndFallback.js +122 -0
  593. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -0
  594. package/dist/src/ui/hooks/useQuotaAndFallback.test.d.ts +6 -0
  595. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +269 -0
  596. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -0
  597. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
  598. package/dist/src/ui/hooks/useReactToolScheduler.js +23 -17
  599. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  600. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +1 -1
  601. package/dist/src/ui/hooks/useReverseSearchCompletion.js +67 -20
  602. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
  603. package/dist/src/ui/hooks/useSelectionList.d.ts +34 -0
  604. package/dist/src/ui/hooks/useSelectionList.js +245 -0
  605. package/dist/src/ui/hooks/useSelectionList.js.map +1 -0
  606. package/dist/src/ui/hooks/useSelectionList.test.d.ts +6 -0
  607. package/dist/src/ui/hooks/useSelectionList.test.js +701 -0
  608. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -0
  609. package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
  610. package/dist/src/ui/hooks/useSlashCompletion.js +281 -67
  611. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  612. package/dist/src/ui/hooks/useSlashCompletion.test.d.ts +4 -1
  613. package/dist/src/ui/hooks/useSlashCompletion.test.js +390 -65
  614. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  615. package/dist/src/ui/hooks/useStateAndRef.d.ts +1 -1
  616. package/dist/src/ui/hooks/useStateAndRef.js +2 -2
  617. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
  618. package/dist/src/ui/hooks/useThemeCommand.d.ts +1 -1
  619. package/dist/src/ui/hooks/useThemeCommand.js +3 -14
  620. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  621. package/dist/src/ui/hooks/useToolScheduler.test.js +64 -291
  622. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  623. package/dist/src/ui/hooks/useWelcomeBack.js +2 -2
  624. package/dist/src/ui/hooks/useWelcomeBack.js.map +1 -1
  625. package/dist/src/ui/hooks/useWorkspaceMigration.js +2 -1
  626. package/dist/src/ui/hooks/useWorkspaceMigration.js.map +1 -1
  627. package/dist/src/ui/keyMatchers.test.js +17 -0
  628. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  629. package/dist/src/ui/layouts/DefaultAppLayout.d.ts +9 -0
  630. package/dist/src/ui/layouts/DefaultAppLayout.js +13 -0
  631. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -0
  632. package/dist/src/ui/layouts/ScreenReaderAppLayout.d.ts +7 -0
  633. package/dist/src/ui/layouts/ScreenReaderAppLayout.js +14 -0
  634. package/dist/src/ui/layouts/ScreenReaderAppLayout.js.map +1 -0
  635. package/dist/src/ui/models/availableModels.d.ts +3 -0
  636. package/dist/src/ui/models/availableModels.js +27 -3
  637. package/dist/src/ui/models/availableModels.js.map +1 -1
  638. package/dist/src/ui/noninteractive/nonInteractiveUi.d.ts +12 -0
  639. package/dist/src/ui/noninteractive/nonInteractiveUi.js +28 -0
  640. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -0
  641. package/dist/src/ui/state/extensions.d.ts +42 -0
  642. package/dist/src/ui/state/extensions.js +62 -0
  643. package/dist/src/ui/state/extensions.js.map +1 -0
  644. package/dist/src/ui/themes/ayu.js +1 -1
  645. package/dist/src/ui/themes/dracula.js +2 -2
  646. package/dist/src/ui/themes/github-dark.js +1 -1
  647. package/dist/src/ui/themes/theme.js +19 -19
  648. package/dist/src/ui/themes/theme.js.map +1 -1
  649. package/dist/src/ui/types.d.ts +79 -3
  650. package/dist/src/ui/types.js +14 -0
  651. package/dist/src/ui/types.js.map +1 -1
  652. package/dist/src/ui/utils/CodeColorizer.js +3 -2
  653. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  654. package/dist/src/ui/utils/InlineMarkdownRenderer.js +7 -7
  655. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  656. package/dist/src/ui/utils/MarkdownDisplay.js +11 -11
  657. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  658. package/dist/src/ui/utils/MarkdownDisplay.test.js +95 -87
  659. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  660. package/dist/src/ui/utils/TableRenderer.js +4 -4
  661. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  662. package/dist/src/ui/utils/clipboardUtils.js +7 -8
  663. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  664. package/dist/src/ui/utils/displayUtils.d.ts +1 -0
  665. package/dist/src/ui/utils/displayUtils.js +7 -4
  666. package/dist/src/ui/utils/displayUtils.js.map +1 -1
  667. package/dist/src/ui/utils/displayUtils.test.js +37 -18
  668. package/dist/src/ui/utils/displayUtils.test.js.map +1 -1
  669. package/dist/src/ui/utils/highlight.d.ts +11 -0
  670. package/dist/src/ui/utils/highlight.js +78 -0
  671. package/dist/src/ui/utils/highlight.js.map +1 -0
  672. package/dist/src/ui/utils/highlight.test.d.ts +6 -0
  673. package/dist/src/ui/utils/highlight.test.js +120 -0
  674. package/dist/src/ui/utils/highlight.test.js.map +1 -0
  675. package/dist/src/ui/utils/kittyProtocolDetector.js +39 -29
  676. package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
  677. package/dist/src/ui/utils/platformConstants.d.ts +24 -1
  678. package/dist/src/ui/utils/platformConstants.js +26 -1
  679. package/dist/src/ui/utils/platformConstants.js.map +1 -1
  680. package/dist/src/ui/utils/textUtils.d.ts +10 -0
  681. package/dist/src/ui/utils/textUtils.js +108 -3
  682. package/dist/src/ui/utils/textUtils.js.map +1 -1
  683. package/dist/src/ui/utils/textUtils.test.d.ts +6 -0
  684. package/dist/src/ui/utils/textUtils.test.js +132 -0
  685. package/dist/src/ui/utils/textUtils.test.js.map +1 -0
  686. package/dist/src/utils/commands.d.ts +20 -0
  687. package/dist/src/utils/commands.js +53 -0
  688. package/dist/src/utils/commands.js.map +1 -0
  689. package/dist/src/utils/commands.test.d.ts +6 -0
  690. package/dist/src/utils/commands.test.js +115 -0
  691. package/dist/src/utils/commands.test.js.map +1 -0
  692. package/dist/src/utils/commentJson.d.ts +9 -0
  693. package/dist/src/utils/commentJson.js +48 -0
  694. package/dist/src/utils/commentJson.js.map +1 -0
  695. package/dist/src/utils/commentJson.test.d.ts +6 -0
  696. package/dist/src/utils/commentJson.test.js +146 -0
  697. package/dist/src/utils/commentJson.test.js.map +1 -0
  698. package/dist/src/utils/deepMerge.d.ts +9 -0
  699. package/dist/src/utils/deepMerge.js +58 -0
  700. package/dist/src/utils/deepMerge.js.map +1 -0
  701. package/dist/src/utils/deepMerge.test.d.ts +6 -0
  702. package/dist/src/utils/deepMerge.test.js +143 -0
  703. package/dist/src/utils/deepMerge.test.js.map +1 -0
  704. package/dist/src/utils/envVarResolver.d.ts +39 -0
  705. package/dist/src/utils/envVarResolver.js +97 -0
  706. package/dist/src/utils/envVarResolver.js.map +1 -0
  707. package/dist/src/utils/envVarResolver.test.d.ts +6 -0
  708. package/dist/src/utils/envVarResolver.test.js +221 -0
  709. package/dist/src/utils/envVarResolver.test.js.map +1 -0
  710. package/dist/src/utils/errors.d.ts +21 -0
  711. package/dist/src/utils/errors.js +93 -0
  712. package/dist/src/utils/errors.js.map +1 -1
  713. package/dist/src/utils/errors.test.d.ts +6 -0
  714. package/dist/src/utils/errors.test.js +303 -0
  715. package/dist/src/utils/errors.test.js.map +1 -0
  716. package/dist/src/utils/events.d.ts +2 -1
  717. package/dist/src/utils/events.js +1 -0
  718. package/dist/src/utils/events.js.map +1 -1
  719. package/dist/src/utils/math.d.ts +13 -0
  720. package/dist/src/utils/math.js +14 -0
  721. package/dist/src/utils/math.js.map +1 -0
  722. package/dist/src/utils/processUtils.d.ts +13 -0
  723. package/dist/src/utils/processUtils.js +18 -0
  724. package/dist/src/utils/processUtils.js.map +1 -0
  725. package/dist/src/utils/processUtils.test.d.ts +6 -0
  726. package/dist/src/utils/processUtils.test.js +20 -0
  727. package/dist/src/utils/processUtils.test.js.map +1 -0
  728. package/dist/src/utils/relaunch.d.ts +7 -0
  729. package/dist/src/utils/relaunch.js +57 -0
  730. package/dist/src/utils/relaunch.js.map +1 -0
  731. package/dist/src/utils/relaunch.test.d.ts +6 -0
  732. package/dist/src/utils/relaunch.test.js +273 -0
  733. package/dist/src/utils/relaunch.test.js.map +1 -0
  734. package/dist/src/utils/sandbox.d.ts +1 -1
  735. package/dist/src/utils/sandbox.js +42 -17
  736. package/dist/src/utils/sandbox.js.map +1 -1
  737. package/dist/src/utils/settingsUtils.d.ts +16 -6
  738. package/dist/src/utils/settingsUtils.js +35 -25
  739. package/dist/src/utils/settingsUtils.js.map +1 -1
  740. package/dist/src/utils/settingsUtils.test.js +455 -158
  741. package/dist/src/utils/settingsUtils.test.js.map +1 -1
  742. package/dist/src/utils/userStartupWarnings.d.ts +1 -1
  743. package/dist/src/utils/userStartupWarnings.js +1 -1
  744. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  745. package/dist/src/utils/windowTitle.d.ts +12 -0
  746. package/dist/src/utils/windowTitle.js +19 -0
  747. package/dist/src/utils/windowTitle.js.map +1 -0
  748. package/dist/src/utils/windowTitle.test.d.ts +6 -0
  749. package/dist/src/utils/windowTitle.test.js +49 -0
  750. package/dist/src/utils/windowTitle.test.js.map +1 -0
  751. package/dist/src/validateNonInterActiveAuth.d.ts +4 -2
  752. package/dist/src/validateNonInterActiveAuth.js +33 -12
  753. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  754. package/dist/src/zed-integration/fileSystemService.d.ts +1 -0
  755. package/dist/src/zed-integration/fileSystemService.js +3 -0
  756. package/dist/src/zed-integration/fileSystemService.js.map +1 -1
  757. package/dist/src/zed-integration/schema.d.ts +310 -310
  758. package/dist/src/zed-integration/zedIntegration.d.ts +8 -1
  759. package/dist/src/zed-integration/zedIntegration.js +32 -15
  760. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  761. package/dist/tsconfig.tsbuildinfo +1 -1
  762. package/package.json +15 -10
  763. package/dist/src/ui/components/AuthDialog.js.map +0 -1
  764. package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
  765. package/dist/src/ui/components/AuthInProgress.js.map +0 -1
  766. package/dist/src/ui/components/ModelSelectionDialog.d.ts +0 -14
  767. package/dist/src/ui/components/ModelSelectionDialog.js +0 -26
  768. package/dist/src/ui/components/ModelSelectionDialog.js.map +0 -1
  769. package/dist/src/ui/components/ModelSelectionDialog.test.js +0 -124
  770. package/dist/src/ui/components/ModelSelectionDialog.test.js.map +0 -1
  771. package/dist/src/ui/hooks/useAuthCommand.js.map +0 -1
  772. /package/dist/src/{ui/components/AuthDialog.test.d.ts → commands/extensions/new.test.d.ts} +0 -0
  773. /package/dist/src/ui/{components → auth}/AuthDialog.d.ts +0 -0
  774. /package/dist/src/ui/{components → auth}/AuthInProgress.d.ts +0 -0
@@ -3,29 +3,106 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { CommandKind, } from './types.js';
6
+ import { requestConsentInteractive } from '../../config/extension.js';
7
+ import { updateAllUpdatableExtensions, updateExtension, checkForAllExtensionUpdates, } from '../../config/extensions/update.js';
8
+ import { getErrorMessage } from '../../utils/errors.js';
9
+ import { ExtensionUpdateState } from '../state/extensions.js';
7
10
  import { MessageType } from '../types.js';
8
- export const extensionsCommand = {
9
- name: 'extensions',
10
- description: '列出扩展',
11
- kind: CommandKind.BUILT_IN,
12
- action: async (context) => {
13
- const activeExtensions = context.services.config
14
- ?.getExtensions()
15
- .filter((ext) => ext.isActive);
16
- if (!activeExtensions || activeExtensions.length === 0) {
11
+ import { CommandKind, } from './types.js';
12
+ async function listAction(context) {
13
+ context.ui.addItem({
14
+ type: MessageType.EXTENSIONS_LIST,
15
+ }, Date.now());
16
+ }
17
+ async function updateAction(context, args) {
18
+ const updateArgs = args.split(' ').filter((value) => value.length > 0);
19
+ const all = updateArgs.length === 1 && updateArgs[0] === '--all';
20
+ const names = all ? undefined : updateArgs;
21
+ let updateInfos = [];
22
+ if (!all && names?.length === 0) {
23
+ context.ui.addItem({
24
+ type: MessageType.ERROR,
25
+ text: 'Usage: /extensions update <extension-names>|--all',
26
+ }, Date.now());
27
+ return;
28
+ }
29
+ try {
30
+ await checkForAllExtensionUpdates(context.services.config.getExtensions(), context.ui.dispatchExtensionStateUpdate);
31
+ context.ui.setPendingItem({
32
+ type: MessageType.EXTENSIONS_LIST,
33
+ });
34
+ if (all) {
35
+ updateInfos = await updateAllUpdatableExtensions(context.services.config.getWorkingDir(),
36
+ // We don't have the ability to prompt for consent yet in this flow.
37
+ (description) => requestConsentInteractive(description, context.ui.addConfirmUpdateExtensionRequest), context.services.config.getExtensions(), context.ui.extensionsUpdateState, context.ui.dispatchExtensionStateUpdate);
38
+ }
39
+ else if (names?.length) {
40
+ const workingDir = context.services.config.getWorkingDir();
41
+ const extensions = context.services.config.getExtensions();
42
+ for (const name of names) {
43
+ const extension = extensions.find((extension) => extension.name === name);
44
+ if (!extension) {
45
+ context.ui.addItem({
46
+ type: MessageType.ERROR,
47
+ text: `Extension ${name} not found.`,
48
+ }, Date.now());
49
+ continue;
50
+ }
51
+ const updateInfo = await updateExtension(extension, workingDir, (description) => requestConsentInteractive(description, context.ui.addConfirmUpdateExtensionRequest), context.ui.extensionsUpdateState.get(extension.name)?.status ??
52
+ ExtensionUpdateState.UNKNOWN, context.ui.dispatchExtensionStateUpdate);
53
+ if (updateInfo)
54
+ updateInfos.push(updateInfo);
55
+ }
56
+ }
57
+ if (updateInfos.length === 0) {
17
58
  context.ui.addItem({
18
59
  type: MessageType.INFO,
19
- text: 'No active extensions.',
60
+ text: 'No extensions to update.',
20
61
  }, Date.now());
21
62
  return;
22
63
  }
23
- const extensionLines = activeExtensions.map((ext) => ` - \u001b[36m${ext.name} (v${ext.version})\u001b[0m`);
24
- const message = `Active extensions:\n\n${extensionLines.join('\n')}\n`;
64
+ }
65
+ catch (error) {
25
66
  context.ui.addItem({
26
- type: MessageType.INFO,
27
- text: message,
67
+ type: MessageType.ERROR,
68
+ text: getErrorMessage(error),
28
69
  }, Date.now());
70
+ }
71
+ finally {
72
+ context.ui.addItem({
73
+ type: MessageType.EXTENSIONS_LIST,
74
+ }, Date.now());
75
+ context.ui.setPendingItem(null);
76
+ }
77
+ }
78
+ const listExtensionsCommand = {
79
+ name: 'list',
80
+ description: 'List active extensions',
81
+ kind: CommandKind.BUILT_IN,
82
+ action: listAction,
83
+ };
84
+ const updateExtensionsCommand = {
85
+ name: 'update',
86
+ description: 'Update extensions. Usage: update <extension-names>|--all',
87
+ kind: CommandKind.BUILT_IN,
88
+ action: updateAction,
89
+ completion: async (context, partialArg) => {
90
+ const extensions = context.services.config?.getExtensions() ?? [];
91
+ const extensionNames = extensions.map((ext) => ext.name);
92
+ const suggestions = extensionNames.filter((name) => name.startsWith(partialArg));
93
+ if ('--all'.startsWith(partialArg) || 'all'.startsWith(partialArg)) {
94
+ suggestions.unshift('--all');
95
+ }
96
+ return suggestions;
29
97
  },
30
98
  };
99
+ export const extensionsCommand = {
100
+ name: 'extensions',
101
+ description: 'Manage extensions',
102
+ kind: CommandKind.BUILT_IN,
103
+ subCommands: [listExtensionsCommand, updateExtensionsCommand],
104
+ action: (context, args) =>
105
+ // Default to list if no subcommand is provided
106
+ listExtensionsCommand.action(context, args),
107
+ };
31
108
  //# sourceMappingURL=extensionsCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensionsCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/extensionsCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,MAAM;IACnB,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EAAE,OAAuB,EAAiB,EAAE;QACvD,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM;YAC9C,EAAE,aAAa,EAAE;aAChB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;gBACE,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,uBAAuB;aAC9B,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,gBAAgB,CAAC,GAAG,CACzC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAiB,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,YAAY,CAChE,CAAC;QACF,MAAM,OAAO,GAAG,yBAAyB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAEvE,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;YACE,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,OAAO;SACd,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"extensionsCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/extensionsCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACL,4BAA4B,EAE5B,eAAe,EACf,2BAA2B,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAGL,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,KAAK,UAAU,UAAU,CAAC,OAAuB;IAC/C,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;QACE,IAAI,EAAE,WAAW,CAAC,eAAe;KAClC,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,OAAuB,EAAE,IAAY;IAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IACjE,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3C,IAAI,WAAW,GAA0B,EAAE,CAAC;IAE5C,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;YACE,IAAI,EAAE,WAAW,CAAC,KAAK;YACvB,IAAI,EAAE,mDAAmD;SAC1D,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,2BAA2B,CAC/B,OAAO,CAAC,QAAQ,CAAC,MAAO,CAAC,aAAa,EAAE,EACxC,OAAO,CAAC,EAAE,CAAC,4BAA4B,CACxC,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC;YACxB,IAAI,EAAE,WAAW,CAAC,eAAe;SAClC,CAAC,CAAC;QACH,IAAI,GAAG,EAAE,CAAC;YACR,WAAW,GAAG,MAAM,4BAA4B,CAC9C,OAAO,CAAC,QAAQ,CAAC,MAAO,CAAC,aAAa,EAAE;YACxC,oEAAoE;YACpE,CAAC,WAAW,EAAE,EAAE,CACd,yBAAyB,CACvB,WAAW,EACX,OAAO,CAAC,EAAE,CAAC,gCAAgC,CAC5C,EACH,OAAO,CAAC,QAAQ,CAAC,MAAO,CAAC,aAAa,EAAE,EACxC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAChC,OAAO,CAAC,EAAE,CAAC,4BAA4B,CACxC,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAO,CAAC,aAAa,EAAE,CAAC;YAC5D,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAO,CAAC,aAAa,EAAE,CAAC;YAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAC/B,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CACvC,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;wBACE,IAAI,EAAE,WAAW,CAAC,KAAK;wBACvB,IAAI,EAAE,aAAa,IAAI,aAAa;qBACrC,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;oBACF,SAAS;gBACX,CAAC;gBACD,MAAM,UAAU,GAAG,MAAM,eAAe,CACtC,SAAS,EACT,UAAU,EACV,CAAC,WAAW,EAAE,EAAE,CACd,yBAAyB,CACvB,WAAW,EACX,OAAO,CAAC,EAAE,CAAC,gCAAgC,CAC5C,EACH,OAAO,CAAC,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM;oBAC1D,oBAAoB,CAAC,OAAO,EAC9B,OAAO,CAAC,EAAE,CAAC,4BAA4B,CACxC,CAAC;gBACF,IAAI,UAAU;oBAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;gBACE,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,0BAA0B;aACjC,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;YACF,OAAO;QACT,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;YACE,IAAI,EAAE,WAAW,CAAC,KAAK;YACvB,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC;SAC7B,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;YACE,IAAI,EAAE,WAAW,CAAC,eAAe;SAClC,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,qBAAqB,GAAiB;IAC1C,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,wBAAwB;IACrC,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,UAAU;CACnB,CAAC;AAEF,MAAM,uBAAuB,GAAiB;IAC5C,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,0DAA0D;IACvE,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,YAAY;IACpB,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;QACxC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAClE,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAC5B,CAAC;QAEF,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACnE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,mBAAmB;IAChC,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,WAAW,EAAE,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;IAC7D,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IACxB,+CAA+C;IAC/C,qBAAqB,CAAC,MAAO,CAAC,OAAO,EAAE,IAAI,CAAC;CAC/C,CAAC"}
@@ -3,6 +3,5 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import type { Config } from '@rdmind/rdmind-core';
7
6
  import type { SlashCommand } from './types.js';
8
- export declare const ideCommand: (config: Config | null) => SlashCommand | null;
7
+ export declare const ideCommand: () => Promise<SlashCommand>;
@@ -3,7 +3,8 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { QWEN_CODE_COMPANION_EXTENSION_NAME, getIdeInstaller, IDEConnectionStatus, ideContext, } from '@rdmind/rdmind-core';
6
+ import { IdeClient, logIdeConnection, IdeConnectionEvent, IdeConnectionType, } from '@rdmind/rdmind-core';
7
+ import { QWEN_CODE_COMPANION_EXTENSION_NAME, getIdeInstaller, IDEConnectionStatus, ideContextStore, } from '@rdmind/rdmind-core';
7
8
  import path from 'node:path';
8
9
  import { CommandKind } from './types.js';
9
10
  import { SettingScope } from '../../config/settings.js';
@@ -58,7 +59,7 @@ async function getIdeStatusMessageWithFiles(ideClient) {
58
59
  switch (connection.status) {
59
60
  case IDEConnectionStatus.Connected: {
60
61
  let content = `🟢 Connected to ${ideClient.getDetectedIdeDisplayName()}`;
61
- const context = ideContext.getIdeContext();
62
+ const context = ideContextStore.get();
62
63
  const openFiles = context?.workspaceState?.openFiles;
63
64
  if (openFiles && openFiles.length > 0) {
64
65
  content += formatFileList(openFiles);
@@ -85,13 +86,21 @@ async function getIdeStatusMessageWithFiles(ideClient) {
85
86
  }
86
87
  }
87
88
  }
88
- export const ideCommand = (config) => {
89
- if (!config) {
90
- return null;
89
+ async function setIdeModeAndSyncConnection(config, value) {
90
+ config.setIdeMode(value);
91
+ const ideClient = await IdeClient.getInstance();
92
+ if (value) {
93
+ await ideClient.connect();
94
+ logIdeConnection(config, new IdeConnectionEvent(IdeConnectionType.SESSION));
91
95
  }
92
- const ideClient = config.getIdeClient();
96
+ else {
97
+ await ideClient.disconnect();
98
+ }
99
+ }
100
+ export const ideCommand = async () => {
101
+ const ideClient = await IdeClient.getInstance();
93
102
  const currentIDE = ideClient.getCurrentIde();
94
- if (!currentIDE || !ideClient.getDetectedIdeDisplayName()) {
103
+ if (!currentIDE) {
95
104
  return {
96
105
  name: 'ide',
97
106
  description: '管理 IDE 集成',
@@ -148,7 +157,7 @@ export const ideCommand = (config) => {
148
157
  context.services.settings.setValue(SettingScope.User, 'ide.enabled', true);
149
158
  // Poll for up to 5 seconds for the extension to activate.
150
159
  for (let i = 0; i < 10; i++) {
151
- await config.setIdeModeAndSyncConnection(true);
160
+ await setIdeModeAndSyncConnection(context.services.config, true);
152
161
  if (ideClient.getConnectionStatus().status ===
153
162
  IDEConnectionStatus.Connected) {
154
163
  break;
@@ -177,7 +186,7 @@ export const ideCommand = (config) => {
177
186
  kind: CommandKind.BUILT_IN,
178
187
  action: async (context) => {
179
188
  context.services.settings.setValue(SettingScope.User, 'ide.enabled', true);
180
- await config.setIdeModeAndSyncConnection(true);
189
+ await setIdeModeAndSyncConnection(context.services.config, true);
181
190
  const { messageType, content } = getIdeStatusMessage(ideClient);
182
191
  context.ui.addItem({
183
192
  type: messageType,
@@ -191,7 +200,7 @@ export const ideCommand = (config) => {
191
200
  kind: CommandKind.BUILT_IN,
192
201
  action: async (context) => {
193
202
  context.services.settings.setValue(SettingScope.User, 'ide.enabled', false);
194
- await config.setIdeModeAndSyncConnection(false);
203
+ await setIdeModeAndSyncConnection(context.services.config, false);
195
204
  const { messageType, content } = getIdeStatusMessage(ideClient);
196
205
  context.ui.addItem({
197
206
  type: messageType,
@@ -1 +1 @@
1
- {"version":3,"file":"ideCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/ideCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ideCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/ideCommand.ts"],"names":[],"mappings":"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"}
@@ -4,260 +4,9 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { CommandKind } from './types.js';
7
- import { DiscoveredMCPTool, getMCPDiscoveryState, getMCPServerStatus, MCPDiscoveryState, MCPServerStatus, mcpServerRequiresOAuth, getErrorMessage, } from '@rdmind/rdmind-core';
8
- const COLOR_GREEN = '\u001b[32m';
9
- const COLOR_YELLOW = '\u001b[33m';
10
- const COLOR_RED = '\u001b[31m';
11
- const COLOR_CYAN = '\u001b[36m';
12
- const COLOR_GREY = '\u001b[90m';
13
- const RESET_COLOR = '\u001b[0m';
14
- const getMcpStatus = async (context, showDescriptions, showSchema, showTips = false) => {
15
- const { config } = context.services;
16
- if (!config) {
17
- return {
18
- type: 'message',
19
- messageType: 'error',
20
- content: 'Config not loaded.',
21
- };
22
- }
23
- const toolRegistry = config.getToolRegistry();
24
- if (!toolRegistry) {
25
- return {
26
- type: 'message',
27
- messageType: 'error',
28
- content: 'Could not retrieve tool registry.',
29
- };
30
- }
31
- const mcpServers = config.getMcpServers() || {};
32
- const serverNames = Object.keys(mcpServers);
33
- const blockedMcpServers = config.getBlockedMcpServers() || [];
34
- if (serverNames.length === 0 && blockedMcpServers.length === 0) {
35
- const docsUrl = 'https://qwenlm.github.io/qwen-code-docs/en/tools/mcp-server/#how-to-set-up-your-mcp-server';
36
- return {
37
- type: 'message',
38
- messageType: 'info',
39
- content: `No MCP servers configured. Please view MCP documentation in your browser: ${docsUrl} or use the cli /docs command`,
40
- };
41
- }
42
- // Check if any servers are still connecting
43
- const connectingServers = serverNames.filter((name) => getMCPServerStatus(name) === MCPServerStatus.CONNECTING);
44
- const discoveryState = getMCPDiscoveryState();
45
- let message = '';
46
- // Add overall discovery status message if needed
47
- if (discoveryState === MCPDiscoveryState.IN_PROGRESS ||
48
- connectingServers.length > 0) {
49
- message += `${COLOR_YELLOW}⏳ MCP servers are starting up (${connectingServers.length} initializing)...${RESET_COLOR}\n`;
50
- message += `${COLOR_CYAN}Note: First startup may take longer. Tool availability will update automatically.${RESET_COLOR}\n\n`;
51
- }
52
- message += 'Configured MCP servers:\n\n';
53
- const allTools = toolRegistry.getAllTools();
54
- for (const serverName of serverNames) {
55
- const serverTools = allTools.filter((tool) => tool instanceof DiscoveredMCPTool && tool.serverName === serverName);
56
- const promptRegistry = await config.getPromptRegistry();
57
- const serverPrompts = promptRegistry.getPromptsByServer(serverName) || [];
58
- const originalStatus = getMCPServerStatus(serverName);
59
- const hasCachedItems = serverTools.length > 0 || serverPrompts.length > 0;
60
- // If the server is "disconnected" but has prompts or cached tools, display it as Ready
61
- // by using CONNECTED as the display status.
62
- const status = originalStatus === MCPServerStatus.DISCONNECTED && hasCachedItems
63
- ? MCPServerStatus.CONNECTED
64
- : originalStatus;
65
- // Add status indicator with descriptive text
66
- let statusIndicator = '';
67
- let statusText = '';
68
- switch (status) {
69
- case MCPServerStatus.CONNECTED:
70
- statusIndicator = '🟢';
71
- statusText = 'Ready';
72
- break;
73
- case MCPServerStatus.CONNECTING:
74
- statusIndicator = '🔄';
75
- statusText = 'Starting... (first startup may take longer)';
76
- break;
77
- case MCPServerStatus.DISCONNECTED:
78
- default:
79
- statusIndicator = '🔴';
80
- statusText = 'Disconnected';
81
- break;
82
- }
83
- // Get server description if available
84
- const server = mcpServers[serverName];
85
- let serverDisplayName = serverName;
86
- if (server.extensionName) {
87
- serverDisplayName += ` (from ${server.extensionName})`;
88
- }
89
- // Format server header with bold formatting and status
90
- message += `${statusIndicator} \u001b[1m${serverDisplayName}\u001b[0m - ${statusText}`;
91
- let needsAuthHint = mcpServerRequiresOAuth.get(serverName) || false;
92
- // Add OAuth status if applicable
93
- if (server?.oauth?.enabled) {
94
- needsAuthHint = true;
95
- try {
96
- const { MCPOAuthTokenStorage } = await import('@rdmind/rdmind-core');
97
- const hasToken = await MCPOAuthTokenStorage.getToken(serverName);
98
- if (hasToken) {
99
- const isExpired = MCPOAuthTokenStorage.isTokenExpired(hasToken.token);
100
- if (isExpired) {
101
- message += ` ${COLOR_YELLOW}(OAuth token expired)${RESET_COLOR}`;
102
- }
103
- else {
104
- message += ` ${COLOR_GREEN}(OAuth authenticated)${RESET_COLOR}`;
105
- needsAuthHint = false;
106
- }
107
- }
108
- else {
109
- message += ` ${COLOR_RED}(OAuth not authenticated)${RESET_COLOR}`;
110
- }
111
- }
112
- catch (_err) {
113
- // If we can't check OAuth status, just continue
114
- }
115
- }
116
- // Add tool count with conditional messaging
117
- if (status === MCPServerStatus.CONNECTED) {
118
- const parts = [];
119
- if (serverTools.length > 0) {
120
- parts.push(`${serverTools.length} ${serverTools.length === 1 ? 'tool' : 'tools'}`);
121
- }
122
- if (serverPrompts.length > 0) {
123
- parts.push(`${serverPrompts.length} ${serverPrompts.length === 1 ? 'prompt' : 'prompts'}`);
124
- }
125
- if (parts.length > 0) {
126
- message += ` (${parts.join(', ')})`;
127
- }
128
- else {
129
- message += ` (0 tools)`;
130
- }
131
- }
132
- else if (status === MCPServerStatus.CONNECTING) {
133
- message += ` (tools and prompts will appear when ready)`;
134
- }
135
- else {
136
- message += ` (${serverTools.length} tools cached)`;
137
- }
138
- // Add server description with proper handling of multi-line descriptions
139
- if (showDescriptions && server?.description) {
140
- const descLines = server.description.trim().split('\n');
141
- if (descLines) {
142
- message += ':\n';
143
- for (const descLine of descLines) {
144
- message += ` ${COLOR_GREEN}${descLine}${RESET_COLOR}\n`;
145
- }
146
- }
147
- else {
148
- message += '\n';
149
- }
150
- }
151
- else {
152
- message += '\n';
153
- }
154
- // Reset formatting after server entry
155
- message += RESET_COLOR;
156
- if (serverTools.length > 0) {
157
- message += ` ${COLOR_CYAN}Tools:${RESET_COLOR}\n`;
158
- serverTools.forEach((tool) => {
159
- if (showDescriptions && tool.description) {
160
- // Format tool name in cyan using simple ANSI cyan color
161
- message += ` - ${COLOR_CYAN}${tool.name}${RESET_COLOR}`;
162
- // Handle multi-line descriptions by properly indenting and preserving formatting
163
- const descLines = tool.description.trim().split('\n');
164
- if (descLines) {
165
- message += ':\n';
166
- for (const descLine of descLines) {
167
- message += ` ${COLOR_GREEN}${descLine}${RESET_COLOR}\n`;
168
- }
169
- }
170
- else {
171
- message += '\n';
172
- }
173
- // Reset is handled inline with each line now
174
- }
175
- else {
176
- // Use cyan color for the tool name even when not showing descriptions
177
- message += ` - ${COLOR_CYAN}${tool.name}${RESET_COLOR}\n`;
178
- }
179
- const parameters = tool.schema.parametersJsonSchema ?? tool.schema.parameters;
180
- if (showSchema && parameters) {
181
- // Prefix the parameters in cyan
182
- message += ` ${COLOR_CYAN}Parameters:${RESET_COLOR}\n`;
183
- const paramsLines = JSON.stringify(parameters, null, 2)
184
- .trim()
185
- .split('\n');
186
- if (paramsLines) {
187
- for (const paramsLine of paramsLines) {
188
- message += ` ${COLOR_GREEN}${paramsLine}${RESET_COLOR}\n`;
189
- }
190
- }
191
- }
192
- });
193
- }
194
- if (serverPrompts.length > 0) {
195
- if (serverTools.length > 0) {
196
- message += '\n';
197
- }
198
- message += ` ${COLOR_CYAN}Prompts:${RESET_COLOR}\n`;
199
- serverPrompts.forEach((prompt) => {
200
- if (showDescriptions && prompt.description) {
201
- message += ` - ${COLOR_CYAN}${prompt.name}${RESET_COLOR}`;
202
- const descLines = prompt.description.trim().split('\n');
203
- if (descLines) {
204
- message += ':\n';
205
- for (const descLine of descLines) {
206
- message += ` ${COLOR_GREEN}${descLine}${RESET_COLOR}\n`;
207
- }
208
- }
209
- else {
210
- message += '\n';
211
- }
212
- }
213
- else {
214
- message += ` - ${COLOR_CYAN}${prompt.name}${RESET_COLOR}\n`;
215
- }
216
- });
217
- }
218
- if (serverTools.length === 0 && serverPrompts.length === 0) {
219
- message += ' No tools or prompts available\n';
220
- }
221
- else if (serverTools.length === 0) {
222
- message += ' No tools available';
223
- if (originalStatus === MCPServerStatus.DISCONNECTED && needsAuthHint) {
224
- message += ` ${COLOR_GREY}(type: "/mcp auth ${serverName}" to authenticate this server)${RESET_COLOR}`;
225
- }
226
- message += '\n';
227
- }
228
- else if (originalStatus === MCPServerStatus.DISCONNECTED &&
229
- needsAuthHint) {
230
- // This case is for when serverTools.length > 0
231
- message += ` ${COLOR_GREY}(type: "/mcp auth ${serverName}" to authenticate this server)${RESET_COLOR}\n`;
232
- }
233
- message += '\n';
234
- }
235
- for (const server of blockedMcpServers) {
236
- let serverDisplayName = server.name;
237
- if (server.extensionName) {
238
- serverDisplayName += ` (from ${server.extensionName})`;
239
- }
240
- message += `🔴 \u001b[1m${serverDisplayName}\u001b[0m - Blocked\n\n`;
241
- }
242
- // Add helpful tips when no arguments are provided
243
- if (showTips) {
244
- message += '\n';
245
- message += `${COLOR_CYAN}💡 Tips:${RESET_COLOR}\n`;
246
- message += ` • Use ${COLOR_CYAN}/mcp desc${RESET_COLOR} to show server and tool descriptions\n`;
247
- message += ` • Use ${COLOR_CYAN}/mcp schema${RESET_COLOR} to show tool parameter schemas\n`;
248
- message += ` • Use ${COLOR_CYAN}/mcp nodesc${RESET_COLOR} to hide descriptions\n`;
249
- message += ` • Use ${COLOR_CYAN}/mcp auth <server-name>${RESET_COLOR} to authenticate with OAuth-enabled servers\n`;
250
- message += ` • Press ${COLOR_CYAN}Ctrl+T${RESET_COLOR} to toggle tool descriptions on/off\n`;
251
- message += '\n';
252
- }
253
- // Make sure to reset any ANSI formatting at the end to prevent it from affecting the terminal
254
- message += RESET_COLOR;
255
- return {
256
- type: 'message',
257
- messageType: 'info',
258
- content: message,
259
- };
260
- };
7
+ import { DiscoveredMCPTool, getMCPDiscoveryState, getMCPServerStatus, MCPDiscoveryState, MCPServerStatus, getErrorMessage, MCPOAuthTokenStorage, } from '@rdmind/rdmind-core';
8
+ import { appEvents, AppEvent } from '../../utils/events.js';
9
+ import { MessageType } from '../types.js';
261
10
  const authCommand = {
262
11
  name: 'auth',
263
12
  description: '向支持 OAuth 的 MCP 服务认证',
@@ -301,6 +50,10 @@ const authCommand = {
301
50
  }
302
51
  // Always attempt OAuth authentication, even if not explicitly configured
303
52
  // The authentication process will discover OAuth requirements automatically
53
+ const displayListener = (message) => {
54
+ context.ui.addItem({ type: 'info', text: message }, Date.now());
55
+ };
56
+ appEvents.on(AppEvent.OauthDisplayMessage, displayListener);
304
57
  try {
305
58
  context.ui.addItem({
306
59
  type: 'info',
@@ -312,9 +65,9 @@ const authCommand = {
312
65
  if (!oauthConfig) {
313
66
  oauthConfig = { enabled: false };
314
67
  }
315
- // Pass the MCP server URL for OAuth discovery
316
68
  const mcpServerUrl = server.httpUrl || server.url;
317
- await MCPOAuthProvider.authenticate(serverName, oauthConfig, mcpServerUrl);
69
+ const authProvider = new MCPOAuthProvider(new MCPOAuthTokenStorage());
70
+ await authProvider.authenticate(serverName, oauthConfig, mcpServerUrl, appEvents);
318
71
  context.ui.addItem({
319
72
  type: 'info',
320
73
  text: `✅ Successfully authenticated with MCP server '${serverName}'!`,
@@ -348,6 +101,9 @@ const authCommand = {
348
101
  content: `Failed to authenticate with MCP server '${serverName}': ${getErrorMessage(error)}`,
349
102
  };
350
103
  }
104
+ finally {
105
+ appEvents.removeListener(AppEvent.OauthDisplayMessage, displayListener);
106
+ }
351
107
  },
352
108
  completion: async (context, partialArg) => {
353
109
  const { config } = context.services;
@@ -362,17 +118,88 @@ const listCommand = {
362
118
  description: '列出已配置的 MCP 服务',
363
119
  kind: CommandKind.BUILT_IN,
364
120
  action: async (context, args) => {
121
+ const { config } = context.services;
122
+ if (!config) {
123
+ return {
124
+ type: 'message',
125
+ messageType: 'error',
126
+ content: 'Config not loaded.',
127
+ };
128
+ }
129
+ const toolRegistry = config.getToolRegistry();
130
+ if (!toolRegistry) {
131
+ return {
132
+ type: 'message',
133
+ messageType: 'error',
134
+ content: 'Could not retrieve tool registry.',
135
+ };
136
+ }
365
137
  const lowerCaseArgs = args.toLowerCase().split(/\s+/).filter(Boolean);
366
138
  const hasDesc = lowerCaseArgs.includes('desc') || lowerCaseArgs.includes('descriptions');
367
139
  const hasNodesc = lowerCaseArgs.includes('nodesc') ||
368
140
  lowerCaseArgs.includes('nodescriptions');
369
141
  const showSchema = lowerCaseArgs.includes('schema');
370
- // Show descriptions if `desc` or `schema` is present,
371
- // but `nodesc` takes precedence and disables them.
372
142
  const showDescriptions = !hasNodesc && (hasDesc || showSchema);
373
- // Show tips only when no arguments are provided
374
143
  const showTips = lowerCaseArgs.length === 0;
375
- return getMcpStatus(context, showDescriptions, showSchema, showTips);
144
+ const mcpServers = config.getMcpServers() || {};
145
+ const serverNames = Object.keys(mcpServers);
146
+ const blockedMcpServers = config.getBlockedMcpServers() || [];
147
+ const connectingServers = serverNames.filter((name) => getMCPServerStatus(name) === MCPServerStatus.CONNECTING);
148
+ const discoveryState = getMCPDiscoveryState();
149
+ const discoveryInProgress = discoveryState === MCPDiscoveryState.IN_PROGRESS ||
150
+ connectingServers.length > 0;
151
+ const allTools = toolRegistry.getAllTools();
152
+ const mcpTools = allTools.filter((tool) => tool instanceof DiscoveredMCPTool);
153
+ const promptRegistry = await config.getPromptRegistry();
154
+ const mcpPrompts = promptRegistry
155
+ .getAllPrompts()
156
+ .filter((prompt) => 'serverName' in prompt &&
157
+ serverNames.includes(prompt.serverName));
158
+ const authStatus = {};
159
+ const tokenStorage = new MCPOAuthTokenStorage();
160
+ for (const serverName of serverNames) {
161
+ const server = mcpServers[serverName];
162
+ if (server.oauth?.enabled) {
163
+ const creds = await tokenStorage.getCredentials(serverName);
164
+ if (creds) {
165
+ if (creds.token.expiresAt && creds.token.expiresAt < Date.now()) {
166
+ authStatus[serverName] = 'expired';
167
+ }
168
+ else {
169
+ authStatus[serverName] = 'authenticated';
170
+ }
171
+ }
172
+ else {
173
+ authStatus[serverName] = 'unauthenticated';
174
+ }
175
+ }
176
+ else {
177
+ authStatus[serverName] = 'not-configured';
178
+ }
179
+ }
180
+ const mcpStatusItem = {
181
+ type: MessageType.MCP_STATUS,
182
+ servers: mcpServers,
183
+ tools: mcpTools.map((tool) => ({
184
+ serverName: tool.serverName,
185
+ name: tool.name,
186
+ description: tool.description,
187
+ schema: tool.schema,
188
+ })),
189
+ prompts: mcpPrompts.map((prompt) => ({
190
+ serverName: prompt.serverName,
191
+ name: prompt.name,
192
+ description: prompt.description,
193
+ })),
194
+ authStatus,
195
+ blockedServers: blockedMcpServers,
196
+ discoveryInProgress,
197
+ connectingServers,
198
+ showDescriptions,
199
+ showSchema,
200
+ showTips,
201
+ };
202
+ context.ui.addItem(mcpStatusItem, Date.now());
376
203
  },
377
204
  };
378
205
  const refreshCommand = {
@@ -408,7 +235,7 @@ const refreshCommand = {
408
235
  }
409
236
  // Reload the slash commands to reflect the changes.
410
237
  context.ui.reloadCommands();
411
- return getMcpStatus(context, false, false, false);
238
+ return listCommand.action(context, '');
412
239
  },
413
240
  };
414
241
  export const mcpCommand = {