@machina.ai/cell-cli 1.41.1-rc2 → 1.45.1-rc1

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 (560) hide show
  1. package/dist/index.js +17 -17
  2. package/dist/index.js.map +1 -1
  3. package/dist/package.json +4 -4
  4. package/dist/src/acp/README.md +81 -0
  5. package/dist/src/acp/{commandHandler.d.ts → acpCommandHandler.d.ts} +1 -1
  6. package/dist/src/acp/{commandHandler.js → acpCommandHandler.js} +2 -2
  7. package/dist/src/acp/acpCommandHandler.js.map +1 -0
  8. package/dist/src/acp/{commandHandler.test.js → acpCommandHandler.test.js} +4 -5
  9. package/dist/src/acp/acpCommandHandler.test.js.map +1 -0
  10. package/dist/src/acp/acpErrors.d.ts +1 -1
  11. package/dist/src/acp/acpErrors.js +1 -1
  12. package/dist/src/acp/acpErrors.test.d.ts +1 -1
  13. package/dist/src/acp/acpErrors.test.js +1 -1
  14. package/dist/src/acp/{fileSystemService.d.ts → acpFileSystemService.d.ts} +1 -1
  15. package/dist/src/acp/{fileSystemService.js → acpFileSystemService.js} +7 -4
  16. package/dist/src/acp/acpFileSystemService.js.map +1 -0
  17. package/dist/src/acp/{fileSystemService.test.js → acpFileSystemService.test.js} +3 -3
  18. package/dist/src/acp/acpFileSystemService.test.js.map +1 -0
  19. package/dist/src/acp/acpResume.test.d.ts +1 -1
  20. package/dist/src/acp/acpResume.test.js +12 -7
  21. package/dist/src/acp/acpResume.test.js.map +1 -1
  22. package/dist/src/acp/acpRpcDispatcher.d.ts +28 -0
  23. package/dist/src/acp/acpRpcDispatcher.js +177 -0
  24. package/dist/src/acp/acpRpcDispatcher.js.map +1 -0
  25. package/dist/src/acp/acpRpcDispatcher.test.d.ts +6 -0
  26. package/dist/src/acp/acpRpcDispatcher.test.js +238 -0
  27. package/dist/src/acp/acpRpcDispatcher.test.js.map +1 -0
  28. package/dist/src/acp/acpSession.d.ts +36 -0
  29. package/dist/src/acp/{acpClient.js → acpSession.js} +333 -781
  30. package/dist/src/acp/acpSession.js.map +1 -0
  31. package/dist/src/acp/acpSession.test.d.ts +6 -0
  32. package/dist/src/acp/acpSession.test.js +739 -0
  33. package/dist/src/acp/acpSession.test.js.map +1 -0
  34. package/dist/src/acp/acpSessionManager.d.ts +30 -0
  35. package/dist/src/acp/acpSessionManager.js +206 -0
  36. package/dist/src/acp/acpSessionManager.js.map +1 -0
  37. package/dist/src/acp/acpSessionManager.test.d.ts +6 -0
  38. package/dist/src/acp/acpSessionManager.test.js +283 -0
  39. package/dist/src/acp/acpSessionManager.test.js.map +1 -0
  40. package/dist/src/acp/acpStdioTransport.d.ts +9 -0
  41. package/dist/src/acp/acpStdioTransport.js +23 -0
  42. package/dist/src/acp/acpStdioTransport.js.map +1 -0
  43. package/dist/src/acp/acpUtils.d.ts +56 -0
  44. package/dist/src/acp/acpUtils.js +288 -0
  45. package/dist/src/acp/acpUtils.js.map +1 -0
  46. package/dist/src/acp/commands/commandRegistry.d.ts +1 -1
  47. package/dist/src/acp/commands/commandRegistry.js +1 -1
  48. package/dist/src/acp/commands/extensions.d.ts +1 -1
  49. package/dist/src/acp/commands/extensions.js +1 -1
  50. package/dist/src/acp/commands/extensions.test.d.ts +6 -0
  51. package/dist/src/acp/commands/extensions.test.js +70 -0
  52. package/dist/src/acp/commands/extensions.test.js.map +1 -0
  53. package/dist/src/acp/commands/init.d.ts +1 -1
  54. package/dist/src/acp/commands/init.js +1 -1
  55. package/dist/src/acp/commands/memory.d.ts +3 -8
  56. package/dist/src/acp/commands/memory.js +18 -47
  57. package/dist/src/acp/commands/memory.js.map +1 -1
  58. package/dist/src/acp/commands/restore.d.ts +1 -1
  59. package/dist/src/acp/commands/restore.js +1 -1
  60. package/dist/src/acp/commands/restore.test.js +7 -13
  61. package/dist/src/acp/commands/restore.test.js.map +1 -1
  62. package/dist/src/acp/commands/types.d.ts +1 -1
  63. package/dist/src/acp/commands/types.js +1 -1
  64. package/dist/src/commands/extensions/configure.test.js +6 -2
  65. package/dist/src/commands/extensions/configure.test.js.map +1 -1
  66. package/dist/src/commands/extensions/utils.d.ts +1 -1
  67. package/dist/src/commands/extensions/utils.js +1 -2
  68. package/dist/src/commands/extensions/utils.js.map +1 -1
  69. package/dist/src/commands/mcp/list.js +19 -5
  70. package/dist/src/commands/mcp/list.js.map +1 -1
  71. package/dist/src/commands/mcp/list.test.js +285 -100
  72. package/dist/src/commands/mcp/list.test.js.map +1 -1
  73. package/dist/src/config/auth.d.ts +1 -1
  74. package/dist/src/config/auth.js +4 -3
  75. package/dist/src/config/auth.js.map +1 -1
  76. package/dist/src/config/auth.test.js +11 -4
  77. package/dist/src/config/auth.test.js.map +1 -1
  78. package/dist/src/config/config.d.ts +4 -0
  79. package/dist/src/config/config.js +65 -47
  80. package/dist/src/config/config.js.map +1 -1
  81. package/dist/src/config/config.test.js +25 -106
  82. package/dist/src/config/config.test.js.map +1 -1
  83. package/dist/src/config/extension-manager-agents.test.js +2 -0
  84. package/dist/src/config/extension-manager-agents.test.js.map +1 -1
  85. package/dist/src/config/extension-manager-hydration.test.js +2 -0
  86. package/dist/src/config/extension-manager-hydration.test.js.map +1 -1
  87. package/dist/src/config/extension-manager-scope.test.js +4 -2
  88. package/dist/src/config/extension-manager-scope.test.js.map +1 -1
  89. package/dist/src/config/extension-manager-themes.spec.js +2 -0
  90. package/dist/src/config/extension-manager-themes.spec.js.map +1 -1
  91. package/dist/src/config/extension-manager.d.ts +2 -2
  92. package/dist/src/config/extension-manager.js +2 -1
  93. package/dist/src/config/extension-manager.js.map +1 -1
  94. package/dist/src/config/extensionRegistryClient.js +0 -1
  95. package/dist/src/config/extensionRegistryClient.js.map +1 -1
  96. package/dist/src/config/extensions/consent.d.ts +1 -1
  97. package/dist/src/config/extensions/consent.js +5 -4
  98. package/dist/src/config/extensions/consent.js.map +1 -1
  99. package/dist/src/config/extensions/consent.test.js +22 -0
  100. package/dist/src/config/extensions/consent.test.js.map +1 -1
  101. package/dist/src/config/extensions/extensionEnablement.js +4 -2
  102. package/dist/src/config/extensions/extensionEnablement.js.map +1 -1
  103. package/dist/src/config/extensions/extensionSettings.d.ts +3 -3
  104. package/dist/src/config/extensions/extensionSettings.js +7 -3
  105. package/dist/src/config/extensions/extensionSettings.js.map +1 -1
  106. package/dist/src/config/extensions/variables.js +1 -3
  107. package/dist/src/config/extensions/variables.js.map +1 -1
  108. package/dist/src/config/footerItems.d.ts +4 -0
  109. package/dist/src/config/footerItems.js +6 -0
  110. package/dist/src/config/footerItems.js.map +1 -1
  111. package/dist/src/config/footerItems.test.js +1 -0
  112. package/dist/src/config/footerItems.test.js.map +1 -1
  113. package/dist/src/config/mcp/mcpServerEnablement.js +1 -1
  114. package/dist/src/config/mcp/mcpServerEnablement.js.map +1 -1
  115. package/dist/src/config/mutual-exclusivity.test.js +33 -0
  116. package/dist/src/config/mutual-exclusivity.test.js.map +1 -0
  117. package/dist/src/config/settings-env-isolation.test.d.ts +6 -0
  118. package/dist/src/config/settings-env-isolation.test.js +188 -0
  119. package/dist/src/config/settings-env-isolation.test.js.map +1 -0
  120. package/dist/src/config/settings.d.ts +15 -1
  121. package/dist/src/config/settings.js +85 -10
  122. package/dist/src/config/settings.js.map +1 -1
  123. package/dist/src/config/settings.test.js +167 -0
  124. package/dist/src/config/settings.test.js.map +1 -1
  125. package/dist/src/config/settingsSchema.d.ts +56 -25
  126. package/dist/src/config/settingsSchema.js +66 -27
  127. package/dist/src/config/settingsSchema.js.map +1 -1
  128. package/dist/src/config/settingsSchema.test.js +8 -0
  129. package/dist/src/config/settingsSchema.test.js.map +1 -1
  130. package/dist/src/config/skipExtensions.test.d.ts +6 -0
  131. package/dist/src/config/skipExtensions.test.js +49 -0
  132. package/dist/src/config/skipExtensions.test.js.map +1 -0
  133. package/dist/src/config/workspace-policy-cli.test.js +0 -5
  134. package/dist/src/config/workspace-policy-cli.test.js.map +1 -1
  135. package/dist/src/gemini.d.ts +2 -2
  136. package/dist/src/gemini.js +108 -30
  137. package/dist/src/gemini.js.map +1 -1
  138. package/dist/src/gemini.test.js +147 -16
  139. package/dist/src/gemini.test.js.map +1 -1
  140. package/dist/src/gemini_cleanup.test.js +1 -1
  141. package/dist/src/gemini_cleanup.test.js.map +1 -1
  142. package/dist/src/generated/git-commit.d.ts +2 -2
  143. package/dist/src/generated/git-commit.js +2 -2
  144. package/dist/src/interactiveCli.js +1 -1
  145. package/dist/src/interactiveCli.js.map +1 -1
  146. package/dist/src/nonInteractiveCli.d.ts +7 -0
  147. package/dist/src/nonInteractiveCli.js +56 -6
  148. package/dist/src/nonInteractiveCli.js.map +1 -1
  149. package/dist/src/nonInteractiveCli.test.js +253 -18
  150. package/dist/src/nonInteractiveCli.test.js.map +1 -1
  151. package/dist/src/nonInteractiveCliAgentSession.d.ts +7 -0
  152. package/dist/src/nonInteractiveCliAgentSession.js +22 -3
  153. package/dist/src/nonInteractiveCliAgentSession.js.map +1 -1
  154. package/dist/src/nonInteractiveCliAgentSession.test.js +200 -20
  155. package/dist/src/nonInteractiveCliAgentSession.test.js.map +1 -1
  156. package/dist/src/output-redirection.test.d.ts +6 -0
  157. package/dist/src/output-redirection.test.js +77 -0
  158. package/dist/src/output-redirection.test.js.map +1 -0
  159. package/dist/src/patches/http-proxy-agent.d.ts +6 -0
  160. package/dist/src/patches/http-proxy-agent.js +8 -0
  161. package/dist/src/patches/http-proxy-agent.js.map +1 -0
  162. package/dist/src/patches/https-proxy-agent.d.ts +6 -0
  163. package/dist/src/patches/https-proxy-agent.js +8 -0
  164. package/dist/src/patches/https-proxy-agent.js.map +1 -0
  165. package/dist/src/services/BuiltinCommandLoader.js +5 -1
  166. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  167. package/dist/src/services/BuiltinCommandLoader.test.js +6 -1
  168. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  169. package/dist/src/services/FileCommandLoader.d.ts +21 -0
  170. package/dist/src/services/FileCommandLoader.js +58 -6
  171. package/dist/src/services/FileCommandLoader.js.map +1 -1
  172. package/dist/src/services/FileCommandLoader.test.js +27 -1
  173. package/dist/src/services/FileCommandLoader.test.js.map +1 -1
  174. package/dist/src/test-utils/mockCommandContext.js +6 -1
  175. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  176. package/dist/src/test-utils/mockConfig.js +0 -3
  177. package/dist/src/test-utils/mockConfig.js.map +1 -1
  178. package/dist/src/test-utils/render.js +1 -0
  179. package/dist/src/test-utils/render.js.map +1 -1
  180. package/dist/src/test-utils/settings.d.ts +1 -0
  181. package/dist/src/test-utils/settings.js.map +1 -1
  182. package/dist/src/ui/AppContainer.js +60 -73
  183. package/dist/src/ui/AppContainer.js.map +1 -1
  184. package/dist/src/ui/AppContainer.test.js +101 -1
  185. package/dist/src/ui/AppContainer.test.js.map +1 -1
  186. package/dist/src/ui/auth/AuthDialog.js +6 -3
  187. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  188. package/dist/src/ui/auth/AuthDialog.test.js +33 -10
  189. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  190. package/dist/src/ui/auth/LoginRestartDialog.d.ts +13 -0
  191. package/dist/src/ui/auth/{LoginWithGoogleRestartDialog.js → LoginRestartDialog.js} +7 -6
  192. package/dist/src/ui/auth/LoginRestartDialog.js.map +1 -0
  193. package/dist/src/ui/auth/LoginRestartDialog.test.d.ts +6 -0
  194. package/dist/src/ui/auth/{LoginWithGoogleRestartDialog.test.js → LoginRestartDialog.test.js} +13 -8
  195. package/dist/src/ui/auth/LoginRestartDialog.test.js.map +1 -0
  196. package/dist/src/ui/auth/useAuth.d.ts +1 -1
  197. package/dist/src/ui/auth/useAuth.js +2 -2
  198. package/dist/src/ui/auth/useAuth.js.map +1 -1
  199. package/dist/src/ui/auth/useAuth.test.js +10 -10
  200. package/dist/src/ui/auth/useAuth.test.js.map +1 -1
  201. package/dist/src/ui/commands/agentsCommand.js +19 -2
  202. package/dist/src/ui/commands/agentsCommand.js.map +1 -1
  203. package/dist/src/ui/commands/agentsCommand.test.js +34 -3
  204. package/dist/src/ui/commands/agentsCommand.test.js.map +1 -1
  205. package/dist/src/ui/commands/bugCommand.js +36 -0
  206. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  207. package/dist/src/ui/commands/bugCommand.test.js +106 -1
  208. package/dist/src/ui/commands/bugCommand.test.js.map +1 -1
  209. package/dist/src/ui/commands/bugMemoryCommand.d.ts +7 -0
  210. package/dist/src/ui/commands/bugMemoryCommand.js +62 -0
  211. package/dist/src/ui/commands/bugMemoryCommand.js.map +1 -0
  212. package/dist/src/ui/commands/bugMemoryCommand.test.js +100 -0
  213. package/dist/src/ui/commands/bugMemoryCommand.test.js.map +1 -0
  214. package/dist/src/ui/commands/commandsCommand.js +52 -4
  215. package/dist/src/ui/commands/commandsCommand.js.map +1 -1
  216. package/dist/src/ui/commands/commandsCommand.test.js +75 -2
  217. package/dist/src/ui/commands/commandsCommand.test.js.map +1 -1
  218. package/dist/src/ui/commands/compressCommand.js +28 -26
  219. package/dist/src/ui/commands/compressCommand.js.map +1 -1
  220. package/dist/src/ui/commands/compressCommand.test.js +5 -0
  221. package/dist/src/ui/commands/compressCommand.test.js.map +1 -1
  222. package/dist/src/ui/commands/directoryCommand.js +2 -2
  223. package/dist/src/ui/commands/directoryCommand.js.map +1 -1
  224. package/dist/src/ui/commands/directoryCommand.test.js +1 -0
  225. package/dist/src/ui/commands/directoryCommand.test.js.map +1 -1
  226. package/dist/src/ui/commands/exportSessionCommand.d.ts +7 -0
  227. package/dist/src/ui/commands/exportSessionCommand.js +74 -0
  228. package/dist/src/ui/commands/exportSessionCommand.js.map +1 -0
  229. package/dist/src/ui/commands/exportSessionCommand.test.js +100 -0
  230. package/dist/src/ui/commands/exportSessionCommand.test.js.map +1 -0
  231. package/dist/src/ui/commands/extensionsCommand.js +1 -0
  232. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  233. package/dist/src/ui/commands/extensionsCommand.test.js +4 -0
  234. package/dist/src/ui/commands/extensionsCommand.test.js.map +1 -1
  235. package/dist/src/ui/commands/memoryCommand.d.ts +2 -1
  236. package/dist/src/ui/commands/memoryCommand.js +110 -117
  237. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  238. package/dist/src/ui/commands/memoryCommand.test.js +18 -71
  239. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
  240. package/dist/src/ui/commands/quitCommand.js +3 -1
  241. package/dist/src/ui/commands/quitCommand.js.map +1 -1
  242. package/dist/src/ui/commands/quitCommand.test.js +46 -1
  243. package/dist/src/ui/commands/quitCommand.test.js.map +1 -1
  244. package/dist/src/ui/commands/rewindCommand.js.map +1 -1
  245. package/dist/src/ui/commands/skillsCommand.js +1 -1
  246. package/dist/src/ui/commands/skillsCommand.js.map +1 -1
  247. package/dist/src/ui/commands/skillsCommand.test.js +19 -0
  248. package/dist/src/ui/commands/skillsCommand.test.js.map +1 -1
  249. package/dist/src/ui/commands/types.d.ts +3 -1
  250. package/dist/src/ui/commands/types.js.map +1 -1
  251. package/dist/src/ui/components/AsciiArt.d.ts +6 -6
  252. package/dist/src/ui/components/AsciiArt.js +6 -6
  253. package/dist/src/ui/components/AskUserDialog.js +3 -1
  254. package/dist/src/ui/components/AskUserDialog.js.map +1 -1
  255. package/dist/src/ui/components/AskUserDialog.test.js +43 -0
  256. package/dist/src/ui/components/AskUserDialog.test.js.map +1 -1
  257. package/dist/src/ui/components/Composer.js +1 -1
  258. package/dist/src/ui/components/Composer.js.map +1 -1
  259. package/dist/src/ui/components/DialogManager.js +4 -0
  260. package/dist/src/ui/components/DialogManager.js.map +1 -1
  261. package/dist/src/ui/components/EditorSettingsDialog.js +3 -6
  262. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  263. package/dist/src/ui/components/Footer.js +6 -0
  264. package/dist/src/ui/components/Footer.js.map +1 -1
  265. package/dist/src/ui/components/FooterConfigDialog.js +1 -0
  266. package/dist/src/ui/components/FooterConfigDialog.js.map +1 -1
  267. package/dist/src/ui/components/FooterConfigDialog.test.js +1 -1
  268. package/dist/src/ui/components/FooterConfigDialog.test.js.map +1 -1
  269. package/dist/src/ui/components/HistoryItemDisplay.js +3 -1
  270. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  271. package/dist/src/ui/components/HistoryItemDisplay.test.js +15 -0
  272. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  273. package/dist/src/ui/components/{SkillInboxDialog.d.ts → InboxDialog.d.ts} +3 -2
  274. package/dist/src/ui/components/InboxDialog.js +756 -0
  275. package/dist/src/ui/components/InboxDialog.js.map +1 -0
  276. package/dist/src/ui/components/InboxDialog.test.d.ts +6 -0
  277. package/dist/src/ui/components/InboxDialog.test.js +824 -0
  278. package/dist/src/ui/components/InboxDialog.test.js.map +1 -0
  279. package/dist/src/ui/components/InputPrompt.d.ts +3 -0
  280. package/dist/src/ui/components/InputPrompt.js +35 -17
  281. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  282. package/dist/src/ui/components/InputPrompt.test.js +95 -46
  283. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  284. package/dist/src/ui/components/ListeningIndicator.d.ts +10 -0
  285. package/dist/src/ui/components/ListeningIndicator.js +30 -0
  286. package/dist/src/ui/components/ListeningIndicator.js.map +1 -0
  287. package/dist/src/ui/components/MainContent.test.js +23 -3
  288. package/dist/src/ui/components/MainContent.test.js.map +1 -1
  289. package/dist/src/ui/components/ModelDialog.js +32 -37
  290. package/dist/src/ui/components/ModelDialog.js.map +1 -1
  291. package/dist/src/ui/components/ModelDialog.test.js +30 -27
  292. package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
  293. package/dist/src/ui/components/ModelStatsDisplay.js +1 -1
  294. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  295. package/dist/src/ui/components/ModelStatsDisplay.test.js +41 -0
  296. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -1
  297. package/dist/src/ui/components/SessionBrowser.js +7 -0
  298. package/dist/src/ui/components/SessionBrowser.js.map +1 -1
  299. package/dist/src/ui/components/SessionSummaryDisplay.js +9 -4
  300. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  301. package/dist/src/ui/components/SessionSummaryDisplay.test.js +12 -23
  302. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -1
  303. package/dist/src/ui/components/SettingsDialog.js +37 -17
  304. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  305. package/dist/src/ui/components/SettingsDialog.test.js +83 -1
  306. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  307. package/dist/src/ui/components/StatsDisplay.js +2 -2
  308. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  309. package/dist/src/ui/components/StatsDisplay.test.js +24 -0
  310. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
  311. package/dist/src/ui/components/ThemeDialog.constants.d.ts +26 -0
  312. package/dist/src/ui/components/ThemeDialog.constants.js +27 -0
  313. package/dist/src/ui/components/ThemeDialog.constants.js.map +1 -0
  314. package/dist/src/ui/components/ThemeDialog.js +5 -15
  315. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  316. package/dist/src/ui/components/ToolConfirmationQueue.test.js +1 -1
  317. package/dist/src/ui/components/ToolConfirmationQueue.test.js.map +1 -1
  318. package/dist/src/ui/components/VoiceModelDialog.js +7 -2
  319. package/dist/src/ui/components/VoiceModelDialog.js.map +1 -1
  320. package/dist/src/ui/components/VoiceModelDialog.test.d.ts +6 -0
  321. package/dist/src/ui/components/VoiceModelDialog.test.js +68 -0
  322. package/dist/src/ui/components/VoiceModelDialog.test.js.map +1 -0
  323. package/dist/src/ui/components/messages/ExportSessionMessage.d.ts +11 -0
  324. package/dist/src/ui/components/messages/ExportSessionMessage.js +15 -0
  325. package/dist/src/ui/components/messages/ExportSessionMessage.js.map +1 -0
  326. package/dist/src/ui/components/messages/ExportSessionMessage.test.d.ts +6 -0
  327. package/dist/src/ui/components/messages/ExportSessionMessage.test.js +31 -0
  328. package/dist/src/ui/components/messages/ExportSessionMessage.test.js.map +1 -0
  329. package/dist/src/ui/components/messages/ShellToolMessage.js +6 -2
  330. package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
  331. package/dist/src/ui/components/messages/ShellToolMessage.test.js +33 -0
  332. package/dist/src/ui/components/messages/ShellToolMessage.test.js.map +1 -1
  333. package/dist/src/ui/components/messages/SubagentGroupDisplay.js +13 -13
  334. package/dist/src/ui/components/messages/SubagentGroupDisplay.js.map +1 -1
  335. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js +5 -5
  336. package/dist/src/ui/components/messages/SubagentGroupDisplay.test.js.map +1 -1
  337. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js +4 -3
  338. package/dist/src/ui/components/messages/SubagentHistoryMessage.test.js.map +1 -1
  339. package/dist/src/ui/components/messages/SubagentProgressDisplay.d.ts +1 -1
  340. package/dist/src/ui/components/messages/SubagentProgressDisplay.js +7 -6
  341. package/dist/src/ui/components/messages/SubagentProgressDisplay.js.map +1 -1
  342. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js +10 -9
  343. package/dist/src/ui/components/messages/SubagentProgressDisplay.test.js.map +1 -1
  344. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +3 -9
  345. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  346. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +60 -0
  347. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  348. package/dist/src/ui/components/messages/ToolGroupDisplay.d.ts +13 -0
  349. package/dist/src/ui/components/messages/ToolGroupDisplay.js +78 -0
  350. package/dist/src/ui/components/messages/ToolGroupDisplay.js.map +1 -0
  351. package/dist/src/ui/components/messages/ToolGroupDisplay.test.d.ts +6 -0
  352. package/dist/src/ui/components/messages/ToolGroupDisplay.test.js +210 -0
  353. package/dist/src/ui/components/messages/ToolGroupDisplay.test.js.map +1 -0
  354. package/dist/src/ui/components/messages/ToolGroupMessage.js +4 -2
  355. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  356. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +28 -0
  357. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  358. package/dist/src/ui/components/messages/ToolGroupMessageRegression.test.js +3 -3
  359. package/dist/src/ui/components/messages/ToolGroupMessageRegression.test.js.map +1 -1
  360. package/dist/src/ui/components/messages/ToolMessage.js +6 -2
  361. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  362. package/dist/src/ui/components/messages/ToolShared.d.ts +1 -0
  363. package/dist/src/ui/components/messages/ToolShared.js +5 -3
  364. package/dist/src/ui/components/messages/ToolShared.js.map +1 -1
  365. package/dist/src/ui/components/messages/ToolShared.test.js +18 -1
  366. package/dist/src/ui/components/messages/ToolShared.test.js.map +1 -1
  367. package/dist/src/ui/components/shared/BaseSettingsDialog.d.ts +6 -1
  368. package/dist/src/ui/components/shared/BaseSettingsDialog.js +8 -8
  369. package/dist/src/ui/components/shared/BaseSettingsDialog.js.map +1 -1
  370. package/dist/src/ui/components/shared/performance.test.js +9 -0
  371. package/dist/src/ui/components/shared/performance.test.js.map +1 -1
  372. package/dist/src/ui/components/shared/text-buffer.js +22 -5
  373. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  374. package/dist/src/ui/components/shared/text-buffer.test.js +211 -0
  375. package/dist/src/ui/components/shared/text-buffer.test.js.map +1 -1
  376. package/dist/src/ui/constants/tips.js +0 -1
  377. package/dist/src/ui/constants/tips.js.map +1 -1
  378. package/dist/src/ui/contexts/UIActionsContext.d.ts +1 -0
  379. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  380. package/dist/src/ui/contexts/UIStateContext.d.ts +2 -0
  381. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  382. package/dist/src/ui/hooks/atCommandProcessor.js +78 -69
  383. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  384. package/dist/src/ui/hooks/atCommandProcessor.test.js +128 -18
  385. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  386. package/dist/src/ui/hooks/slashCommandProcessor.js +13 -0
  387. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  388. package/dist/src/ui/hooks/slashCommandProcessor.test.js +85 -0
  389. package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
  390. package/dist/src/ui/hooks/useAgentStream.d.ts +2 -2
  391. package/dist/src/ui/hooks/useAgentStream.js +63 -30
  392. package/dist/src/ui/hooks/useAgentStream.js.map +1 -1
  393. package/dist/src/ui/hooks/useAgentStream.test.js +1 -1
  394. package/dist/src/ui/hooks/useAgentStream.test.js.map +1 -1
  395. package/dist/src/ui/hooks/useAtCompletion.js +0 -2
  396. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  397. package/dist/src/ui/hooks/useGeminiStream.d.ts +2 -2
  398. package/dist/src/ui/hooks/useGeminiStream.js +48 -29
  399. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  400. package/dist/src/ui/hooks/useGeminiStream.test.js +44 -82
  401. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  402. package/dist/src/ui/hooks/useGitBranchName.js +29 -16
  403. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  404. package/dist/src/ui/hooks/useGitBranchName.test.js +102 -51
  405. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  406. package/dist/src/ui/hooks/useIncludeDirsTrust.js +2 -2
  407. package/dist/src/ui/hooks/useIncludeDirsTrust.js.map +1 -1
  408. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js +2 -0
  409. package/dist/src/ui/hooks/useIncludeDirsTrust.test.js.map +1 -1
  410. package/dist/src/ui/hooks/useMessageQueue.d.ts +2 -1
  411. package/dist/src/ui/hooks/useMessageQueue.js +3 -1
  412. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
  413. package/dist/src/ui/hooks/useMessageQueue.test.js +38 -0
  414. package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -1
  415. package/dist/src/ui/hooks/useSessionBrowser.d.ts +3 -3
  416. package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
  417. package/dist/src/ui/hooks/useSessionBrowser.test.js +44 -38
  418. package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
  419. package/dist/src/ui/hooks/useSessionResume.d.ts +3 -3
  420. package/dist/src/ui/hooks/useSessionResume.js.map +1 -1
  421. package/dist/src/ui/hooks/useSessionResume.test.js +6 -4
  422. package/dist/src/ui/hooks/useSessionResume.test.js.map +1 -1
  423. package/dist/src/ui/hooks/useSuspend.d.ts +1 -3
  424. package/dist/src/ui/hooks/useSuspend.js +3 -17
  425. package/dist/src/ui/hooks/useSuspend.js.map +1 -1
  426. package/dist/src/ui/hooks/useSuspend.test.js +0 -14
  427. package/dist/src/ui/hooks/useSuspend.test.js.map +1 -1
  428. package/dist/src/ui/hooks/useToolScheduler.test.js +6 -6
  429. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  430. package/dist/src/ui/hooks/useVoiceMode.js +25 -19
  431. package/dist/src/ui/hooks/useVoiceMode.js.map +1 -1
  432. package/dist/src/ui/hooks/vim-passthrough.test.js +10 -0
  433. package/dist/src/ui/hooks/vim-passthrough.test.js.map +1 -1
  434. package/dist/src/ui/hooks/vim.js +8 -0
  435. package/dist/src/ui/hooks/vim.js.map +1 -1
  436. package/dist/src/ui/hooks/vim.test.js +61 -0
  437. package/dist/src/ui/hooks/vim.test.js.map +1 -1
  438. package/dist/src/ui/key/keyBindings.d.ts +2 -0
  439. package/dist/src/ui/key/keyBindings.js +26 -9
  440. package/dist/src/ui/key/keyBindings.js.map +1 -1
  441. package/dist/src/ui/key/keyBindings.test.js +24 -0
  442. package/dist/src/ui/key/keyBindings.test.js.map +1 -1
  443. package/dist/src/ui/key/keyMatchers.test.js +26 -5
  444. package/dist/src/ui/key/keyMatchers.test.js.map +1 -1
  445. package/dist/src/ui/themes/theme-manager.js +0 -2
  446. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  447. package/dist/src/ui/types.d.ts +23 -2
  448. package/dist/src/ui/types.js +3 -2
  449. package/dist/src/ui/types.js.map +1 -1
  450. package/dist/src/ui/utils/TableRenderer.js +6 -6
  451. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  452. package/dist/src/ui/utils/TableRenderer.test.js +10 -0
  453. package/dist/src/ui/utils/TableRenderer.test.js.map +1 -1
  454. package/dist/src/ui/utils/directoryUtils.test.js +0 -5
  455. package/dist/src/ui/utils/directoryUtils.test.js.map +1 -1
  456. package/dist/src/ui/utils/editorUtils.d.ts +2 -1
  457. package/dist/src/ui/utils/editorUtils.js +75 -28
  458. package/dist/src/ui/utils/editorUtils.js.map +1 -1
  459. package/dist/src/ui/utils/latexToUnicode.d.ts +21 -0
  460. package/dist/src/ui/utils/latexToUnicode.js +538 -0
  461. package/dist/src/ui/utils/latexToUnicode.js.map +1 -0
  462. package/dist/src/ui/utils/latexToUnicode.test.d.ts +6 -0
  463. package/dist/src/ui/utils/latexToUnicode.test.js +222 -0
  464. package/dist/src/ui/utils/latexToUnicode.test.js.map +1 -0
  465. package/dist/src/ui/utils/markdownParsingUtils.d.ts +1 -5
  466. package/dist/src/ui/utils/markdownParsingUtils.js +36 -1
  467. package/dist/src/ui/utils/markdownParsingUtils.js.map +1 -1
  468. package/dist/src/ui/utils/markdownParsingUtils.test.js +35 -0
  469. package/dist/src/ui/utils/markdownParsingUtils.test.js.map +1 -1
  470. package/dist/src/ui/utils/memorySnapshot.d.ts +19 -0
  471. package/dist/src/ui/utils/memorySnapshot.js +28 -0
  472. package/dist/src/ui/utils/memorySnapshot.js.map +1 -0
  473. package/dist/src/ui/utils/memorySnapshot.test.d.ts +6 -0
  474. package/dist/src/ui/utils/memorySnapshot.test.js +62 -0
  475. package/dist/src/ui/utils/memorySnapshot.test.js.map +1 -0
  476. package/dist/src/ui/utils/updateCheck.js +11 -2
  477. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  478. package/dist/src/ui/utils/updateCheck.test.js +73 -0
  479. package/dist/src/ui/utils/updateCheck.test.js.map +1 -1
  480. package/dist/src/utils/commands.d.ts +1 -1
  481. package/dist/src/utils/commands.js +1 -1
  482. package/dist/src/utils/commands.test.js +14 -14
  483. package/dist/src/utils/commands.test.js.map +1 -1
  484. package/dist/src/utils/envVarResolver.js +10 -7
  485. package/dist/src/utils/envVarResolver.js.map +1 -1
  486. package/dist/src/utils/gitUtils.js +1 -2
  487. package/dist/src/utils/gitUtils.js.map +1 -1
  488. package/dist/src/utils/handleAutoUpdate.d.ts +1 -1
  489. package/dist/src/utils/handleAutoUpdate.js +15 -3
  490. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  491. package/dist/src/utils/handleAutoUpdate.test.js +45 -16
  492. package/dist/src/utils/handleAutoUpdate.test.js.map +1 -1
  493. package/dist/src/utils/installationInfo.d.ts +1 -0
  494. package/dist/src/utils/installationInfo.js +16 -1
  495. package/dist/src/utils/installationInfo.js.map +1 -1
  496. package/dist/src/utils/installationInfo.test.js +16 -0
  497. package/dist/src/utils/installationInfo.test.js.map +1 -1
  498. package/dist/src/utils/jsonoutput.js +0 -2
  499. package/dist/src/utils/jsonoutput.js.map +1 -1
  500. package/dist/src/utils/processUtils.d.ts +28 -0
  501. package/dist/src/utils/processUtils.js +71 -0
  502. package/dist/src/utils/processUtils.js.map +1 -1
  503. package/dist/src/utils/processUtils.test.js +122 -1
  504. package/dist/src/utils/processUtils.test.js.map +1 -1
  505. package/dist/src/utils/readStdin.js +22 -4
  506. package/dist/src/utils/readStdin.js.map +1 -1
  507. package/dist/src/utils/readStdin.test.js +32 -0
  508. package/dist/src/utils/readStdin.test.js.map +1 -1
  509. package/dist/src/utils/relaunch.js +6 -13
  510. package/dist/src/utils/relaunch.js.map +1 -1
  511. package/dist/src/utils/relaunch.test.js +82 -86
  512. package/dist/src/utils/relaunch.test.js.map +1 -1
  513. package/dist/src/utils/sandbox.js +34 -24
  514. package/dist/src/utils/sandbox.js.map +1 -1
  515. package/dist/src/utils/sandbox.test.js +108 -9
  516. package/dist/src/utils/sandbox.test.js.map +1 -1
  517. package/dist/src/utils/sandboxUtils.js +12 -7
  518. package/dist/src/utils/sandboxUtils.js.map +1 -1
  519. package/dist/src/utils/sandboxUtils.test.js +68 -0
  520. package/dist/src/utils/sandboxUtils.test.js.map +1 -1
  521. package/dist/src/utils/sessionCleanup.js +49 -14
  522. package/dist/src/utils/sessionCleanup.js.map +1 -1
  523. package/dist/src/utils/sessionCleanup.test.js +63 -0
  524. package/dist/src/utils/sessionCleanup.test.js.map +1 -1
  525. package/dist/src/utils/sessionUtils.js +22 -7
  526. package/dist/src/utils/sessionUtils.js.map +1 -1
  527. package/dist/src/utils/sessionUtils.test.js +99 -0
  528. package/dist/src/utils/sessionUtils.test.js.map +1 -1
  529. package/dist/src/utils/sessions.js +2 -4
  530. package/dist/src/utils/sessions.js.map +1 -1
  531. package/dist/src/utils/sessions.test.js +9 -12
  532. package/dist/src/utils/sessions.test.js.map +1 -1
  533. package/dist/src/utils/userStartupWarnings.js +4 -3
  534. package/dist/src/utils/userStartupWarnings.js.map +1 -1
  535. package/dist/src/utils/userStartupWarnings.test.js +40 -3
  536. package/dist/src/utils/userStartupWarnings.test.js.map +1 -1
  537. package/dist/src/validateNonInterActiveAuth.js +1 -1
  538. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  539. package/dist/tsconfig.tsbuildinfo +1 -1
  540. package/package.json +4 -4
  541. package/dist/src/acp/acpClient.d.ts +0 -56
  542. package/dist/src/acp/acpClient.js.map +0 -1
  543. package/dist/src/acp/acpClient.test.js +0 -1816
  544. package/dist/src/acp/acpClient.test.js.map +0 -1
  545. package/dist/src/acp/commandHandler.js.map +0 -1
  546. package/dist/src/acp/commandHandler.test.js.map +0 -1
  547. package/dist/src/acp/fileSystemService.js.map +0 -1
  548. package/dist/src/acp/fileSystemService.test.js.map +0 -1
  549. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.d.ts +0 -12
  550. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.js.map +0 -1
  551. package/dist/src/ui/auth/LoginWithGoogleRestartDialog.test.js.map +0 -1
  552. package/dist/src/ui/components/SkillInboxDialog.js +0 -420
  553. package/dist/src/ui/components/SkillInboxDialog.js.map +0 -1
  554. package/dist/src/ui/components/SkillInboxDialog.test.js +0 -467
  555. package/dist/src/ui/components/SkillInboxDialog.test.js.map +0 -1
  556. /package/dist/src/acp/{commandHandler.test.d.ts → acpCommandHandler.test.d.ts} +0 -0
  557. /package/dist/src/{ui/components/SkillInboxDialog.test.d.ts → acp/acpFileSystemService.test.d.ts} +0 -0
  558. /package/dist/src/{acp/acpClient.test.d.ts → config/mutual-exclusivity.test.d.ts} +0 -0
  559. /package/dist/src/{acp/fileSystemService.test.d.ts → ui/commands/bugMemoryCommand.test.d.ts} +0 -0
  560. /package/dist/src/ui/{auth/LoginWithGoogleRestartDialog.test.d.ts → commands/exportSessionCommand.test.d.ts} +0 -0
