@google/gemini-cli-a2a-server 0.52.0 → 0.53.0-preview.0

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.
@@ -6,16 +6,207 @@
6
6
  import * as fs from 'node:fs';
7
7
  import * as path from 'node:path';
8
8
  import * as dotenv from 'dotenv';
9
- import { AuthType, Config, ApprovalMode, GEMINI_DIR, DEFAULT_GEMINI_EMBEDDING_MODEL, startupProfiler, PREVIEW_GEMINI_MODEL, homedir, GitService, fetchAdminControlsOnce, getCodeAssistServer, ExperimentFlags, isHeadlessMode, FatalAuthenticationError, createPolicyEngineConfig, } from '@google/gemini-cli-core';
9
+ import { AsyncLocalStorage } from 'node:async_hooks';
10
+ import { AuthType, Config, ApprovalMode, GEMINI_DIR, DEFAULT_GEMINI_EMBEDDING_MODEL, startupProfiler, PREVIEW_GEMINI_MODEL, homedir, tmpdir, GitService, fetchAdminControlsOnce, getCodeAssistServer, ExperimentFlags, isHeadlessMode, FatalAuthenticationError, createPolicyEngineConfig, resolveToRealPath, } from '@google/gemini-cli-core';
10
11
  import { logger } from '../utils/logger.js';
11
12
  import { CoderAgentEvent } from '../types.js';
