@machina.ai/cell-cli 1.6.1-rc2 → 1.10.0-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 (508) hide show
  1. package/dist/package.json +8 -4
  2. package/dist/src/commands/extensions/examples/context/GEMINI.md +9 -3
  3. package/dist/src/commands/extensions/examples/context/gemini-extension.json +1 -2
  4. package/dist/src/commands/extensions/examples/mcp-server/gemini-extension.json +3 -2
  5. package/dist/src/commands/extensions/examples/mcp-server/package.json +18 -0
  6. package/dist/src/commands/extensions/examples/mcp-server/tsconfig.json +13 -0
  7. package/dist/src/commands/extensions/install.d.ts +2 -2
  8. package/dist/src/commands/extensions/install.js +35 -36
  9. package/dist/src/commands/extensions/install.js.map +1 -1
  10. package/dist/src/commands/extensions/install.test.js +25 -25
  11. package/dist/src/commands/extensions/install.test.js.map +1 -1
  12. package/dist/src/commands/extensions/link.js +2 -2
  13. package/dist/src/commands/extensions/link.js.map +1 -1
  14. package/dist/src/commands/extensions/list.js +1 -1
  15. package/dist/src/commands/extensions/list.js.map +1 -1
  16. package/dist/src/commands/extensions/new.js +28 -8
  17. package/dist/src/commands/extensions/new.js.map +1 -1
  18. package/dist/src/commands/extensions/new.test.js +14 -5
  19. package/dist/src/commands/extensions/new.test.js.map +1 -1
  20. package/dist/src/commands/extensions/uninstall.js +1 -1
  21. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  22. package/dist/src/commands/extensions/uninstall.test.js +4 -1
  23. package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
  24. package/dist/src/commands/extensions/update.js +19 -9
  25. package/dist/src/commands/extensions/update.js.map +1 -1
  26. package/dist/src/commands/mcp/add.js +6 -1
  27. package/dist/src/commands/mcp/add.js.map +1 -1
  28. package/dist/src/commands/mcp/list.js +5 -4
  29. package/dist/src/commands/mcp/list.js.map +1 -1
  30. package/dist/src/config/config.d.ts +7 -4
  31. package/dist/src/config/config.js +174 -82
  32. package/dist/src/config/config.js.map +1 -1
  33. package/dist/src/config/extension.d.ts +43 -17
  34. package/dist/src/config/extension.js +197 -100
  35. package/dist/src/config/extension.js.map +1 -1
  36. package/dist/src/config/extensions/extensionEnablement.d.ts +12 -9
  37. package/dist/src/config/extensions/extensionEnablement.js +36 -9
  38. package/dist/src/config/extensions/extensionEnablement.js.map +1 -1
  39. package/dist/src/config/extensions/extensionEnablement.test.js +74 -1
  40. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -1
  41. package/dist/src/config/extensions/github.d.ts +9 -1
  42. package/dist/src/config/extensions/github.js +71 -81
  43. package/dist/src/config/extensions/github.js.map +1 -1
  44. package/dist/src/config/extensions/github.test.js +123 -12
  45. package/dist/src/config/extensions/github.test.js.map +1 -1
  46. package/dist/src/config/extensions/github_fetch.d.ts +7 -0
  47. package/dist/src/config/extensions/github_fetch.js +34 -0
  48. package/dist/src/config/extensions/github_fetch.js.map +1 -0
  49. package/dist/src/config/extensions/update.d.ts +4 -5
  50. package/dist/src/config/extensions/update.js +65 -43
  51. package/dist/src/config/extensions/update.js.map +1 -1
  52. package/dist/src/config/extensions/update.test.js +89 -71
  53. package/dist/src/config/extensions/update.test.js.map +1 -1
  54. package/dist/src/config/keyBindings.js +1 -1
  55. package/dist/src/config/keyBindings.js.map +1 -1
  56. package/dist/src/config/policy-engine.integration.test.js +270 -0
  57. package/dist/src/config/policy-engine.integration.test.js.map +1 -0
  58. package/dist/src/config/policy.d.ts +8 -0
  59. package/dist/src/config/policy.js +150 -0
  60. package/dist/src/config/policy.js.map +1 -0
  61. package/dist/src/config/policy.test.d.ts +6 -0
  62. package/dist/src/config/policy.test.js +336 -0
  63. package/dist/src/config/policy.test.js.map +1 -0
  64. package/dist/src/config/settings.d.ts +10 -1
  65. package/dist/src/config/settings.js +36 -9
  66. package/dist/src/config/settings.js.map +1 -1
  67. package/dist/src/config/settingsSchema.d.ts +153 -5
  68. package/dist/src/config/settingsSchema.js +153 -5
  69. package/dist/src/config/settingsSchema.js.map +1 -1
  70. package/dist/src/config/trustedFolders.d.ts +10 -2
  71. package/dist/src/config/trustedFolders.js +43 -18
  72. package/dist/src/config/trustedFolders.js.map +1 -1
  73. package/dist/src/config/trustedFolders.test.js +98 -17
  74. package/dist/src/config/trustedFolders.test.js.map +1 -1
  75. package/dist/src/gemini.js +127 -163
  76. package/dist/src/gemini.js.map +1 -1
  77. package/dist/src/gemini.test.js +101 -20
  78. package/dist/src/gemini.test.js.map +1 -1
  79. package/dist/src/generated/git-commit.d.ts +2 -2
  80. package/dist/src/generated/git-commit.js +2 -2
  81. package/dist/src/generated/git-commit.js.map +1 -1
  82. package/dist/src/nonInteractiveCli.d.ts +2 -1
  83. package/dist/src/nonInteractiveCli.js +43 -17
  84. package/dist/src/nonInteractiveCli.js.map +1 -1
  85. package/dist/src/nonInteractiveCliCommands.d.ts +17 -0
  86. package/dist/src/nonInteractiveCliCommands.js +78 -0
  87. package/dist/src/nonInteractiveCliCommands.js.map +1 -0
  88. package/dist/src/services/BuiltinCommandLoader.js +7 -0
  89. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  90. package/dist/src/services/BuiltinCommandLoader.test.js +87 -1
  91. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  92. package/dist/src/services/FileCommandLoader.d.ts +1 -1
  93. package/dist/src/services/FileCommandLoader.js +4 -4
  94. package/dist/src/services/FileCommandLoader.js.map +1 -1
  95. package/dist/src/services/prompt-processors/shellProcessor.js +1 -1
  96. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  97. package/dist/src/test-utils/render.d.ts +12 -1
  98. package/dist/src/test-utils/render.js +56 -1
  99. package/dist/src/test-utils/render.js.map +1 -1
  100. package/dist/src/ui/App.js +7 -8
  101. package/dist/src/ui/App.js.map +1 -1
  102. package/dist/src/ui/AppContainer.js +133 -59
  103. package/dist/src/ui/AppContainer.js.map +1 -1
  104. package/dist/src/ui/AppContainer.test.js +399 -7
  105. package/dist/src/ui/AppContainer.test.js.map +1 -1
  106. package/dist/src/ui/IdeIntegrationNudge.d.ts +2 -2
  107. package/dist/src/ui/IdeIntegrationNudge.js +4 -2
  108. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  109. package/dist/src/ui/auth/AuthDialog.js +1 -0
  110. package/dist/src/ui/auth/AuthDialog.js.map +1 -1
  111. package/dist/src/ui/auth/AuthDialog.test.js +1 -0
  112. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
  113. package/dist/src/ui/auth/AuthInProgress.js +2 -2
  114. package/dist/src/ui/auth/AuthInProgress.js.map +1 -1
  115. package/dist/src/ui/commands/chatCommand.js +21 -27
  116. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  117. package/dist/src/ui/commands/clearCommand.js +1 -1
  118. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  119. package/dist/src/ui/commands/extensionsCommand.js +39 -34
  120. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  121. package/dist/src/ui/commands/ideCommand.js +1 -1
  122. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  123. package/dist/src/ui/commands/mcpCommand.js +87 -262
  124. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  125. package/dist/src/ui/commands/memoryCommand.js +23 -5
  126. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  127. package/dist/src/ui/commands/modelCommand.d.ts +7 -0
  128. package/dist/src/ui/commands/modelCommand.js +16 -0
  129. package/dist/src/ui/commands/modelCommand.js.map +1 -0
  130. package/dist/src/ui/commands/modelCommand.test.d.ts +6 -0
  131. package/dist/src/ui/commands/modelCommand.test.js +30 -0
  132. package/dist/src/ui/commands/modelCommand.test.js.map +1 -0
  133. package/dist/src/ui/commands/permissionsCommand.d.ts +7 -0
  134. package/dist/src/ui/commands/permissionsCommand.js +16 -0
  135. package/dist/src/ui/commands/permissionsCommand.js.map +1 -0
  136. package/dist/src/ui/commands/permissionsCommand.test.d.ts +6 -0
  137. package/dist/src/ui/commands/permissionsCommand.test.js +30 -0
  138. package/dist/src/ui/commands/permissionsCommand.test.js.map +1 -0
  139. package/dist/src/ui/commands/profileCommand.d.ts +7 -0
  140. package/dist/src/ui/commands/profileCommand.js +23 -0
  141. package/dist/src/ui/commands/profileCommand.js.map +1 -0
  142. package/dist/src/ui/commands/setupGithubCommand.test.js +2 -1
  143. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
  144. package/dist/src/ui/commands/toolsCommand.js +10 -24
  145. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  146. package/dist/src/ui/commands/types.d.ts +8 -6
  147. package/dist/src/ui/commands/types.js.map +1 -1
  148. package/dist/src/ui/components/AnsiOutput.d.ts +1 -0
  149. package/dist/src/ui/components/AnsiOutput.js +5 -5
  150. package/dist/src/ui/components/AnsiOutput.js.map +1 -1
  151. package/dist/src/ui/components/AnsiOutput.test.js +6 -6
  152. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -1
  153. package/dist/src/ui/components/AppHeader.js +2 -5
  154. package/dist/src/ui/components/AppHeader.js.map +1 -1
  155. package/dist/src/ui/components/AsciiArt.d.ts +3 -3
  156. package/dist/src/ui/components/AsciiArt.js +3 -3
  157. package/dist/src/ui/components/CliSpinner.d.ts +10 -0
  158. package/dist/src/ui/components/CliSpinner.js +20 -0
  159. package/dist/src/ui/components/CliSpinner.js.map +1 -0
  160. package/dist/src/ui/components/Composer.js +8 -31
  161. package/dist/src/ui/components/Composer.js.map +1 -1
  162. package/dist/src/ui/components/Composer.test.js +18 -21
  163. package/dist/src/ui/components/Composer.test.js.map +1 -1
  164. package/dist/src/ui/components/ConsentPrompt.d.ts +13 -0
  165. package/dist/src/ui/components/ConsentPrompt.js +19 -0
  166. package/dist/src/ui/components/ConsentPrompt.js.map +1 -0
  167. package/dist/src/ui/components/ConsentPrompt.test.d.ts +6 -0
  168. package/dist/src/ui/components/ConsentPrompt.test.js +67 -0
  169. package/dist/src/ui/components/ConsentPrompt.test.js.map +1 -0
  170. package/dist/src/ui/components/ContextSummaryDisplay.js +2 -2
  171. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  172. package/dist/src/ui/components/ContextUsageDisplay.d.ts +2 -1
  173. package/dist/src/ui/components/ContextUsageDisplay.js +4 -2
  174. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
  175. package/dist/src/ui/components/DebugProfiler.d.ts +18 -0
  176. package/dist/src/ui/components/DebugProfiler.js +158 -12
  177. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  178. package/dist/src/ui/components/DebugProfiler.test.d.ts +6 -0
  179. package/dist/src/ui/components/DebugProfiler.test.js +140 -0
  180. package/dist/src/ui/components/DebugProfiler.test.js.map +1 -0
  181. package/dist/src/ui/components/DialogManager.d.ts +7 -1
  182. package/dist/src/ui/components/DialogManager.js +18 -9
  183. package/dist/src/ui/components/DialogManager.js.map +1 -1
  184. package/dist/src/ui/components/EditorSettingsDialog.js +11 -2
  185. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  186. package/dist/src/ui/components/ExitWarning.d.ts +7 -0
  187. package/dist/src/ui/components/ExitWarning.js +9 -0
  188. package/dist/src/ui/components/ExitWarning.js.map +1 -0
  189. package/dist/src/ui/components/FolderTrustDialog.js +11 -4
  190. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  191. package/dist/src/ui/components/FolderTrustDialog.test.js +9 -13
  192. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  193. package/dist/src/ui/components/Footer.d.ts +1 -19
  194. package/dist/src/ui/components/Footer.js +35 -17
  195. package/dist/src/ui/components/Footer.js.map +1 -1
  196. package/dist/src/ui/components/GeminiRespondingSpinner.js +2 -2
  197. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  198. package/dist/src/ui/components/Help.js +1 -1
  199. package/dist/src/ui/components/Help.js.map +1 -1
  200. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -1
  201. package/dist/src/ui/components/HistoryItemDisplay.js +11 -1
  202. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  203. package/dist/src/ui/components/HistoryItemDisplay.test.js +90 -9
  204. package/dist/src/ui/components/HistoryItemDisplay.test.js.map +1 -1
  205. package/dist/src/ui/components/IdeTrustChangeDialog.d.ts +11 -0
  206. package/dist/src/ui/components/IdeTrustChangeDialog.js +32 -0
  207. package/dist/src/ui/components/IdeTrustChangeDialog.js.map +1 -0
  208. package/dist/src/ui/components/IdeTrustChangeDialog.test.d.ts +6 -0
  209. package/dist/src/ui/components/IdeTrustChangeDialog.test.js +57 -0
  210. package/dist/src/ui/components/IdeTrustChangeDialog.test.js.map +1 -0
  211. package/dist/src/ui/components/InputPrompt.d.ts +13 -1
  212. package/dist/src/ui/components/InputPrompt.js +97 -35
  213. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  214. package/dist/src/ui/components/LoadingIndicator.js +1 -1
  215. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  216. package/dist/src/ui/components/LoadingIndicator.test.js +4 -0
  217. package/dist/src/ui/components/LoadingIndicator.test.js.map +1 -1
  218. package/dist/src/ui/components/LoopDetectionConfirmation.js +2 -0
  219. package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -1
  220. package/dist/src/ui/components/MainContent.js +7 -2
  221. package/dist/src/ui/components/MainContent.js.map +1 -1
  222. package/dist/src/ui/components/ModelDialog.d.ts +11 -0
  223. package/dist/src/ui/components/ModelDialog.js +57 -0
  224. package/dist/src/ui/components/ModelDialog.js.map +1 -0
  225. package/dist/src/ui/components/ModelDialog.test.d.ts +6 -0
  226. package/dist/src/ui/components/ModelDialog.test.js +153 -0
  227. package/dist/src/ui/components/ModelDialog.test.js.map +1 -0
  228. package/dist/src/ui/components/Notifications.js +12 -4
  229. package/dist/src/ui/components/Notifications.js.map +1 -1
  230. package/dist/src/ui/components/PermissionsModifyTrustDialog.d.ts +13 -0
  231. package/dist/src/ui/components/PermissionsModifyTrustDialog.js +48 -0
  232. package/dist/src/ui/components/PermissionsModifyTrustDialog.js.map +1 -0
  233. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.d.ts +6 -0
  234. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js +154 -0
  235. package/dist/src/ui/components/PermissionsModifyTrustDialog.test.js.map +1 -0
  236. package/dist/src/ui/components/ProQuotaDialog.js +2 -0
  237. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  238. package/dist/src/ui/components/ProQuotaDialog.test.js +2 -0
  239. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
  240. package/dist/src/ui/components/QueuedMessageDisplay.d.ts +9 -0
  241. package/dist/src/ui/components/QueuedMessageDisplay.js +20 -0
  242. package/dist/src/ui/components/QueuedMessageDisplay.js.map +1 -0
  243. package/dist/src/ui/components/QueuedMessageDisplay.test.d.ts +6 -0
  244. package/dist/src/ui/components/QueuedMessageDisplay.test.js +56 -0
  245. package/dist/src/ui/components/QueuedMessageDisplay.test.js.map +1 -0
  246. package/dist/src/ui/components/SettingsDialog.js +6 -3
  247. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  248. package/dist/src/ui/components/SettingsDialog.test.js +47 -13
  249. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  250. package/dist/src/ui/components/ShellConfirmationDialog.js +3 -0
  251. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  252. package/dist/src/ui/components/ThemeDialog.js +2 -0
  253. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  254. package/dist/src/ui/components/WorkspaceMigrationDialog.d.ts +2 -2
  255. package/dist/src/ui/components/WorkspaceMigrationDialog.js +7 -5
  256. package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
  257. package/dist/src/ui/components/messages/CompressionMessage.js +3 -3
  258. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  259. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +15 -1
  260. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  261. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +1 -1
  262. package/dist/src/ui/components/messages/ToolGroupMessage.js +5 -5
  263. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  264. package/dist/src/ui/components/messages/ToolMessage.d.ts +1 -1
  265. package/dist/src/ui/components/messages/ToolMessage.js +28 -5
  266. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  267. package/dist/src/ui/components/messages/UserMessage.js +1 -2
  268. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  269. package/dist/src/ui/components/messages/WarningMessage.d.ts +11 -0
  270. package/dist/src/ui/components/messages/WarningMessage.js +10 -0
  271. package/dist/src/ui/components/messages/WarningMessage.js.map +1 -0
  272. package/dist/src/ui/components/shared/BaseSelectionList.d.ts +38 -0
  273. package/dist/src/ui/components/shared/BaseSelectionList.js +72 -0
  274. package/dist/src/ui/components/shared/BaseSelectionList.js.map +1 -0
  275. package/dist/src/ui/components/shared/BaseSelectionList.test.d.ts +6 -0
  276. package/dist/src/ui/components/shared/BaseSelectionList.test.js +376 -0
  277. package/dist/src/ui/components/shared/BaseSelectionList.test.js.map +1 -0
  278. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +35 -0
  279. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +13 -0
  280. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -0
  281. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.d.ts +6 -0
  282. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js +79 -0
  283. package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.test.js.map +1 -0
  284. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +2 -3
  285. package/dist/src/ui/components/shared/RadioButtonSelect.js +9 -104
  286. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  287. package/dist/src/ui/components/shared/RadioButtonSelect.test.js +115 -92
  288. package/dist/src/ui/components/shared/RadioButtonSelect.test.js.map +1 -1
  289. package/dist/src/ui/components/shared/ScopeSelector.js +4 -1
  290. package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -1
  291. package/dist/src/ui/components/shared/text-buffer.d.ts +6 -0
  292. package/dist/src/ui/components/shared/text-buffer.js +71 -4
  293. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  294. package/dist/src/ui/components/views/ChatList.d.ts +12 -0
  295. package/dist/src/ui/components/views/ChatList.js +17 -0
  296. package/dist/src/ui/components/views/ChatList.js.map +1 -0
  297. package/dist/src/ui/components/views/ChatList.test.d.ts +6 -0
  298. package/dist/src/ui/components/views/ChatList.test.js +42 -0
  299. package/dist/src/ui/components/views/ChatList.test.js.map +1 -0
  300. package/dist/src/ui/components/views/ExtensionsList.test.js +1 -1
  301. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -1
  302. package/dist/src/ui/components/views/McpStatus.d.ts +27 -0
  303. package/dist/src/ui/components/views/McpStatus.js +77 -0
  304. package/dist/src/ui/components/views/McpStatus.js.map +1 -0
  305. package/dist/src/ui/components/views/McpStatus.test.d.ts +6 -0
  306. package/dist/src/ui/components/views/McpStatus.test.js +117 -0
  307. package/dist/src/ui/components/views/McpStatus.test.js.map +1 -0
  308. package/dist/src/ui/components/views/ToolsList.d.ts +14 -0
  309. package/dist/src/ui/components/views/ToolsList.js +7 -0
  310. package/dist/src/ui/components/views/ToolsList.js.map +1 -0
  311. package/dist/src/ui/components/views/ToolsList.test.d.ts +6 -0
  312. package/dist/src/ui/components/views/ToolsList.test.js +45 -0
  313. package/dist/src/ui/components/views/ToolsList.test.js.map +1 -0
  314. package/dist/src/ui/contexts/KeypressContext.js +46 -3
  315. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  316. package/dist/src/ui/contexts/KeypressContext.test.js +127 -0
  317. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  318. package/dist/src/ui/contexts/SessionContext.d.ts +6 -0
  319. package/dist/src/ui/contexts/SessionContext.js +107 -5
  320. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  321. package/dist/src/ui/contexts/ShellFocusContext.d.ts +7 -0
  322. package/dist/src/ui/contexts/ShellFocusContext.js +9 -0
  323. package/dist/src/ui/contexts/ShellFocusContext.js.map +1 -0
  324. package/dist/src/ui/contexts/UIActionsContext.d.ts +2 -0
  325. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -1
  326. package/dist/src/ui/contexts/UIStateContext.d.ts +14 -6
  327. package/dist/src/ui/contexts/UIStateContext.js +2 -0
  328. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  329. package/dist/src/ui/hooks/shellCommandProcessor.js +5 -6
  330. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  331. package/dist/src/ui/hooks/shellCommandProcessor.test.js +19 -32
  332. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  333. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +9 -6
  334. package/dist/src/ui/hooks/slashCommandProcessor.js +19 -9
  335. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  336. package/dist/src/ui/hooks/useExtensionUpdates.d.ts +10 -1
  337. package/dist/src/ui/hooks/useExtensionUpdates.js +140 -38
  338. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -1
  339. package/dist/src/ui/hooks/useExtensionUpdates.test.js +163 -79
  340. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -1
  341. package/dist/src/ui/hooks/useFlickerDetector.d.ts +14 -0
  342. package/dist/src/ui/hooks/useFlickerDetector.js +37 -0
  343. package/dist/src/ui/hooks/useFlickerDetector.js.map +1 -0
  344. package/dist/src/ui/hooks/useFlickerDetector.test.d.ts +6 -0
  345. package/dist/src/ui/hooks/useFlickerDetector.test.js +102 -0
  346. package/dist/src/ui/hooks/useFlickerDetector.test.js.map +1 -0
  347. package/dist/src/ui/hooks/useFocus.js +10 -0
  348. package/dist/src/ui/hooks/useFocus.js.map +1 -1
  349. package/dist/src/ui/hooks/useFolderTrust.d.ts +2 -1
  350. package/dist/src/ui/hooks/useFolderTrust.js +13 -9
  351. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  352. package/dist/src/ui/hooks/useGeminiStream.js +40 -8
  353. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  354. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  355. package/dist/src/ui/hooks/useHistoryManager.js +3 -3
  356. package/dist/src/ui/hooks/useHistoryManager.js.map +1 -1
  357. package/dist/src/ui/hooks/useIdeTrustListener.d.ts +4 -2
  358. package/dist/src/ui/hooks/useIdeTrustListener.js +40 -14
  359. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -1
  360. package/dist/src/ui/hooks/useIdeTrustListener.test.d.ts +6 -0
  361. package/dist/src/ui/hooks/useIdeTrustListener.test.js +183 -0
  362. package/dist/src/ui/hooks/useIdeTrustListener.test.js.map +1 -0
  363. package/dist/src/ui/hooks/useMemoryMonitor.d.ts +13 -0
  364. package/dist/src/ui/hooks/useMemoryMonitor.js +28 -0
  365. package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
  366. package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +6 -0
  367. package/dist/src/ui/hooks/useMemoryMonitor.test.js +57 -0
  368. package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -0
  369. package/dist/src/ui/hooks/useModelCommand.d.ts +12 -0
  370. package/dist/src/ui/hooks/useModelCommand.js +21 -0
  371. package/dist/src/ui/hooks/useModelCommand.js.map +1 -0
  372. package/dist/src/ui/hooks/useModelCommand.test.d.ts +6 -0
  373. package/dist/src/ui/hooks/useModelCommand.test.js +35 -0
  374. package/dist/src/ui/hooks/useModelCommand.test.js.map +1 -0
  375. package/dist/src/ui/hooks/usePermissionsModifyTrust.d.ts +17 -0
  376. package/dist/src/ui/hooks/usePermissionsModifyTrust.js +78 -0
  377. package/dist/src/ui/hooks/usePermissionsModifyTrust.js.map +1 -0
  378. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.d.ts +6 -0
  379. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js +182 -0
  380. package/dist/src/ui/hooks/usePermissionsModifyTrust.test.js.map +1 -0
  381. package/dist/src/ui/hooks/usePhraseCycler.js +1 -0
  382. package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
  383. package/dist/src/ui/hooks/useSelectionList.d.ts +34 -0
  384. package/dist/src/ui/hooks/useSelectionList.js +272 -0
  385. package/dist/src/ui/hooks/useSelectionList.js.map +1 -0
  386. package/dist/src/ui/hooks/useSelectionList.test.d.ts +6 -0
  387. package/dist/src/ui/hooks/useSelectionList.test.js +725 -0
  388. package/dist/src/ui/hooks/useSelectionList.test.js.map +1 -0
  389. package/dist/src/ui/hooks/useShellHistory.test.js +16 -10
  390. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -1
  391. package/dist/src/ui/hooks/useSlashCompletion.js +7 -2
  392. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  393. package/dist/src/ui/hooks/useSlashCompletion.test.js +33 -0
  394. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  395. package/dist/src/ui/hooks/useStateAndRef.d.ts +1 -1
  396. package/dist/src/ui/hooks/useStateAndRef.js +2 -2
  397. package/dist/src/ui/hooks/useStateAndRef.js.map +1 -1
  398. package/dist/src/ui/hooks/useTerminalSize.js +2 -3
  399. package/dist/src/ui/hooks/useTerminalSize.js.map +1 -1
  400. package/dist/src/ui/hooks/useToolScheduler.test.js +2 -2
  401. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  402. package/dist/src/ui/hooks/useWorkspaceMigration.d.ts +2 -2
  403. package/dist/src/ui/hooks/useWorkspaceMigration.js +13 -8
  404. package/dist/src/ui/hooks/useWorkspaceMigration.js.map +1 -1
  405. package/dist/src/ui/layouts/DefaultAppLayout.d.ts +7 -0
  406. package/dist/src/ui/layouts/DefaultAppLayout.js +16 -0
  407. package/dist/src/ui/layouts/DefaultAppLayout.js.map +1 -0
  408. package/dist/src/ui/layouts/ScreenReaderAppLayout.d.ts +7 -0
  409. package/dist/src/ui/layouts/ScreenReaderAppLayout.js +17 -0
  410. package/dist/src/ui/layouts/ScreenReaderAppLayout.js.map +1 -0
  411. package/dist/src/ui/noninteractive/nonInteractiveUi.d.ts +12 -0
  412. package/dist/src/ui/noninteractive/nonInteractiveUi.js +29 -0
  413. package/dist/src/ui/noninteractive/nonInteractiveUi.js.map +1 -0
  414. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +2 -2
  415. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  416. package/dist/src/ui/state/extensions.d.ts +47 -1
  417. package/dist/src/ui/state/extensions.js +68 -1
  418. package/dist/src/ui/state/extensions.js.map +1 -1
  419. package/dist/src/ui/themes/theme.js +2 -2
  420. package/dist/src/ui/themes/theme.js.map +1 -1
  421. package/dist/src/ui/types.d.ts +59 -3
  422. package/dist/src/ui/types.js +4 -0
  423. package/dist/src/ui/types.js.map +1 -1
  424. package/dist/src/ui/utils/MarkdownDisplay.js +1 -2
  425. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  426. package/dist/src/ui/utils/MarkdownDisplay.test.js +94 -91
  427. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  428. package/dist/src/ui/utils/displayUtils.d.ts +1 -0
  429. package/dist/src/ui/utils/displayUtils.js +4 -1
  430. package/dist/src/ui/utils/displayUtils.js.map +1 -1
  431. package/dist/src/ui/utils/displayUtils.test.js +36 -17
  432. package/dist/src/ui/utils/displayUtils.test.js.map +1 -1
  433. package/dist/src/ui/utils/highlight.d.ts +1 -0
  434. package/dist/src/ui/utils/highlight.js +28 -0
  435. package/dist/src/ui/utils/highlight.js.map +1 -1
  436. package/dist/src/ui/utils/textUtils.d.ts +1 -0
  437. package/dist/src/ui/utils/textUtils.js +56 -0
  438. package/dist/src/ui/utils/textUtils.js.map +1 -1
  439. package/dist/src/ui/utils/textUtils.test.d.ts +6 -0
  440. package/dist/src/ui/utils/textUtils.test.js +132 -0
  441. package/dist/src/ui/utils/textUtils.test.js.map +1 -0
  442. package/dist/src/ui/utils/ui-sizing.d.ts +7 -0
  443. package/dist/src/ui/utils/ui-sizing.js +23 -0
  444. package/dist/src/ui/utils/ui-sizing.js.map +1 -0
  445. package/dist/src/utils/commentJson.js +95 -13
  446. package/dist/src/utils/commentJson.js.map +1 -1
  447. package/dist/src/utils/commentJson.test.js +161 -0
  448. package/dist/src/utils/commentJson.test.js.map +1 -1
  449. package/dist/src/utils/deepMerge.d.ts +2 -3
  450. package/dist/src/utils/errors.d.ts +8 -3
  451. package/dist/src/utils/errors.js +23 -13
  452. package/dist/src/utils/errors.js.map +1 -1
  453. package/dist/src/utils/errors.test.js +40 -46
  454. package/dist/src/utils/errors.test.js.map +1 -1
  455. package/dist/src/utils/events.d.ts +3 -1
  456. package/dist/src/utils/events.js +2 -0
  457. package/dist/src/utils/events.js.map +1 -1
  458. package/dist/src/utils/handleAutoUpdate.js +4 -1
  459. package/dist/src/utils/handleAutoUpdate.js.map +1 -1
  460. package/dist/src/utils/installationInfo.d.ts +1 -0
  461. package/dist/src/utils/installationInfo.js +2 -0
  462. package/dist/src/utils/installationInfo.js.map +1 -1
  463. package/dist/src/utils/math.d.ts +13 -0
  464. package/dist/src/utils/math.js +14 -0
  465. package/dist/src/utils/math.js.map +1 -0
  466. package/dist/src/utils/relaunch.d.ts +7 -0
  467. package/dist/src/utils/relaunch.js +57 -0
  468. package/dist/src/utils/relaunch.js.map +1 -0
  469. package/dist/src/utils/relaunch.test.d.ts +6 -0
  470. package/dist/src/utils/relaunch.test.js +273 -0
  471. package/dist/src/utils/relaunch.test.js.map +1 -0
  472. package/dist/src/utils/sandbox.js +32 -18
  473. package/dist/src/utils/sandbox.js.map +1 -1
  474. package/dist/src/utils/sessionCleanup.d.ts +22 -0
  475. package/dist/src/utils/sessionCleanup.integration.test.d.ts +6 -0
  476. package/dist/src/utils/sessionCleanup.integration.test.js +182 -0
  477. package/dist/src/utils/sessionCleanup.integration.test.js.map +1 -0
  478. package/dist/src/utils/sessionCleanup.js +214 -0
  479. package/dist/src/utils/sessionCleanup.js.map +1 -0
  480. package/dist/src/utils/sessionCleanup.test.d.ts +6 -0
  481. package/dist/src/utils/sessionCleanup.test.js +1232 -0
  482. package/dist/src/utils/sessionCleanup.test.js.map +1 -0
  483. package/dist/src/utils/sessionUtils.d.ts +37 -0
  484. package/dist/src/utils/sessionUtils.js +71 -0
  485. package/dist/src/utils/sessionUtils.js.map +1 -0
  486. package/dist/src/utils/windowTitle.d.ts +12 -0
  487. package/dist/src/utils/windowTitle.js +19 -0
  488. package/dist/src/utils/windowTitle.js.map +1 -0
  489. package/dist/src/utils/windowTitle.test.d.ts +6 -0
  490. package/dist/src/utils/windowTitle.test.js +49 -0
  491. package/dist/src/utils/windowTitle.test.js.map +1 -0
  492. package/dist/src/validateNonInterActiveAuth.d.ts +2 -1
  493. package/dist/src/validateNonInterActiveAuth.js +32 -12
  494. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  495. package/dist/src/zed-integration/acp.js +1 -2
  496. package/dist/src/zed-integration/acp.js.map +1 -1
  497. package/dist/src/zed-integration/fileSystemService.d.ts +1 -0
  498. package/dist/src/zed-integration/fileSystemService.js +3 -0
  499. package/dist/src/zed-integration/fileSystemService.js.map +1 -1
  500. package/dist/src/zed-integration/schema.d.ts +48 -48
  501. package/dist/src/zed-integration/zedIntegration.d.ts +9 -3
  502. package/dist/src/zed-integration/zedIntegration.js +23 -28
  503. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  504. package/dist/tsconfig.tsbuildinfo +1 -1
  505. package/package.json +13 -8
  506. package/dist/src/commands/extensions/examples/mcp-server/example.js +0 -46
  507. package/dist/src/commands/extensions/examples/mcp-server/example.js.map +0 -1
  508. /package/dist/src/{commands/extensions/examples/mcp-server/example.d.ts → config/policy-engine.integration.test.d.ts} +0 -0
