@google/gemini-cli 0.6.0-nightly.20250910.a31830a3 → 0.6.0-preview.10

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