12
- const INITIAL_FOLDER_TRUST = process.env['GEMINI_FOLDER_TRUST'];
13
- export async function loadConfig(settings, extensionLoader, taskId, trusted = false) {
14
- const workspaceDir = process.cwd();
13
+ export const envStorage = new AsyncLocalStorage();
14
+ const deletedKeysSymbol = Symbol('deletedKeys');
15
+ export const cwdSymbol = Symbol('cwd');
16
+ // Set up a Proxy on process.env to intercept reads and writes, isolating environment variables per task
17
+ const originalEnv = process.env;
18
+ const envProxy = new Proxy(originalEnv, {
19
+ get(target, prop) {
20
+ if (typeof prop === 'string') {
21
+ const taskEnv = envStorage.getStore();
22
+ if (taskEnv) {
23
+ const deleted = taskEnv[deletedKeysSymbol];
24
+ if (deleted?.has(prop)) {
25
+ return undefined;
26
+ }
27
+ if (Object.prototype.hasOwnProperty.call(taskEnv, prop)) {
28
+ return taskEnv[prop];
29
+ }
30
+ }
31
+ return target[prop];
32
+ }
33
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion
34
+ return target[prop];
35
+ },
36
+ has(target, prop) {
37
+ if (typeof prop === 'string') {
38
+ const taskEnv = envStorage.getStore();
39
+ if (taskEnv) {
40
+ const deleted = taskEnv[deletedKeysSymbol];
41
+ if (deleted?.has(prop)) {
42
+ return false;
43
+ }
44
+ if (Object.prototype.hasOwnProperty.call(taskEnv, prop)) {
45
+ return true;
46
+ }
47
+ }
48
+ return prop in target;
49
+ }
50
+ return prop in target;
51
+ },
52
+ set(target, prop, value) {
53
+ if (typeof prop === 'string') {
54
+ if (prop === '__proto__' ||
55
+ prop === 'constructor' ||
56
+ prop === 'prototype') {
57
+ return false;
58
+ }
59
+ const taskEnv = envStorage.getStore();
60
+ if (taskEnv) {
61
+ taskEnv[deletedKeysSymbol]?.delete(prop);
62
+ taskEnv[prop] = String(value);
63
+ return true;
64
+ }
65
+ target[prop] = String(value);
66
+ return true;
67
+ }
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion, @typescript-eslint/no-unsafe-assignment
69
+ target[prop] = value;
70
+ return true;
71
+ },
72
+ deleteProperty(target, prop) {
73
+ if (typeof prop === 'string') {
74
+ if (prop === '__proto__' ||
75
+ prop === 'constructor' ||
76
+ prop === 'prototype') {
77
+ return false;
78
+ }
79
+ const taskEnv = envStorage.getStore();
80
+ if (taskEnv) {
81
+ delete taskEnv[prop];
82
+ (taskEnv[deletedKeysSymbol] ??= new Set()).add(prop);
83
+ return true;
84
+ }
85
+ delete target[prop];
86
+ return true;
87
+ }
88
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion
89
+ return delete target[prop];
90
+ },
91
+ ownKeys(target) {
92
+ const taskEnv = envStorage.getStore();
93
+ if (taskEnv) {
94
+ const keys = new Set([
95
+ ...Object.getOwnPropertyNames(target),
96
+ ...Object.getOwnPropertySymbols(target),
97
+ ...Object.keys(taskEnv),
98
+ ]);
99
+ taskEnv[deletedKeysSymbol]?.forEach((key) => {
100
+ keys.delete(key);
101
+ });
102
+ return Array.from(keys);
103
+ }
104
+ return [
105
+ ...Object.getOwnPropertyNames(target),
106
+ ...Object.getOwnPropertySymbols(target),
107
+ ];
108
+ },
109
+ getOwnPropertyDescriptor(target, prop) {
110
+ const taskEnv = envStorage.getStore();
111
+ if (taskEnv && typeof prop === 'string') {
112
+ const deleted = taskEnv[deletedKeysSymbol];
113
+ if (deleted?.has(prop)) {
114
+ return undefined;
115
+ }
116
+ if (Object.prototype.hasOwnProperty.call(taskEnv, prop)) {
117
+ return {
118
+ value: taskEnv[prop],
119
+ writable: true,
120
+ enumerable: true,
121
+ configurable: true,
122
+ };
123
+ }
124
+ }
125
+ return Object.getOwnPropertyDescriptor(target, prop);
126
+ },
127
+ defineProperty(target, prop, descriptor) {
128
+ if (typeof prop === 'string') {
129
+ if (prop === '__proto__' ||
130
+ prop === 'constructor' ||
131
+ prop === 'prototype') {
132
+ return false;
133
+ }
134
+ const taskEnv = envStorage.getStore();
135
+ if (taskEnv) {
136
+ taskEnv[deletedKeysSymbol]?.delete(prop);
137
+ taskEnv[prop] =
138
+ descriptor.value !== undefined ? String(descriptor.value) : undefined;
139
+ return true;
140
+ }
141
+ }
142
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-type-assertion
143
+ Object.defineProperty(target, prop, descriptor);
144
+ return true;
145
+ },
146
+ });
147
+ Object.defineProperty(process, 'env', {
148
+ value: envProxy,
149
+ writable: false,
150
+ configurable: true,
151
+ });
152
+ // NOTE: Monkey-patching process.cwd and process.chdir via AsyncLocalStorage is a robust way
153
+ // to simulate workspace isolation in a concurrent server. However, please be aware of a critical
154
+ // limitation: Node.js native C++ APIs (such as fs.readFileSync, fs.writeFile, etc.) and child
155
+ // process spawning APIs (like child_process.spawn) resolve relative paths using the OS-level
156
+ // working directory of the process, NOT the JS-level process.cwd() function.
157
+ // To prevent cross-task interference, all file paths in the core package must be resolved to
158
+ // absolute paths using path.resolve/path.join relative to config.getTargetDir() or config.getCwd()
159
+ // before being passed to native APIs.
160
+ const originalCwd = process.cwd;
161
+ process.cwd = function () {
162
+ const taskEnv = envStorage.getStore();
163
+ if (taskEnv && taskEnv[cwdSymbol]) {
164
+ return taskEnv[cwdSymbol];
165
+ }
166
+ return originalCwd.call(process);
167
+ };
168
+ const originalChdir = process.chdir;
169
+ process.chdir = function (directory) {
170
+ const taskEnv = envStorage.getStore();
171
+ if (taskEnv) {
172
+ const resolved = path.resolve(process.cwd(), directory);
173
+ try {
174
+ const stats = fs.statSync(resolved);
175
+ if (!stats.isDirectory()) {
176
+ const err = new Error("ENOTDIR: not a directory, chdir '" + resolved + "'");
177
+ err.code = 'ENOTDIR';
178
+ throw err;
179
+ }
180
+ }
181
+ catch (err) {
182
+ if (err &&
183
+ typeof err === 'object' &&
184
+ 'code' in err &&
185
+ err.code === 'ENOENT') {
186
+ const chdirErr = new Error("ENOENT: no such file or directory, chdir '" + resolved + "'");
187
+ chdirErr.code = 'ENOENT';
188
+ throw chdirErr;
189
+ }
190
+ throw err;
191
+ }
192
+ taskEnv[cwdSymbol] = resolved;
193
+ return;
194
+ }
195
+ return originalChdir.call(process, directory);
196
+ };
197
+ export function getEnv(key) {
198
+ return process.env[key];
199
+ }
200
+ export async function loadConfig(settings, extensionLoader, taskId, trusted = false, workspaceDir = process.cwd()) {
201
+ const workspaceEnv = await loadEnvironment(trusted, workspaceDir);
202
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
203
+ const envVars = { ...process.env };
204
+ Object.assign(envVars, workspaceEnv);
205
+ const getEnvLocal = (key) => envVars[key];
15
206
  const folderTrust = settings.folderTrust === true ||
16
- process.env['GEMINI_FOLDER_TRUST'] === 'true';
17
- let checkpointing = process.env['CHECKPOINTING']
18
- ? process.env['CHECKPOINTING'] === 'true'
207
+ getEnvLocal('GEMINI_FOLDER_TRUST') === 'true';
208
+ let checkpointing = getEnvLocal('CHECKPOINTING')
209
+ ? getEnvLocal('CHECKPOINTING') === 'true'
19
210
  : settings.checkpointing?.enabled;
20
211
  if (checkpointing) {
21
212
  if (!(await GitService.verifyGitAvailability())) {
@@ -23,7 +214,7 @@ export async function loadConfig(settings, extensionLoader, taskId, trusted = fa
23
214
  checkpointing = false;
24
215
  }
25
216
  }
26
- const approvalMode = process.env['GEMINI_YOLO_MODE'] === 'true'
217
+ const approvalMode = getEnvLocal('GEMINI_YOLO_MODE') === 'true'
27
218
  ? ApprovalMode.YOLO
28
219
  : ApprovalMode.DEFAULT;
29
220
  const policySettings = {
@@ -44,8 +235,9 @@ export async function loadConfig(settings, extensionLoader, taskId, trusted = fa
44
235
  embeddingModel: DEFAULT_GEMINI_EMBEDDING_MODEL,
45
236
  sandbox: undefined, // Sandbox might not be relevant for a server-side agent
46
237
  targetDir: workspaceDir, // Or a specific directory the agent operates on
47
- debugMode: process.env['DEBUG'] === 'true' || false,
238
+ debugMode: getEnvLocal('DEBUG') === 'true' || false,
48
239
  question: '', // Not used in server mode directly like CLI
240
+ env: envVars,
49
241
  coreTools: settings.tools?.core || undefined,
50
242
  excludeTools: settings.tools?.exclude || undefined,
51
243
  allowedTools: settings.tools?.allowed || undefined,
@@ -58,7 +250,7 @@ export async function loadConfig(settings, extensionLoader, taskId, trusted = fa
58
250
  enabled: settings.telemetry?.enabled,
59
251
  // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
60
252
  target: settings.telemetry?.target,
61
- otlpEndpoint: process.env['OTEL_EXPORTER_OTLP_ENDPOINT'] ??
253
+ otlpEndpoint: getEnvLocal('OTEL_EXPORTER_OTLP_ENDPOINT') ??
62
254
  settings.telemetry?.otlpEndpoint,
63
255
  logPrompts: settings.telemetry?.logPrompts,
64
256
  },
@@ -69,8 +261,8 @@ export async function loadConfig(settings, extensionLoader, taskId, trusted = fa
69
261
  enableRecursiveFileSearch: settings.fileFiltering?.enableRecursiveFileSearch,
70
262
  customIgnoreFilePaths: [
71
263
  ...(settings.fileFiltering?.customIgnoreFilePaths || []),
72
- ...(process.env['CUSTOM_IGNORE_FILE_PATHS']
73
- ? process.env['CUSTOM_IGNORE_FILE_PATHS'].split(path.delimiter)
264
+ ...(getEnvLocal('CUSTOM_IGNORE_FILE_PATHS')
265
+ ? getEnvLocal('CUSTOM_IGNORE_FILE_PATHS').split(path.delimiter)
74
266
  : []),
75
267
  ],
76
268
  },
@@ -116,18 +308,19 @@ export async function loadConfig(settings, extensionLoader, taskId, trusted = fa
116
308
  await config.initialize();
117
309
  await config.waitForMcpInit();
118
310
  startupProfiler.flush(config);
119
- await refreshAuthentication(config, 'Config');
311
+ await refreshAuthentication(config, 'Config', envVars);
120
312
  return config;
121
313
  }
122
314
  export function setIsTrusted(agentSettings) {
123
- if (INITIAL_FOLDER_TRUST !== undefined) {
124
- return INITIAL_FOLDER_TRUST === 'true';
315
+ const folderTrustEnv = getEnv('GEMINI_FOLDER_TRUST');
316
+ if (folderTrustEnv !== undefined) {
317
+ return folderTrustEnv === 'true';
125
318
  }
126
319
  return !!agentSettings?.isTrusted;
127
320
  }
128
- export function setTargetDir(agentSettings) {
321
+ export async function setTargetDir(agentSettings) {
129
322
  const originalCWD = process.cwd();
130
- const targetDir = process.env['CODER_AGENT_WORKSPACE_PATH'] ??
323
+ const targetDir = getEnv('CODER_AGENT_WORKSPACE_PATH') ??
131
324
  (agentSettings?.kind === CoderAgentEvent.StateAgentSettingsEvent
132
325
  ? agentSettings.workspacePath
133
326
  : undefined);
@@ -136,51 +329,154 @@ export function setTargetDir(agentSettings) {
136
329
  }
137
330
  logger.info(`[CoderAgentExecutor] Overriding workspace path to: ${targetDir}`);
138
331
  try {
139
- const resolvedPath = path.resolve(targetDir);
140
- process.chdir(resolvedPath);
332
+ let resolvedPath;
333
+ try {
334
+ resolvedPath = resolveToRealPath(targetDir);
335
+ }
336
+ catch (err) {
337
+ if (err &&
338
+ typeof err === 'object' &&
339
+ 'code' in err &&
340
+ err.code === 'ENOENT') {
341
+ const parentDir = path.dirname(path.resolve(targetDir));
342
+ resolvedPath = path.join(resolveToRealPath(parentDir), path.basename(targetDir));
343
+ }
344
+ else {
345
+ throw err;
346
+ }
347
+ }
348
+ const isTestEnv = process.env['VITEST'] === 'true' ||
349
+ process.env['NODE_ENV'] === 'test' ||
350
+ process.argv.some((arg) => arg.includes('vitest')) ||
351
+ resolvedPath.startsWith(resolveToRealPath(tmpdir()));
352
+ const allowedRoot = resolveToRealPath(getEnv('CODER_AGENT_ALLOWED_ROOT') ||
353
+ (isTestEnv ? path.parse(resolvedPath).root : homedir()));
354
+ const relative = path.relative(allowedRoot, resolvedPath);
355
+ if (relative.startsWith('..') || path.isAbsolute(relative)) {
356
+ throw new Error(`Workspace path ${resolvedPath} is outside the allowed root directory`);
357
+ }
358
+ let stats;
359
+ try {
360
+ stats = await fs.promises.stat(resolvedPath);
361
+ }
362
+ catch (err) {
363
+ if (err &&
364
+ typeof err === 'object' &&
365
+ 'code' in err &&
366
+ err.code === 'ENOENT') {
367
+ if (isTestEnv) {
368
+ await fs.promises.mkdir(resolvedPath, { recursive: true });
369
+ stats = await fs.promises.stat(resolvedPath);
370
+ }
371
+ else {
372
+ throw new Error(`Workspace path ${resolvedPath} does not exist`);
373
+ }
374
+ }
375
+ else {
376
+ throw err;
377
+ }
378
+ }
379
+ if (!stats.isDirectory()) {
380
+ throw new Error(`Workspace path ${resolvedPath} is not a directory`);
381
+ }
141
382
  return resolvedPath;
142
383
  }
143
384
  catch (e) {
144
- logger.error(`[CoderAgentExecutor] Error resolving workspace path: ${e}, returning original os.cwd()`);
145
- return originalCWD;
385
+ logger.error(`[CoderAgentExecutor] Error resolving workspace path: ${e}`);
386
+ throw e;
146
387
  }
147
388
  }
148
- export function loadEnvironment() {
149
- const envFilePath = findEnvFile(process.cwd());
389
+ export async function loadEnvironment(isTrusted = false, workspacePath = process.cwd()) {
390
+ // For untrusted workspaces, we completely bypass workspace-level .env loading
391
+ // and only load environment variables from the user's trusted home directory.
392
+ let envFilePath = null;
393
+ if (isTrusted) {
394
+ envFilePath = await findEnvFile(workspacePath);
395
+ }
396
+ else {
397
+ const homeGeminiEnvPath = path.join(homedir(), GEMINI_DIR, '.env');
398
+ try {
399
+ await fs.promises.access(homeGeminiEnvPath);
400
+ envFilePath = homeGeminiEnvPath;
401
+ }
402
+ catch {
403
+ const homeEnvPath = path.join(homedir(), '.env');
404
+ try {
405
+ await fs.promises.access(homeEnvPath);
406
+ envFilePath = homeEnvPath;
407
+ }
408
+ catch {
409
+ // Ignore
410
+ }
411
+ }
412
+ }
413
+ const envVars = {};
150
414
  if (envFilePath) {
151
- dotenv.config({ path: envFilePath, override: true });
415
+ try {
416
+ const content = await fs.promises.readFile(envFilePath, 'utf-8');
417
+ const parsed = dotenv.parse(content);
418
+ for (const key in parsed) {
419
+ if (Object.prototype.hasOwnProperty.call(parsed, key) &&
420
+ key !== '__proto__' &&
421
+ key !== 'constructor' &&
422
+ key !== 'prototype') {
423
+ envVars[key] = parsed[key];
424
+ }
425
+ }
426
+ }
427
+ catch {
428
+ // Ignore errors
429
+ }
152
430
  }
431
+ return envVars;
153
432
  }
154
- function findEnvFile(startDir) {
433
+ async function findEnvFile(startDir) {
155
434
  let currentDir = path.resolve(startDir);
156
435
  while (true) {
157
436
  // prefer gemini-specific .env under GEMINI_DIR
158
437
  const geminiEnvPath = path.join(currentDir, GEMINI_DIR, '.env');
159
- if (fs.existsSync(geminiEnvPath)) {
438
+ try {
439
+ await fs.promises.access(geminiEnvPath);
160
440
  return geminiEnvPath;
161
441
  }
442
+ catch {
443
+ // Ignore
444
+ }
162
445
  const envPath = path.join(currentDir, '.env');
163
- if (fs.existsSync(envPath)) {
446
+ try {
447
+ await fs.promises.access(envPath);
164
448
  return envPath;
165
449
  }
450
+ catch {
451
+ // Ignore
452
+ }
166
453
  const parentDir = path.dirname(currentDir);
167
454
  if (parentDir === currentDir || !parentDir) {
168
- // check .env under home as fallback, again preferring gemini-specific .env
169
- const homeGeminiEnvPath = path.join(process.cwd(), GEMINI_DIR, '.env');
170
- if (fs.existsSync(homeGeminiEnvPath)) {
171
- return homeGeminiEnvPath;
172
- }
173
- const homeEnvPath = path.join(homedir(), '.env');
174
- if (fs.existsSync(homeEnvPath)) {
175
- return homeEnvPath;
176
- }
177
- return null;
455
+ break;
178
456
  }
179
457
  currentDir = parentDir;
180
458
  }
459
+ // check .env under home as fallback, again preferring gemini-specific .env
460
+ const homeGeminiEnvPath = path.join(homedir(), GEMINI_DIR, '.env');
461
+ try {
462
+ await fs.promises.access(homeGeminiEnvPath);
463
+ return homeGeminiEnvPath;
464
+ }
465
+ catch {
466
+ // Ignore
467
+ }
468
+ const homeEnvPath = path.join(homedir(), '.env');
469
+ try {
470
+ await fs.promises.access(homeEnvPath);
471
+ return homeEnvPath;
472
+ }
473
+ catch {
474
+ return null;
475
+ }
181
476
  }
182
- async function refreshAuthentication(config, logPrefix) {
183
- if (process.env['USE_CCPA']) {
477
+ async function refreshAuthentication(config, logPrefix, envVars) {
478
+ const getEnvLocal = (key) => envVars[key];
479
+ if (getEnvLocal('USE_CCPA')) {
184
480
  logger.info(`[${logPrefix}] Using CCPA Auth:`);
185
481
  logger.info(`[${logPrefix}] Attempting COMPUTE_ADC first.`);
186
482
  try {
@@ -190,7 +486,7 @@ async function refreshAuthentication(config, logPrefix) {
190
486
  catch (adcError) {
191
487
  const adcMessage = adcError instanceof Error ? adcError.message : String(adcError);
192
488
  logger.info(`[${logPrefix}] COMPUTE_ADC failed or not available: ${adcMessage}`);
193
- const useComputeAdc = process.env['GEMINI_CLI_USE_COMPUTE_ADC'] === 'true';
489
+ const useComputeAdc = getEnvLocal('GEMINI_CLI_USE_COMPUTE_ADC') === 'true';
194
490
  const isHeadless = isHeadlessMode();
195
491
  if (isHeadless || useComputeAdc) {
196
492
  const reason = isHeadless
@@ -210,11 +506,11 @@ async function refreshAuthentication(config, logPrefix) {
210
506
  throw e;
211
507
  }
212
508
  }
213
- logger.info(`[${logPrefix}] GOOGLE_CLOUD_PROJECT: ${process.env['GOOGLE_CLOUD_PROJECT']}`);
509
+ logger.info(`[${logPrefix}] GOOGLE_CLOUD_PROJECT: ${getEnvLocal('GOOGLE_CLOUD_PROJECT')}`);
214
510
  }
215
- else if (process.env['GEMINI_API_KEY']) {
511
+ else if (getEnvLocal('GEMINI_API_KEY')) {
216
512
  logger.info(`[${logPrefix}] Using Gemini API Key`);
217
- await config.refreshAuth(AuthType.USE_GEMINI);
513
+ await config.refreshAuth(AuthType.USE_GEMINI, getEnvLocal('GEMINI_API_KEY'));
218
514
  }
219
515
  else {
220
516
  const errorMessage = `[${logPrefix}] Unable to set GeneratorConfig. Please provide a GEMINI_API_KEY or set USE_CCPA.`;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,5 @@ import { type ExtensionInstallMetadata, type GeminiCLIExtension } from '@google/
7
7
  export declare const EXTENSIONS_DIRECTORY_NAME: string;
8
8
  export declare const EXTENSIONS_CONFIG_FILENAME = "gemini-extension.json";
9
9
  export declare const INSTALL_METADATA_FILENAME = ".gemini-extension-install.json";
10
- export declare function loadExtensions(workspaceDir: string): GeminiCLIExtension[];
10
+ export declare function loadExtensions(workspaceDir: string, isTrusted?: boolean): GeminiCLIExtension[];
11
11
  export declare function loadInstallMetadata(extensionDir: string): ExtensionInstallMetadata | undefined;
@@ -11,9 +11,9 @@ import { logger } from '../utils/logger.js';
11
11
  export const EXTENSIONS_DIRECTORY_NAME = path.join(GEMINI_DIR, 'extensions');
12
12
  export const EXTENSIONS_CONFIG_FILENAME = 'gemini-extension.json';
13
13
  export const INSTALL_METADATA_FILENAME = '.gemini-extension-install.json';
14
- export function loadExtensions(workspaceDir) {
14
+ export function loadExtensions(workspaceDir, isTrusted = false) {
15
15
  const allExtensions = [
16
- ...loadExtensionsFromDir(workspaceDir),
16
+ ...(isTrusted ? loadExtensionsFromDir(workspaceDir) : []),
17
17
  ...loadExtensionsFromDir(homedir()),
18
18
  ];
19
19
  const uniqueExtensions = [];
@@ -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,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};