@@ -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":"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"}
@@ -11,9 +11,31 @@ import { createMockCommandContext } from '../../test-utils/mockCommandContext.js
11
11
  import { getVersion } from '@google/gemini-cli-core';
12
12
  import { GIT_COMMIT_INFO } from '../../generated/git-commit.js';
13
13
  import { formatBytes } from '../utils/formatters.js';
14
+ import { MessageType } from '../types.js';
15
+ import { captureHeapSnapshot } from '../utils/memorySnapshot.js';
16
+ const { memoryUsageMock } = vi.hoisted(() => ({
17
+ memoryUsageMock: vi.fn(() => ({
18
+ rss: 0,
19
+ heapTotal: 0,
20
+ heapUsed: 0,
21
+ external: 0,
22
+ arrayBuffers: 0,
23
+ })),
24
+ }));
14
25
  // Mock dependencies
15
26
  vi.mock('open');
16
27
  vi.mock('../utils/formatters.js');
28
+ vi.mock('../utils/memorySnapshot.js', () => ({
29
+ captureHeapSnapshot: vi.fn(),
30
+ MEMORY_SNAPSHOT_AUTO_THRESHOLD_BYTES: 2 * 1024 * 1024 * 1024,
31
+ }));
32
+ vi.mock('node:fs/promises', async (importOriginal) => {
33
+ const actual = await importOriginal();
34
+ return {
35
+ ...actual,
36
+ stat: vi.fn().mockResolvedValue({ size: 4096 }),
37
+ };
38
+ });
17
39
  vi.mock('../utils/historyExportUtils.js', async (importOriginal) => {
18
40
  const actual = await importOriginal();
19
41
  return {
@@ -48,7 +70,7 @@ vi.mock('node:process', () => ({
48
70
  version: 'v20.0.0',
49
71
  // Keep other necessary process properties if needed by other parts of the code
50
72
  env: process.env,
51
- memoryUsage: () => ({ rss: 0 }),
73
+ memoryUsage: memoryUsageMock,
52
74
  },
53
75
  }));
54
76
  vi.mock('../utils/terminalCapabilityManager.js', () => ({
@@ -62,6 +84,13 @@ describe('bugCommand', () => {
62
84
  beforeEach(() => {
63
85
  vi.mocked(getVersion).mockResolvedValue('0.1.0');
64
86
  vi.mocked(formatBytes).mockReturnValue('100 MB');
87
+ memoryUsageMock.mockReturnValue({
88
+ rss: 0,
89
+ heapTotal: 0,
90
+ heapUsed: 0,
91
+ external: 0,
92
+ arrayBuffers: 0,
93
+ });
65
94
  vi.stubEnv('SANDBOX', 'gemini-test');
66
95
  vi.useFakeTimers();
67
96
  vi.setSystemTime(new Date('2024-01-01T00:00:00Z'));
@@ -196,5 +225,81 @@ describe('bugCommand', () => {
196
225
  .replace('{info}', encodeURIComponent(expectedInfo));
197
226
  expect(open).toHaveBeenCalledWith(expectedUrl);
198
227
  });
228
+ const buildHighMemoryContext = (tempDir) => createMockCommandContext({
229
+ services: {
230
+ agentContext: {
231
+ config: {
232
+ getModel: () => 'gemini-pro',
233
+ getBugCommand: () => undefined,
234
+ getIdeMode: () => false,
235
+ getContentGeneratorConfig: () => ({ authType: 'oauth-personal' }),
236
+ storage: tempDir ? { getProjectTempDir: () => tempDir } : undefined,
237
+ getSessionId: vi.fn().mockReturnValue('test-session-id'),
238
+ },
239
+ geminiClient: { getChat: () => ({ getHistory: () => [] }) },
240
+ },
241
+ },
242
+ });
243
+ it('captures a heap snapshot AFTER opening the bug URL when RSS exceeds 2 GB', async () => {
244
+ memoryUsageMock.mockReturnValue({
245
+ rss: 3 * 1024 * 1024 * 1024,
246
+ heapTotal: 0,
247
+ heapUsed: 0,
248
+ external: 0,
249
+ arrayBuffers: 0,
250
+ });
251
+ vi.mocked(captureHeapSnapshot).mockResolvedValueOnce(undefined);
252
+ const tempDir = path.join('/tmp', 'gemini-test');
253
+ const context = buildHighMemoryContext(tempDir);
254
+ if (!bugCommand.action)
255
+ throw new Error('Action is not defined');
256
+ await bugCommand.action(context, 'A memory bug');
257
+ const now = new Date('2024-01-01T00:00:00Z').getTime();
258
+ const expectedSnapshotPath = path.join(tempDir, `bug-memory-${now}.heapsnapshot`);
259
+ expect(captureHeapSnapshot).toHaveBeenCalledWith(expectedSnapshotPath);
260
+ const addItem = vi.mocked(context.ui.addItem);
261
+ const callOrder = addItem.mock.invocationCallOrder;
262
+ const openOrder = vi.mocked(open).mock.invocationCallOrder[0];
263
+ // The URL message must precede the "capturing" message so the user sees
264
+ // the URL before the 20+ second snapshot starts.
265
+ expect(callOrder[0]).toBeLessThan(openOrder);
266
+ expect(callOrder[1]).toBeGreaterThan(openOrder);
267
+ expect(addItem.mock.calls[1][0].text).toContain('High memory usage');
268
+ expect(addItem.mock.calls[2][0].text).toContain('Heap snapshot saved');
269
+ expect(addItem.mock.calls[2][0].text).toContain(expectedSnapshotPath);
270
+ expect(addItem.mock.calls[2][0].type).toBe(MessageType.INFO);
271
+ });
272
+ it('skips auto-capture when RSS is below the 2 GB threshold', async () => {
273
+ memoryUsageMock.mockReturnValue({
274
+ rss: 1 * 1024 * 1024 * 1024,
275
+ heapTotal: 0,
276
+ heapUsed: 0,
277
+ external: 0,
278
+ arrayBuffers: 0,
279
+ });
280
+ const context = buildHighMemoryContext('/tmp/gemini-test');
281
+ if (!bugCommand.action)
282
+ throw new Error('Action is not defined');
283
+ await bugCommand.action(context, 'A light bug');
284
+ expect(captureHeapSnapshot).not.toHaveBeenCalled();
285
+ });
286
+ it('reports an error if the auto-capture fails but does not throw', async () => {
287
+ memoryUsageMock.mockReturnValue({
288
+ rss: 3 * 1024 * 1024 * 1024,
289
+ heapTotal: 0,
290
+ heapUsed: 0,
291
+ external: 0,
292
+ arrayBuffers: 0,
293
+ });
294
+ vi.mocked(captureHeapSnapshot).mockRejectedValueOnce(new Error('inspector failure'));
295
+ const context = buildHighMemoryContext('/tmp/gemini-test');
296
+ if (!bugCommand.action)
297
+ throw new Error('Action is not defined');
298
+ await expect(bugCommand.action(context, 'A memory bug')).resolves.toBeUndefined();
299
+ const addItem = vi.mocked(context.ui.addItem).mock.calls;
300
+ const lastCall = addItem[addItem.length - 1][0];
301
+ expect(lastCall.type).toBe(MessageType.ERROR);
302
+ expect(lastCall.text).toContain('inspector failure');
303
+ });
199
304
  });
200
305
  //# sourceMappingURL=bugCommand.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bugCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/bugCommand.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bugCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/bugCommand.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { type SlashCommand } from './types.js';
7
+ export declare const bugMemoryCommand: SlashCommand;
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { stat } from 'node:fs/promises';
7
+ import path from 'node:path';
8
+ import process from 'node:process';
9
+ import { debugLogger } from '@google/gemini-cli-core';
10
+ import { CommandKind, } from './types.js';
11
+ import { MessageType } from '../types.js';
12
+ import { formatBytes } from '../utils/formatters.js';
13
+ import { captureHeapSnapshot } from '../utils/memorySnapshot.js';
14
+ export const bugMemoryCommand = {
15
+ name: 'bug-memory',
16
+ description: 'Capture a V8 heap snapshot to disk to attach to a bug report',
17
+ kind: CommandKind.BUILT_IN,
18
+ autoExecute: false,
19
+ action: async (context) => {
20
+ const tempDir = context.services.agentContext?.config?.storage?.getProjectTempDir();
21
+ if (!tempDir) {
22
+ context.ui.addItem({
23
+ type: MessageType.ERROR,
24
+ text: 'Cannot capture heap snapshot: project temp directory is unavailable.',
25
+ }, Date.now());
26
+ return;
27
+ }
28
+ const filePath = path.join(tempDir, `bug-memory-${Date.now()}.heapsnapshot`);
29
+ const rss = process.memoryUsage().rss;
30
+ context.ui.addItem({
31
+ type: MessageType.INFO,
32
+ text: `Capturing V8 heap snapshot (current RSS: ${formatBytes(rss)}).\nThis can take 20+ seconds and the CLI may be temporarily unresponsive — please do not exit.\nDestination: ${filePath}`,
33
+ }, Date.now());
34
+ const startedAt = Date.now();
35
+ try {
36
+ await captureHeapSnapshot(filePath);
37
+ }
38
+ catch (error) {
39
+ const message = error instanceof Error ? error.message : String(error);
40
+ debugLogger.error(`Failed to capture heap snapshot: ${message}`);
41
+ context.ui.addItem({
42
+ type: MessageType.ERROR,
43
+ text: `Failed to capture heap snapshot: ${message}`,
44
+ }, Date.now());
45
+ return;
46
+ }
47
+ const durationMs = Date.now() - startedAt;
48
+ let sizeText = '';
49
+ try {
50
+ const { size } = await stat(filePath);
51
+ sizeText = ` (${formatBytes(size)})`;
52
+ }
53
+ catch {
54
+ // Size reporting is best-effort; the snapshot itself was captured successfully.
55
+ }
56
+ context.ui.addItem({
57
+ type: MessageType.INFO,
58
+ text: `Heap snapshot saved${sizeText} in ${durationMs}ms:\n${filePath}\n\nLoad it in Chrome DevTools → Memory → "Load" to analyze. Attach it to your bug report only if it does not contain sensitive information.`,
59
+ }, Date.now());
60
+ },
61
+ };
62
+ //# sourceMappingURL=bugMemoryCommand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bugMemoryCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/bugMemoryCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAGL,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,8DAA8D;IAC3E,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,WAAW,EAAE,KAAK;IAClB,MAAM,EAAE,KAAK,EAAE,OAAuB,EAAiB,EAAE;QACvD,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QACtE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;gBACE,IAAI,EAAE,WAAW,CAAC,KAAK;gBACvB,IAAI,EAAE,sEAAsE;aAC7E,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACxB,OAAO,EACP,cAAc,IAAI,CAAC,GAAG,EAAE,eAAe,CACxC,CAAC;QACF,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC;QAEtC,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;YACE,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,4CAA4C,WAAW,CAAC,GAAG,CAAC,iHAAiH,QAAQ,EAAE;SAC9L,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,WAAW,CAAC,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;gBACE,IAAI,EAAE,WAAW,CAAC,KAAK;gBACvB,IAAI,EAAE,oCAAoC,OAAO,EAAE;aACpD,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC1C,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,QAAQ,GAAG,KAAK,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,gFAAgF;QAClF,CAAC;QAED,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;YACE,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,sBAAsB,QAAQ,OAAO,UAAU,QAAQ,QAAQ,8IAA8I;SACpN,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ import path from 'node:path';
8
+ import { bugMemoryCommand } from './bugMemoryCommand.js';
9
+ import { captureHeapSnapshot } from '../utils/memorySnapshot.js';
10
+ import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
11
+ import { MessageType } from '../types.js';
12
+ vi.mock('../utils/memorySnapshot.js', () => ({
13
+ captureHeapSnapshot: vi.fn(),
14
+ MEMORY_SNAPSHOT_AUTO_THRESHOLD_BYTES: 2 * 1024 * 1024 * 1024,
15
+ }));
16
+ vi.mock('node:fs/promises', async (importOriginal) => {
17
+ const actual = await importOriginal();
18
+ return {
19
+ ...actual,
20
+ stat: vi.fn().mockResolvedValue({ size: 1234 }),
21
+ };
22
+ });
23
+ vi.mock('@google/gemini-cli-core', async (importOriginal) => {
24
+ const actual = await importOriginal();
25
+ return {
26
+ ...actual,
27
+ debugLogger: {
28
+ error: vi.fn(),
29
+ log: vi.fn(),
30
+ debug: vi.fn(),
31
+ warn: vi.fn(),
32
+ },
33
+ };
34
+ });
35
+ function makeContextWithTempDir(tempDir) {
36
+ return createMockCommandContext({
37
+ services: {
38
+ agentContext: {
39
+ config: {
40
+ storage: tempDir ? { getProjectTempDir: () => tempDir } : undefined,
41
+ },
42
+ },
43
+ },
44
+ });
45
+ }
46
+ describe('bugMemoryCommand', () => {
47
+ beforeEach(() => {
48
+ vi.useFakeTimers();
49
+ vi.setSystemTime(new Date('2024-01-01T00:00:00Z'));
50
+ });
51
+ afterEach(() => {
52
+ vi.clearAllMocks();
53
+ vi.useRealTimers();
54
+ });
55
+ it('declares itself as a non-auto-executing built-in command', () => {
56
+ expect(bugMemoryCommand.name).toBe('bug-memory');
57
+ expect(bugMemoryCommand.autoExecute).toBe(false);
58
+ expect(bugMemoryCommand.description).toBeTruthy();
59
+ });
60
+ it('captures a heap snapshot and reports the file path', async () => {
61
+ const tempDir = path.join('/tmp', 'gemini-test');
62
+ const context = makeContextWithTempDir(tempDir);
63
+ vi.mocked(captureHeapSnapshot).mockResolvedValueOnce(undefined);
64
+ if (!bugMemoryCommand.action)
65
+ throw new Error('Action missing');
66
+ await bugMemoryCommand.action(context, '');
67
+ const expectedPath = path.join(tempDir, `bug-memory-${new Date('2024-01-01T00:00:00Z').getTime()}.heapsnapshot`);
68
+ expect(captureHeapSnapshot).toHaveBeenCalledWith(expectedPath);
69
+ const addItemCalls = vi.mocked(context.ui.addItem).mock.calls;
70
+ expect(addItemCalls).toHaveLength(2);
71
+ expect(addItemCalls[0][0]).toMatchObject({ type: MessageType.INFO });
72
+ expect(addItemCalls[0][0].text).toContain(expectedPath);
73
+ expect(addItemCalls[1][0]).toMatchObject({ type: MessageType.INFO });
74
+ expect(addItemCalls[1][0].text).toContain('Heap snapshot saved');
75
+ expect(addItemCalls[1][0].text).toContain(expectedPath);
76
+ });
77
+ it('surfaces an error if capture fails', async () => {
78
+ const context = makeContextWithTempDir('/tmp/gemini-test');
79
+ vi.mocked(captureHeapSnapshot).mockRejectedValueOnce(new Error('inspector disconnected'));
80
+ if (!bugMemoryCommand.action)
81
+ throw new Error('Action missing');
82
+ await bugMemoryCommand.action(context, '');
83
+ const addItemCalls = vi.mocked(context.ui.addItem).mock.calls;
84
+ const lastCall = addItemCalls[addItemCalls.length - 1][0];
85
+ expect(lastCall.type).toBe(MessageType.ERROR);
86
+ expect(lastCall.text).toContain('inspector disconnected');
87
+ });
88
+ it('emits an error when no project temp directory is available', async () => {
89
+ const context = makeContextWithTempDir(undefined);
90
+ if (!bugMemoryCommand.action)
91
+ throw new Error('Action missing');
92
+ await bugMemoryCommand.action(context, '');
93
+ expect(captureHeapSnapshot).not.toHaveBeenCalled();
94
+ const addItemCalls = vi.mocked(context.ui.addItem).mock.calls;
95
+ expect(addItemCalls).toHaveLength(1);
96
+ expect(addItemCalls[0][0].type).toBe(MessageType.ERROR);
97
+ expect(addItemCalls[0][0].text).toContain('temp directory');
98
+ });
99
+ });
100
+ //# sourceMappingURL=bugMemoryCommand.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bugMemoryCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/bugMemoryCommand.test.ts"],"names":[],"mappings":"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"}
@@ -3,19 +3,60 @@
3
3
  * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { FileCommandLoader } from '../../services/FileCommandLoader.js';
6
7
  import { CommandKind, } from './types.js';
7
8
  import { MessageType, } from '../types.js';
8
9
  /**
9
10
  * Action for the default `/commands` invocation.
10
11
  * Displays a message prompting the user to use a subcommand.
11
12
  */
12
- async function listAction(_context, _args) {
13
+ async function defaultAction(_context, _args) {
13
14
  return {
14
15
  type: 'message',
15
16
  messageType: 'info',
16
- content: 'Use "/commands reload" to reload custom command definitions from .toml files.',
17
+ content: 'Use "/commands list" to view available .toml files, or "/commands reload" to reload custom command definitions.',
17
18
  };
18
19
  }
20
+ /**
21
+ * Action for `/commands list`.
22
+ * Lists available .toml command files from user, project, and extension directories.
23
+ */
24
+ async function listSubcommandAction(context) {
25
+ try {
26
+ const config = context.services.agentContext?.config ?? null;
27
+ const loader = new FileCommandLoader(config);
28
+ const groups = await loader.listAvailableFiles();
29
+ const results = [];
30
+ for (const group of groups) {
31
+ results.push(`### ${group.displayName} Commands (${group.path})`);
32
+ if (group.error) {
33
+ results.push(`- (Error reading directory: ${group.error})`);
34
+ }
35
+ else {
36
+ group.files.forEach((file) => results.push(`- ${file}`));
37
+ }
38
+ }
39
+ results.push('\n_Note: MCP prompts are dynamically loaded from configured MCP servers._');
40
+ if (results.length === 1) {
41
+ // Only the note is present
42
+ return {
43
+ type: 'message',
44
+ messageType: 'info',
45
+ content: 'No custom command files (.toml) found.\n\n_Note: MCP prompts are dynamically loaded from configured MCP servers._',
46
+ };
47
+ }
48
+ context.ui.addItem({
49
+ type: MessageType.INFO,
50
+ text: results.join('\n'),
51
+ }, Date.now());
52
+ }
53
+ catch (error) {
54
+ context.ui.addItem({
55
+ type: MessageType.ERROR,
56
+ text: `Failed to list commands: ${error instanceof Error ? error.message : String(error)}`,
57
+ }, Date.now());
58
+ }
59
+ }
19
60
  /**
20
61
  * Action for `/commands reload`.
21
62
  * Triggers a full re-discovery and reload of all slash commands, including
@@ -38,10 +79,17 @@ async function reloadAction(context) {
38
79
  }
39
80
  export const commandsCommand = {
40
81
  name: 'commands',
41
- description: 'Manage custom slash commands. Usage: /commands [reload]',
82
+ description: 'Manage custom slash commands. Usage: /commands [list|reload]',
42
83
  kind: CommandKind.BUILT_IN,
43
84
  autoExecute: false,
44
85
  subCommands: [
86
+ {
87
+ name: 'list',
88
+ description: 'List available custom command .toml files. Usage: /commands list',
89
+ kind: CommandKind.BUILT_IN,
90
+ autoExecute: true,
91
+ action: listSubcommandAction,
92
+ },
45
93
  {
46
94
  name: 'reload',
47
95
  altNames: ['refresh'],
@@ -51,6 +99,6 @@ export const commandsCommand = {
51
99
  action: reloadAction,
52
100
  },
53
101
  ],
54
- action: listAction,
102
+ action: defaultAction,
55
103
  };
56
104
  //# sourceMappingURL=commandsCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commandsCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/commandsCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAIL,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,GAGZ,MAAM,aAAa,CAAC;AAErB;;;GAGG;AACH,KAAK,UAAU,UAAU,CACvB,QAAwB,EACxB,KAAa;IAEb,OAAO;QACL,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,MAAM;QACnB,OAAO,EACL,+EAA+E;KAClF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,YAAY,CACzB,OAAuB;IAEvB,IAAI,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC;QAE5B,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;YACE,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,wCAAwC;SAC5B,EACpB,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;YACE,IAAI,EAAE,WAAW,CAAC,KAAK;YACvB,IAAI,EAAE,8BAA8B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;SACzE,EACrB,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAiB;IAC3C,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,yDAAyD;IACtE,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,WAAW,EAAE,KAAK;IAClB,WAAW,EAAE;QACX;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,SAAS,CAAC;YACrB,WAAW,EACT,6EAA6E;YAC/E,IAAI,EAAE,WAAW,CAAC,QAAQ;YAC1B,WAAW,EAAE,IAAI;YACjB,MAAM,EAAE,YAAY;SACrB;KACF;IACD,MAAM,EAAE,UAAU;CACnB,CAAC"}
1
+ {"version":3,"file":"commandsCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/commandsCommand.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,27 @@
3
3
  * Copyright 2026 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { describe, it, expect, vi, beforeEach } from 'vitest';
6
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
7
+ import { Storage } from '@google/gemini-cli-core';
7
8
  import { commandsCommand } from './commandsCommand.js';
8
9
  import { MessageType } from '../types.js';
9
10
  import { createMockCommandContext } from '../../test-utils/mockCommandContext.js';
11
+ import { FileCommandLoader } from '../../services/FileCommandLoader.js';
12
+ vi.mock('../../services/FileCommandLoader.js');
13
+ vi.mock('@google/gemini-cli-core', async () => {
14
+ const actual = await vi.importActual('@google/gemini-cli-core');
15
+ return {
16
+ ...actual,
17
+ Storage: class extends actual.Storage {
18
+ static getUserCommandsDir() {
19
+ return '/mock/user/commands';
20
+ }
21
+ getProjectCommandsDir() {
22
+ return '/mock/project/commands';
23
+ }
24
+ },
25
+ };
26
+ });
10
27
  describe('commandsCommand', () => {
11
28
  let context;
12
29
  beforeEach(() => {
@@ -14,16 +31,72 @@ describe('commandsCommand', () => {
14
31
  context = createMockCommandContext({
15
32
  ui: {
16
33
  reloadCommands: vi.fn(),
34
+ addItem: vi.fn(),
35
+ },
36
+ services: {
37
+ agentContext: {
38
+ getProjectRoot: vi.fn().mockReturnValue('/mock/project'),
39
+ getFolderTrust: vi.fn().mockReturnValue(false),
40
+ isTrustedFolder: vi.fn().mockReturnValue(false),
41
+ getExtensions: vi.fn().mockReturnValue([
42
+ { name: 'ext1', path: '/mock/ext1', isActive: true },
43
+ { name: 'ext2', path: '/mock/ext2', isActive: false },
44
+ ]),
45
+ storage: new Storage('/mock/project'),
46
+ },
17
47
  },
18
48
  });
19
49
  });
50
+ afterEach(() => {
51
+ vi.restoreAllMocks();
52
+ });
20
53
  describe('default action', () => {
21
54
  it('should return an info message prompting subcommand usage', async () => {
22
55
  const result = await commandsCommand.action(context, '');
23
56
  expect(result).toEqual({
24
57
  type: 'message',
25
58
  messageType: 'info',
26
- content: 'Use "/commands reload" to reload custom command definitions from .toml files.',
59
+ content: 'Use "/commands list" to view available .toml files, or "/commands reload" to reload custom command definitions.',
60
+ });
61
+ });
62
+ });
63
+ describe('list', () => {
64
+ it('should list .toml files from available sources', async () => {
65
+ vi.mocked(FileCommandLoader.prototype.listAvailableFiles).mockResolvedValue([
66
+ {
67
+ displayName: 'User',
68
+ path: '/mock/user/commands',
69
+ files: ['user1.toml'],
70
+ },
71
+ {
72
+ displayName: 'Project',
73
+ path: '/mock/project/commands',
74
+ files: ['proj1.toml'],
75
+ },
76
+ {
77
+ displayName: 'Extension: ext1',
78
+ path: '/mock/ext1/commands',
79
+ files: ['ext1.toml'],
80
+ },
81
+ ]);
82
+ const listCmd = commandsCommand.subCommands.find((s) => s.name === 'list');
83
+ await listCmd.action(context, '');
84
+ expect(context.ui.addItem).toHaveBeenCalledWith(expect.objectContaining({
85
+ type: MessageType.INFO,
86
+ text: expect.any(String),
87
+ }), expect.any(Number));
88
+ // Snapshot the text content
89
+ const addItemCall = vi.mocked(context.ui.addItem).mock.calls[0][0];
90
+ expect(addItemCall.text).toMatchSnapshot();
91
+ });
92
+ it('should show "No custom command files found" message if no .toml files exist', async () => {
93
+ vi.mocked(FileCommandLoader.prototype.listAvailableFiles).mockResolvedValue([]);
94
+ const listCmd = commandsCommand.subCommands.find((s) => s.name === 'list');
95
+ const result = await listCmd.action(context, '');
96
+ expect(result).toEqual({
97
+ type: 'message',
98
+ messageType: 'info',
99
+ content: expect.stringContaining('No custom command files (.toml) found.'),
27
100
  });
28
101
  });
29
102
  });
@@ -1 +1 @@
1
- {"version":3,"file":"commandsCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/commandsCommand.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAGlF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,OAAuB,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,GAAG,wBAAwB,CAAC;YACjC,EAAE,EAAE;gBACF,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;aACxB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAE1D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,MAAM;gBACnB,OAAO,EACL,+EAA+E;aAClF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,SAAS,GAAG,eAAe,CAAC,WAAY,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAC1B,CAAC;YAEH,MAAM,SAAS,CAAC,MAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAErC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAC7C,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,wCAAwC;aAC/C,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"commandsCommand.test.js","sourceRoot":"","sources":["../../../../src/ui/commands/commandsCommand.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,OAAO,EAAe,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAExE,EAAE,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;AAE/C,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;IAC5C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAElC,yBAAyB,CAAC,CAAC;IAC7B,OAAO;QACL,GAAG,MAAM;QACT,OAAO,EAAE,KAAM,SAAQ,MAAM,CAAC,OAAO;YACnC,MAAM,CAAU,kBAAkB;gBAChC,OAAO,qBAAqB,CAAC;YAC/B,CAAC;YACQ,qBAAqB;gBAC5B,OAAO,wBAAwB,CAAC;YAClC,CAAC;SACF;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,IAAI,OAAuB,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,GAAG,wBAAwB,CAAC;YACjC,EAAE,EAAE;gBACF,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;gBACvB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;aACjB;YACD,QAAQ,EAAE;gBACR,YAAY,EAAE;oBACZ,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;oBACxD,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;oBAC9C,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;oBAC/C,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;wBACrC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE;wBACpD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE;qBACtD,CAAC;oBACF,OAAO,EAAE,IAAI,OAAO,CAAC,eAAe,CAAC;iBACjB;aACvB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAE1D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,MAAM;gBACnB,OAAO,EACL,iHAAiH;aACpH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC9D,EAAE,CAAC,MAAM,CACP,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,CAC/C,CAAC,iBAAiB,CAAC;gBAClB;oBACE,WAAW,EAAE,MAAM;oBACnB,IAAI,EAAE,qBAAqB;oBAC3B,KAAK,EAAE,CAAC,YAAY,CAAC;iBACtB;gBACD;oBACE,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,wBAAwB;oBAC9B,KAAK,EAAE,CAAC,YAAY,CAAC;iBACtB;gBACD;oBACE,WAAW,EAAE,iBAAiB;oBAC9B,IAAI,EAAE,qBAAqB;oBAC3B,KAAK,EAAE,CAAC,WAAW,CAAC;iBACrB;aACF,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,eAAe,CAAC,WAAY,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CACxB,CAAC;YAEH,MAAM,OAAO,CAAC,MAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAEnC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAC7C,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;aACzB,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;YAEF,4BAA4B;YAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnE,MAAM,CAAE,WAAgC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC3F,EAAE,CAAC,MAAM,CACP,iBAAiB,CAAC,SAAS,CAAC,kBAAkB,CAC/C,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG,eAAe,CAAC,WAAY,CAAC,IAAI,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CACxB,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,MAAM;gBACnB,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAC9B,wCAAwC,CACzC;aACF,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,SAAS,GAAG,eAAe,CAAC,WAAY,CAAC,IAAI,CACjD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAC1B,CAAC;YAEH,MAAM,SAAS,CAAC,MAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAErC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAC7C,MAAM,CAAC,gBAAgB,CAAC;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,wCAAwC;aAC/C,CAAC,EACF,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}