@google/gemini-cli 0.7.0-nightly.20250912.68035591 → 0.7.0-nightly.20250918.2722473a

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 (190) hide show
  1. package/dist/package.json +3 -2
  2. package/dist/src/commands/extensions/disable.d.ts +1 -1
  3. package/dist/src/commands/extensions/disable.js +3 -3
  4. package/dist/src/commands/extensions/disable.js.map +1 -1
  5. package/dist/src/commands/extensions/enable.d.ts +1 -1
  6. package/dist/src/commands/extensions/enable.js +5 -7
  7. package/dist/src/commands/extensions/enable.js.map +1 -1
  8. package/dist/src/commands/extensions/install.js +3 -2
  9. package/dist/src/commands/extensions/install.js.map +1 -1
  10. package/dist/src/commands/extensions/install.test.js +75 -2
  11. package/dist/src/commands/extensions/install.test.js.map +1 -1
  12. package/dist/src/commands/extensions/update.js +14 -4
  13. package/dist/src/commands/extensions/update.js.map +1 -1
  14. package/dist/src/config/config.d.ts +0 -1
  15. package/dist/src/config/config.js +13 -7
  16. package/dist/src/config/config.js.map +1 -1
  17. package/dist/src/config/extension.d.ts +13 -16
  18. package/dist/src/config/extension.js +170 -135
  19. package/dist/src/config/extension.js.map +1 -1
  20. package/dist/src/config/extensions/extensionEnablement.d.ts +30 -0
  21. package/dist/src/config/extensions/extensionEnablement.js +113 -0
  22. package/dist/src/config/extensions/extensionEnablement.js.map +1 -0
  23. package/dist/src/config/extensions/extensionEnablement.test.d.ts +6 -0
  24. package/dist/src/config/extensions/extensionEnablement.test.js +116 -0
  25. package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -0
  26. package/dist/src/config/extensions/variableSchema.d.ts +8 -0
  27. package/dist/src/config/extensions/variableSchema.js +4 -0
  28. package/dist/src/config/extensions/variableSchema.js.map +1 -1
  29. package/dist/src/config/keyBindings.d.ts +3 -1
  30. package/dist/src/config/keyBindings.js +6 -0
  31. package/dist/src/config/keyBindings.js.map +1 -1
  32. package/dist/src/config/settings.d.ts +3 -0
  33. package/dist/src/config/settings.js +52 -15
  34. package/dist/src/config/settings.js.map +1 -1
  35. package/dist/src/config/settingsSchema.d.ts +9 -0
  36. package/dist/src/config/settingsSchema.js +9 -0
  37. package/dist/src/config/settingsSchema.js.map +1 -1
  38. package/dist/src/config/settingsSchema.test.js +6 -0
  39. package/dist/src/config/settingsSchema.test.js.map +1 -1
  40. package/dist/src/config/trustedFolders.d.ts +1 -1
  41. package/dist/src/config/trustedFolders.js +7 -2
  42. package/dist/src/config/trustedFolders.js.map +1 -1
  43. package/dist/src/config/trustedFolders.test.js +30 -8
  44. package/dist/src/config/trustedFolders.test.js.map +1 -1
  45. package/dist/src/gemini.js +52 -30
  46. package/dist/src/gemini.js.map +1 -1
  47. package/dist/src/gemini.test.js +23 -2
  48. package/dist/src/gemini.test.js.map +1 -1
  49. package/dist/src/generated/git-commit.d.ts +2 -2
  50. package/dist/src/generated/git-commit.js +2 -2
  51. package/dist/src/services/McpPromptLoader.js +43 -8
  52. package/dist/src/services/McpPromptLoader.js.map +1 -1
  53. package/dist/src/services/McpPromptLoader.test.js +228 -1
  54. package/dist/src/services/McpPromptLoader.test.js.map +1 -1
  55. package/dist/src/ui/AppContainer.js +38 -25
  56. package/dist/src/ui/AppContainer.js.map +1 -1
  57. package/dist/src/ui/AppContainer.test.js +36 -0
  58. package/dist/src/ui/AppContainer.test.js.map +1 -1
  59. package/dist/src/ui/commands/chatCommand.d.ts +2 -0
  60. package/dist/src/ui/commands/chatCommand.js +80 -1
  61. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  62. package/dist/src/ui/commands/extensionsCommand.js +23 -33
  63. package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
  64. package/dist/src/ui/commands/types.d.ts +4 -1
  65. package/dist/src/ui/commands/types.js +0 -1
  66. package/dist/src/ui/commands/types.js.map +1 -1
  67. package/dist/src/ui/components/Composer.js +11 -3
  68. package/dist/src/ui/components/Composer.js.map +1 -1
  69. package/dist/src/ui/components/Composer.test.js +5 -0
  70. package/dist/src/ui/components/Composer.test.js.map +1 -1
  71. package/dist/src/ui/components/DialogManager.js +1 -1
  72. package/dist/src/ui/components/DialogManager.js.map +1 -1
  73. package/dist/src/ui/components/FolderTrustDialog.js +13 -6
  74. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  75. package/dist/src/ui/components/FolderTrustDialog.test.js +12 -7
  76. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  77. package/dist/src/ui/components/Footer.d.ts +3 -0
  78. package/dist/src/ui/components/Footer.js +8 -3
  79. package/dist/src/ui/components/Footer.js.map +1 -1
  80. package/dist/src/ui/components/HistoryItemDisplay.js +3 -1
  81. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  82. package/dist/src/ui/components/InputPrompt.d.ts +6 -0
  83. package/dist/src/ui/components/InputPrompt.js +119 -30
  84. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  85. package/dist/src/ui/components/PrepareLabel.d.ts +5 -5
  86. package/dist/src/ui/components/PrepareLabel.js +66 -10
  87. package/dist/src/ui/components/PrepareLabel.js.map +1 -1
  88. package/dist/src/ui/components/PrepareLabel.test.d.ts +6 -0
  89. package/dist/src/ui/components/PrepareLabel.test.js +71 -0
  90. package/dist/src/ui/components/PrepareLabel.test.js.map +1 -0
  91. package/dist/src/ui/components/SettingsDialog.d.ts +2 -1
  92. package/dist/src/ui/components/SettingsDialog.js +68 -12
  93. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  94. package/dist/src/ui/components/SettingsDialog.test.js +291 -0
  95. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  96. package/dist/src/ui/components/SuggestionsDisplay.d.ts +5 -2
  97. package/dist/src/ui/components/SuggestionsDisplay.js +11 -5
  98. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  99. package/dist/src/ui/components/ThemeDialog.test.js +10 -0
  100. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
  101. package/dist/src/ui/components/messages/WarningMessage.d.ts +11 -0
  102. package/dist/src/ui/components/messages/WarningMessage.js +10 -0
  103. package/dist/src/ui/components/messages/WarningMessage.js.map +1 -0
  104. package/dist/src/ui/components/shared/text-buffer.d.ts +6 -0
  105. package/dist/src/ui/components/shared/text-buffer.js +23 -3
  106. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  107. package/dist/src/ui/components/views/ExtensionsList.d.ts +6 -0
  108. package/dist/src/ui/components/views/ExtensionsList.js +47 -0
  109. package/dist/src/ui/components/views/ExtensionsList.js.map +1 -0
  110. package/dist/src/ui/components/views/ExtensionsList.test.d.ts +6 -0
  111. package/dist/src/ui/components/views/ExtensionsList.test.js +97 -0
  112. package/dist/src/ui/components/views/ExtensionsList.test.js.map +1 -0
  113. package/dist/src/ui/contexts/UIStateContext.d.ts +2 -0
  114. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  115. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +3 -1
  116. package/dist/src/ui/hooks/slashCommandProcessor.js +14 -44
  117. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  118. package/dist/src/ui/hooks/useAutoAcceptIndicator.d.ts +3 -2
  119. package/dist/src/ui/hooks/useAutoAcceptIndicator.js +9 -5
  120. package/dist/src/ui/hooks/useAutoAcceptIndicator.js.map +1 -1
  121. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js +69 -0
  122. package/dist/src/ui/hooks/useAutoAcceptIndicator.test.js.map +1 -1
  123. package/dist/src/ui/hooks/useGeminiStream.d.ts +4 -0
  124. package/dist/src/ui/hooks/useGeminiStream.js +46 -17
  125. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  126. package/dist/src/ui/hooks/useGitBranchName.js +15 -18
  127. package/dist/src/ui/hooks/useGitBranchName.js.map +1 -1
  128. package/dist/src/ui/hooks/useGitBranchName.test.js +49 -53
  129. package/dist/src/ui/hooks/useGitBranchName.test.js.map +1 -1
  130. package/dist/src/ui/hooks/useMemoryMonitor.d.ts +13 -0
  131. package/dist/src/ui/hooks/useMemoryMonitor.js +28 -0
  132. package/dist/src/ui/hooks/useMemoryMonitor.js.map +1 -0
  133. package/dist/src/ui/hooks/useMemoryMonitor.test.d.ts +6 -0
  134. package/dist/src/ui/hooks/useMemoryMonitor.test.js +57 -0
  135. package/dist/src/ui/hooks/useMemoryMonitor.test.js.map +1 -0
  136. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +1 -1
  137. package/dist/src/ui/hooks/useReverseSearchCompletion.js +67 -20
  138. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -1
  139. package/dist/src/ui/hooks/useSlashCompletion.d.ts +1 -1
  140. package/dist/src/ui/hooks/useSlashCompletion.js +12 -1
  141. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  142. package/dist/src/ui/hooks/useSlashCompletion.test.js +14 -2
  143. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  144. package/dist/src/ui/hooks/useToolScheduler.test.js +1 -0
  145. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  146. package/dist/src/ui/keyMatchers.test.js +2 -0
  147. package/dist/src/ui/keyMatchers.test.js.map +1 -1
  148. package/dist/src/ui/state/extensions.d.ts +14 -0
  149. package/dist/src/ui/state/extensions.js +16 -0
  150. package/dist/src/ui/state/extensions.js.map +1 -0
  151. package/dist/src/ui/themes/ayu.js +1 -1
  152. package/dist/src/ui/themes/dracula.js +2 -2
  153. package/dist/src/ui/themes/github-dark.js +1 -1
  154. package/dist/src/ui/types.d.ts +11 -2
  155. package/dist/src/ui/types.js +2 -0
  156. package/dist/src/ui/types.js.map +1 -1
  157. package/dist/src/ui/utils/MarkdownDisplay.test.js +6 -2
  158. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  159. package/dist/src/ui/utils/clipboardUtils.js +5 -6
  160. package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
  161. package/dist/src/ui/utils/highlight.d.ts +1 -0
  162. package/dist/src/ui/utils/highlight.js +28 -0
  163. package/dist/src/ui/utils/highlight.js.map +1 -1
  164. package/dist/src/utils/commands.d.ts +20 -0
  165. package/dist/src/utils/commands.js +53 -0
  166. package/dist/src/utils/commands.js.map +1 -0
  167. package/dist/src/utils/commands.test.d.ts +6 -0
  168. package/dist/src/utils/commands.test.js +115 -0
  169. package/dist/src/utils/commands.test.js.map +1 -0
  170. package/dist/src/utils/commentJson.d.ts +9 -0
  171. package/dist/src/utils/commentJson.js +48 -0
  172. package/dist/src/utils/commentJson.js.map +1 -0
  173. package/dist/src/utils/commentJson.test.d.ts +6 -0
  174. package/dist/src/utils/commentJson.test.js +146 -0
  175. package/dist/src/utils/commentJson.test.js.map +1 -0
  176. package/dist/src/utils/processUtils.d.ts +13 -0
  177. package/dist/src/utils/processUtils.js +18 -0
  178. package/dist/src/utils/processUtils.js.map +1 -0
  179. package/dist/src/utils/processUtils.test.d.ts +6 -0
  180. package/dist/src/utils/processUtils.test.js +20 -0
  181. package/dist/src/utils/processUtils.test.js.map +1 -0
  182. package/dist/src/utils/sandbox.d.ts +1 -1
  183. package/dist/src/utils/sandbox.js +17 -8
  184. package/dist/src/utils/sandbox.js.map +1 -1
  185. package/dist/src/validateNonInterActiveAuth.js +30 -18
  186. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  187. package/dist/src/zed-integration/schema.d.ts +18 -18
  188. package/dist/tsconfig.tsbuildinfo +1 -1
  189. package/package.json +4 -3
  190. package/dist/google-gemini-cli-0.6.0-nightly.tgz +0 -0
