@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.
- package/dist/a2a-server.mjs +5584 -5182
- package/dist/src/agent/executor.d.ts +3 -2
- package/dist/src/agent/executor.js +340 -287
- package/dist/src/agent/executor.js.map +1 -1
- package/dist/src/agent/executor.test.js +14 -0
- package/dist/src/agent/executor.test.js.map +1 -1
- package/dist/src/agent/task.js +11 -6
- package/dist/src/agent/task.js.map +1 -1
- package/dist/src/config/config.d.ts +13 -3
- package/dist/src/config/config.js +339 -43
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +1 -1
- package/dist/src/config/extension.js +2 -2
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/rce_vulnerability.test.d.ts +6 -0
- package/dist/src/config/rce_vulnerability.test.js +80 -0
- package/dist/src/config/rce_vulnerability.test.js.map +1 -0
- package/dist/src/http/app.js +22 -4
- package/dist/src/http/app.js.map +1 -1
- package/dist/src/persistence/gcs.js +1 -1
- package/dist/src/persistence/gcs.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -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 {
|
|
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
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
17
|
-
let checkpointing =
|
|
18
|
-
?
|
|
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 =
|
|
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:
|
|
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:
|
|
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
|
-
...(
|
|
73
|
-
?
|
|
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
|
-
|
|
124
|
-
|
|
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 =
|
|
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
|
-
|
|
140
|
-
|
|
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}
|
|
145
|
-
|
|
385
|
+
logger.error(`[CoderAgentExecutor] Error resolving workspace path: ${e}`);
|
|
386
|
+
throw e;
|
|
146
387
|
}
|
|
147
388
|
}
|
|
148
|
-
export function loadEnvironment() {
|
|
149
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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: ${
|
|
509
|
+
logger.info(`[${logPrefix}] GOOGLE_CLOUD_PROJECT: ${getEnvLocal('GOOGLE_CLOUD_PROJECT')}`);
|
|
214
510
|
}
|
|
215
|
-
else if (
|
|
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":"AAAA;;;;GAIG;AAEH,0EAA0E;AAE1E,OAAO,EACL,UAAU,EAIV,OAAO,GACR,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAuB,CAAC;AAClE,MAAM,CAAC,MAAM,yBAAyB,GAAG,gCAAgC,CAAC;AAiB1E,MAAM,UAAU,cAAc,
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/config/extension.ts"],"names":[],"mappings":"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"}
|