From 3511e84dc3ecdc121ca657e77859f302d514d271 Mon Sep 17 00:00:00 2001 From: sasha-gitg <44654632+sasha-gitg@users.noreply.github.com> Date: Tue, 27 May 2025 10:00:07 -0700 Subject: [PATCH] fix: default to Gemini API if GEMINI_API_KEY is set and when GOOGLE_GENAI_USE_VERTEXAI is set to True (#566) --- packages/cli/src/config/config.ts | 3 +++ packages/server/src/config/config.ts | 7 +++++++ packages/server/src/core/client.ts | 3 +++ 3 files changed, 13 insertions(+) diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index 783a1a88..740142f0 100644 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -132,6 +132,7 @@ export async function loadCliConfig(settings: Settings): Promise { const userAgent = await createUserAgent(); const apiKeyForServer = geminiApiKey || googleApiKey || ''; + const useVertexAI = hasGeminiApiKey ? false : undefined; return createServerConfig( apiKeyForServer, @@ -149,6 +150,8 @@ export async function loadCliConfig(settings: Settings): Promise { userAgent, memoryContent, fileCount, + undefined, // alwaysSkipModificationConfirmation - not set by CLI args directly + useVertexAI, ); } diff --git a/packages/server/src/config/config.ts b/packages/server/src/config/config.ts index 625b9b93..ff35c16f 100644 --- a/packages/server/src/config/config.ts +++ b/packages/server/src/config/config.ts @@ -56,6 +56,7 @@ export class Config { private userMemory: string = '', // Made mutable for refresh private geminiMdFileCount: number = 0, private alwaysSkipModificationConfirmation: boolean = false, + private readonly vertexai?: boolean, ) { // toolRegistry still needs initialization based on the instance this.toolRegistry = createToolRegistry(this); @@ -139,6 +140,10 @@ export class Config { setAlwaysSkipModificationConfirmation(skip: boolean): void { this.alwaysSkipModificationConfirmation = skip; } + + getVertexAI(): boolean | undefined { + return this.vertexai; + } } function findEnvFile(startDir: string): string | null { @@ -186,6 +191,7 @@ export function createServerConfig( userMemory?: string, geminiMdFileCount?: number, alwaysSkipModificationConfirmation?: boolean, + vertexai?: boolean, ): Config { return new Config( apiKey, @@ -204,6 +210,7 @@ export function createServerConfig( userMemory ?? '', geminiMdFileCount ?? 0, alwaysSkipModificationConfirmation ?? false, + vertexai, ); } diff --git a/packages/server/src/core/client.ts b/packages/server/src/core/client.ts index 8823012e..341ce021 100644 --- a/packages/server/src/core/client.ts +++ b/packages/server/src/core/client.ts @@ -36,8 +36,11 @@ export class GeminiClient { constructor(private config: Config) { const userAgent = config.getUserAgent(); const apiKeyFromConfig = config.getApiKey(); + const vertexaiFlag = config.getVertexAI(); + this.client = new GoogleGenAI({ apiKey: apiKeyFromConfig === '' ? undefined : apiKeyFromConfig, + vertexai: vertexaiFlag, httpOptions: { headers: { 'User-Agent': userAgent,