@@ -3,18 +3,20 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { CELL_DIR, Storage, Config, ExtensionInstallEvent, ExtensionUninstallEvent, ExtensionEnableEvent, logExtensionEnable, logExtensionInstallEvent, logExtensionUninstall, } from '@google/gemini-cli-core';
6
+ import { CELL_DIR, Storage, Config, ExtensionInstallEvent, ExtensionUninstallEvent, ExtensionUpdateEvent, ExtensionDisableEvent, ExtensionEnableEvent, logExtensionEnable, logExtensionInstallEvent, logExtensionUninstall, logExtensionUpdateEvent, logExtensionDisable, } from '@google/gemini-cli-core';
7
7
  import * as fs from 'node:fs';
8
8
  import * as path from 'node:path';
9
9
  import * as os from 'node:os';
10
10
  import { SettingScope, loadSettings } from '../config/settings.js';
11
11
  import { getErrorMessage } from '../utils/errors.js';
12
- import { recursivelyHydrateStrings } from './extensions/variables.js';
12
+ import { recursivelyHydrateStrings, } from './extensions/variables.js';
13
13
  import { isWorkspaceTrusted } from './trustedFolders.js';
14
14
  import { resolveEnvVarsInObject } from '../utils/envVarResolver.js';
15
15
  import { randomUUID } from 'node:crypto';