@@ -3,7 +3,7 @@
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, ClearcutLogger, Config, ExtensionInstallEvent, ExtensionUninstallEvent, } 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';
@@ -14,6 +14,8 @@ import { recursivelyHydrateStrings } from './extensions/variables.js';
14
14
  import { isWorkspaceTrusted } from './trustedFolders.js';
15
15
  import { resolveEnvVarsInObject } from '../utils/envVarResolver.js';
16
16
  import { randomUUID } from 'node:crypto';
17
+ import { ExtensionUpdateState } from '../ui/state/extensions.js';
18
+ import { ExtensionEnablementManager } from './extensions/extensionEnablement.js';
17
19
  export const EXTENSIONS_DIRECTORY_NAME = path.join(GEMINI_DIR, 'extensions');
18
20
  export const EXTENSIONS_CONFIG_FILENAME = 'gemini-extension.json';
19
21
  export const INSTALL_METADATA_FILENAME = '.gemini-extension-install.json';
@@ -62,9 +64,19 @@ export async function performWorkspaceExtensionMigration(extensions) {
62
64
  }
63
65
  return failedInstallNames;
64
66
  }
67
+ function getClearcutLogger(cwd) {
68
+ const config = new Config({
69
+ sessionId: randomUUID(),
70
+ targetDir: cwd,
71
+ cwd,
72
+ model: '',
73
+ debugMode: false,
74
+ });
75
+ const logger = ClearcutLogger.getInstance(config);
76
+ return logger;
77
+ }
65
78
  export function loadExtensions(workspaceDir = process.cwd()) {
66
79
  const settings = loadSettings(workspaceDir).merged;
67
- const disabledExtensions = settings.extensions?.disabled ?? [];
68
80
  const allExtensions = [...loadUserExtensions()];
69
81
  if ((isWorkspaceTrusted(settings) ?? true) &&
70
82
  // Default management setting to true
@@ -72,9 +84,10 @@ export function loadExtensions(workspaceDir = process.cwd()) {
72
84
  allExtensions.push(...getWorkspaceExtensions(workspaceDir));
73
85
  }
74
86
  const uniqueExtensions = new Map();
87
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
75
88
  for (const extension of allExtensions) {
76
89
  if (!uniqueExtensions.has(extension.config.name) &&
77
- !disabledExtensions.includes(extension.config.name)) {
90
+ manager.isEnabled(extension.config.name, workspaceDir)) {
78
91
  uniqueExtensions.set(extension.config.name, extension);
79
92
  }
80
93
  }
@@ -99,16 +112,16 @@ export function loadExtensionsFromDir(dir) {
99
112
  const extensions = [];
100
113
  for (const subdir of fs.readdirSync(extensionsDir)) {
101
114
  const extensionDir = path.join(extensionsDir, subdir);
102
- const extension = loadExtension(extensionDir);
115
+ const extension = loadExtension({ extensionDir, workspaceDir: dir });
103
116
  if (extension != null) {
104
117
  extensions.push(extension);
105
118
  }
106
119
  }
107
120
  return extensions;
108
121
  }
109
- export function loadExtension(extensionDir) {
122
+ export function loadExtension(context) {
123
+ const { extensionDir, workspaceDir } = context;
110
124
  if (!fs.statSync(extensionDir).isDirectory()) {
111
- console.error(`Warning: unexpected file ${extensionDir} in extensions directory.`);
112
125
  return null;
113
126
  }
114
127
  const installMetadata = loadInstallMetadata(extensionDir);
@@ -125,6 +138,7 @@ export function loadExtension(extensionDir) {
125
138
  const configContent = fs.readFileSync(configFilePath, 'utf-8');
126
139
  let config = recursivelyHydrateStrings(JSON.parse(configContent), {
127
140
  extensionPath: extensionDir,
141
+ workspacePath: workspaceDir,
128
142
  '/': path.sep,
129
143
  pathSeparator: path.sep,
130
144
  });
@@ -170,21 +184,23 @@ 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
+ source: extension.installMetadata?.source,
202
+ type: extension.installMetadata?.type,
203
+ ref: extension.installMetadata?.ref,
188
204
  }));
189
205
  }
190
206
  const lowerCaseEnabledExtensions = new Set(enabledExtensionNames.map((e) => e.trim().toLowerCase()));
@@ -195,6 +211,9 @@ export function annotateActiveExtensions(extensions, enabledExtensionNames, work
195
211
  version: extension.config.version,
196
212
  isActive: false,
197
213
  path: extension.path,
214
+ source: extension.installMetadata?.source,
215
+ type: extension.installMetadata?.type,
216
+ ref: extension.installMetadata?.ref,
198
217
  }));
