@vybestack/llxprt-code-core 0.8.0 → 0.9.0-nightly.260120.c5843db0e
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/src/auth/token-store.d.ts +57 -0
- package/dist/src/auth/token-store.js +137 -0
- package/dist/src/auth/token-store.js.map +1 -1
- package/dist/src/code_assist/oauth-credential-storage.js +9 -4
- package/dist/src/code_assist/oauth-credential-storage.js.map +1 -1
- package/dist/src/config/config.d.ts +53 -8
- package/dist/src/config/config.js +106 -10
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/schedulerSingleton.js.map +1 -1
- package/dist/src/config/storage.d.ts +3 -0
- package/dist/src/config/storage.js +20 -0
- package/dist/src/config/storage.js.map +1 -1
- package/dist/src/core/client.d.ts +5 -0
- package/dist/src/core/client.js +18 -6
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/geminiChat.js +0 -2
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +6 -1
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/hooks/hookPlanner.d.ts +46 -0
- package/dist/src/hooks/hookPlanner.js +109 -0
- package/dist/src/hooks/hookPlanner.js.map +1 -0
- package/dist/src/hooks/hookRegistry.d.ts +87 -0
- package/dist/src/hooks/hookRegistry.js +199 -0
- package/dist/src/hooks/hookRegistry.js.map +1 -0
- package/dist/src/hooks/hookTranslator.d.ts +113 -0
- package/dist/src/hooks/hookTranslator.js +232 -0
- package/dist/src/hooks/hookTranslator.js.map +1 -0
- package/dist/src/hooks/index.d.ts +12 -0
- package/dist/src/hooks/index.js +14 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/types.d.ts +384 -0
- package/dist/src/hooks/types.js +284 -0
- package/dist/src/hooks/types.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +5 -0
- package/dist/src/ide/ide-client.js +7 -0
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/index.d.ts +8 -2
- package/dist/src/index.js +13 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +9 -9
- package/dist/src/mcp/oauth-provider.js +124 -42
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
- package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -1
- package/dist/src/models/hydration.d.ts +40 -0
- package/dist/src/models/hydration.js +148 -0
- package/dist/src/models/hydration.js.map +1 -0
- package/dist/src/models/index.d.ts +33 -0
- package/dist/src/models/index.js +46 -0
- package/dist/src/models/index.js.map +1 -0
- package/dist/src/models/profiles.d.ts +19 -0
- package/dist/src/models/profiles.js +83 -0
- package/dist/src/models/profiles.js.map +1 -0
- package/dist/src/models/provider-integration.d.ts +49 -0
- package/dist/src/models/provider-integration.js +162 -0
- package/dist/src/models/provider-integration.js.map +1 -0
- package/dist/src/models/registry.d.ts +137 -0
- package/dist/src/models/registry.js +321 -0
- package/dist/src/models/registry.js.map +1 -0
- package/dist/src/models/schema.d.ts +1173 -0
- package/dist/src/models/schema.js +166 -0
- package/dist/src/models/schema.js.map +1 -0
- package/dist/src/models/transformer.d.ts +21 -0
- package/dist/src/models/transformer.js +130 -0
- package/dist/src/models/transformer.js.map +1 -0
- package/dist/src/policy/config.d.ts +42 -38
- package/dist/src/policy/config.js +306 -93
- package/dist/src/policy/config.js.map +1 -1
- package/dist/src/policy/policies/discovered.toml +2 -2
- package/dist/src/policy/policies/read-only.toml +39 -16
- package/dist/src/policy/policies/write.toml +56 -45
- package/dist/src/policy/policies/yolo.toml +2 -1
- package/dist/src/policy/policy-engine.d.ts +7 -0
- package/dist/src/policy/policy-engine.js +11 -0
- package/dist/src/policy/policy-engine.js.map +1 -1
- package/dist/src/policy/toml-loader.d.ts +50 -24
- package/dist/src/policy/toml-loader.js +368 -137
- package/dist/src/policy/toml-loader.js.map +1 -1
- package/dist/src/policy/types.d.ts +49 -0
- package/dist/src/policy/types.js +11 -0
- package/dist/src/policy/types.js.map +1 -1
- package/dist/src/providers/IProviderManager.d.ts +7 -3
- package/dist/src/providers/ProviderManager.d.ts +2 -2
- package/dist/src/providers/ProviderManager.js +56 -1
- package/dist/src/providers/ProviderManager.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.js +15 -15
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.js +27 -25
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.js +15 -5
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai-responses/OpenAIResponsesProvider.d.ts +28 -29
- package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js +30 -100
- package/dist/src/providers/openai-responses/OpenAIResponsesProvider.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.d.ts +1 -0
- package/dist/src/services/fileDiscoveryService.js +17 -3
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/services/loopDetectionService.d.ts +2 -2
- package/dist/src/services/loopDetectionService.js +4 -4
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.d.ts +24 -0
- package/dist/src/services/shellExecutionService.js +119 -13
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/tools/ast-edit.d.ts +133 -0
- package/dist/src/tools/ast-edit.js +1833 -0
- package/dist/src/tools/ast-edit.js.map +1 -0
- package/dist/src/tools/delete_line_range.js +2 -2
- package/dist/src/tools/delete_line_range.js.map +1 -1
- package/dist/src/tools/diffOptions.d.ts +3 -3
- package/dist/src/tools/diffOptions.js +4 -4
- package/dist/src/tools/diffOptions.js.map +1 -1
- package/dist/src/tools/edit.js +3 -3
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/google-web-fetch.js +1 -5
- package/dist/src/tools/google-web-fetch.js.map +1 -1
- package/dist/src/tools/insert_at_line.js +2 -2
- package/dist/src/tools/insert_at_line.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +48 -12
- package/dist/src/tools/mcp-client-manager.js +191 -48
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +1 -0
- package/dist/src/tools/mcp-client.js +5 -0
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/memoryTool.js +2 -2
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.js +2 -2
- package/dist/src/tools/modifiable-tool.js.map +1 -1
- package/dist/src/tools/tool-error.d.ts +1 -0
- package/dist/src/tools/tool-error.js +1 -0
- package/dist/src/tools/tool-error.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +2 -21
- package/dist/src/tools/tool-registry.js +3 -81
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +10 -1
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/write-file.js +3 -3
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/utils/channel.d.ts +18 -0
- package/dist/src/utils/channel.js +49 -0
- package/dist/src/utils/channel.js.map +1 -0
- package/dist/src/utils/extensionLoader.d.ts +79 -0
- package/dist/src/utils/extensionLoader.js +162 -0
- package/dist/src/utils/extensionLoader.js.map +1 -0
- package/dist/src/utils/fetch.js +1 -6
- package/dist/src/utils/fetch.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.d.ts +9 -3
- package/dist/src/utils/gitIgnoreParser.js +105 -12
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/googleErrors.d.ts +104 -0
- package/dist/src/utils/googleErrors.js +165 -0
- package/dist/src/utils/googleErrors.js.map +1 -0
- package/dist/src/utils/googleQuotaErrors.d.ts +36 -0
- package/dist/src/utils/googleQuotaErrors.js +149 -0
- package/dist/src/utils/googleQuotaErrors.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +13 -0
- package/dist/src/utils/memoryDiscovery.js +137 -0
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/package.d.ts +12 -0
- package/dist/src/utils/package.js +15 -0
- package/dist/src/utils/package.js.map +1 -0
- package/dist/src/utils/shell-parser.js +37 -7
- package/dist/src/utils/shell-parser.js.map +1 -1
- package/dist/src/utils/shell-utils.js +16 -21
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/package.json +17 -1
- package/dist/src/providers/openai-responses/CODEX_PROMPT.d.ts +0 -34
- package/dist/src/providers/openai-responses/CODEX_PROMPT.js +0 -346
- package/dist/src/providers/openai-responses/CODEX_PROMPT.js.map +0 -1
|
@@ -46,6 +46,26 @@ export interface TokenStore {
|
|
|
46
46
|
* @returns Bucket statistics if available, null otherwise
|
|
47
47
|
*/
|
|
48
48
|
getBucketStats(provider: string, bucket: string): Promise<BucketStats | null>;
|
|
49
|
+
/**
|
|
50
|
+
* Acquire a refresh lock for a provider to prevent concurrent refreshes
|
|
51
|
+
* @param provider - The provider name
|
|
52
|
+
* @param options - Optional configuration for lock behavior
|
|
53
|
+
* - waitMs: Maximum time to wait for lock
|
|
54
|
+
* - staleMs: Threshold for considering a lock stale
|
|
55
|
+
* - bucket: Optional bucket name for multi-account support
|
|
56
|
+
* @returns true if lock was acquired, false otherwise
|
|
57
|
+
*/
|
|
58
|
+
acquireRefreshLock(provider: string, options?: {
|
|
59
|
+
waitMs?: number;
|
|
60
|
+
staleMs?: number;
|
|
61
|
+
bucket?: string;
|
|
62
|
+
}): Promise<boolean>;
|
|
63
|
+
/**
|
|
64
|
+
* Release the refresh lock for a provider
|
|
65
|
+
* @param provider - The provider name
|
|
66
|
+
* @param bucket - Optional bucket name for multi-account support
|
|
67
|
+
*/
|
|
68
|
+
releaseRefreshLock(provider: string, bucket?: string): Promise<void>;
|
|
49
69
|
}
|
|
50
70
|
/**
|
|
51
71
|
* Implementation of multi-provider token storage
|
|
@@ -53,6 +73,8 @@ export interface TokenStore {
|
|
|
53
73
|
*/
|
|
54
74
|
export declare class MultiProviderTokenStore implements TokenStore {
|
|
55
75
|
private readonly basePath;
|
|
76
|
+
private readonly DEFAULT_LOCK_WAIT_MS;
|
|
77
|
+
private readonly DEFAULT_STALE_THRESHOLD_MS;
|
|
56
78
|
constructor(basePath?: string);
|
|
57
79
|
/**
|
|
58
80
|
* Save an OAuth token for a specific provider
|
|
@@ -93,4 +115,39 @@ export declare class MultiProviderTokenStore implements TokenStore {
|
|
|
93
115
|
* Rejects characters that could cause issues with file paths
|
|
94
116
|
*/
|
|
95
117
|
private validateBucketName;
|
|
118
|
+
/**
|
|
119
|
+
* Acquire a refresh lock for a provider to prevent concurrent token refreshes
|
|
120
|
+
* Implements the lock mechanism required for issue #1159
|
|
121
|
+
*
|
|
122
|
+
* @param provider - The provider name
|
|
123
|
+
* @param options - Configuration for lock behavior
|
|
124
|
+
* - waitMs: Maximum time to wait for lock (default: 10s)
|
|
125
|
+
* - staleMs: Threshold for considering a lock stale (default: 30s)
|
|
126
|
+
* - bucket: Optional bucket name for multi-account support
|
|
127
|
+
* @returns true if lock was acquired, false otherwise
|
|
128
|
+
*/
|
|
129
|
+
acquireRefreshLock(provider: string, options?: {
|
|
130
|
+
waitMs?: number;
|
|
131
|
+
staleMs?: number;
|
|
132
|
+
bucket?: string;
|
|
133
|
+
}): Promise<boolean>;
|
|
134
|
+
/**
|
|
135
|
+
* Release the refresh lock for a provider
|
|
136
|
+
*
|
|
137
|
+
* @param provider - The provider name
|
|
138
|
+
* @param bucket - Optional bucket name for multi-account support
|
|
139
|
+
*/
|
|
140
|
+
releaseRefreshLock(provider: string, bucket?: string): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Create a lock file with current process info
|
|
143
|
+
*/
|
|
144
|
+
private createLock;
|
|
145
|
+
/**
|
|
146
|
+
* Break a stale lock by removing it
|
|
147
|
+
*/
|
|
148
|
+
private breakLock;
|
|
149
|
+
/**
|
|
150
|
+
* Get the lock file path for a provider (with optional bucket support)
|
|
151
|
+
*/
|
|
152
|
+
private getLockPath;
|
|
96
153
|
}
|
|
@@ -13,6 +13,8 @@ import { OAuthTokenSchema, } from './types.js';
|
|
|
13
13
|
*/
|
|
14
14
|
export class MultiProviderTokenStore {
|
|
15
15
|
basePath;
|
|
16
|
+
DEFAULT_LOCK_WAIT_MS = 10000; // 10 seconds
|
|
17
|
+
DEFAULT_STALE_THRESHOLD_MS = 30000; // 30 seconds
|
|
16
18
|
constructor(basePath) {
|
|
17
19
|
this.basePath = basePath ?? join(homedir(), '.llxprt', 'oauth');
|
|
18
20
|
}
|
|
@@ -223,5 +225,140 @@ export class MultiProviderTokenStore {
|
|
|
223
225
|
throw new Error(`Invalid bucket name: "${bucket}". Bucket names cannot contain: : / \\ < > " | ? *`);
|
|
224
226
|
}
|
|
225
227
|
}
|
|
228
|
+
/**
|
|
229
|
+
* Acquire a refresh lock for a provider to prevent concurrent token refreshes
|
|
230
|
+
* Implements the lock mechanism required for issue #1159
|
|
231
|
+
*
|
|
232
|
+
* @param provider - The provider name
|
|
233
|
+
* @param options - Configuration for lock behavior
|
|
234
|
+
* - waitMs: Maximum time to wait for lock (default: 10s)
|
|
235
|
+
* - staleMs: Threshold for considering a lock stale (default: 30s)
|
|
236
|
+
* - bucket: Optional bucket name for multi-account support
|
|
237
|
+
* @returns true if lock was acquired, false otherwise
|
|
238
|
+
*/
|
|
239
|
+
async acquireRefreshLock(provider, options) {
|
|
240
|
+
// Validate bucket name if provided
|
|
241
|
+
if (options?.bucket) {
|
|
242
|
+
this.validateBucketName(options.bucket);
|
|
243
|
+
}
|
|
244
|
+
const lockPath = this.getLockPath(provider, options?.bucket);
|
|
245
|
+
const waitMs = options?.waitMs ?? this.DEFAULT_LOCK_WAIT_MS;
|
|
246
|
+
const staleMs = options?.staleMs ?? this.DEFAULT_STALE_THRESHOLD_MS;
|
|
247
|
+
const startTime = Date.now();
|
|
248
|
+
// Ensure directory exists
|
|
249
|
+
await this.ensureDirectory();
|
|
250
|
+
while (Date.now() - startTime < waitMs) {
|
|
251
|
+
try {
|
|
252
|
+
// Try to read existing lock
|
|
253
|
+
const lockContent = await fs.readFile(lockPath, 'utf8');
|
|
254
|
+
const lockInfo = JSON.parse(lockContent);
|
|
255
|
+
const lockAge = Date.now() - lockInfo.timestamp;
|
|
256
|
+
// Check if lock is stale
|
|
257
|
+
if (lockAge > staleMs) {
|
|
258
|
+
// Lock is stale, break it and acquire
|
|
259
|
+
await this.breakLock(lockPath);
|
|
260
|
+
// Continue to next iteration to try creating lock
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
// Lock is recent, wait and retry
|
|
264
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
// Handle different error cases
|
|
268
|
+
if (error &&
|
|
269
|
+
typeof error === 'object' &&
|
|
270
|
+
'code' in error &&
|
|
271
|
+
error.code === 'ENOENT') {
|
|
272
|
+
// Lock file doesn't exist, try to create it
|
|
273
|
+
const created = await this.createLock(lockPath);
|
|
274
|
+
if (created) {
|
|
275
|
+
return true;
|
|
276
|
+
}
|
|
277
|
+
// EEXIST race - another process created it first, continue waiting
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
// If JSON parse fails (corrupted lock), break it and retry
|
|
281
|
+
await this.breakLock(lockPath);
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
// Timeout waiting for lock
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Release the refresh lock for a provider
|
|
290
|
+
*
|
|
291
|
+
* @param provider - The provider name
|
|
292
|
+
* @param bucket - Optional bucket name for multi-account support
|
|
293
|
+
*/
|
|
294
|
+
async releaseRefreshLock(provider, bucket) {
|
|
295
|
+
// Validate bucket name if provided
|
|
296
|
+
if (bucket) {
|
|
297
|
+
this.validateBucketName(bucket);
|
|
298
|
+
}
|
|
299
|
+
const lockPath = this.getLockPath(provider, bucket);
|
|
300
|
+
try {
|
|
301
|
+
await fs.unlink(lockPath);
|
|
302
|
+
}
|
|
303
|
+
catch (error) {
|
|
304
|
+
// Ignore errors if lock doesn't exist
|
|
305
|
+
if (error &&
|
|
306
|
+
typeof error === 'object' &&
|
|
307
|
+
'code' in error &&
|
|
308
|
+
error.code !== 'ENOENT') {
|
|
309
|
+
throw error;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Create a lock file with current process info
|
|
315
|
+
*/
|
|
316
|
+
async createLock(lockPath) {
|
|
317
|
+
try {
|
|
318
|
+
const lockInfo = {
|
|
319
|
+
pid: process.pid,
|
|
320
|
+
timestamp: Date.now(),
|
|
321
|
+
};
|
|
322
|
+
await fs.writeFile(lockPath, JSON.stringify(lockInfo), {
|
|
323
|
+
flag: 'wx', // Exclusive write - fails if file exists
|
|
324
|
+
mode: 0o600,
|
|
325
|
+
});
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
// Lock already exists, another process beat us to it
|
|
330
|
+
if (error &&
|
|
331
|
+
typeof error === 'object' &&
|
|
332
|
+
'code' in error &&
|
|
333
|
+
error.code === 'EEXIST') {
|
|
334
|
+
return false;
|
|
335
|
+
}
|
|
336
|
+
throw error;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Break a stale lock by removing it
|
|
341
|
+
*/
|
|
342
|
+
async breakLock(lockPath) {
|
|
343
|
+
try {
|
|
344
|
+
await fs.unlink(lockPath);
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
// Ignore if already removed
|
|
348
|
+
if (error &&
|
|
349
|
+
typeof error === 'object' &&
|
|
350
|
+
'code' in error &&
|
|
351
|
+
error.code !== 'ENOENT') {
|
|
352
|
+
throw error;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Get the lock file path for a provider (with optional bucket support)
|
|
358
|
+
*/
|
|
359
|
+
getLockPath(provider, bucket) {
|
|
360
|
+
const bucketSuffix = bucket && bucket !== 'default' ? `-${bucket}` : '';
|
|
361
|
+
return join(this.basePath, `${provider}${bucketSuffix}-refresh.lock`);
|
|
362
|
+
}
|
|
226
363
|
}
|
|
227
364
|
//# sourceMappingURL=token-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-store.js","sourceRoot":"","sources":["../../../src/auth/token-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAEL,gBAAgB,GAEjB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"token-store.js","sourceRoot":"","sources":["../../../src/auth/token-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { OAUTH_FILE, Storage } from '../config/storage.js';
|
|
|
8
8
|
import * as path from 'node:path';
|
|
9
9
|
import * as os from 'node:os';
|
|
10
10
|
import { promises as fs } from 'node:fs';
|
|
11
|
+
import { coreEvents } from '../utils/events.js';
|
|
11
12
|
const KEYCHAIN_SERVICE_NAME = 'llxprt-code-oauth';
|
|
12
13
|
const MAIN_ACCOUNT_KEY = 'main-account';
|
|
13
14
|
function getLegacyCredentialPaths() {
|
|
@@ -47,8 +48,10 @@ export class OAuthCredentialStorage {
|
|
|
47
48
|
return await this.migrateFromFileStorage();
|
|
48
49
|
}
|
|
49
50
|
catch (error) {
|
|
50
|
-
|
|
51
|
-
throw
|
|
51
|
+
coreEvents.emitFeedback('error', 'Failed to load OAuth credentials', error);
|
|
52
|
+
throw error instanceof Error
|
|
53
|
+
? error
|
|
54
|
+
: new Error('Failed to load OAuth credentials');
|
|
52
55
|
}
|
|
53
56
|
}
|
|
54
57
|
/**
|
|
@@ -82,8 +85,10 @@ export class OAuthCredentialStorage {
|
|
|
82
85
|
await Promise.all(getLegacyCredentialPaths().map((legacyPath) => fs.rm(legacyPath, { force: true }).catch(() => { })));
|
|
83
86
|
}
|
|
84
87
|
catch (error) {
|
|
85
|
-
|
|
86
|
-
throw
|
|
88
|
+
coreEvents.emitFeedback('error', 'Failed to clear OAuth credentials', error);
|
|
89
|
+
throw error instanceof Error
|
|
90
|
+
? error
|
|
91
|
+
: new Error('Failed to clear OAuth credentials');
|
|
87
92
|
}
|
|
88
93
|
}
|
|
89
94
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-credential-storage.js","sourceRoot":"","sources":["../../../src/code_assist/oauth-credential-storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-credential-storage.js","sourceRoot":"","sources":["../../../src/code_assist/oauth-credential-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ import { PromptRegistry } from '../prompts/prompt-registry.js';
|
|
|
8
8
|
import { ToolRegistry } from '../tools/tool-registry.js';
|
|
9
9
|
import type { SubagentSchedulerFactory } from '../core/subagentScheduler.js';
|
|
10
10
|
import { GeminiClient } from '../core/client.js';
|
|
11
|
+
import type { HookDefinition, HookEventName } from '../hooks/types.js';
|
|
11
12
|
import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
|
|
12
13
|
import { GitService } from '../services/gitService.js';
|
|
13
14
|
import { OutputFormat } from '../utils/output-format.js';
|
|
@@ -30,6 +31,8 @@ import type { EventEmitter } from 'node:events';
|
|
|
30
31
|
import { MessageBus } from '../confirmation-bus/message-bus.js';
|
|
31
32
|
import { PolicyEngine } from '../policy/policy-engine.js';
|
|
32
33
|
import type { PolicyEngineConfig } from '../policy/types.js';
|
|
34
|
+
import { type ExtensionLoader } from '../utils/extensionLoader.js';
|
|
35
|
+
import { McpClientManager } from '../tools/mcp-client-manager.js';
|
|
33
36
|
export interface RedactionConfig {
|
|
34
37
|
redactApiKeys: boolean;
|
|
35
38
|
redactCredentials: boolean;
|
|
@@ -111,6 +114,9 @@ export interface GeminiCLIExtension {
|
|
|
111
114
|
mcpServers?: Record<string, MCPServerConfig>;
|
|
112
115
|
contextFiles: string[];
|
|
113
116
|
excludeTools?: string[];
|
|
117
|
+
hooks?: {
|
|
118
|
+
[K in HookEventName]?: HookDefinition[];
|
|
119
|
+
};
|
|
114
120
|
}
|
|
115
121
|
export interface ExtensionInstallMetadata {
|
|
116
122
|
source: string;
|
|
@@ -147,11 +153,12 @@ export declare class MCPServerConfig {
|
|
|
147
153
|
readonly includeTools?: string[] | undefined;
|
|
148
154
|
readonly excludeTools?: string[] | undefined;
|
|
149
155
|
readonly extensionName?: string | undefined;
|
|
156
|
+
readonly extension?: GeminiCLIExtension | undefined;
|
|
150
157
|
readonly oauth?: MCPOAuthConfig | undefined;
|
|
151
158
|
readonly authProviderType?: AuthProviderType | undefined;
|
|
152
159
|
readonly targetAudience?: string | undefined;
|
|
153
160
|
readonly targetServiceAccount?: string | undefined;
|
|
154
|
-
constructor(command?: string | undefined, args?: string[] | undefined, env?: Record<string, string> | undefined, cwd?: string | undefined, url?: string | undefined, httpUrl?: string | undefined, headers?: Record<string, string> | undefined, tcp?: string | undefined, timeout?: number | undefined, trust?: boolean | undefined, description?: string | undefined, includeTools?: string[] | undefined, excludeTools?: string[] | undefined, extensionName?: string | undefined, oauth?: MCPOAuthConfig | undefined, authProviderType?: AuthProviderType | undefined, targetAudience?: string | undefined, targetServiceAccount?: string | undefined);
|
|
161
|
+
constructor(command?: string | undefined, args?: string[] | undefined, env?: Record<string, string> | undefined, cwd?: string | undefined, url?: string | undefined, httpUrl?: string | undefined, headers?: Record<string, string> | undefined, tcp?: string | undefined, timeout?: number | undefined, trust?: boolean | undefined, description?: string | undefined, includeTools?: string[] | undefined, excludeTools?: string[] | undefined, extensionName?: string | undefined, extension?: GeminiCLIExtension | undefined, oauth?: MCPOAuthConfig | undefined, authProviderType?: AuthProviderType | undefined, targetAudience?: string | undefined, targetServiceAccount?: string | undefined);
|
|
155
162
|
}
|
|
156
163
|
export declare enum AuthProviderType {
|
|
157
164
|
DYNAMIC_DISCOVERY = "dynamic_discovery",
|
|
@@ -237,6 +244,10 @@ export interface ConfigParameters {
|
|
|
237
244
|
providerManager?: ProviderManager;
|
|
238
245
|
provider?: string;
|
|
239
246
|
extensions?: GeminiCLIExtension[];
|
|
247
|
+
extensionLoader?: ExtensionLoader;
|
|
248
|
+
enabledExtensions?: string[];
|
|
249
|
+
enableExtensionReloading?: boolean;
|
|
250
|
+
allowedMcpServers?: string[];
|
|
240
251
|
blockedMcpServers?: Array<{
|
|
241
252
|
name: string;
|
|
242
253
|
extensionName: string;
|
|
@@ -267,9 +278,17 @@ export interface ConfigParameters {
|
|
|
267
278
|
enableShellOutputEfficiency?: boolean;
|
|
268
279
|
continueSession?: boolean;
|
|
269
280
|
disableYoloMode?: boolean;
|
|
281
|
+
enableMessageBusIntegration?: boolean;
|
|
282
|
+
enableHooks?: boolean;
|
|
283
|
+
hooks?: {
|
|
284
|
+
[K in HookEventName]?: HookDefinition[];
|
|
285
|
+
};
|
|
270
286
|
}
|
|
271
287
|
export declare class Config {
|
|
272
288
|
private toolRegistry;
|
|
289
|
+
private mcpClientManager?;
|
|
290
|
+
private allowedMcpServers;
|
|
291
|
+
private blockedMcpServers;
|
|
273
292
|
private promptRegistry;
|
|
274
293
|
private readonly sessionId;
|
|
275
294
|
private readonly settingsService;
|
|
@@ -288,7 +307,7 @@ export declare class Config {
|
|
|
288
307
|
private readonly toolDiscoveryCommand;
|
|
289
308
|
private readonly toolCallCommand;
|
|
290
309
|
private readonly mcpServerCommand;
|
|
291
|
-
private
|
|
310
|
+
private mcpServers;
|
|
292
311
|
private userMemory;
|
|
293
312
|
private llxprtMdFileCount;
|
|
294
313
|
private llxprtMdFilePaths;
|
|
@@ -320,8 +339,8 @@ export declare class Config {
|
|
|
320
339
|
private readonly maxSessionTurns;
|
|
321
340
|
private readonly _activeExtensions;
|
|
322
341
|
private readonly listExtensions;
|
|
323
|
-
private readonly
|
|
324
|
-
private readonly
|
|
342
|
+
private readonly _extensionLoader;
|
|
343
|
+
private readonly enableExtensionReloading;
|
|
325
344
|
private providerManager?;
|
|
326
345
|
private profileManager?;
|
|
327
346
|
private subagentManager?;
|
|
@@ -373,6 +392,8 @@ export declare class Config {
|
|
|
373
392
|
private readonly enableShellOutputEfficiency;
|
|
374
393
|
private readonly continueSession;
|
|
375
394
|
private readonly disableYoloMode;
|
|
395
|
+
private readonly enableHooks;
|
|
396
|
+
private readonly hooks;
|
|
376
397
|
constructor(params: ConfigParameters);
|
|
377
398
|
/**
|
|
378
399
|
* Must only be called once, throws if called again.
|
|
@@ -402,11 +423,29 @@ export declare class Config {
|
|
|
402
423
|
getQuestion(): string | undefined;
|
|
403
424
|
getCoreTools(): string[] | undefined;
|
|
404
425
|
getAllowedTools(): string[] | undefined;
|
|
426
|
+
/**
|
|
427
|
+
* All the excluded tools from static configuration, loaded extensions, or
|
|
428
|
+
* other sources.
|
|
429
|
+
*
|
|
430
|
+
* May change over time.
|
|
431
|
+
*/
|
|
405
432
|
getExcludeTools(): string[] | undefined;
|
|
406
433
|
getToolDiscoveryCommand(): string | undefined;
|
|
407
434
|
getToolCallCommand(): string | undefined;
|
|
408
435
|
getMcpServerCommand(): string | undefined;
|
|
436
|
+
/**
|
|
437
|
+
* The user configured MCP servers (via gemini settings files).
|
|
438
|
+
*
|
|
439
|
+
* Does NOT include mcp servers configured by extensions.
|
|
440
|
+
*/
|
|
409
441
|
getMcpServers(): Record<string, MCPServerConfig> | undefined;
|
|
442
|
+
getMcpClientManager(): McpClientManager | undefined;
|
|
443
|
+
getAllowedMcpServers(): string[] | undefined;
|
|
444
|
+
getBlockedMcpServers(): Array<{
|
|
445
|
+
name: string;
|
|
446
|
+
extensionName: string;
|
|
447
|
+
}> | undefined;
|
|
448
|
+
setMcpServers(mcpServers: Record<string, MCPServerConfig>): void;
|
|
410
449
|
getUserMemory(): string;
|
|
411
450
|
setUserMemory(newUserMemory: string): void;
|
|
412
451
|
getLlxprtMdFileCount(): number;
|
|
@@ -467,12 +506,11 @@ export declare class Config {
|
|
|
467
506
|
getExperimentalZedIntegration(): boolean;
|
|
468
507
|
getListExtensions(): boolean;
|
|
469
508
|
getExtensionManagement(): boolean;
|
|
509
|
+
getExtensionLoader(): ExtensionLoader;
|
|
470
510
|
getExtensions(): GeminiCLIExtension[];
|
|
471
511
|
getActiveExtensions(): ActiveExtension[];
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
extensionName: string;
|
|
475
|
-
}>;
|
|
512
|
+
getEnableExtensionReloading(): boolean;
|
|
513
|
+
getExtensionEvents(): EventEmitter | undefined;
|
|
476
514
|
getProvider(): string | undefined;
|
|
477
515
|
setProvider(provider: string): void;
|
|
478
516
|
getNoBrowser(): boolean;
|
|
@@ -568,6 +606,13 @@ export declare class Config {
|
|
|
568
606
|
};
|
|
569
607
|
getOrCreateScheduler(sessionId: string, callbacks: SchedulerCallbacks): Promise<import('../core/coreToolScheduler.js').CoreToolScheduler>;
|
|
570
608
|
disposeScheduler(sessionId: string): void;
|
|
609
|
+
getEnableHooks(): boolean;
|
|
610
|
+
/**
|
|
611
|
+
* Get hooks configuration
|
|
612
|
+
*/
|
|
613
|
+
getHooks(): {
|
|
614
|
+
[K in HookEventName]?: HookDefinition[];
|
|
615
|
+
} | undefined;
|
|
571
616
|
}
|
|
572
617
|
export { type SchedulerCallbacks };
|
|
573
618
|
export { DEFAULT_GEMINI_FLASH_MODEL };
|