@machina.ai/cell-cli 1.4.0-rc2 → 1.6.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 (492) hide show
  1. package/dist/package.json +12 -8
  2. package/dist/src/commands/extensions/disable.d.ts +2 -3
  3. package/dist/src/commands/extensions/disable.js +20 -6
  4. package/dist/src/commands/extensions/disable.js.map +1 -1
  5. package/dist/src/commands/extensions/enable.d.ts +2 -3
  6. package/dist/src/commands/extensions/enable.js +20 -9
  7. package/dist/src/commands/extensions/enable.js.map +1 -1
  8. package/dist/src/commands/extensions/install.d.ts +2 -0
  9. package/dist/src/commands/extensions/install.js +20 -4
  10. package/dist/src/commands/extensions/install.js.map +1 -1
  11. package/dist/src/commands/extensions/install.test.js +80 -3
  12. package/dist/src/commands/extensions/install.test.js.map +1 -1
  13. package/dist/src/commands/extensions/link.js +1 -1
  14. package/dist/src/commands/extensions/link.js.map +1 -1
  15. package/dist/src/commands/extensions/uninstall.js +1 -1
  16. package/dist/src/commands/extensions/uninstall.js.map +1 -1
  17. package/dist/src/commands/extensions/update.js +42 -11
  18. package/dist/src/commands/extensions/update.js.map +1 -1
  19. package/dist/src/config/config.d.ts +2 -1
  20. package/dist/src/config/config.js +33 -16
  21. package/dist/src/config/config.js.map +1 -1
  22. package/dist/src/config/extension.d.ts +10 -14
  23. package/dist/src/config/extension.js +160 -145
  24. package/dist/src/config/extension.js.map +1 -1
  25. package/dist/src/config/extensions/extensionEnablement.d.ts +44 -0
  26. package/dist/src/config/extensions/extensionEnablement.js +161 -0
  27. package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
  28. package/dist/src/config/extensions/extensionEnablement.test.js +261 -0
  29. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -0
  30. package/dist/src/config/extensions/github.d.ts +29 -0
  31. package/dist/src/config/extensions/github.js +306 -0
  32. package/dist/src/config/extensions/github.js.map +1 -0
  33. package/dist/src/config/extensions/github.test.d.ts +6 -0
  34. package/dist/src/config/extensions/github.test.js +267 -0
  35. package/dist/src/config/extensions/github.test.js.map +1 -0
  36. package/dist/src/config/extensions/update.d.ts +20 -0
  37. package/dist/src/config/extensions/update.js +94 -0
  38. package/dist/src/config/extensions/update.js.map +1 -0
  39. package/dist/src/config/extensions/update.test.d.ts +6 -0
  40. package/dist/src/config/extensions/update.test.js +324 -0
  41. package/dist/src/config/extensions/update.test.js.map +1 -0
  42. package/dist/src/config/extensions/variableSchema.d.ts +8 -0
  43. package/dist/src/config/extensions/variableSchema.js +4 -0
  44. package/dist/src/config/extensions/variableSchema.js.map +1 -1
  45. package/dist/src/config/keyBindings.d.ts +4 -1
  46. package/dist/src/config/keyBindings.js +8 -0
  47. package/dist/src/config/keyBindings.js.map +1 -1
  48. package/dist/src/config/settings.d.ts +3 -0
  49. package/dist/src/config/settings.js +58 -18
  50. package/dist/src/config/settings.js.map +1 -1
  51. package/dist/src/config/settingsSchema.d.ts +121 -12
  52. package/dist/src/config/settingsSchema.js +112 -9
  53. package/dist/src/config/settingsSchema.js.map +1 -1
  54. package/dist/src/config/settingsSchema.test.js +68 -55
  55. package/dist/src/config/settingsSchema.test.js.map +1 -1
  56. package/dist/src/config/trustedFolders.d.ts +1 -1
  57. package/dist/src/config/trustedFolders.js +9 -4
  58. package/dist/src/config/trustedFolders.js.map +1 -1
  59. package/dist/src/config/trustedFolders.test.js +41 -25
  60. package/dist/src/config/trustedFolders.test.js.map +1 -1
  61. package/dist/src/core/auth.d.ts +13 -0
  62. package/dist/src/core/auth.js +27 -0
  63. package/dist/src/core/auth.js.map +1 -0
  64. package/dist/src/core/initializer.d.ts +21 -0
  65. package/dist/src/core/initializer.js +33 -0
  66. package/dist/src/core/initializer.js.map +1 -0
  67. package/dist/src/core/theme.d.ts +12 -0
  68. package/dist/src/core/theme.js +20 -0
  69. package/dist/src/core/theme.js.map +1 -0
  70. package/dist/src/gemini.d.ts +2 -1
  71. package/dist/src/gemini.js +110 -69
  72. package/dist/src/gemini.js.map +1 -1
  73. package/dist/src/gemini.test.js +124 -14
  74. package/dist/src/gemini.test.js.map +1 -1
  75. package/dist/src/generated/git-commit.d.ts +2 -2
  76. package/dist/src/generated/git-commit.js +2 -2
  77. package/dist/src/generated/git-commit.js.map +1 -1
  78. package/dist/src/nonInteractiveCli.js +87 -71
  79. package/dist/src/nonInteractiveCli.js.map +1 -1
  80. package/dist/src/services/BuiltinCommandLoader.test.js +16 -17
  81. package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
  82. package/dist/src/services/FeedbackService.d.ts +21 -0
  83. package/dist/src/services/FeedbackService.js +124 -0
  84. package/dist/src/services/FeedbackService.js.map +1 -0
  85. package/dist/src/services/McpPromptLoader.js +43 -8
  86. package/dist/src/services/McpPromptLoader.js.map +1 -1
  87. package/dist/src/services/McpPromptLoader.test.js +228 -1
  88. package/dist/src/services/McpPromptLoader.test.js.map +1 -1
  89. package/dist/src/services/prompt-processors/shellProcessor.js +8 -1
  90. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  91. package/dist/src/test-utils/createExtension.d.ts +15 -0
  92. package/dist/src/test-utils/createExtension.js +25 -0
  93. package/dist/src/test-utils/createExtension.js.map +1 -0
  94. package/dist/src/test-utils/mockCommandContext.js +2 -0
  95. package/dist/src/test-utils/mockCommandContext.js.map +1 -1
  96. package/dist/src/ui/App.d.ts +1 -10
  97. package/dist/src/ui/App.js +17 -729
  98. package/dist/src/ui/App.js.map +1 -1
  99. package/dist/src/ui/AppContainer.d.ts +17 -0
  100. package/dist/src/ui/AppContainer.js +905 -0
  101. package/dist/src/ui/AppContainer.js.map +1 -0
  102. package/dist/src/ui/AppContainer.test.d.ts +6 -0
  103. package/dist/src/ui/AppContainer.test.js +422 -0
  104. package/dist/src/ui/AppContainer.test.js.map +1 -0
  105. package/dist/src/ui/IdeIntegrationNudge.js +2 -1
  106. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -1
  107. package/dist/src/ui/auth/AuthDialog.d.ts +18 -0
  108. package/dist/src/ui/auth/AuthDialog.js +81 -0
  109. package/dist/src/ui/auth/AuthDialog.js.map +1 -0
  110. package/dist/src/ui/auth/AuthDialog.test.d.ts +6 -0
  111. package/dist/src/ui/auth/AuthDialog.test.js +176 -0
  112. package/dist/src/ui/auth/AuthDialog.test.js.map +1 -0
  113. package/dist/src/ui/{components → auth}/AuthInProgress.js +2 -2
  114. package/dist/src/ui/auth/AuthInProgress.js.map +1 -0
  115. package/dist/src/ui/auth/useAuth.d.ts +15 -0
  116. package/dist/src/ui/auth/useAuth.js +73 -0
  117. package/dist/src/ui/auth/useAuth.js.map +1 -0
  118. package/dist/src/ui/commands/chatCommand.d.ts +2 -0
  119. package/dist/src/ui/commands/chatCommand.js +82 -3
  120. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  121. package/dist/src/ui/commands/corgiCommand.js +1 -0
  122. package/dist/src/ui/commands/corgiCommand.js.map +1 -1
  123. package/dist/src/ui/commands/extensionsCommand.js +86 -16
  124. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  125. package/dist/src/ui/commands/ideCommand.js +2 -2
  126. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  127. package/dist/src/ui/commands/mcpCommand.js +1 -1
  128. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  129. package/dist/src/ui/commands/types.d.ts +5 -1
  130. package/dist/src/ui/commands/types.js +0 -1
  131. package/dist/src/ui/commands/types.js.map +1 -1
  132. package/dist/src/ui/components/AboutBox.js +2 -2
  133. package/dist/src/ui/components/AboutBox.js.map +1 -1
  134. package/dist/src/ui/components/AnsiOutput.d.ts +13 -0
  135. package/dist/src/ui/components/AnsiOutput.js +12 -0
  136. package/dist/src/ui/components/AnsiOutput.js.map +1 -0
  137. package/dist/src/ui/components/AnsiOutput.test.d.ts +6 -0
  138. package/dist/src/ui/components/AnsiOutput.test.js +97 -0
  139. package/dist/src/ui/components/AnsiOutput.test.js.map +1 -0
  140. package/dist/src/ui/components/AppHeader.d.ts +10 -0
  141. package/dist/src/ui/components/AppHeader.js +22 -0
  142. package/dist/src/ui/components/AppHeader.js.map +1 -0
  143. package/dist/src/ui/components/AsciiArt.d.ts +3 -3
  144. package/dist/src/ui/components/AsciiArt.js +3 -3
  145. package/dist/src/ui/components/AutoAcceptIndicator.js +4 -4
  146. package/dist/src/ui/components/AutoAcceptIndicator.js.map +1 -1
  147. package/dist/src/ui/components/Composer.d.ts +6 -0
  148. package/dist/src/ui/components/Composer.js +74 -0
  149. package/dist/src/ui/components/Composer.js.map +1 -0
  150. package/dist/src/ui/components/Composer.test.d.ts +6 -0
  151. package/dist/src/ui/components/Composer.test.js +340 -0
  152. package/dist/src/ui/components/Composer.test.js.map +1 -0
  153. package/dist/src/ui/components/ConfigInitDisplay.d.ts +6 -0
  154. package/dist/src/ui/components/ConfigInitDisplay.js +38 -0
  155. package/dist/src/ui/components/ConfigInitDisplay.js.map +1 -0
  156. package/dist/src/ui/components/ConsoleSummaryDisplay.js +2 -2
  157. package/dist/src/ui/components/ConsoleSummaryDisplay.js.map +1 -1
  158. package/dist/src/ui/components/ContextSummaryDisplay.js +3 -3
  159. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  160. package/dist/src/ui/components/ContextUsageDisplay.js +2 -2
  161. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -1
  162. package/dist/src/ui/components/DebugProfiler.js +2 -2
  163. package/dist/src/ui/components/DebugProfiler.js.map +1 -1
  164. package/dist/src/ui/components/DetailedMessagesDisplay.js +7 -7
  165. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  166. package/dist/src/ui/components/DialogManager.d.ts +6 -0
  167. package/dist/src/ui/components/DialogManager.js +85 -0
  168. package/dist/src/ui/components/DialogManager.js.map +1 -0
  169. package/dist/src/ui/components/EditorSettingsDialog.js +5 -5
  170. package/dist/src/ui/components/EditorSettingsDialog.js.map +1 -1
  171. package/dist/src/ui/components/FolderTrustDialog.js +16 -8
  172. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  173. package/dist/src/ui/components/FolderTrustDialog.test.js +18 -8
  174. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  175. package/dist/src/ui/components/Footer.d.ts +1 -2
  176. package/dist/src/ui/components/Footer.js +6 -2
  177. package/dist/src/ui/components/Footer.js.map +1 -1
  178. package/dist/src/ui/components/GeminiRespondingSpinner.d.ts +5 -0
  179. package/dist/src/ui/components/GeminiRespondingSpinner.js +7 -2
  180. package/dist/src/ui/components/GeminiRespondingSpinner.js.map +1 -1
  181. package/dist/src/ui/components/Header.js +2 -2
  182. package/dist/src/ui/components/Header.js.map +1 -1
  183. package/dist/src/ui/components/Help.d.ts +1 -1
  184. package/dist/src/ui/components/Help.js +9 -6
  185. package/dist/src/ui/components/Help.js.map +1 -1
  186. package/dist/src/ui/components/Help.test.d.ts +6 -0
  187. package/dist/src/ui/components/Help.test.js +57 -0
  188. package/dist/src/ui/components/Help.test.js.map +1 -0
  189. package/dist/src/ui/components/HistoryItemDisplay.d.ts +2 -2
  190. package/dist/src/ui/components/HistoryItemDisplay.js +2 -1
  191. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  192. package/dist/src/ui/components/InputPrompt.d.ts +3 -0
  193. package/dist/src/ui/components/InputPrompt.js +122 -22
  194. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  195. package/dist/src/ui/components/LoadingIndicator.js +2 -2
  196. package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
  197. package/dist/src/ui/components/LoopDetectionConfirmation.d.ts +13 -0
  198. package/dist/src/ui/components/LoopDetectionConfirmation.js +35 -0
  199. package/dist/src/ui/components/LoopDetectionConfirmation.js.map +1 -0
  200. package/dist/src/ui/components/LoopDetectionConfirmation.test.d.ts +6 -0
  201. package/dist/src/ui/components/LoopDetectionConfirmation.test.js +25 -0
  202. package/dist/src/ui/components/LoopDetectionConfirmation.test.js.map +1 -0
  203. package/dist/src/ui/components/MainContent.d.ts +6 -0
  204. package/dist/src/ui/components/MainContent.js +23 -0
  205. package/dist/src/ui/components/MainContent.js.map +1 -0
  206. package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
  207. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  208. package/dist/src/ui/components/ModelStatsDisplay.js +7 -7
  209. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  210. package/dist/src/ui/components/Notifications.d.ts +6 -0
  211. package/dist/src/ui/components/Notifications.js +23 -0
  212. package/dist/src/ui/components/Notifications.js.map +1 -0
  213. package/dist/src/ui/components/PrepareLabel.d.ts +5 -5
  214. package/dist/src/ui/components/PrepareLabel.js +67 -11
  215. package/dist/src/ui/components/PrepareLabel.js.map +1 -1
  216. package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
  217. package/dist/src/ui/components/PrepareLabel.test.js +71 -0
  218. package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
  219. package/dist/src/ui/components/ProQuotaDialog.d.ts +2 -2
  220. package/dist/src/ui/components/ProQuotaDialog.js +3 -3
  221. package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
  222. package/dist/src/ui/components/ProQuotaDialog.test.js +3 -3
  223. package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
  224. package/dist/src/ui/components/QuittingDisplay.d.ts +6 -0
  225. package/dist/src/ui/components/QuittingDisplay.js +20 -0
  226. package/dist/src/ui/components/QuittingDisplay.js.map +1 -0
  227. package/dist/src/ui/components/RatingWidget.d.ts +14 -0
  228. package/dist/src/ui/components/RatingWidget.js +56 -0
  229. package/dist/src/ui/components/RatingWidget.js.map +1 -0
  230. package/dist/src/ui/components/SessionSummaryDisplay.d.ts +4 -0
  231. package/dist/src/ui/components/SessionSummaryDisplay.js +1 -1
  232. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  233. package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
  234. package/dist/src/ui/components/SettingsDialog.js +93 -22
  235. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  236. package/dist/src/ui/components/SettingsDialog.test.js +435 -79
  237. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  238. package/dist/src/ui/components/ShellConfirmationDialog.js +2 -2
  239. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  240. package/dist/src/ui/components/ShellInputPrompt.d.ts +11 -0
  241. package/dist/src/ui/components/ShellInputPrompt.js +36 -0
  242. package/dist/src/ui/components/ShellInputPrompt.js.map +1 -0
  243. package/dist/src/ui/components/ShellModeIndicator.js +2 -2
  244. package/dist/src/ui/components/ShellModeIndicator.js.map +1 -1
  245. package/dist/src/ui/components/ShowMoreLines.js +2 -2
  246. package/dist/src/ui/components/ShowMoreLines.js.map +1 -1
  247. package/dist/src/ui/components/StatsDisplay.d.ts +4 -0
  248. package/dist/src/ui/components/StatsDisplay.js +10 -7
  249. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  250. package/dist/src/ui/components/SuggestionsDisplay.d.ts +7 -2
  251. package/dist/src/ui/components/SuggestionsDisplay.js +17 -17
  252. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  253. package/dist/src/ui/components/ThemeDialog.js +12 -29
  254. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  255. package/dist/src/ui/components/ThemeDialog.test.d.ts +6 -0
  256. package/dist/src/ui/components/ThemeDialog.test.js +75 -0
  257. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -0
  258. package/dist/src/ui/components/Tips.js +2 -2
  259. package/dist/src/ui/components/Tips.js.map +1 -1
  260. package/dist/src/ui/components/ToolStatsDisplay.js +4 -4
  261. package/dist/src/ui/components/ToolStatsDisplay.js.map +1 -1
  262. package/dist/src/ui/components/UpdateNotification.js +2 -2
  263. package/dist/src/ui/components/UpdateNotification.js.map +1 -1
  264. package/dist/src/ui/components/WorkspaceMigrationDialog.js +4 -4
  265. package/dist/src/ui/components/WorkspaceMigrationDialog.js.map +1 -1
  266. package/dist/src/ui/components/messages/CompressionMessage.d.ts +1 -2
  267. package/dist/src/ui/components/messages/CompressionMessage.js +37 -8
  268. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  269. package/dist/src/ui/components/messages/CompressionMessage.test.d.ts +6 -0
  270. package/dist/src/ui/components/messages/CompressionMessage.test.js +160 -0
  271. package/dist/src/ui/components/messages/CompressionMessage.test.js.map +1 -0
  272. package/dist/src/ui/components/messages/DiffRenderer.d.ts +2 -1
  273. package/dist/src/ui/components/messages/DiffRenderer.js +14 -22
  274. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  275. package/dist/src/ui/components/messages/ErrorMessage.js +2 -2
  276. package/dist/src/ui/components/messages/ErrorMessage.js.map +1 -1
  277. package/dist/src/ui/components/messages/GeminiMessage.js +2 -2
  278. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  279. package/dist/src/ui/components/messages/InfoMessage.js +2 -2
  280. package/dist/src/ui/components/messages/InfoMessage.js.map +1 -1
  281. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +31 -19
  282. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  283. package/dist/src/ui/components/messages/ToolGroupMessage.d.ts +3 -2
  284. package/dist/src/ui/components/messages/ToolGroupMessage.js +17 -9
  285. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  286. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +17 -15
  287. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  288. package/dist/src/ui/components/messages/ToolMessage.d.ts +4 -0
  289. package/dist/src/ui/components/messages/ToolMessage.js +24 -10
  290. package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
  291. package/dist/src/ui/components/messages/ToolMessage.test.js +33 -1
  292. package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
  293. package/dist/src/ui/components/messages/UserMessage.js +3 -3
  294. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  295. package/dist/src/ui/components/messages/UserShellMessage.js +2 -2
  296. package/dist/src/ui/components/messages/UserShellMessage.js.map +1 -1
  297. package/dist/src/ui/components/shared/EnumSelector.d.ts +18 -0
  298. package/dist/src/ui/components/shared/EnumSelector.js +44 -0
  299. package/dist/src/ui/components/shared/EnumSelector.js.map +1 -0
  300. package/dist/src/ui/components/shared/EnumSelector.test.d.ts +6 -0
  301. package/dist/src/ui/components/shared/EnumSelector.test.js +70 -0
  302. package/dist/src/ui/components/shared/EnumSelector.test.js.map +1 -0
  303. package/dist/src/ui/components/shared/MaxSizedBox.js +2 -2
  304. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  305. package/dist/src/ui/components/shared/RadioButtonSelect.js +12 -12
  306. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  307. package/dist/src/ui/components/shared/ScopeSelector.d.ts +19 -0
  308. package/dist/src/ui/components/shared/ScopeSelector.js +11 -0
  309. package/dist/src/ui/components/shared/ScopeSelector.js.map +1 -0
  310. package/dist/src/ui/components/shared/text-buffer.d.ts +19 -2
  311. package/dist/src/ui/components/shared/text-buffer.js +191 -133
  312. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  313. package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
  314. package/dist/src/ui/components/views/ExtensionsList.js +47 -0
  315. package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
  316. package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
  317. package/dist/src/ui/components/views/ExtensionsList.test.js +97 -0
  318. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
  319. package/dist/src/ui/constants.d.ts +1 -0
  320. package/dist/src/ui/constants.js +1 -0
  321. package/dist/src/ui/constants.js.map +1 -1
  322. package/dist/src/ui/contexts/AppContext.d.ts +11 -0
  323. package/dist/src/ui/contexts/AppContext.js +15 -0
  324. package/dist/src/ui/contexts/AppContext.js.map +1 -0
  325. package/dist/src/ui/contexts/ConfigContext.d.ts +9 -0
  326. package/dist/src/ui/contexts/ConfigContext.js +16 -0
  327. package/dist/src/ui/contexts/ConfigContext.js.map +1 -0
  328. package/dist/src/ui/contexts/KeypressContext.d.ts +3 -0
  329. package/dist/src/ui/contexts/KeypressContext.js +51 -2
  330. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  331. package/dist/src/ui/contexts/KeypressContext.test.js +173 -1
  332. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  333. package/dist/src/ui/contexts/UIActionsContext.d.ts +36 -0
  334. package/dist/src/ui/contexts/UIActionsContext.js +20 -0
  335. package/dist/src/ui/contexts/UIActionsContext.js.map +1 -0
  336. package/dist/src/ui/contexts/UIStateContext.d.ts +103 -0
  337. package/dist/src/ui/contexts/UIStateContext.js +15 -0
  338. package/dist/src/ui/contexts/UIStateContext.js.map +1 -0
  339. package/dist/src/ui/hooks/atCommandProcessor.test.js +7 -5
  340. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  341. package/dist/src/ui/hooks/keyToAnsi.d.ts +15 -0
  342. package/dist/src/ui/hooks/keyToAnsi.js +67 -0
  343. package/dist/src/ui/hooks/keyToAnsi.js.map +1 -0
  344. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +2 -1
  345. package/dist/src/ui/hooks/shellCommandProcessor.js +60 -15
  346. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  347. package/dist/src/ui/hooks/shellCommandProcessor.test.js +196 -17
  348. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  349. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +16 -2
  350. package/dist/src/ui/hooks/slashCommandProcessor.js +28 -70
  351. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  352. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +3 -2
  353. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +9 -5
  354. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  355. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +69 -0
  356. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
  357. package/dist/src/ui/hooks/useExtensionUpdates.d.ts +12 -0
  358. package/dist/src/ui/hooks/useExtensionUpdates.js +64 -0
  359. package/dist/src/ui/hooks/useExtensionUpdates.js.map +1 -0
  360. package/dist/src/ui/hooks/useExtensionUpdates.test.d.ts +6 -0
  361. package/dist/src/ui/hooks/useExtensionUpdates.test.js +162 -0
  362. package/dist/src/ui/hooks/useExtensionUpdates.test.js.map +1 -0
  363. package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -1
  364. package/dist/src/ui/hooks/useFolderTrust.js +12 -13
  365. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  366. package/dist/src/ui/hooks/useGeminiStream.d.ts +11 -1
  367. package/dist/src/ui/hooks/useGeminiStream.js +124 -59
  368. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  369. package/dist/src/ui/hooks/useGitBranchName.js +15 -18
  370. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  371. package/dist/src/ui/hooks/useGitBranchName.test.js +49 -53
  372. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  373. package/dist/src/ui/hooks/useIdeTrustListener.js +2 -2
  374. package/dist/src/ui/hooks/useIdeTrustListener.js.map +1 -1
  375. package/dist/src/ui/hooks/useMessageQueue.d.ts +2 -1
  376. package/dist/src/ui/hooks/useMessageQueue.js +5 -3
  377. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -1
  378. package/dist/src/ui/hooks/useMessageQueue.test.js +9 -0
  379. package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -1
  380. package/dist/src/ui/hooks/useQuotaAndFallback.d.ts +21 -0
  381. package/dist/src/ui/hooks/useQuotaAndFallback.js +122 -0
  382. package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -0
  383. package/dist/src/ui/hooks/useQuotaAndFallback.test.d.ts +6 -0
  384. package/dist/src/ui/hooks/useQuotaAndFallback.test.js +267 -0
  385. package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -0
  386. package/dist/src/ui/hooks/useReactToolScheduler.d.ts +3 -2
  387. package/dist/src/ui/hooks/useReactToolScheduler.js +23 -17
  388. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  389. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +1 -1
  390. package/dist/src/ui/hooks/useReverseSearchCompletion.js +67 -20
  391. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
  392. package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
  393. package/dist/src/ui/hooks/useSlashCompletion.js +16 -3
  394. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  395. package/dist/src/ui/hooks/useSlashCompletion.test.js +169 -270
  396. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  397. package/dist/src/ui/hooks/useThemeCommand.d.ts +1 -1
  398. package/dist/src/ui/hooks/useThemeCommand.js +3 -14
  399. package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
  400. package/dist/src/ui/hooks/useToolScheduler.test.js +12 -5
  401. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  402. package/dist/src/ui/keyMatchers.test.js +8 -0
  403. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  404. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js +8 -8
  405. package/dist/src/ui/privacy/CloudFreePrivacyNotice.js.map +1 -1
  406. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js +2 -2
  407. package/dist/src/ui/privacy/CloudPaidPrivacyNotice.js.map +1 -1
  408. package/dist/src/ui/privacy/GeminiPrivacyNotice.js +2 -2
  409. package/dist/src/ui/privacy/GeminiPrivacyNotice.js.map +1 -1
  410. package/dist/src/ui/state/extensions.d.ts +15 -0
  411. package/dist/src/ui/state/extensions.js +17 -0
  412. package/dist/src/ui/state/extensions.js.map +1 -0
  413. package/dist/src/ui/themes/ayu.js +1 -1
  414. package/dist/src/ui/themes/dracula.js +2 -2
  415. package/dist/src/ui/themes/github-dark.js +1 -1
  416. package/dist/src/ui/themes/theme.js +17 -17
  417. package/dist/src/ui/themes/theme.js.map +1 -1
  418. package/dist/src/ui/types.d.ts +29 -3
  419. package/dist/src/ui/types.js +11 -0
  420. package/dist/src/ui/types.js.map +1 -1
  421. package/dist/src/ui/utils/CodeColorizer.js +3 -2
  422. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  423. package/dist/src/ui/utils/InlineMarkdownRenderer.js +7 -7
  424. package/dist/src/ui/utils/InlineMarkdownRenderer.js.map +1 -1
  425. package/dist/src/ui/utils/MarkdownDisplay.js +10 -10
  426. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  427. package/dist/src/ui/utils/MarkdownDisplay.test.js +6 -2
  428. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  429. package/dist/src/ui/utils/TableRenderer.js +4 -4
  430. package/dist/src/ui/utils/TableRenderer.js.map +1 -1
  431. package/dist/src/ui/utils/clipboardUtils.js +5 -6
  432. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  433. package/dist/src/ui/utils/displayUtils.js +4 -4
  434. package/dist/src/ui/utils/displayUtils.js.map +1 -1
  435. package/dist/src/ui/utils/highlight.d.ts +1 -1
  436. package/dist/src/ui/utils/highlight.js +15 -6
  437. package/dist/src/ui/utils/highlight.js.map +1 -1
  438. package/dist/src/ui/utils/highlight.test.js +56 -29
  439. package/dist/src/ui/utils/highlight.test.js.map +1 -1
  440. package/dist/src/ui/utils/kittyProtocolDetector.js +39 -29
  441. package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
  442. package/dist/src/ui/utils/textUtils.d.ts +9 -0
  443. package/dist/src/ui/utils/textUtils.js +52 -3
  444. package/dist/src/ui/utils/textUtils.js.map +1 -1
  445. package/dist/src/utils/commands.d.ts +20 -0
  446. package/dist/src/utils/commands.js +53 -0
  447. package/dist/src/utils/commands.js.map +1 -0
  448. package/dist/src/utils/commands.test.d.ts +6 -0
  449. package/dist/src/utils/commands.test.js +115 -0
  450. package/dist/src/utils/commands.test.js.map +1 -0
  451. package/dist/src/utils/commentJson.d.ts +9 -0
  452. package/dist/src/utils/commentJson.js +48 -0
  453. package/dist/src/utils/commentJson.js.map +1 -0
  454. package/dist/src/utils/commentJson.test.d.ts +6 -0
  455. package/dist/src/utils/commentJson.test.js +146 -0
  456. package/dist/src/utils/commentJson.test.js.map +1 -0
  457. package/dist/src/utils/errors.d.ts +21 -0
  458. package/dist/src/utils/errors.js +93 -0
  459. package/dist/src/utils/errors.js.map +1 -1
  460. package/dist/src/utils/errors.test.d.ts +6 -0
  461. package/dist/src/utils/errors.test.js +303 -0
  462. package/dist/src/utils/errors.test.js.map +1 -0
  463. package/dist/src/utils/processUtils.d.ts +13 -0
  464. package/dist/src/utils/processUtils.js +18 -0
  465. package/dist/src/utils/processUtils.js.map +1 -0
  466. package/dist/src/utils/processUtils.test.d.ts +6 -0
  467. package/dist/src/utils/processUtils.test.js +20 -0
  468. package/dist/src/utils/processUtils.test.js.map +1 -0
  469. package/dist/src/utils/sandbox.d.ts +1 -1
  470. package/dist/src/utils/sandbox.js +19 -8
  471. package/dist/src/utils/sandbox.js.map +1 -1
  472. package/dist/src/utils/settingsUtils.d.ts +16 -6
  473. package/dist/src/utils/settingsUtils.js +35 -25
  474. package/dist/src/utils/settingsUtils.js.map +1 -1
  475. package/dist/src/utils/settingsUtils.test.js +455 -158
  476. package/dist/src/utils/settingsUtils.test.js.map +1 -1
  477. package/dist/src/zed-integration/schema.d.ts +596 -596
  478. package/dist/src/zed-integration/zedIntegration.js +10 -7
  479. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  480. package/dist/tsconfig.tsbuildinfo +1 -1
  481. package/package.json +13 -9
  482. package/dist/src/ui/components/AuthDialog.d.ts +0 -16
  483. package/dist/src/ui/components/AuthDialog.js +0 -62
  484. package/dist/src/ui/components/AuthDialog.js.map +0 -1
  485. package/dist/src/ui/components/AuthDialog.test.js +0 -175
  486. package/dist/src/ui/components/AuthDialog.test.js.map +0 -1
  487. package/dist/src/ui/components/AuthInProgress.js.map +0 -1
  488. package/dist/src/ui/hooks/useAuthCommand.d.ts +0 -15
  489. package/dist/src/ui/hooks/useAuthCommand.js +0 -68
  490. package/dist/src/ui/hooks/useAuthCommand.js.map +0 -1
  491. /package/dist/src/{ui/components/AuthDialog.test.d.ts → config/extensions/extensionEnablement.test.d.ts} +0 -0
  492. /package/dist/src/ui/{components → auth}/AuthInProgress.d.ts +0 -0