16
16
  import { cloneFromGit, downloadFromGitHubRelease, } from './extensions/github.js';
17
17
  import { ExtensionEnablementManager } from './extensions/extensionEnablement.js';
18
+ import chalk from 'chalk';
19
+ import { escapeAnsiCtrlCodes } from '../ui/utils/textUtils.js';
18
20
  export const EXTENSIONS_DIRECTORY_NAME = path.join(CELL_DIR, 'extensions');
19
21
  export const EXTENSIONS_CONFIG_FILENAME = 'gemini-extension.json';
20
22
  export const INSTALL_METADATA_FILENAME = '.cell-cli-extension-install.json';
@@ -47,7 +49,7 @@ export function getWorkspaceExtensions(workspaceDir) {
47
49
  export async function copyExtension(source, destination) {
48
50
  await fs.promises.cp(source, destination, { recursive: true });
49
51
  }
50
- export async function performWorkspaceExtensionMigration(extensions) {
52
+ export async function performWorkspaceExtensionMigration(extensions, requestConsent) {
51
53
  const failedInstallNames = [];
52
54
  for (const extension of extensions) {
53
55
  try {
@@ -55,10 +57,10 @@ export async function performWorkspaceExtensionMigration(extensions) {
55
57
  source: extension.path,
56
58
  type: 'local',
57
59
  };
58
- await installExtension(installMetadata);
60
+ await installOrUpdateExtension(installMetadata, requestConsent);
59
61
  }
60
62
  catch (_) {
61
- failedInstallNames.push(extension.config.name);
63
+ failedInstallNames.push(extension.name);
62
64
  }
63
65
  }
64
66
  return failedInstallNames;
@@ -76,20 +78,19 @@ function getTelemetryConfig(cwd) {
76
78
  });
77
79
  return config;
78
80
  }
79
- export function loadExtensions(workspaceDir = process.cwd()) {
81
+ export function loadExtensions(extensionEnablementManager, workspaceDir = process.cwd()) {
80
82
  const settings = loadSettings(workspaceDir).merged;
81
83
  const allExtensions = [...loadUserExtensions()];
82
- if ((isWorkspaceTrusted(settings) ?? true) &&
84
+ if (isWorkspaceTrusted(settings).isTrusted &&
83
85
  // Default management setting to true
84
86
  !(settings.experimental?.extensionManagement ?? true)) {
85
87
  allExtensions.push(...getWorkspaceExtensions(workspaceDir));
86
88
  }
87
89
  const uniqueExtensions = new Map();
88
- const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
89
90
  for (const extension of allExtensions) {
90
- if (!uniqueExtensions.has(extension.config.name) &&
91
- manager.isEnabled(extension.config.name, workspaceDir)) {
92
- uniqueExtensions.set(extension.config.name, extension);
91
+ if (!uniqueExtensions.has(extension.name) &&
92
+ extensionEnablementManager.isEnabled(extension.name, workspaceDir)) {
93
+ uniqueExtensions.set(extension.name, extension);
93
94
  }
94
95
  }
95
96
  return Array.from(uniqueExtensions.values());
@@ -98,8 +99,8 @@ export function loadUserExtensions() {
98
99
  const userExtensions = loadExtensionsFromDir(os.homedir());
99
100
  const uniqueExtensions = new Map();
100
101
  for (const extension of userExtensions) {
101
- if (!uniqueExtensions.has(extension.config.name)) {
102
- uniqueExtensions.set(extension.config.name, extension);
102
+ if (!uniqueExtensions.has(extension.name)) {
103
+ uniqueExtensions.set(extension.name, extension);
103
104
  }
104
105
  }
105
106
  return Array.from(uniqueExtensions.values());
@@ -146,10 +147,14 @@ export function loadExtension(context) {
146
147
  .map((contextFileName) => path.join(effectiveExtensionPath, contextFileName))
147
148
  .filter((contextFilePath) => fs.existsSync(contextFilePath));
148
149
  return {
150
+ name: config.name,
151
+ version: config.version,
149
152
  path: effectiveExtensionPath,
150
- config,
151
153
  contextFiles,
152
154
  installMetadata,
155
+ mcpServers: config.mcpServers,
156
+ excludeTools: config.excludeTools,
157
+ isActive: true, // Barring any other signals extensions should be considered Active.
153
158
  };
154
159
  }
155
160
  catch (e) {
@@ -157,6 +162,23 @@ export function loadExtension(context) {
157
162
  return null;
158
163
  }
159
164
  }
165
+ export function loadExtensionByName(name, workspaceDir = process.cwd()) {
166
+ const userExtensionsDir = ExtensionStorage.getUserExtensionsDir();
167
+ if (!fs.existsSync(userExtensionsDir)) {
168
+ return null;
169
+ }
170
+ for (const subdir of fs.readdirSync(userExtensionsDir)) {
171
+ const extensionDir = path.join(userExtensionsDir, subdir);
172
+ if (!fs.statSync(extensionDir).isDirectory()) {
173
+ continue;
174
+ }
175
+ const extension = loadExtension({ extensionDir, workspaceDir });
176
+ if (extension && extension.name.toLowerCase() === name.toLowerCase()) {
177
+ return extension;
178
+ }
179
+ }
180
+ return null;
181
+ }
160
182
  function filterMcpConfig(original) {
161
183
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
162
184
  const { trust, ...rest } = original;
@@ -189,55 +211,48 @@ function getContextFileNames(config) {
189
211
  * @param enabledExtensionNames The names of explicitly enabled extensions.
190
212
  * @param workspaceDir The current workspace directory.
191
213
  */
192
- export function annotateActiveExtensions(extensions, enabledExtensionNames, workspaceDir) {
193
- const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
194
- const annotatedExtensions = [];
195
- if (enabledExtensionNames.length === 0) {
196
- return extensions.map((extension) => ({
197
- name: extension.config.name,
198
- version: extension.config.version,
199
- isActive: manager.isEnabled(extension.config.name, workspaceDir),
200
- path: extension.path,
201
- installMetadata: extension.installMetadata,
202
- }));
203
- }
204
- const lowerCaseEnabledExtensions = new Set(enabledExtensionNames.map((e) => e.trim().toLowerCase()));
205
- if (lowerCaseEnabledExtensions.size === 1 &&
206
- lowerCaseEnabledExtensions.has('none')) {
207
- return extensions.map((extension) => ({
208
- name: extension.config.name,
209
- version: extension.config.version,
210
- isActive: false,
211
- path: extension.path,
212
- installMetadata: extension.installMetadata,
213
- }));
214
- }
215
- const notFoundNames = new Set(lowerCaseEnabledExtensions);
216
- for (const extension of extensions) {
217
- const lowerCaseName = extension.config.name.toLowerCase();
218
- const isActive = lowerCaseEnabledExtensions.has(lowerCaseName);
219
- if (isActive) {
220
- notFoundNames.delete(lowerCaseName);
221
- }
222
- annotatedExtensions.push({
223
- name: extension.config.name,
224
- version: extension.config.version,
225
- isActive,
226
- path: extension.path,
227
- installMetadata: extension.installMetadata,
228
- });
229
- }
230
- for (const requestedName of notFoundNames) {
231
- console.error(`Extension not found: ${requestedName}`);
232
- }
233
- return annotatedExtensions;
214
+ export function annotateActiveExtensions(extensions, workspaceDir, manager) {
215
+ manager.validateExtensionOverrides(extensions);
216
+ return extensions.map((extension) => ({
217
+ ...extension,
218
+ isActive: manager.isEnabled(extension.name, workspaceDir),
219
+ }));
234
220
  }
235
221
  /**
236
- * Asks users a prompt and awaits for a y/n response
222
+ * Requests consent from the user to perform an action, by reading a Y/n
223
+ * character from stdin.
224
+ *
225
+ * This should not be called from interactive mode as it will break the CLI.
226
+ *
227
+ * @param consentDescription The description of the thing they will be consenting to.
228
+ * @returns boolean, whether they consented or not.
229
+ */
230
+ export async function requestConsentNonInteractive(consentDescription) {
231
+ console.info(consentDescription);
232
+ const result = await promptForConsentNonInteractive('Do you want to continue? [Y/n]: ');
233
+ return result;
234
+ }
235
+ /**
236
+ * Requests consent from the user to perform an action, in interactive mode.
237
+ *
238
+ * This should not be called from non-interactive mode as it will not work.
239
+ *
240
+ * @param consentDescription The description of the thing they will be consenting to.
241
+ * @param setExtensionUpdateConfirmationRequest A function to actually add a prompt to the UI.
242
+ * @returns boolean, whether they consented or not.
243
+ */
244
+ export async function requestConsentInteractive(consentDescription, addExtensionUpdateConfirmationRequest) {
245
+ return await promptForConsentInteractive(consentDescription + '\n\nDo you want to continue?', addExtensionUpdateConfirmationRequest);
246
+ }
247
+ /**
248
+ * Asks users a prompt and awaits for a y/n response on stdin.
249
+ *
250
+ * This should not be called from interactive mode as it will break the CLI.
251
+ *
237
252
  * @param prompt A yes/no prompt to ask the user
238
253
  * @returns Whether or not the user answers 'y' (yes). Defaults to 'yes' on enter.
239
254
  */
240
- async function promptForContinuation(prompt) {
255
+ async function promptForConsentNonInteractive(prompt) {
241
256
  const readline = await import('node:readline');
242
257
  const rl = readline.createInterface({
243
258
  input: process.stdin,
@@ -250,13 +265,33 @@ async function promptForContinuation(prompt) {
250
265
  });
251
266
  });
252
267
  }
253
- export async function installExtension(installMetadata, askConsent = false, cwd = process.cwd()) {
268
+ /**
269
+ * Asks users an interactive yes/no prompt.
270
+ *
271
+ * This should not be called from non-interactive mode as it will break the CLI.
272
+ *
273
+ * @param prompt A markdown prompt to ask the user
274
+ * @param setExtensionUpdateConfirmationRequest Function to update the UI state with the confirmation request.
275
+ * @returns Whether or not the user answers yes.
276
+ */
277
+ async function promptForConsentInteractive(prompt, addExtensionUpdateConfirmationRequest) {
278
+ return await new Promise((resolve) => {
279
+ addExtensionUpdateConfirmationRequest({
280
+ prompt,
281
+ onConfirm: (resolvedConfirmed) => {
282
+ resolve(resolvedConfirmed);
283
+ },
284
+ });
285
+ });
286
+ }
287
+ export async function installOrUpdateExtension(installMetadata, requestConsent, cwd = process.cwd(), previousExtensionConfig) {
288
+ const isUpdate = !!previousExtensionConfig;
254
289
  const telemetryConfig = getTelemetryConfig(cwd);
255
290
  let newExtensionConfig = null;
256
291
  let localSourcePath;
257
292
  try {
258
293
  const settings = loadSettings(cwd).merged;
259
- if (!isWorkspaceTrusted(settings)) {
294
+ if (!isWorkspaceTrusted(settings).isTrusted) {
260
295
  throw new Error(`Could not install extension from untrusted folder at ${installMetadata.source}`);
261
296
  }
262
297
  const extensionsDir = ExtensionStorage.getUserExtensionsDir();
@@ -293,14 +328,17 @@ export async function installExtension(installMetadata, askConsent = false, cwd
293
328
  workspaceDir: cwd,
294
329
  });
295
330
  const newExtensionName = newExtensionConfig.name;
331
+ if (!isUpdate) {
332
+ const installedExtensions = loadUserExtensions();
333
+ if (installedExtensions.some((installed) => installed.name === newExtensionName)) {
334
+ throw new Error(`Extension "${newExtensionName}" is already installed. Please uninstall it first.`);
335
+ }
336
+ }
337
+ await maybeRequestConsentOrFail(newExtensionConfig, requestConsent, previousExtensionConfig);
296
338
  const extensionStorage = new ExtensionStorage(newExtensionName);
297
339
  const destinationPath = extensionStorage.getExtensionDir();
298
- const installedExtensions = loadUserExtensions();
299
- if (installedExtensions.some((installed) => installed.config.name === newExtensionName)) {
300
- throw new Error(`Extension "${newExtensionName}" is already installed. Please uninstall it first.`);
301
- }
302
- if (askConsent) {
303
- await requestConsent(newExtensionConfig);
340
+ if (isUpdate) {
341
+ await uninstallExtension(newExtensionName, isUpdate, cwd);
304
342
  }
305
343
  await fs.promises.mkdir(destinationPath, { recursive: true });
306
344
  if (installMetadata.type === 'local' ||
@@ -317,8 +355,13 @@ export async function installExtension(installMetadata, askConsent = false, cwd
317
355
  await fs.promises.rm(tempDir, { recursive: true, force: true });
318
356
  }
319
357
  }
320
- logExtensionInstallEvent(telemetryConfig, new ExtensionInstallEvent(newExtensionConfig.name, newExtensionConfig.version, installMetadata.source, 'success'));
321
- enableExtension(newExtensionConfig.name, SettingScope.User);
358
+ if (isUpdate) {
359
+ logExtensionUpdateEvent(telemetryConfig, new ExtensionUpdateEvent(newExtensionConfig.name, newExtensionConfig.version, previousExtensionConfig.version, installMetadata.source, 'success'));
360
+ }
361
+ else {
362
+ logExtensionInstallEvent(telemetryConfig, new ExtensionInstallEvent(newExtensionConfig.name, newExtensionConfig.version, installMetadata.source, 'success'));
363
+ enableExtension(newExtensionConfig.name, SettingScope.User);
364
+ }
322
365
  return newExtensionConfig.name;
323
366
  }
324
367
  catch (error) {
@@ -335,15 +378,25 @@ export async function installExtension(installMetadata, askConsent = false, cwd
335
378
  // Ignore error, this is just for logging.
336
379
  }
337
380
  }
338
- logExtensionInstallEvent(telemetryConfig, new ExtensionInstallEvent(newExtensionConfig?.name ?? '', newExtensionConfig?.version ?? '', installMetadata.source, 'error'));
381
+ if (isUpdate) {
382
+ logExtensionUpdateEvent(telemetryConfig, new ExtensionUpdateEvent(newExtensionConfig?.name ?? previousExtensionConfig.name, newExtensionConfig?.version ?? '', previousExtensionConfig.version, installMetadata.source, 'error'));
383
+ }
384
+ else {
385
+ logExtensionInstallEvent(telemetryConfig, new ExtensionInstallEvent(newExtensionConfig?.name ?? '', newExtensionConfig?.version ?? '', installMetadata.source, 'error'));
386
+ }
339
387
  throw error;
340
388
  }
341
389
  }
342
- async function requestConsent(extensionConfig) {
390
+ /**
391
+ * Builds a consent string for installing an extension based on it's
392
+ * extensionConfig.
393
+ */
394
+ function extensionConsentString(extensionConfig) {
395
+ const sanitizedConfig = escapeAnsiCtrlCodes(extensionConfig);
343
396
  const output = [];
344
- const mcpServerEntries = Object.entries(extensionConfig.mcpServers || {});
345
- output.push('Extensions may introduce unexpected behavior.');
346
- output.push('Ensure you have investigated the extension source and trust the author.');
397
+ const mcpServerEntries = Object.entries(sanitizedConfig.mcpServers || {});
398
+ output.push(`Installing extension "${sanitizedConfig.name}".`);
399
+ output.push('**Extensions may introduce unexpected behavior. Ensure you have investigated the extension source and trust the author.**');
347
400
  if (mcpServerEntries.length) {
348
401
  output.push('This extension will run the following MCP servers:');
349
402
  for (const [key, mcpServer] of mcpServerEntries) {
@@ -353,16 +406,38 @@ async function requestConsent(extensionConfig) {
353
406
  output.push(` * ${key} (${isLocal ? 'local' : 'remote'}): ${source}`);
354
407
  }
355
408
  }
356
- if (extensionConfig.contextFileName) {
357
- output.push(`This extension will append info to your gemini.md context using ${extensionConfig.contextFileName}`);
409
+ if (sanitizedConfig.contextFileName) {
410
+ output.push(`This extension will append info to your gemini.md context using ${sanitizedConfig.contextFileName}`);
411
+ }
412
+ if (sanitizedConfig.excludeTools) {
413
+ output.push(`This extension will exclude the following core tools: ${sanitizedConfig.excludeTools}`);
414
+ }
415
+ return output.join('\n');
416
+ }
417
+ /**
418
+ * Requests consent from the user to install an extension (extensionConfig), if
419
+ * there is any difference between the consent string for `extensionConfig` and
420
+ * `previousExtensionConfig`.
421
+ *
422
+ * Always requests consent if previousExtensionConfig is null.
423
+ *
424
+ * Throws if the user does not consent.
425
+ */
426
+ async function maybeRequestConsentOrFail(extensionConfig, requestConsent, previousExtensionConfig) {
427
+ const extensionConsent = extensionConsentString(extensionConfig);
428
+ if (previousExtensionConfig) {
429
+ const previousExtensionConsent = extensionConsentString(previousExtensionConfig);
430
+ if (previousExtensionConsent === extensionConsent) {
431
+ return;
432
+ }
358
433
  }
359
- if (extensionConfig.excludeTools) {
360
- output.push(`This extension will exclude the following core tools: ${extensionConfig.excludeTools}`);
434
+ if (!(await requestConsent(extensionConsent))) {
435
+ throw new Error(`Installation cancelled for "${extensionConfig.name}".`);
361
436
  }
362
- console.info(output.join('\n'));
363
- const shouldContinue = await promptForContinuation('Do you want to continue? [Y/n]: ');
364
- if (!shouldContinue) {
365
- throw new Error('Installation cancelled by user.');
437
+ }
438
+ export function validateName(name) {
439
+ if (!/^[a-zA-Z0-9-]+$/.test(name)) {
440
+ throw new Error(`Invalid extension name: "${name}". Only letters (a-z, A-Z), numbers (0-9), and dashes (-) are allowed.`);
366
441
  }
367
442
  }
368
443
  export function loadExtensionConfig(context) {
@@ -373,42 +448,52 @@ export function loadExtensionConfig(context) {
373
448
  }
374
449
  try {
375
450
  const configContent = fs.readFileSync(configFilePath, 'utf-8');
376
- const config = recursivelyHydrateStrings(JSON.parse(configContent), {
377
- extensionPath: extensionDir,
451
+ const rawConfig = JSON.parse(configContent);
452
+ if (!rawConfig.name || !rawConfig.version) {
453
+ throw new Error(`Invalid configuration in ${configFilePath}: missing ${!rawConfig.name ? '"name"' : '"version"'}`);
454
+ }
455
+ const installDir = new ExtensionStorage(rawConfig.name).getExtensionDir();
456
+ const config = recursivelyHydrateStrings(rawConfig, {
457
+ extensionPath: installDir,
378
458
  workspacePath: workspaceDir,
379
459
  '/': path.sep,
380
460
  pathSeparator: path.sep,
381
461
  });
382
- if (!config.name || !config.version) {
383
- throw new Error(`Invalid configuration in ${configFilePath}: missing ${!config.name ? '"name"' : '"version"'}`);
384
- }
462
+ validateName(config.name);
385
463
  return config;
386
464
  }
387
465
  catch (e) {
388
466
  throw new Error(`Failed to load extension config from ${configFilePath}: ${getErrorMessage(e)}`);
389
467
  }
390
468
  }
391
- export async function uninstallExtension(extensionIdentifier, cwd = process.cwd()) {
392
- const telemetryConfig = getTelemetryConfig(cwd);
469
+ export async function uninstallExtension(extensionIdentifier, isUpdate, cwd = process.cwd()) {
393
470
  const installedExtensions = loadUserExtensions();
394
- const extensionName = installedExtensions.find((installed) => installed.config.name.toLowerCase() ===
395
- extensionIdentifier.toLowerCase() ||
471
+ const extensionName = installedExtensions.find((installed) => installed.name.toLowerCase() === extensionIdentifier.toLowerCase() ||
396
472
  installed.installMetadata?.source.toLowerCase() ===
397
- extensionIdentifier.toLowerCase())?.config.name;
473
+ extensionIdentifier.toLowerCase())?.name;
398
474
  if (!extensionName) {
399
475
  throw new Error(`Extension not found.`);
400
476
  }
401
- const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
402
- manager.remove(extensionName);
403
477
  const storage = new ExtensionStorage(extensionName);
404
478
  await fs.promises.rm(storage.getExtensionDir(), {
405
479
  recursive: true,
406
480
  force: true,
407
481
  });
482
+ // The rest of the cleanup below here is only for true uninstalls, not
483
+ // uninstalls related to updates.
484
+ if (isUpdate)
485
+ return;
486
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir(), [extensionName]);
487
+ manager.remove(extensionName);
488
+ const telemetryConfig = getTelemetryConfig(cwd);
408
489
  logExtensionUninstall(telemetryConfig, new ExtensionUninstallEvent(extensionName, 'success'));
409
490
  }
410
- export function toOutputString(extension) {
411
- let output = `${extension.config.name} (${extension.config.version})`;
491
+ export function toOutputString(extension, workspaceDir) {
492
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
493
+ const userEnabled = manager.isEnabled(extension.name, os.homedir());
494
+ const workspaceEnabled = manager.isEnabled(extension.name, workspaceDir);
495
+ const status = workspaceEnabled ? chalk.green('✓') : chalk.red('✗');
496
+ let output = `${status} ${extension.name} (${extension.version})`;
412
497
  output += `\n Path: ${extension.path}`;
413
498
  if (extension.installMetadata) {
414
499
  output += `\n Source: ${extension.installMetadata.source} (Type: ${extension.installMetadata.type})`;
@@ -419,38 +504,50 @@ export function toOutputString(extension) {
419
504
  output += `\n Release tag: ${extension.installMetadata.releaseTag}`;
420
505
  }
421
506
  }
507
+ output += `\n Enabled (User): ${userEnabled}`;
508
+ output += `\n Enabled (Workspace): ${workspaceEnabled}`;
422
509
  if (extension.contextFiles.length > 0) {
423
510
  output += `\n Context files:`;
424
511
  extension.contextFiles.forEach((contextFile) => {
425
512
  output += `\n ${contextFile}`;
426
513
  });
427
514
  }
428
- if (extension.config.mcpServers) {
515
+ if (extension.mcpServers) {
429
516
  output += `\n MCP servers:`;
430
- Object.keys(extension.config.mcpServers).forEach((key) => {
517
+ Object.keys(extension.mcpServers).forEach((key) => {
431
518
  output += `\n ${key}`;
432
519
  });
433
520
  }
434
- if (extension.config.excludeTools) {
521
+ if (extension.excludeTools) {
435
522
  output += `\n Excluded tools:`;
436
- extension.config.excludeTools.forEach((tool) => {
523
+ extension.excludeTools.forEach((tool) => {
437
524
  output += `\n ${tool}`;
438
525
  });
439
526
  }
440
527
  return output;
441
528
  }
442
529
  export function disableExtension(name, scope, cwd = process.cwd()) {
530
+ const config = getTelemetryConfig(cwd);
443
531
  if (scope === SettingScope.System || scope === SettingScope.SystemDefaults) {
444
532
  throw new Error('System and SystemDefaults scopes are not supported.');
445
533
  }
446
- const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
534
+ const extension = loadExtensionByName(name, cwd);
535
+ if (!extension) {
536
+ throw new Error(`Extension with name ${name} does not exist.`);
537
+ }
538
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir(), [name]);
447
539
  const scopePath = scope === SettingScope.Workspace ? cwd : os.homedir();
448
540
  manager.disable(name, true, scopePath);
541
+ logExtensionDisable(config, new ExtensionDisableEvent(name, scope));
449
542
  }
450
543
  export function enableExtension(name, scope, cwd = process.cwd()) {
451
544
  if (scope === SettingScope.System || scope === SettingScope.SystemDefaults) {
452
545
  throw new Error('System and SystemDefaults scopes are not supported.');
453
546
  }
547
+ const extension = loadExtensionByName(name, cwd);
548
+ if (!extension) {
549
+ throw new Error(`Extension with name ${name} does not exist.`);
550
+ }
454
551
  const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
455
552
  const scopePath = scope === SettingScope.Workspace ? cwd : os.homedir();
456
553
  manager.enable(name, true, scopePath);
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/config/extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/config/extension.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import type { GeminiCLIExtension } from '@google/gemini-cli-core';
6
7
  export interface ExtensionEnablementConfig {
7
8
  overrides: string[];
8
9
  }
@@ -23,18 +24,20 @@ export declare class Override {
23
24
  output(): string;
24
25
  matchesPath(path: string): boolean;
25
26
  }
26
- /**
27
- * Determines if an extension is enabled based on the configuration and current path.
28
- * The last matching rule in the overrides list wins.
29
- *
30
- * @param config The enablement configuration for a single extension.
31
- * @param currentPath The absolute path of the current working directory.
32
- * @returns True if the extension is enabled, false otherwise.
33
- */
34
27
  export declare class ExtensionEnablementManager {
35
28
  private configFilePath;
36
29
  private configDir;
37
- constructor(configDir: string);
30
+ private enabledExtensionNamesOverride;
31
+ constructor(configDir: string, enabledExtensionNames?: string[]);
32
+ validateExtensionOverrides(extensions: GeminiCLIExtension[]): void;
33
+ /**
34
+ * Determines if an extension is enabled based on its name and the current
35
+ * path. The last matching rule in the overrides list wins.
36
+ *
37
+ * @param extensionName The name of the extension.
38
+ * @param currentPath The absolute path of the current working directory.
39
+ * @returns True if the extension is enabled, false otherwise.
40
+ */
38
41
  isEnabled(extensionName: string, currentPath: string): boolean;
39
42
  readConfig(): AllExtensionsEnablementConfig;
40
43
  writeConfig(config: AllExtensionsEnablementConfig): void;