@google/gemini-cli-core 0.1.10-dev.15 → 0.1.11-nightly.250713.4442e893
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/README.md +16 -2
- package/dist/google-gemini-cli-core-0.1.11.tgz +0 -0
- package/dist/src/code_assist/codeAssist.d.ts +2 -1
- package/dist/src/code_assist/codeAssist.js +4 -3
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/converter.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +3 -8
- package/dist/src/code_assist/oauth2.js +117 -75
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/code_assist/oauth2.test.js +134 -34
- package/dist/src/code_assist/oauth2.test.js.map +1 -1
- package/dist/src/code_assist/server.d.ts +4 -0
- package/dist/src/code_assist/server.js +68 -2
- package/dist/src/code_assist/server.js.map +1 -1
- package/dist/src/code_assist/setup.js +1 -1
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/code_assist/setup.test.d.ts +6 -0
- package/dist/src/code_assist/setup.test.js +62 -0
- package/dist/src/code_assist/setup.test.js.map +1 -0
- package/dist/src/config/config.d.ts +31 -3
- package/dist/src/config/config.js +102 -56
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +48 -23
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/core/client.d.ts +23 -6
- package/dist/src/core/client.js +88 -24
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +131 -12
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +7 -5
- package/dist/src/core/contentGenerator.js +16 -15
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/contentGenerator.test.js +52 -5
- package/dist/src/core/contentGenerator.test.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +9 -2
- package/dist/src/core/coreToolScheduler.js +52 -5
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +80 -0
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +2 -2
- package/dist/src/core/geminiChat.js +52 -32
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/geminiChat.test.js +4 -2
- package/dist/src/core/geminiChat.test.js.map +1 -1
- package/dist/src/core/modelCheck.js +1 -1
- package/dist/src/core/modelCheck.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +11 -2
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +5 -0
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/prompts.js +9 -8
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/core/turn.d.ts +9 -3
- package/dist/src/core/turn.js +6 -2
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/core/turn.test.js +2 -2
- package/dist/src/core/turn.test.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/fileDiscoveryService.d.ts +4 -0
- package/dist/src/services/fileDiscoveryService.js +13 -0
- package/dist/src/services/fileDiscoveryService.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +3 -2
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +70 -28
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +4 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +9 -0
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +1 -1
- package/dist/src/telemetry/constants.d.ts +1 -0
- package/dist/src/telemetry/constants.js +1 -0
- package/dist/src/telemetry/constants.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +2 -2
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/loggers.d.ts +2 -1
- package/dist/src/telemetry/loggers.js +18 -1
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +42 -9
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +19 -5
- package/dist/src/telemetry/types.js +30 -4
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +1 -0
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/tools/edit.d.ts +1 -2
- package/dist/src/tools/edit.js +11 -12
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +7 -9
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.js +9 -8
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +3 -3
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.js +8 -7
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +4 -4
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/ls.js +9 -8
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +0 -9
- package/dist/src/tools/mcp-client.js +29 -48
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +131 -5
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +3 -3
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/memoryTool.js +3 -2
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/read-file.js +9 -10
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +4 -4
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.js +25 -39
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +25 -14
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/shell.d.ts +5 -2
- package/dist/src/tools/shell.js +41 -18
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +85 -65
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +16 -2
- package/dist/src/tools/tool-registry.js +153 -20
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +186 -75
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +25 -4
- package/dist/src/tools/tools.js +8 -1
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.js +6 -5
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search.d.ts +1 -1
- package/dist/src/tools/web-search.js +7 -6
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +0 -1
- package/dist/src/tools/write-file.js +10 -11
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +4 -4
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/utils/editCorrector.d.ts +1 -1
- package/dist/src/utils/editCorrector.js +106 -2
- package/dist/src/utils/editCorrector.js.map +1 -1
- package/dist/src/utils/editCorrector.test.js +69 -19
- package/dist/src/utils/editCorrector.test.js.map +1 -1
- package/dist/src/utils/editor.d.ts +1 -1
- package/dist/src/utils/editor.js +1 -1
- package/dist/src/utils/fileUtils.d.ts +1 -1
- package/dist/src/utils/fileUtils.js +17 -0
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +17 -0
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/flashFallback.integration.test.js +1 -1
- package/dist/src/utils/flashFallback.integration.test.js.map +1 -1
- package/dist/src/utils/messageInspectors.d.ts +1 -0
- package/dist/src/utils/messageInspectors.js +5 -0
- package/dist/src/utils/messageInspectors.js.map +1 -1
- package/dist/src/utils/nextSpeakerChecker.js +1 -1
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/paths.d.ts +1 -0
- package/dist/src/utils/paths.js +1 -0
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.d.ts +22 -0
- package/dist/src/utils/quotaErrorDetection.js +74 -0
- package/dist/src/utils/quotaErrorDetection.js.map +1 -0
- package/dist/src/utils/retry.d.ts +1 -1
- package/dist/src/utils/retry.js +58 -2
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +1 -1
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/schemaValidator.d.ts +10 -5
- package/dist/src/utils/schemaValidator.js +44 -32
- package/dist/src/utils/schemaValidator.js.map +1 -1
- package/dist/src/utils/summarizer.d.ts +25 -0
- package/dist/src/utils/summarizer.js +79 -0
- package/dist/src/utils/summarizer.js.map +1 -0
- package/dist/src/utils/summarizer.test.d.ts +6 -0
- package/dist/src/utils/summarizer.test.js +131 -0
- package/dist/src/utils/summarizer.test.js.map +1 -0
- package/dist/src/utils/user_account.d.ts +9 -0
- package/dist/src/utils/user_account.js +99 -0
- package/dist/src/utils/user_account.js.map +1 -0
- package/dist/src/utils/user_account.test.d.ts +6 -0
- package/dist/src/utils/user_account.test.js +153 -0
- package/dist/src/utils/user_account.test.js.map +1 -0
- package/dist/src/utils/user_id.d.ts +0 -6
- package/dist/src/utils/user_id.js +0 -21
- package/dist/src/utils/user_id.js.map +1 -1
- package/dist/src/utils/user_id.test.js +1 -22
- package/dist/src/utils/user_id.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth2.test.js","sourceRoot":"","sources":["../../../src/code_assist/oauth2.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"oauth2.test.js","sourceRoot":"","sources":["../../../src/code_assist/oauth2.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { OAuth2Client } from 'google-auth-library';
|
|
|
7
7
|
import { CodeAssistGlobalUserSettingResponse, LoadCodeAssistRequest, LoadCodeAssistResponse, LongrunningOperationResponse, OnboardUserRequest, SetCodeAssistGlobalUserSettingRequest } from './types.js';
|
|
8
8
|
import { CountTokensParameters, CountTokensResponse, EmbedContentParameters, EmbedContentResponse, GenerateContentParameters, GenerateContentResponse } from '@google/genai';
|
|
9
9
|
import { ContentGenerator } from '../core/contentGenerator.js';
|
|
10
|
+
import { UserTierId } from './types.js';
|
|
10
11
|
/** HTTP options to be used in each of the requests. */
|
|
11
12
|
export interface HttpOptions {
|
|
12
13
|
/** Additional HTTP headers to be sent with the request. */
|
|
@@ -19,6 +20,7 @@ export declare class CodeAssistServer implements ContentGenerator {
|
|
|
19
20
|
readonly projectId?: string | undefined;
|
|
20
21
|
readonly httpOptions: HttpOptions;
|
|
21
22
|
readonly sessionId?: string | undefined;
|
|
23
|
+
private userTier;
|
|
22
24
|
constructor(client: OAuth2Client, projectId?: string | undefined, httpOptions?: HttpOptions, sessionId?: string | undefined);
|
|
23
25
|
generateContentStream(req: GenerateContentParameters): Promise<AsyncGenerator<GenerateContentResponse>>;
|
|
24
26
|
generateContent(req: GenerateContentParameters): Promise<GenerateContentResponse>;
|
|
@@ -31,5 +33,7 @@ export declare class CodeAssistServer implements ContentGenerator {
|
|
|
31
33
|
requestPost<T>(method: string, req: object, signal?: AbortSignal): Promise<T>;
|
|
32
34
|
requestGet<T>(method: string, signal?: AbortSignal): Promise<T>;
|
|
33
35
|
requestStreamingPost<T>(method: string, req: object, signal?: AbortSignal): Promise<AsyncGenerator<T>>;
|
|
36
|
+
getTier(): Promise<UserTierId | undefined>;
|
|
37
|
+
private detectUserTier;
|
|
34
38
|
getMethodUrl(method: string): string;
|
|
35
39
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as readline from 'readline';
|
|
7
7
|
import { fromCountTokenResponse, fromGenerateContentResponse, toCountTokenRequest, toGenerateContentRequest, } from './converter.js';
|
|
8
|
-
|
|
8
|
+
import { Readable } from 'node:stream';
|
|
9
9
|
export const CODE_ASSIST_ENDPOINT = 'https://cloudcode-pa.googleapis.com';
|
|
10
10
|
export const CODE_ASSIST_API_VERSION = 'v1internal';
|
|
11
11
|
export class CodeAssistServer {
|
|
@@ -13,6 +13,7 @@ export class CodeAssistServer {
|
|
|
13
13
|
projectId;
|
|
14
14
|
httpOptions;
|
|
15
15
|
sessionId;
|
|
16
|
+
userTier = undefined;
|
|
16
17
|
constructor(client, projectId, httpOptions = {}, sessionId) {
|
|
17
18
|
this.client = client;
|
|
18
19
|
this.projectId = projectId;
|
|
@@ -93,8 +94,41 @@ export class CodeAssistServer {
|
|
|
93
94
|
signal,
|
|
94
95
|
});
|
|
95
96
|
return (async function* () {
|
|
97
|
+
// Convert ReadableStream to Node.js stream if needed
|
|
98
|
+
let nodeStream;
|
|
99
|
+
if (res.data instanceof ReadableStream) {
|
|
100
|
+
// Convert Web ReadableStream to Node.js Readable stream
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
102
|
+
nodeStream = Readable.fromWeb(res.data);
|
|
103
|
+
}
|
|
104
|
+
else if (res.data &&
|
|
105
|
+
typeof res.data.on === 'function') {
|
|
106
|
+
// Already a Node.js stream
|
|
107
|
+
nodeStream = res.data;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// If res.data is not a stream, it might be an error response
|
|
111
|
+
// Try to extract error information from the response
|
|
112
|
+
let errorMessage = 'Response data is not a readable stream. This may indicate a server error or quota issue.';
|
|
113
|
+
if (res.data && typeof res.data === 'object') {
|
|
114
|
+
// Check if this is an error response with error details
|
|
115
|
+
const errorData = res.data;
|
|
116
|
+
if (errorData.error?.message) {
|
|
117
|
+
errorMessage = errorData.error.message;
|
|
118
|
+
}
|
|
119
|
+
else if (typeof errorData === 'string') {
|
|
120
|
+
errorMessage = errorData;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Create an error that looks like a quota error if it contains quota information
|
|
124
|
+
const error = new Error(errorMessage);
|
|
125
|
+
// Add status and response properties so it can be properly handled by retry logic
|
|
126
|
+
error.status = res.status;
|
|
127
|
+
error.response = res;
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
96
130
|
const rl = readline.createInterface({
|
|
97
|
-
input:
|
|
131
|
+
input: nodeStream,
|
|
98
132
|
crlfDelay: Infinity, // Recognizes '\r\n' and '\n' as line breaks
|
|
99
133
|
});
|
|
100
134
|
let bufferedLines = [];
|
|
@@ -116,6 +150,38 @@ export class CodeAssistServer {
|
|
|
116
150
|
}
|
|
117
151
|
})();
|
|
118
152
|
}
|
|
153
|
+
async getTier() {
|
|
154
|
+
if (this.userTier === undefined) {
|
|
155
|
+
await this.detectUserTier();
|
|
156
|
+
}
|
|
157
|
+
return this.userTier;
|
|
158
|
+
}
|
|
159
|
+
async detectUserTier() {
|
|
160
|
+
try {
|
|
161
|
+
// Reset user tier when detection runs
|
|
162
|
+
this.userTier = undefined;
|
|
163
|
+
// Only attempt tier detection if we have a project ID
|
|
164
|
+
if (this.projectId) {
|
|
165
|
+
const loadRes = await this.loadCodeAssist({
|
|
166
|
+
cloudaicompanionProject: this.projectId,
|
|
167
|
+
metadata: {
|
|
168
|
+
ideType: 'IDE_UNSPECIFIED',
|
|
169
|
+
platform: 'PLATFORM_UNSPECIFIED',
|
|
170
|
+
pluginType: 'GEMINI',
|
|
171
|
+
duetProject: this.projectId,
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
if (loadRes.currentTier) {
|
|
175
|
+
this.userTier = loadRes.currentTier.id;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
// Silently fail - this is not critical functionality
|
|
181
|
+
// We'll default to FREE tier behavior if tier detection fails
|
|
182
|
+
console.debug('User tier detection failed:', error);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
119
185
|
getMethodUrl(method) {
|
|
120
186
|
const endpoint = process.env.CODE_ASSIST_ENDPOINT ?? CODE_ASSIST_ENDPOINT;
|
|
121
187
|
return `${endpoint}/${CODE_ASSIST_API_VERSION}:${method}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/code_assist/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/code_assist/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export class ProjectIdRequiredError extends Error {
|
|
|
16
16
|
* @returns the user's actual project id
|
|
17
17
|
*/
|
|
18
18
|
export async function setupUser(client) {
|
|
19
|
-
let projectId = process.env.GOOGLE_CLOUD_PROJECT;
|
|
19
|
+
let projectId = process.env.GOOGLE_CLOUD_PROJECT || undefined;
|
|
20
20
|
const caServer = new CodeAssistServer(client, projectId);
|
|
21
21
|
const clientMetadata = {
|
|
22
22
|
ideType: 'IDE_UNSPECIFIED',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/code_assist/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKL,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CACH,wHAAwH,CACzH,CAAC;IACJ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAoB;IAClD,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/code_assist/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKL,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C;QACE,KAAK,CACH,wHAAwH,CACzH,CAAC;IACJ,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAoB;IAClD,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEzD,MAAM,cAAc,GAAmB;QACrC,OAAO,EAAE,iBAAiB;QAC1B,QAAQ,EAAE,sBAAsB;QAChC,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,SAAS;KACvB,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC;QAC5C,uBAAuB,EAAE,SAAS;QAClC,QAAQ,EAAE,cAAc;KACzB,CAAC,CAAC;IAEH,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;QAClD,SAAS,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAC9C,CAAC;IAED,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,kCAAkC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1D,MAAM,IAAI,sBAAsB,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,UAAU,GAAuB;QACrC,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,uBAAuB,EAAE,SAAS;QAClC,QAAQ,EAAE,cAAc;KACzB,CAAC;IAEF,6DAA6D;IAC7D,IAAI,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACpD,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,uBAAuB,EAAE,EAAE,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,cAAc,CAAC,GAA2B;IACjD,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,WAAW,CAAC;IACzB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI,EAAE,EAAE;QACR,WAAW,EAAE,EAAE;QACf,EAAE,EAAE,UAAU,CAAC,MAAM;QACrB,kCAAkC,EAAE,IAAI;KACzC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
7
|
+
import { setupUser, ProjectIdRequiredError } from './setup.js';
|
|
8
|
+
import { CodeAssistServer } from '../code_assist/server.js';
|
|
9
|
+
import { UserTierId } from './types.js';
|
|
10
|
+
vi.mock('../code_assist/server.js');
|
|
11
|
+
const mockPaidTier = {
|
|
12
|
+
id: UserTierId.STANDARD,
|
|
13
|
+
name: 'paid',
|
|
14
|
+
description: 'Paid tier',
|
|
15
|
+
};
|
|
16
|
+
describe('setupUser', () => {
|
|
17
|
+
let mockLoad;
|
|
18
|
+
let mockOnboardUser;
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
vi.resetAllMocks();
|
|
21
|
+
mockLoad = vi.fn();
|
|
22
|
+
mockOnboardUser = vi.fn().mockResolvedValue({
|
|
23
|
+
done: true,
|
|
24
|
+
response: {
|
|
25
|
+
cloudaicompanionProject: {
|
|
26
|
+
id: 'server-project',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
vi.mocked(CodeAssistServer).mockImplementation(() => ({
|
|
31
|
+
loadCodeAssist: mockLoad,
|
|
32
|
+
onboardUser: mockOnboardUser,
|
|
33
|
+
}));
|
|
34
|
+
});
|
|
35
|
+
it('should use GOOGLE_CLOUD_PROJECT when set', async () => {
|
|
36
|
+
process.env.GOOGLE_CLOUD_PROJECT = 'test-project';
|
|
37
|
+
mockLoad.mockResolvedValue({
|
|
38
|
+
currentTier: mockPaidTier,
|
|
39
|
+
});
|
|
40
|
+
await setupUser({});
|
|
41
|
+
expect(CodeAssistServer).toHaveBeenCalledWith(expect.any(Object), 'test-project');
|
|
42
|
+
});
|
|
43
|
+
it('should treat empty GOOGLE_CLOUD_PROJECT as undefined and use project from server', async () => {
|
|
44
|
+
process.env.GOOGLE_CLOUD_PROJECT = '';
|
|
45
|
+
mockLoad.mockResolvedValue({
|
|
46
|
+
cloudaicompanionProject: 'server-project',
|
|
47
|
+
currentTier: mockPaidTier,
|
|
48
|
+
});
|
|
49
|
+
const projectId = await setupUser({});
|
|
50
|
+
expect(CodeAssistServer).toHaveBeenCalledWith(expect.any(Object), undefined);
|
|
51
|
+
expect(projectId).toBe('server-project');
|
|
52
|
+
});
|
|
53
|
+
it('should throw ProjectIdRequiredError when no project ID is available', async () => {
|
|
54
|
+
delete process.env.GOOGLE_CLOUD_PROJECT;
|
|
55
|
+
// And the server itself requires a project ID internally
|
|
56
|
+
vi.mocked(CodeAssistServer).mockImplementation(() => {
|
|
57
|
+
throw new ProjectIdRequiredError();
|
|
58
|
+
});
|
|
59
|
+
await expect(setupUser({})).rejects.toThrow(ProjectIdRequiredError);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=setup.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.test.js","sourceRoot":"","sources":["../../../src/code_assist/setup.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAkB,UAAU,EAAE,MAAM,YAAY,CAAC;AAExD,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;AAEpC,MAAM,YAAY,GAAmB;IACnC,EAAE,EAAE,UAAU,CAAC,QAAQ;IACvB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,WAAW;CACzB,CAAC;AAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,IAAI,QAAkC,CAAC;IACvC,IAAI,eAAyC,CAAC;IAE9C,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACnB,eAAe,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;YAC1C,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE;gBACR,uBAAuB,EAAE;oBACvB,EAAE,EAAE,gBAAgB;iBACrB;aACF;SACF,CAAC,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,CAC5C,GAAG,EAAE,CACH,CAAC;YACC,cAAc,EAAE,QAAQ;YACxB,WAAW,EAAE,eAAe;SAC7B,CAAgC,CACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,cAAc,CAAC;QAClD,QAAQ,CAAC,iBAAiB,CAAC;YACzB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QACH,MAAM,SAAS,CAAC,EAAkB,CAAC,CAAC;QACpC,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAC3C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,cAAc,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;QAChG,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,EAAE,CAAC;QACtC,QAAQ,CAAC,iBAAiB,CAAC;YACzB,uBAAuB,EAAE,gBAAgB;YACzC,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,EAAkB,CAAC,CAAC;QACtD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAC3C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAClB,SAAS,CACV,CAAC;QACF,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACxC,yDAAyD;QACzD,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE;YAClD,MAAM,IAAI,sBAAsB,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,SAAS,CAAC,EAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CACzD,sBAAsB,CACvB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { AuthType, ContentGeneratorConfig } from '../core/contentGenerator.js';
|
|
7
|
+
import { UserTierId } from '../code_assist/types.js';
|
|
7
8
|
import { ToolRegistry } from '../tools/tool-registry.js';
|
|
8
9
|
import { GeminiClient } from '../core/client.js';
|
|
9
10
|
import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
|
|
@@ -27,6 +28,10 @@ export interface TelemetrySettings {
|
|
|
27
28
|
otlpEndpoint?: string;
|
|
28
29
|
logPrompts?: boolean;
|
|
29
30
|
}
|
|
31
|
+
export interface ActiveExtension {
|
|
32
|
+
name: string;
|
|
33
|
+
version: string;
|
|
34
|
+
}
|
|
30
35
|
export declare class MCPServerConfig {
|
|
31
36
|
readonly command?: string | undefined;
|
|
32
37
|
readonly args?: string[] | undefined;
|
|
@@ -39,13 +44,15 @@ export declare class MCPServerConfig {
|
|
|
39
44
|
readonly timeout?: number | undefined;
|
|
40
45
|
readonly trust?: boolean | undefined;
|
|
41
46
|
readonly description?: string | undefined;
|
|
42
|
-
|
|
47
|
+
readonly includeTools?: string[] | undefined;
|
|
48
|
+
readonly excludeTools?: string[] | undefined;
|
|
49
|
+
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);
|
|
43
50
|
}
|
|
44
51
|
export interface SandboxConfig {
|
|
45
52
|
command: 'docker' | 'podman' | 'sandbox-exec';
|
|
46
53
|
image: string;
|
|
47
54
|
}
|
|
48
|
-
export type FlashFallbackHandler = (currentModel: string, fallbackModel: string) => Promise<boolean>;
|
|
55
|
+
export type FlashFallbackHandler = (currentModel: string, fallbackModel: string, error?: unknown) => Promise<boolean | string | null>;
|
|
49
56
|
export interface ConfigParameters {
|
|
50
57
|
sessionId: string;
|
|
51
58
|
embeddingModel?: string;
|
|
@@ -79,6 +86,10 @@ export interface ConfigParameters {
|
|
|
79
86
|
bugCommand?: BugCommandSettings;
|
|
80
87
|
model: string;
|
|
81
88
|
extensionContextFilePaths?: string[];
|
|
89
|
+
maxSessionTurns?: number;
|
|
90
|
+
listExtensions?: boolean;
|
|
91
|
+
activeExtensions?: ActiveExtension[];
|
|
92
|
+
noBrowser?: boolean;
|
|
82
93
|
}
|
|
83
94
|
export declare class Config {
|
|
84
95
|
private toolRegistry;
|
|
@@ -113,9 +124,15 @@ export declare class Config {
|
|
|
113
124
|
private readonly bugCommand;
|
|
114
125
|
private readonly model;
|
|
115
126
|
private readonly extensionContextFilePaths;
|
|
127
|
+
private readonly noBrowser;
|
|
116
128
|
private modelSwitchedDuringSession;
|
|
129
|
+
private readonly maxSessionTurns;
|
|
130
|
+
private readonly listExtensions;
|
|
131
|
+
private readonly _activeExtensions;
|
|
117
132
|
flashFallbackHandler?: FlashFallbackHandler;
|
|
133
|
+
private quotaErrorOccurred;
|
|
118
134
|
constructor(params: ConfigParameters);
|
|
135
|
+
initialize(): Promise<void>;
|
|
119
136
|
refreshAuth(authMethod: AuthType): Promise<void>;
|
|
120
137
|
getSessionId(): string;
|
|
121
138
|
getContentGeneratorConfig(): ContentGeneratorConfig;
|
|
@@ -124,6 +141,10 @@ export declare class Config {
|
|
|
124
141
|
isModelSwitchedDuringSession(): boolean;
|
|
125
142
|
resetModelToDefault(): void;
|
|
126
143
|
setFlashFallbackHandler(handler: FlashFallbackHandler): void;
|
|
144
|
+
getMaxSessionTurns(): number;
|
|
145
|
+
setQuotaErrorOccurred(value: boolean): void;
|
|
146
|
+
getQuotaErrorOccurred(): boolean;
|
|
147
|
+
getUserTier(): Promise<UserTierId | undefined>;
|
|
127
148
|
getEmbeddingModel(): string;
|
|
128
149
|
getSandbox(): SandboxConfig | undefined;
|
|
129
150
|
getTargetDir(): string;
|
|
@@ -162,7 +183,14 @@ export declare class Config {
|
|
|
162
183
|
getFileService(): FileDiscoveryService;
|
|
163
184
|
getUsageStatisticsEnabled(): boolean;
|
|
164
185
|
getExtensionContextFilePaths(): string[];
|
|
186
|
+
getListExtensions(): boolean;
|
|
187
|
+
getActiveExtensions(): ActiveExtension[];
|
|
188
|
+
getNoBrowser(): boolean;
|
|
165
189
|
getGitService(): Promise<GitService>;
|
|
190
|
+
refreshMemory(): Promise<{
|
|
191
|
+
memoryContent: string;
|
|
192
|
+
fileCount: number;
|
|
193
|
+
}>;
|
|
194
|
+
createToolRegistry(): Promise<ToolRegistry>;
|
|
166
195
|
}
|
|
167
|
-
export declare function createToolRegistry(config: Config): Promise<ToolRegistry>;
|
|
168
196
|
export { DEFAULT_GEMINI_FLASH_MODEL };
|
|
@@ -21,6 +21,7 @@ import { WebSearchTool } from '../tools/web-search.js';
|
|
|
21
21
|
import { GeminiClient } from '../core/client.js';
|
|
22
22
|
import { FileDiscoveryService } from '../services/fileDiscoveryService.js';
|
|
23
23
|
import { GitService } from '../services/gitService.js';
|
|
24
|
+
import { loadServerHierarchicalMemory } from '../utils/memoryDiscovery.js';
|
|
24
25
|
import { getProjectTempDir } from '../utils/paths.js';
|
|
25
26
|
import { initializeTelemetry, DEFAULT_TELEMETRY_TARGET, DEFAULT_OTLP_ENDPOINT, StartSessionEvent, } from '../telemetry/index.js';
|
|
26
27
|
import { DEFAULT_GEMINI_EMBEDDING_MODEL, DEFAULT_GEMINI_FLASH_MODEL, } from './models.js';
|
|
@@ -43,6 +44,8 @@ export class MCPServerConfig {
|
|
|
43
44
|
timeout;
|
|
44
45
|
trust;
|
|
45
46
|
description;
|
|
47
|
+
includeTools;
|
|
48
|
+
excludeTools;
|
|
46
49
|
constructor(
|
|
47
50
|
// For stdio transport
|
|
48
51
|
command, args, env, cwd,
|
|
@@ -55,7 +58,7 @@ export class MCPServerConfig {
|
|
|
55
58
|
// Common
|
|
56
59
|
timeout, trust,
|
|
57
60
|
// Metadata
|
|
58
|
-
description) {
|
|
61
|
+
description, includeTools, excludeTools) {
|
|
59
62
|
this.command = command;
|
|
60
63
|
this.args = args;
|
|
61
64
|
this.env = env;
|
|
@@ -67,6 +70,8 @@ export class MCPServerConfig {
|
|
|
67
70
|
this.timeout = timeout;
|
|
68
71
|
this.trust = trust;
|
|
69
72
|
this.description = description;
|
|
73
|
+
this.includeTools = includeTools;
|
|
74
|
+
this.excludeTools = excludeTools;
|
|
70
75
|
}
|
|
71
76
|
}
|
|
72
77
|
export class Config {
|
|
@@ -102,8 +107,13 @@ export class Config {
|
|
|
102
107
|
bugCommand;
|
|
103
108
|
model;
|
|
104
109
|
extensionContextFilePaths;
|
|
110
|
+
noBrowser;
|
|
105
111
|
modelSwitchedDuringSession = false;
|
|
112
|
+
maxSessionTurns;
|
|
113
|
+
listExtensions;
|
|
114
|
+
_activeExtensions;
|
|
106
115
|
flashFallbackHandler;
|
|
116
|
+
quotaErrorOccurred = false;
|
|
107
117
|
constructor(params) {
|
|
108
118
|
this.sessionId = params.sessionId;
|
|
109
119
|
this.embeddingModel =
|
|
@@ -142,6 +152,10 @@ export class Config {
|
|
|
142
152
|
this.bugCommand = params.bugCommand;
|
|
143
153
|
this.model = params.model;
|
|
144
154
|
this.extensionContextFilePaths = params.extensionContextFilePaths ?? [];
|
|
155
|
+
this.maxSessionTurns = params.maxSessionTurns ?? -1;
|
|
156
|
+
this.listExtensions = params.listExtensions ?? false;
|
|
157
|
+
this._activeExtensions = params.activeExtensions ?? [];
|
|
158
|
+
this.noBrowser = params.noBrowser ?? false;
|
|
145
159
|
if (params.contextFileName) {
|
|
146
160
|
setGeminiMdFilename(params.contextFileName);
|
|
147
161
|
}
|
|
@@ -155,23 +169,25 @@ export class Config {
|
|
|
155
169
|
console.log('Data collection is disabled.');
|
|
156
170
|
}
|
|
157
171
|
}
|
|
172
|
+
async initialize() {
|
|
173
|
+
// Initialize centralized FileDiscoveryService
|
|
174
|
+
this.getFileService();
|
|
175
|
+
if (this.getCheckpointingEnabled()) {
|
|
176
|
+
try {
|
|
177
|
+
await this.getGitService();
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
// For now swallow the error, later log it.
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
this.toolRegistry = await this.createToolRegistry();
|
|
184
|
+
}
|
|
158
185
|
async refreshAuth(authMethod) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const modelToUse = this.model; // Use the original default model
|
|
163
|
-
// Temporarily clear contentGeneratorConfig to prevent getModel() from returning
|
|
164
|
-
// the previous session's model (which might be Flash)
|
|
165
|
-
this.contentGeneratorConfig = undefined;
|
|
166
|
-
const contentConfig = await createContentGeneratorConfig(modelToUse, authMethod, this);
|
|
167
|
-
const gc = new GeminiClient(this);
|
|
168
|
-
this.geminiClient = gc;
|
|
169
|
-
this.toolRegistry = await createToolRegistry(this);
|
|
170
|
-
await gc.initialize(contentConfig);
|
|
171
|
-
this.contentGeneratorConfig = contentConfig;
|
|
186
|
+
this.contentGeneratorConfig = await createContentGeneratorConfig(this.model, authMethod);
|
|
187
|
+
this.geminiClient = new GeminiClient(this);
|
|
188
|
+
await this.geminiClient.initialize(this.contentGeneratorConfig);
|
|
172
189
|
// Reset the session flag since we're explicitly changing auth and using default model
|
|
173
190
|
this.modelSwitchedDuringSession = false;
|
|
174
|
-
// Note: In the future, we may want to reset any cached state when switching auth methods
|
|
175
191
|
}
|
|
176
192
|
getSessionId() {
|
|
177
193
|
return this.sessionId;
|
|
@@ -200,6 +216,22 @@ export class Config {
|
|
|
200
216
|
setFlashFallbackHandler(handler) {
|
|
201
217
|
this.flashFallbackHandler = handler;
|
|
202
218
|
}
|
|
219
|
+
getMaxSessionTurns() {
|
|
220
|
+
return this.maxSessionTurns;
|
|
221
|
+
}
|
|
222
|
+
setQuotaErrorOccurred(value) {
|
|
223
|
+
this.quotaErrorOccurred = value;
|
|
224
|
+
}
|
|
225
|
+
getQuotaErrorOccurred() {
|
|
226
|
+
return this.quotaErrorOccurred;
|
|
227
|
+
}
|
|
228
|
+
async getUserTier() {
|
|
229
|
+
if (!this.geminiClient) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
const generator = this.geminiClient.getContentGenerator();
|
|
233
|
+
return await generator.getTier?.();
|
|
234
|
+
}
|
|
203
235
|
getEmbeddingModel() {
|
|
204
236
|
return this.embeddingModel;
|
|
205
237
|
}
|
|
@@ -317,6 +349,15 @@ export class Config {
|
|
|
317
349
|
getExtensionContextFilePaths() {
|
|
318
350
|
return this.extensionContextFilePaths;
|
|
319
351
|
}
|
|
352
|
+
getListExtensions() {
|
|
353
|
+
return this.listExtensions;
|
|
354
|
+
}
|
|
355
|
+
getActiveExtensions() {
|
|
356
|
+
return this._activeExtensions;
|
|
357
|
+
}
|
|
358
|
+
getNoBrowser() {
|
|
359
|
+
return this.noBrowser;
|
|
360
|
+
}
|
|
320
361
|
async getGitService() {
|
|
321
362
|
if (!this.gitService) {
|
|
322
363
|
this.gitService = new GitService(this.targetDir);
|
|
@@ -324,49 +365,54 @@ export class Config {
|
|
|
324
365
|
}
|
|
325
366
|
return this.gitService;
|
|
326
367
|
}
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
const
|
|
335
|
-
const
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
isEnabled =
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
368
|
+
async refreshMemory() {
|
|
369
|
+
const { memoryContent, fileCount } = await loadServerHierarchicalMemory(this.getWorkingDir(), this.getDebugMode(), this.getFileService(), this.getExtensionContextFilePaths());
|
|
370
|
+
this.setUserMemory(memoryContent);
|
|
371
|
+
this.setGeminiMdFileCount(fileCount);
|
|
372
|
+
return { memoryContent, fileCount };
|
|
373
|
+
}
|
|
374
|
+
async createToolRegistry() {
|
|
375
|
+
const registry = new ToolRegistry(this);
|
|
376
|
+
const targetDir = this.getTargetDir();
|
|
377
|
+
// helper to create & register core tools that are enabled
|
|
378
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
379
|
+
const registerCoreTool = (ToolClass, ...args) => {
|
|
380
|
+
const className = ToolClass.name;
|
|
381
|
+
const toolName = ToolClass.Name || className;
|
|
382
|
+
const coreTools = this.getCoreTools();
|
|
383
|
+
const excludeTools = this.getExcludeTools();
|
|
384
|
+
let isEnabled = false;
|
|
385
|
+
if (coreTools === undefined) {
|
|
386
|
+
isEnabled = true;
|
|
387
|
+
}
|
|
388
|
+
else {
|
|
389
|
+
isEnabled = coreTools.some((tool) => tool === className ||
|
|
390
|
+
tool === toolName ||
|
|
391
|
+
tool.startsWith(`${className}(`) ||
|
|
392
|
+
tool.startsWith(`${toolName}(`));
|
|
393
|
+
}
|
|
394
|
+
if (excludeTools?.includes(className) ||
|
|
395
|
+
excludeTools?.includes(toolName)) {
|
|
396
|
+
isEnabled = false;
|
|
397
|
+
}
|
|
398
|
+
if (isEnabled) {
|
|
399
|
+
registry.registerTool(new ToolClass(...args));
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
registerCoreTool(LSTool, targetDir, this);
|
|
403
|
+
registerCoreTool(ReadFileTool, targetDir, this);
|
|
404
|
+
registerCoreTool(GrepTool, targetDir);
|
|
405
|
+
registerCoreTool(GlobTool, targetDir, this);
|
|
406
|
+
registerCoreTool(EditTool, this);
|
|
407
|
+
registerCoreTool(WriteFileTool, this);
|
|
408
|
+
registerCoreTool(WebFetchTool, this);
|
|
409
|
+
registerCoreTool(ReadManyFilesTool, targetDir, this);
|
|
410
|
+
registerCoreTool(ShellTool, this);
|
|
411
|
+
registerCoreTool(MemoryTool);
|
|
412
|
+
registerCoreTool(WebSearchTool, this);
|
|
367
413
|
await registry.discoverTools();
|
|
368
414
|
return registry;
|
|
369
|
-
}
|
|
415
|
+
}
|
|
370
416
|
}
|
|
371
417
|
// Export model constants for use in CLI
|
|
372
418
|
export { DEFAULT_GEMINI_FLASH_MODEL };
|