@@ -3,17 +3,18 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { CELL_DIR, Storage, ClearcutLogger, Config, ExtensionInstallEvent, } from '@google/gemini-cli-core';
6
+ import { CELL_DIR, Storage, Config, ExtensionInstallEvent, ExtensionUninstallEvent, ExtensionEnableEvent, logExtensionEnable, logExtensionInstallEvent, logExtensionUninstall, } 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
- import { simpleGit } from 'simple-git';
11
10
  import { SettingScope, loadSettings } from '../config/settings.js';
12
11
  import { getErrorMessage } from '../utils/errors.js';
13
12
  import { recursivelyHydrateStrings } from './extensions/variables.js';
14
13
  import { isWorkspaceTrusted } from './trustedFolders.js';
15
14
  import { resolveEnvVarsInObject } from '../utils/envVarResolver.js';
16
15
  import { randomUUID } from 'node:crypto';
16
+ import { cloneFromGit, downloadFromGitHubRelease, } from './extensions/github.js';
17
+ import { ExtensionEnablementManager } from './extensions/extensionEnablement.js';
17
18
  export const EXTENSIONS_DIRECTORY_NAME = path.join(CELL_DIR, 'extensions');
18
19
  export const EXTENSIONS_CONFIG_FILENAME = 'gemini-extension.json';