199
218
  }
200
219
  const notFoundNames = new Set(lowerCaseEnabledExtensions);
@@ -241,15 +260,26 @@ async function cloneFromGit(installMetadata, destination) {
241
260
  });
242
261
  }
243
262
  }
244
- export async function installExtension(installMetadata, cwd = process.cwd()) {
245
- const config = new Config({
246
- sessionId: randomUUID(),
247
- targetDir: process.cwd(),
248
- cwd: process.cwd(),
249
- model: '',
250
- debugMode: false,
263
+ /**
264
+ * Asks users a prompt and awaits for a y/n response
265
+ * @param prompt A yes/no prompt to ask the user
266
+ * @returns Whether or not the user answers 'y' (yes)
267
+ */
268
+ async function promptForContinuation(prompt) {
269
+ const readline = await import('node:readline');
270
+ const rl = readline.createInterface({
271
+ input: process.stdin,
272
+ output: process.stdout,
251
273
  });
252
- const logger = ClearcutLogger.getInstance(config);
274
+ return new Promise((resolve) => {
275
+ rl.question(prompt, (answer) => {
276
+ rl.close();
277
+ resolve(answer.toLowerCase() === 'y');
278
+ });
279
+ });
280
+ }
281
+ export async function installExtension(installMetadata, askConsent = false, cwd = process.cwd()) {
282
+ const logger = getClearcutLogger(cwd);
253
283
  let newExtensionConfig = null;
254
284
  let localSourcePath;
255
285
  try {
@@ -277,7 +307,10 @@ export async function installExtension(installMetadata, cwd = process.cwd()) {
277
307
  throw new Error(`Unsupported install type: ${installMetadata.type}`);
278
308
  }
279
309
  try {
280
- newExtensionConfig = await loadExtensionConfig(localSourcePath);
310
+ newExtensionConfig = await loadExtensionConfig({
311
+ extensionDir: localSourcePath,
312
+ workspaceDir: cwd,
313
+ });
281
314
  if (!newExtensionConfig) {
282
315
  throw new Error(`Invalid extension at ${installMetadata.source}. Please make sure it has a valid gemini-extension.json file.`);
283
316
  }
@@ -288,6 +321,9 @@ export async function installExtension(installMetadata, cwd = process.cwd()) {
288
321
  if (installedExtensions.some((installed) => installed.config.name === newExtensionName)) {
289
322
  throw new Error(`Extension "${newExtensionName}" is already installed. Please uninstall it first.`);
290
323
  }
324
+ if (askConsent) {
325
+ await requestConsent(newExtensionConfig);
326
+ }
291
327
  await fs.promises.mkdir(destinationPath, { recursive: true });
292
328
  if (installMetadata.type === 'local' || installMetadata.type === 'git') {
293
329
  await copyExtension(localSourcePath, destinationPath);
@@ -302,19 +338,39 @@ export async function installExtension(installMetadata, cwd = process.cwd()) {
302
338
  }
303
339
  }
304
340
  logger?.logExtensionInstallEvent(new ExtensionInstallEvent(newExtensionConfig.name, newExtensionConfig.version, installMetadata.source, 'success'));
341
+ enableExtension(newExtensionConfig.name, SettingScope.User);
305
342
  return newExtensionConfig.name;
306
343
  }
307
344
  catch (error) {
308
345
  // Attempt to load config from the source path even if installation fails
309
346
  // to get the name and version for logging.
310
347
  if (!newExtensionConfig && localSourcePath) {
311
- newExtensionConfig = await loadExtensionConfig(localSourcePath);
348
+ newExtensionConfig = await loadExtensionConfig({
349
+ extensionDir: localSourcePath,
350
+ workspaceDir: cwd,
351
+ });
312
352
  }
313
353
  logger?.logExtensionInstallEvent(new ExtensionInstallEvent(newExtensionConfig?.name ?? '', newExtensionConfig?.version ?? '', installMetadata.source, 'error'));
314
354
  throw error;
315
355
  }
316
356
  }
317
- export async function loadExtensionConfig(extensionDir) {
357
+ async function requestConsent(extensionConfig) {
358
+ const mcpServerEntries = Object.entries(extensionConfig.mcpServers || {});
359
+ if (mcpServerEntries.length) {
360
+ console.info('This extension will run the following MCP servers: ');
361
+ for (const [key, mcpServer] of mcpServerEntries) {
362
+ const isLocal = !!mcpServer.command;
363
+ console.info(` * ${key} (${isLocal ? 'local' : 'remote'}): ${mcpServer.description}`);
364
+ }
365
+ console.info('The extension will append info to your gemini.md context');
366
+ const shouldContinue = await promptForContinuation('Do you want to continue? (y/n): ');
367
+ if (!shouldContinue) {
368
+ throw new Error('Installation cancelled by user.');
369
+ }
370
+ }
371
+ }
372
+ export async function loadExtensionConfig(context) {
373
+ const { extensionDir, workspaceDir } = context;
318
374
  const configFilePath = path.join(extensionDir, EXTENSIONS_CONFIG_FILENAME);
319
375
  if (!fs.existsSync(configFilePath)) {
320
376
  return null;
@@ -323,6 +379,7 @@ export async function loadExtensionConfig(extensionDir) {
323
379
  const configContent = fs.readFileSync(configFilePath, 'utf-8');
324
380
  const config = recursivelyHydrateStrings(JSON.parse(configContent), {
325
381
  extensionPath: extensionDir,
382
+ workspacePath: workspaceDir,
326
383
  '/': path.sep,
327
384
  pathSeparator: path.sep,
328
385
  });
@@ -336,16 +393,19 @@ export async function loadExtensionConfig(extensionDir) {
336
393
  }
337
394
  }
338
395
  export async function uninstallExtension(extensionName, cwd = process.cwd()) {
396
+ const logger = getClearcutLogger(cwd);
339
397
  const installedExtensions = loadUserExtensions();
340
398
  if (!installedExtensions.some((installed) => installed.config.name === extensionName)) {
341
399
  throw new Error(`Extension "${extensionName}" not found.`);
342
400
  }
343
- removeFromDisabledExtensions(extensionName, [SettingScope.User, SettingScope.Workspace], cwd);
401
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
402
+ manager.remove(extensionName);
344
403
  const storage = new ExtensionStorage(extensionName);
345
- return await fs.promises.rm(storage.getExtensionDir(), {
404
+ await fs.promises.rm(storage.getExtensionDir(), {
346
405
  recursive: true,
347
406
  force: true,
348
407
  });
408
+ logger?.logExtensionUninstallEvent(new ExtensionUninstallEvent(extensionName, 'success'));
349
409
  }
350
410
  export function toOutputString(extension) {
351
411
  let output = `${extension.config.name} (${extension.config.version})`;
@@ -376,41 +436,53 @@ export function toOutputString(extension) {
376
436
  }
377
437
  return output;
378
438
  }
379
- export async function updateExtensionByName(extensionName, cwd = process.cwd()) {
380
- const installedExtensions = loadUserExtensions();
381
- const extension = installedExtensions.find((installed) => installed.config.name === extensionName);
439
+ export async function updateExtensionByName(extensionName, cwd = process.cwd(), extensions, setExtensionUpdateState) {
440
+ const extension = extensions.find((installed) => installed.name === extensionName);
382
441
  if (!extension) {
383
442
  throw new Error(`Extension "${extensionName}" not found. Run gemini extensions list to see available extensions.`);
384
443
  }
385
- return await updateExtension(extension, cwd);
444
+ return await updateExtension(extension, cwd, setExtensionUpdateState);
386
445
  }
387
- export async function updateExtension(extension, cwd = process.cwd()) {
388
- if (!extension.installMetadata) {
389
- throw new Error(`Extension ${extension.config.name} cannot be updated.`);
446
+ export async function updateExtension(extension, cwd = process.cwd(), setExtensionUpdateState) {
447
+ if (!extension.type) {
448
+ setExtensionUpdateState(ExtensionUpdateState.ERROR);
449
+ throw new Error(`Extension ${extension.name} cannot be updated, type is unknown.`);
390
450
  }
391
- if (extension.installMetadata.type === 'link') {
451
+ if (extension.type === 'link') {
452
+ setExtensionUpdateState(ExtensionUpdateState.UP_TO_DATE);
392
453
  throw new Error(`Extension is linked so does not need to be updated`);
393
454
  }
394
- const originalVersion = extension.config.version;
455
+ setExtensionUpdateState(ExtensionUpdateState.UPDATING);
456
+ const originalVersion = extension.version;
395
457
  const tempDir = await ExtensionStorage.createTmpDir();
396
458
  try {
397
459
  await copyExtension(extension.path, tempDir);
398
- await uninstallExtension(extension.config.name, cwd);
399
- await installExtension(extension.installMetadata, cwd);
400
- const updatedExtensionStorage = new ExtensionStorage(extension.config.name);
401
- const updatedExtension = loadExtension(updatedExtensionStorage.getExtensionDir());
460
+ await uninstallExtension(extension.name, cwd);
461
+ await installExtension({
462
+ source: extension.source,
463
+ type: extension.type,
464
+ ref: extension.ref,
465
+ }, false, cwd);
466
+ const updatedExtensionStorage = new ExtensionStorage(extension.name);
467
+ const updatedExtension = loadExtension({
468
+ extensionDir: updatedExtensionStorage.getExtensionDir(),
469
+ workspaceDir: cwd,
470
+ });
402
471
  if (!updatedExtension) {
472
+ setExtensionUpdateState(ExtensionUpdateState.ERROR);
403
473
  throw new Error('Updated extension not found after installation.');
404
474
  }
405
475
  const updatedVersion = updatedExtension.config.version;
476
+ setExtensionUpdateState(ExtensionUpdateState.UPDATED_NEEDS_RESTART);
406
477
  return {
407
- name: extension.config.name,
478
+ name: extension.name,
408
479
  originalVersion,
409
480
  updatedVersion,
410
481
  };
411
482
  }
412
483
  catch (e) {
413
484
  console.error(`Error updating extension, rolling back. ${getErrorMessage(e)}`);
485
+ setExtensionUpdateState(ExtensionUpdateState.ERROR);
414
486
  await copyExtension(tempDir, extension.path);
415
487
  throw e;
416
488
  }
@@ -422,112 +494,75 @@ export function disableExtension(name, scope, cwd = process.cwd()) {
422
494
  if (scope === SettingScope.System || scope === SettingScope.SystemDefaults) {
423
495
  throw new Error('System and SystemDefaults scopes are not supported.');
424
496
  }
425
- const settings = loadSettings(cwd);
426
- const settingsFile = settings.forScope(scope);
427
- const extensionSettings = settingsFile.settings.extensions || {
428
- disabled: [],
429
- };
430
- const disabledExtensions = extensionSettings.disabled || [];
431
- if (!disabledExtensions.includes(name)) {
432
- disabledExtensions.push(name);
433
- extensionSettings.disabled = disabledExtensions;
434
- settings.setValue(scope, 'extensions', extensionSettings);
435
- }
436
- }
437
- export function enableExtension(name, scopes) {
438
- removeFromDisabledExtensions(name, scopes);
497
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
498
+ const scopePath = scope === SettingScope.Workspace ? cwd : os.homedir();
499
+ manager.disable(name, true, scopePath);
439
500
  }
440
- /**
441
- * Removes an extension from the list of disabled extensions.
442
- * @param name The name of the extension to remove.
443
- * @param scope The scopes to remove the name from.
444
- */
445
- function removeFromDisabledExtensions(name, scopes, cwd = process.cwd()) {
446
- const settings = loadSettings(cwd);
447
- for (const scope of scopes) {
448
- const settingsFile = settings.forScope(scope);
449
- const extensionSettings = settingsFile.settings.extensions || {
450
- disabled: [],
451
- };
452
- const disabledExtensions = extensionSettings.disabled || [];
453
- extensionSettings.disabled = disabledExtensions.filter((extension) => extension !== name);
454
- settings.setValue(scope, 'extensions', extensionSettings);
501
+ export function enableExtension(name, scope, cwd = process.cwd()) {
502
+ if (scope === SettingScope.System || scope === SettingScope.SystemDefaults) {
503
+ throw new Error('System and SystemDefaults scopes are not supported.');
455
504
  }
505
+ const manager = new ExtensionEnablementManager(ExtensionStorage.getUserExtensionsDir());
506
+ const scopePath = scope === SettingScope.Workspace ? cwd : os.homedir();
507
+ manager.enable(name, true, scopePath);
456
508
  }
457
- export async function updateAllUpdatableExtensions(cwd = process.cwd()) {
458
- const extensions = loadExtensions(cwd).filter((extension) => !!extension.installMetadata);
459
- return await Promise.all(extensions.map((extension) => updateExtension(extension, cwd)));
509
+ export async function updateAllUpdatableExtensions(cwd = process.cwd(), extensions, extensionsState, setExtensionsUpdateState) {
510
+ return await Promise.all(extensions
511
+ .filter((extension) => extensionsState.get(extension.name) ===
512
+ ExtensionUpdateState.UPDATE_AVAILABLE)
513
+ .map((extension) => updateExtension(extension, cwd, (updateState) => {
514
+ const newState = new Map(extensionsState);
515
+ newState.set(extension.name, updateState);
516
+ setExtensionsUpdateState(newState);
517
+ })));
460
518
  }
461
- export var ExtensionUpdateStatus;
462
- (function (ExtensionUpdateStatus) {
463
- ExtensionUpdateStatus[ExtensionUpdateStatus["UpdateAvailable"] = 0] = "UpdateAvailable";
464
- ExtensionUpdateStatus[ExtensionUpdateStatus["UpToDate"] = 1] = "UpToDate";
465
- ExtensionUpdateStatus[ExtensionUpdateStatus["Error"] = 2] = "Error";
466
- ExtensionUpdateStatus[ExtensionUpdateStatus["NotUpdatable"] = 3] = "NotUpdatable";
467
- })(ExtensionUpdateStatus || (ExtensionUpdateStatus = {}));
468
- export async function checkForExtensionUpdates(extensions) {
469
- const results = new Map();
519
+ export async function checkForAllExtensionUpdates(extensions, setExtensionsUpdateState) {
520
+ const finalState = new Map();
470
521
  for (const extension of extensions) {
471
- if (extension.installMetadata?.type !== 'git') {
472
- results.set(extension.config.name, {
473
- status: ExtensionUpdateStatus.NotUpdatable,
474
- });
475
- continue;
522
+ finalState.set(extension.name, await checkForExtensionUpdate(extension));
523
+ }
524
+ setExtensionsUpdateState(finalState);
525
+ return finalState;
526
+ }
527
+ export async function checkForExtensionUpdate(extension) {
528
+ if (extension.type !== 'git') {
529
+ return ExtensionUpdateState.NOT_UPDATABLE;
530
+ }
531
+ try {
532
+ const git = simpleGit(extension.path);
533
+ const remotes = await git.getRemotes(true);
534
+ if (remotes.length === 0) {
535
+ console.error('No git remotes found.');
536
+ return ExtensionUpdateState.ERROR;
476
537
  }
477
- try {
478
- const git = simpleGit(extension.path);
479
- const remotes = await git.getRemotes(true);
480
- if (remotes.length === 0) {
481
- results.set(extension.config.name, {
482
- status: ExtensionUpdateStatus.Error,
483
- error: 'No git remotes found.',
484
- });
485
- continue;
486
- }
487
- const remoteUrl = remotes[0].refs.fetch;
488
- if (!remoteUrl) {
489
- results.set(extension.config.name, {
490
- status: ExtensionUpdateStatus.Error,
491
- error: `No fetch URL found for git remote ${remotes[0].name}.`,
492
- });
493
- continue;
494
- }
495
- // Determine the ref to check on the remote.
496
- const refToCheck = extension.installMetadata.ref || 'HEAD';
497
- const lsRemoteOutput = await git.listRemote([remoteUrl, refToCheck]);
498
- if (typeof lsRemoteOutput !== 'string' || lsRemoteOutput.trim() === '') {
499
- results.set(extension.config.name, {
500
- status: ExtensionUpdateStatus.Error,
501
- error: `Git ref ${refToCheck} not found.`,
502
- });
503
- continue;
504
- }
505
- const remoteHash = lsRemoteOutput.split('\t')[0];
506
- const localHash = await git.revparse(['HEAD']);
507
- if (!remoteHash) {
508
- results.set(extension.config.name, {
509
- status: ExtensionUpdateStatus.Error,
510
- error: `Unable to parse hash from git ls-remote output "${lsRemoteOutput}"`,
511
- });
512
- }
513
- else if (remoteHash === localHash) {
514
- results.set(extension.config.name, {
515
- status: ExtensionUpdateStatus.UpToDate,
516
- });
517
- }
518
- else {
519
- results.set(extension.config.name, {
520
- status: ExtensionUpdateStatus.UpdateAvailable,
521
- });
522
- }
538
+ const remoteUrl = remotes[0].refs.fetch;
539
+ if (!remoteUrl) {
540
+ console.error(`No fetch URL found for git remote ${remotes[0].name}.`);
541
+ return ExtensionUpdateState.ERROR;
523
542
  }
524
- catch (error) {
525
- results.set(extension.config.name, {
526
- status: ExtensionUpdateStatus.Error,
527
- error: `Failed to check for updates for extension "${extension.config.name}": ${getErrorMessage(error)}`,
528
- });
543
+ // Determine the ref to check on the remote.
544
+ const refToCheck = extension.ref || 'HEAD';
545
+ const lsRemoteOutput = await git.listRemote([remoteUrl, refToCheck]);
546
+ if (typeof lsRemoteOutput !== 'string' || lsRemoteOutput.trim() === '') {
547
+ console.error(`Git ref ${refToCheck} not found.`);
548
+ return ExtensionUpdateState.ERROR;
549
+ }
550
+ const remoteHash = lsRemoteOutput.split('\t')[0];
551
+ const localHash = await git.revparse(['HEAD']);
552
+ if (!remoteHash) {
553
+ console.error(`Unable to parse hash from git ls-remote output "${lsRemoteOutput}"`);
554
+ return ExtensionUpdateState.ERROR;
529
555
  }
556
+ else if (remoteHash === localHash) {
557
+ return ExtensionUpdateState.UP_TO_DATE;
558
+ }
559
+ else {
560
+ return ExtensionUpdateState.UPDATE_AVAILABLE;
561
+ }
562
+ }
563
+ catch (error) {
564
+ console.error(`Failed to check for updates for extension "${extension.name}": ${getErrorMessage(error)}`);
565
+ return ExtensionUpdateState.ERROR;
530
566
  }
531
- return results;
532
567
  }
533
568
  //# 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,30 @@
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
+ /**
13
+ * Determines if an extension is enabled based on the configuration and current path.
14
+ * The last matching rule in the overrides list wins.
15
+ *
16
+ * @param config The enablement configuration for a single extension.
17
+ * @param currentPath The absolute path of the current working directory.
18
+ * @returns True if the extension is enabled, false otherwise.
19
+ */
20
+ export declare class ExtensionEnablementManager {
21
+ private configFilePath;
22
+ private configDir;
23
+ constructor(configDir: string);
24
+ isEnabled(extensionName: string, currentPath: string): boolean;
25
+ readConfig(): AllExtensionsEnablementConfig;
26
+ writeConfig(config: AllExtensionsEnablementConfig): void;
27
+ enable(extensionName: string, includeSubdirs: boolean, scopePath: string): void;
28
+ disable(extensionName: string, includeSubdirs: boolean, scopePath: string): void;
29
+ remove(extensionName: string): void;
30
+ }