19
20
  export const INSTALL_METADATA_FILENAME = '.cell-cli-extension-install.json';
@@ -37,9 +38,13 @@ export class ExtensionStorage {
37
38
  }
38
39
  }
39
40
  export function getWorkspaceExtensions(workspaceDir) {
41
+ // If the workspace dir is the user extensions dir, there are no workspace extensions.
42
+ if (path.resolve(workspaceDir) === path.resolve(os.homedir())) {
43
+ return [];
44
+ }
40
45
  return loadExtensionsFromDir(workspaceDir);
41
46
  }
42
- async function copyExtension(source, destination) {
47
+ export async function copyExtension(source, destination) {
43
48
  await fs.promises.cp(source, destination, { recursive: true });
44
49
  }
45
50
  export async function performWorkspaceExtensionMigration(extensions) {
@@ -58,9 +63,21 @@ export async function performWorkspaceExtensionMigration(extensions) {
58
63
  }
59
64
  return failedInstallNames;
60
65
  }
66
+ function getTelemetryConfig(cwd) {
67
+ const settings = loadSettings(cwd);
68
+ const config = new Config({
69
+ telemetry: settings.merged.telemetry,
70
+ interactive: false,
71
+ sessionId: randomUUID(),
72
+ targetDir: cwd,
73
+ cwd,
74
+ model: '',
75
+ debugMode: false,
76
+ });
77
+ return config;
78
+ }
61
79
  export function loadExtensions(workspaceDir = process.cwd()) {
62
80
  const settings = loadSettings(workspaceDir).merged;
63
- const disabledExtensions = settings.extensions?.disabled ?? [];
64
81
  const allExtensions = [...loadUserExtensions()];
65
82
  if ((isWorkspaceTrusted(settings) ?? true) &&
66
83
  // Default management setting to true
@@ -68,9 +85,10 @@ export function loadExtensions(workspaceDir = process.cwd()) {
68
85
  allExtensions.push(...getWorkspaceExtensions(workspaceDir));
69
86
  }
70
87
  const uniqueExtensions = new Map();
88
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
71
89
  for (const extension of allExtensions) {
72
90
  if (!uniqueExtensions.has(extension.config.name) &&
73
- !disabledExtensions.includes(extension.config.name)) {
91
+ manager.isEnabled(extension.config.name, workspaceDir)) {
74
92
  uniqueExtensions.set(extension.config.name, extension);
75
93
  }
76
94
  }
@@ -95,16 +113,16 @@ export function loadExtensionsFromDir(dir) {
95
113
  const extensions = [];
96
114
  for (const subdir of fs.readdirSync(extensionsDir)) {
97
115
  const extensionDir = path.join(extensionsDir, subdir);
98
- const extension = loadExtension(extensionDir);
116
+ const extension = loadExtension({ extensionDir, workspaceDir: dir });
99
117
  if (extension != null) {
100
118
  extensions.push(extension);
101
119
  }
102
120
  }
103
121
  return extensions;
104
122
  }
105
- export function loadExtension(extensionDir) {
123
+ export function loadExtension(context) {
124
+ const { extensionDir, workspaceDir } = context;
106
125
  if (!fs.statSync(extensionDir).isDirectory()) {
107
- console.error(`Warning: unexpected file ${extensionDir} in extensions directory.`);
108
126
  return null;
109
127
  }
110
128
  const installMetadata = loadInstallMetadata(extensionDir);
@@ -112,23 +130,18 @@ export function loadExtension(extensionDir) {
112
130
  if (installMetadata?.type === 'link') {
113
131
  effectiveExtensionPath = installMetadata.source;
114
132
  }
115
- const configFilePath = path.join(effectiveExtensionPath, EXTENSIONS_CONFIG_FILENAME);
116
- if (!fs.existsSync(configFilePath)) {
117
- console.error(`Warning: extension directory ${effectiveExtensionPath} does not contain a config file ${configFilePath}.`);
118
- return null;
119
- }
120
133
  try {
121
- const configContent = fs.readFileSync(configFilePath, 'utf-8');
122
- let config = recursivelyHydrateStrings(JSON.parse(configContent), {
123
- extensionPath: extensionDir,
124
- '/': path.sep,
125
- pathSeparator: path.sep,
134
+ let config = loadExtensionConfig({
135
+ extensionDir: effectiveExtensionPath,
136
+ workspaceDir,
126
137
  });
127
- if (!config.name || !config.version) {
128
- console.error(`Invalid extension config in ${configFilePath}: missing name or version.`);
129
- return null;
130
- }
131
138
  config = resolveEnvVarsInObject(config);
139
+ if (config.mcpServers) {
140
+ config.mcpServers = Object.fromEntries(Object.entries(config.mcpServers).map(([key, value]) => [
141
+ key,
142
+ filterMcpConfig(value),
143
+ ]));
144
+ }
132
145
  const contextFiles = getContextFileNames(config)
133
146
  .map((contextFileName) => path.join(effectiveExtensionPath, contextFileName))
134
147
  .filter((contextFilePath) => fs.existsSync(contextFilePath));
@@ -140,11 +153,16 @@ export function loadExtension(extensionDir) {
140
153
  };
141
154
  }
142
155
  catch (e) {
143
- console.error(`Warning: error parsing extension config in ${configFilePath}: ${getErrorMessage(e)}`);
156
+ console.error(`Warning: Skipping extension in ${effectiveExtensionPath}: ${getErrorMessage(e)}`);
144
157
  return null;
145
158
  }
146
159
  }
147
- function loadInstallMetadata(extensionDir) {
160
+ function filterMcpConfig(original) {
161
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
162
+ const { trust, ...rest } = original;
163
+ return Object.freeze(rest);
164
+ }
165
+ export function loadInstallMetadata(extensionDir) {
148
166
  const metadataFilePath = path.join(extensionDir, INSTALL_METADATA_FILENAME);
149
167
  try {
150
168
  const configContent = fs.readFileSync(metadataFilePath, 'utf-8');
@@ -166,21 +184,21 @@ function getContextFileNames(config) {
166
184
  }
167
185
  /**
168
186
  * Returns an annotated list of extensions. If an extension is listed in enabledExtensionNames, it will be active.
169
- * If enabledExtensionNames is empty, an extension is active unless it is in list of disabled extensions in settings.
187
+ * If enabledExtensionNames is empty, an extension is active unless it is disabled.
170
188
  * @param extensions The base list of extensions.
171
189
  * @param enabledExtensionNames The names of explicitly enabled extensions.
172
190
  * @param workspaceDir The current workspace directory.
173
191
  */
174
192
  export function annotateActiveExtensions(extensions, enabledExtensionNames, workspaceDir) {
175
- const settings = loadSettings(workspaceDir).merged;
176
- const disabledExtensions = settings.extensions?.disabled ?? [];
193
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
177
194
  const annotatedExtensions = [];
178
195
  if (enabledExtensionNames.length === 0) {
179
196
  return extensions.map((extension) => ({
180
197
  name: extension.config.name,
181
198
  version: extension.config.version,
182
- isActive: !disabledExtensions.includes(extension.config.name),
199
+ isActive: manager.isEnabled(extension.config.name, workspaceDir),
183
200
  path: extension.path,
201
+ installMetadata: extension.installMetadata,
184
202
  }));
185
203
  }
186
204
  const lowerCaseEnabledExtensions = new Set(enabledExtensionNames.map((e) => e.trim().toLowerCase()));
@@ -191,6 +209,7 @@ export function annotateActiveExtensions(extensions, enabledExtensionNames, work
191
209
  version: extension.config.version,
192
210
  isActive: false,
193
211
  path: extension.path,
212
+ installMetadata: extension.installMetadata,
194
213
  }));
195
214
  }
196
215
  const notFoundNames = new Set(lowerCaseEnabledExtensions);
@@ -205,6 +224,7 @@ export function annotateActiveExtensions(extensions, enabledExtensionNames, work
205
224
  version: extension.config.version,
206
225
  isActive,
207
226
  path: extension.path,
227
+ installMetadata: extension.installMetadata,
208
228
  });
209
229
  }
210
230
  for (const requestedName of notFoundNames) {
@@ -213,30 +233,25 @@ export function annotateActiveExtensions(extensions, enabledExtensionNames, work
213
233
  return annotatedExtensions;
214
234
  }
215
235
  /**
216
- * Clones a Git repository to a specified local path.
217
- * @param gitUrl The Git URL to clone.
218
- * @param destination The destination path to clone the repository to.
236
+ * Asks users a prompt and awaits for a y/n response
237
+ * @param prompt A yes/no prompt to ask the user
238
+ * @returns Whether or not the user answers 'y' (yes). Defaults to 'yes' on enter.
219
239
  */
220
- async function cloneFromGit(gitUrl, destination) {
221
- try {
222
- // TODO(chrstnb): Download the archive instead to avoid unnecessary .git info.
223
- await simpleGit().clone(gitUrl, destination, ['--depth', '1']);
224
- }
225
- catch (error) {
226
- throw new Error(`Failed to clone Git repository from ${gitUrl}`, {
227
- cause: error,
240
+ async function promptForContinuation(prompt) {
241
+ const readline = await import('node:readline');
242
+ const rl = readline.createInterface({
243
+ input: process.stdin,
244
+ output: process.stdout,
245
+ });
246
+ return new Promise((resolve) => {
247
+ rl.question(prompt, (answer) => {
248
+ rl.close();
249
+ resolve(['y', ''].includes(answer.trim().toLowerCase()));
228
250
  });
229
- }
230
- }
231
- export async function installExtension(installMetadata, cwd = process.cwd()) {
232
- const config = new Config({
233
- sessionId: randomUUID(),
234
- targetDir: process.cwd(),
235
- cwd: process.cwd(),
236
- model: '',
237
- debugMode: false,
238
251
  });
239
- const logger = ClearcutLogger.getInstance(config);
252
+ }
253
+ export async function installExtension(installMetadata, askConsent = false, cwd = process.cwd()) {
254
+ const telemetryConfig = getTelemetryConfig(cwd);
240
255
  let newExtensionConfig = null;
241
256
  let localSourcePath;
242
257
  try {
@@ -251,9 +266,18 @@ export async function installExtension(installMetadata, cwd = process.cwd()) {
251
266
  installMetadata.source = path.resolve(cwd, installMetadata.source);
252
267
  }
253
268
  let tempDir;
254
- if (installMetadata.type === 'git') {
269
+ if (installMetadata.type === 'git' ||
270
+ installMetadata.type === 'github-release') {
255
271
  tempDir = await ExtensionStorage.createTmpDir();
256
- await cloneFromGit(installMetadata.source, tempDir);
272
+ try {
273
+ const result = await downloadFromGitHubRelease(installMetadata, tempDir);
274
+ installMetadata.type = result.type;
275
+ installMetadata.releaseTag = result.tagName;
276
+ }
277
+ catch (_error) {
278
+ await cloneFromGit(installMetadata, tempDir);
279
+ installMetadata.type = 'git';
280
+ }
257
281
  localSourcePath = tempDir;
258
282
  }
259
283
  else if (installMetadata.type === 'local' ||
@@ -264,10 +288,10 @@ export async function installExtension(installMetadata, cwd = process.cwd()) {
264
288
  throw new Error(`Unsupported install type: ${installMetadata.type}`);
265
289
  }
266
290
  try {
267
- newExtensionConfig = await loadExtensionConfig(localSourcePath);
268
- if (!newExtensionConfig) {
269
- throw new Error(`Invalid extension at ${installMetadata.source}. Please make sure it has a valid gemini-extension.json file.`);
270
- }
291
+ newExtensionConfig = loadExtensionConfig({
292
+ extensionDir: localSourcePath,
293
+ workspaceDir: cwd,
294
+ });
271
295
  const newExtensionName = newExtensionConfig.name;
272
296
  const extensionStorage = new ExtensionStorage(newExtensionName);
273
297
  const destinationPath = extensionStorage.getExtensionDir();
@@ -275,8 +299,13 @@ export async function installExtension(installMetadata, cwd = process.cwd()) {
275
299
  if (installedExtensions.some((installed) => installed.config.name === newExtensionName)) {
276
300
  throw new Error(`Extension "${newExtensionName}" is already installed. Please uninstall it first.`);
277
301
  }
302
+ if (askConsent) {
303
+ await requestConsent(newExtensionConfig);
304
+ }
278
305
  await fs.promises.mkdir(destinationPath, { recursive: true });
279
- if (installMetadata.type === 'local' || installMetadata.type === 'git') {
306
+ if (installMetadata.type === 'local' ||
307
+ installMetadata.type === 'git' ||
308
+ installMetadata.type === 'github-release') {
280
309
  await copyExtension(localSourcePath, destinationPath);
281
310
  }
282
311
  const metadataString = JSON.stringify(installMetadata, null, 2);
@@ -288,57 +317,107 @@ export async function installExtension(installMetadata, cwd = process.cwd()) {
288
317
  await fs.promises.rm(tempDir, { recursive: true, force: true });
289
318
  }
290
319
  }
291
- logger?.logExtensionInstallEvent(new ExtensionInstallEvent(newExtensionConfig.name, newExtensionConfig.version, installMetadata.source, 'success'));
320
+ logExtensionInstallEvent(telemetryConfig, new ExtensionInstallEvent(newExtensionConfig.name, newExtensionConfig.version, installMetadata.source, 'success'));
321
+ enableExtension(newExtensionConfig.name, SettingScope.User);
292
322
  return newExtensionConfig.name;
293
323
  }
294
324
  catch (error) {
295
325
  // Attempt to load config from the source path even if installation fails
296
326
  // to get the name and version for logging.
297
327
  if (!newExtensionConfig && localSourcePath) {
298
- newExtensionConfig = await loadExtensionConfig(localSourcePath);
328
+ try {
329
+ newExtensionConfig = loadExtensionConfig({
330
+ extensionDir: localSourcePath,
331
+ workspaceDir: cwd,
332
+ });
333
+ }
334
+ catch {
335
+ // Ignore error, this is just for logging.
336
+ }
299
337
  }
300
- logger?.logExtensionInstallEvent(new ExtensionInstallEvent(newExtensionConfig?.name ?? '', newExtensionConfig?.version ?? '', installMetadata.source, 'error'));
338
+ logExtensionInstallEvent(telemetryConfig, new ExtensionInstallEvent(newExtensionConfig?.name ?? '', newExtensionConfig?.version ?? '', installMetadata.source, 'error'));
301
339
  throw error;
302
340
  }
303
341
  }
304
- export async function loadExtensionConfig(extensionDir) {
342
+ async function requestConsent(extensionConfig) {
343
+ 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.');
347
+ if (mcpServerEntries.length) {
348
+ output.push('This extension will run the following MCP servers:');
349
+ for (const [key, mcpServer] of mcpServerEntries) {
350
+ const isLocal = !!mcpServer.command;
351
+ const source = mcpServer.httpUrl ??
352
+ `${mcpServer.command || ''}${mcpServer.args ? ' ' + mcpServer.args.join(' ') : ''}`;
353
+ output.push(` * ${key} (${isLocal ? 'local' : 'remote'}): ${source}`);
354
+ }
355
+ }
356
+ if (extensionConfig.contextFileName) {
357
+ output.push(`This extension will append info to your gemini.md context using ${extensionConfig.contextFileName}`);
358
+ }
359
+ if (extensionConfig.excludeTools) {
360
+ output.push(`This extension will exclude the following core tools: ${extensionConfig.excludeTools}`);
361
+ }
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.');
366
+ }
367
+ }
368
+ export function loadExtensionConfig(context) {
369
+ const { extensionDir, workspaceDir } = context;
305
370
  const configFilePath = path.join(extensionDir, EXTENSIONS_CONFIG_FILENAME);
306
371
  if (!fs.existsSync(configFilePath)) {
307
- return null;
372
+ throw new Error(`Configuration file not found at ${configFilePath}`);
308
373
  }
309
374
  try {
310
375
  const configContent = fs.readFileSync(configFilePath, 'utf-8');
311
376
  const config = recursivelyHydrateStrings(JSON.parse(configContent), {
312
377
  extensionPath: extensionDir,
378
+ workspacePath: workspaceDir,
313
379
  '/': path.sep,
314
380
  pathSeparator: path.sep,
315
381
  });
316
382
  if (!config.name || !config.version) {
317
- return null;
383
+ throw new Error(`Invalid configuration in ${configFilePath}: missing ${!config.name ? '"name"' : '"version"'}`);
318
384
  }
319
385
  return config;
320
386
  }
321
- catch (_) {
322
- return null;
387
+ catch (e) {
388
+ throw new Error(`Failed to load extension config from ${configFilePath}: ${getErrorMessage(e)}`);
323
389
  }
324
390
  }
325
- export async function uninstallExtension(extensionName, cwd = process.cwd()) {
391
+ export async function uninstallExtension(extensionIdentifier, cwd = process.cwd()) {
392
+ const telemetryConfig = getTelemetryConfig(cwd);
326
393
  const installedExtensions = loadUserExtensions();
327
- if (!installedExtensions.some((installed) => installed.config.name === extensionName)) {
328
- throw new Error(`Extension "${extensionName}" not found.`);
329
- }
330
- removeFromDisabledExtensions(extensionName, [SettingScope.User, SettingScope.Workspace], cwd);
394
+ const extensionName = installedExtensions.find((installed) => installed.config.name.toLowerCase() ===
395
+ extensionIdentifier.toLowerCase() ||
396
+ installed.installMetadata?.source.toLowerCase() ===
397
+ extensionIdentifier.toLowerCase())?.config.name;
398
+ if (!extensionName) {
399
+ throw new Error(`Extension not found.`);
400
+ }
401
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
402
+ manager.remove(extensionName);
331
403
  const storage = new ExtensionStorage(extensionName);
332
- return await fs.promises.rm(storage.getExtensionDir(), {
404
+ await fs.promises.rm(storage.getExtensionDir(), {
333
405
  recursive: true,
334
406
  force: true,
335
407
  });
408
+ logExtensionUninstall(telemetryConfig, new ExtensionUninstallEvent(extensionName, 'success'));
336
409
  }
337
410
  export function toOutputString(extension) {
338
411
  let output = `${extension.config.name} (${extension.config.version})`;
339
412
  output += `\n Path: ${extension.path}`;
340
413
  if (extension.installMetadata) {
341
414
  output += `\n Source: ${extension.installMetadata.source} (Type: ${extension.installMetadata.type})`;
415
+ if (extension.installMetadata.ref) {
416
+ output += `\n Ref: ${extension.installMetadata.ref}`;
417
+ }
418
+ if (extension.installMetadata.releaseTag) {
419
+ output += `\n Release tag: ${extension.installMetadata.releaseTag}`;
420
+ }
342
421
  }
343
422
  if (extension.contextFiles.length > 0) {
344
423
  output += `\n Context files:`;
@@ -360,86 +439,22 @@ export function toOutputString(extension) {
360
439
  }
361
440
  return output;
362
441
  }
363
- export async function updateExtensionByName(extensionName, cwd = process.cwd()) {
364
- const installedExtensions = loadUserExtensions();
365
- const extension = installedExtensions.find((installed) => installed.config.name === extensionName);
366
- if (!extension) {
367
- throw new Error(`Extension "${extensionName}" not found. Run gemini extensions list to see available extensions.`);
368
- }
369
- return await updateExtension(extension, cwd);
370
- }
371
- export async function updateExtension(extension, cwd = process.cwd()) {
372
- if (!extension.installMetadata) {
373
- throw new Error(`Extension ${extension.config.name} cannot be updated.`);
374
- }
375
- if (extension.installMetadata.type === 'link') {
376
- throw new Error(`Extension is linked so does not need to be updated`);
377
- }
378
- const originalVersion = extension.config.version;
379
- const tempDir = await ExtensionStorage.createTmpDir();
380
- try {
381
- await copyExtension(extension.path, tempDir);
382
- await uninstallExtension(extension.config.name, cwd);
383
- await installExtension(extension.installMetadata, cwd);
384
- const updatedExtensionStorage = new ExtensionStorage(extension.config.name);
385
- const updatedExtension = loadExtension(updatedExtensionStorage.getExtensionDir());
386
- if (!updatedExtension) {
387
- throw new Error('Updated extension not found after installation.');
388
- }
389
- const updatedVersion = updatedExtension.config.version;
390
- return {
391
- name: extension.config.name,
392
- originalVersion,
393
- updatedVersion,
394
- };
395
- }
396
- catch (e) {
397
- console.error(`Error updating extension, rolling back. ${getErrorMessage(e)}`);
398
- await copyExtension(tempDir, extension.path);
399
- throw e;
400
- }
401
- finally {
402
- await fs.promises.rm(tempDir, { recursive: true, force: true });
403
- }
404
- }
405
442
  export function disableExtension(name, scope, cwd = process.cwd()) {
406
443
  if (scope === SettingScope.System || scope === SettingScope.SystemDefaults) {
407
444
  throw new Error('System and SystemDefaults scopes are not supported.');
408
445
  }
409
- const settings = loadSettings(cwd);
410
- const settingsFile = settings.forScope(scope);
411
- const extensionSettings = settingsFile.settings.extensions || {
412
- disabled: [],
413
- };
414
- const disabledExtensions = extensionSettings.disabled || [];
415
- if (!disabledExtensions.includes(name)) {
416
- disabledExtensions.push(name);
417
- extensionSettings.disabled = disabledExtensions;
418
- settings.setValue(scope, 'extensions', extensionSettings);
419
- }
420
- }
421
- export function enableExtension(name, scopes) {
422
- removeFromDisabledExtensions(name, scopes);
446
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
447
+ const scopePath = scope === SettingScope.Workspace ? cwd : os.homedir();
448
+ manager.disable(name, true, scopePath);
423
449
  }
424
- /**
425
- * Removes an extension from the list of disabled extensions.
426
- * @param name The name of the extension to remove.
427
- * @param scope The scopes to remove the name from.
428
- */
429
- function removeFromDisabledExtensions(name, scopes, cwd = process.cwd()) {
430
- const settings = loadSettings(cwd);
431
- for (const scope of scopes) {
432
- const settingsFile = settings.forScope(scope);
433
- const extensionSettings = settingsFile.settings.extensions || {
434
- disabled: [],
435
- };
436
- const disabledExtensions = extensionSettings.disabled || [];
437
- extensionSettings.disabled = disabledExtensions.filter((extension) => extension !== name);
438
- settings.setValue(scope, 'extensions', extensionSettings);
450
+ export function enableExtension(name, scope, cwd = process.cwd()) {
451
+ if (scope === SettingScope.System || scope === SettingScope.SystemDefaults) {
452
+ throw new Error('System and SystemDefaults scopes are not supported.');
439
453
  }
440
- }
441
- export async function updateAllUpdatableExtensions(cwd = process.cwd()) {
442
- const extensions = loadExtensions(cwd).filter((extension) => !!extension.installMetadata);
443
- return await Promise.all(extensions.map((extension) => updateExtension(extension, cwd)));
454
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
455
+ const scopePath = scope === SettingScope.Workspace ? cwd : os.homedir();
456
+ manager.enable(name, true, scopePath);
457
+ const config = getTelemetryConfig(cwd);
458
+ logExtensionEnable(config, new ExtensionEnableEvent(name, scope));
444
459
  }
445
460
  //# sourceMappingURL=extension.js.map
@@ -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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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export interface ExtensionEnablementConfig {
7
+ overrides: string[];
8
+ }
9
+ export interface AllExtensionsEnablementConfig {
10
+ [extensionName: string]: ExtensionEnablementConfig;
11
+ }
12
+ export declare class Override {
13
+ baseRule: string;
14
+ isDisable: boolean;
15
+ includeSubdirs: boolean;
16
+ constructor(baseRule: string, isDisable: boolean, includeSubdirs: boolean);
17
+ static fromInput(inputRule: string, includeSubdirs: boolean): Override;
18
+ static fromFileRule(fileRule: string): Override;
19
+ conflictsWith(other: Override): boolean;
20
+ isEqualTo(other: Override): boolean;
21
+ asRegex(): RegExp;
22
+ isChildOf(parent: Override): boolean;
23
+ output(): string;
24
+ matchesPath(path: string): boolean;
25
+ }
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
+ export declare class ExtensionEnablementManager {
35
+ private configFilePath;
36
+ private configDir;
37
+ constructor(configDir: string);
38
+ isEnabled(extensionName: string, currentPath: string): boolean;
39
+ readConfig(): AllExtensionsEnablementConfig;
40
+ writeConfig(config: AllExtensionsEnablementConfig): void;
41
+ enable(extensionName: string, includeSubdirs: boolean, scopePath: string): void;
42
+ disable(extensionName: string, includeSubdirs: boolean, scopePath: string): void;
43
+ remove(extensionName: string): void;
44
+ }