From 8979fc5f6a2d745f2251e48ecbfe41104a29e936 Mon Sep 17 00:00:00 2001 From: Gaurav <39389231+gsquared94@users.noreply.github.com> Date: Sun, 15 Feb 2026 19:20:22 -0800 Subject: [PATCH] fix(core): propagate User-Agent header to setup-phase CodeAssist API calls (#19182) --- .../core/src/code_assist/codeAssist.test.ts | 2 ++ packages/core/src/code_assist/codeAssist.ts | 6 +++++- packages/core/src/code_assist/setup.test.ts | 21 +++++++++++++++++++ packages/core/src/code_assist/setup.ts | 4 +++- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/packages/core/src/code_assist/codeAssist.test.ts b/packages/core/src/code_assist/codeAssist.test.ts index fb48c3abf6..0e24f51feb 100644 --- a/packages/core/src/code_assist/codeAssist.test.ts +++ b/packages/core/src/code_assist/codeAssist.test.ts @@ -64,6 +64,7 @@ describe('codeAssist', () => { expect(setupUser).toHaveBeenCalledWith( mockAuthClient, mockValidationHandler, + httpOptions, ); expect(MockedCodeAssistServer).toHaveBeenCalledWith( mockAuthClient, @@ -93,6 +94,7 @@ describe('codeAssist', () => { expect(setupUser).toHaveBeenCalledWith( mockAuthClient, mockValidationHandler, + httpOptions, ); expect(MockedCodeAssistServer).toHaveBeenCalledWith( mockAuthClient, diff --git a/packages/core/src/code_assist/codeAssist.ts b/packages/core/src/code_assist/codeAssist.ts index 3b87cb03e2..5d41b28c24 100644 --- a/packages/core/src/code_assist/codeAssist.ts +++ b/packages/core/src/code_assist/codeAssist.ts @@ -24,7 +24,11 @@ export async function createCodeAssistContentGenerator( authType === AuthType.COMPUTE_ADC ) { const authClient = await getOauthClient(authType, config); - const userData = await setupUser(authClient, config.getValidationHandler()); + const userData = await setupUser( + authClient, + config.getValidationHandler(), + httpOptions, + ); return new CodeAssistServer( authClient, userData.projectId, diff --git a/packages/core/src/code_assist/setup.test.ts b/packages/core/src/code_assist/setup.test.ts index e1c43ef6e6..e4418aeca2 100644 --- a/packages/core/src/code_assist/setup.test.ts +++ b/packages/core/src/code_assist/setup.test.ts @@ -77,6 +77,27 @@ describe('setupUser for existing user', () => { ); }); + it('should pass httpOptions to CodeAssistServer when provided', async () => { + vi.stubEnv('GOOGLE_CLOUD_PROJECT', 'test-project'); + mockLoad.mockResolvedValue({ + currentTier: mockPaidTier, + }); + const httpOptions = { + headers: { + 'User-Agent': 'GeminiCLI/1.0.0/gemini-2.0-flash (darwin; arm64)', + }, + }; + await setupUser({} as OAuth2Client, undefined, httpOptions); + expect(CodeAssistServer).toHaveBeenCalledWith( + {}, + 'test-project', + httpOptions, + '', + undefined, + undefined, + ); + }); + it('should ignore GOOGLE_CLOUD_PROJECT when project from server is set', async () => { vi.stubEnv('GOOGLE_CLOUD_PROJECT', 'test-project'); mockLoad.mockResolvedValue({ diff --git a/packages/core/src/code_assist/setup.ts b/packages/core/src/code_assist/setup.ts index 0f16f422c0..895fabb6bc 100644 --- a/packages/core/src/code_assist/setup.ts +++ b/packages/core/src/code_assist/setup.ts @@ -12,6 +12,7 @@ import type { OnboardUserRequest, } from './types.js'; import { UserTierId, IneligibleTierReasonCode } from './types.js'; +import type { HttpOptions } from './server.js'; import { CodeAssistServer } from './server.js'; import type { AuthClient } from 'google-auth-library'; import type { ValidationHandler } from '../fallback/types.js'; @@ -77,6 +78,7 @@ export interface UserData { export async function setupUser( client: AuthClient, validationHandler?: ValidationHandler, + httpOptions: HttpOptions = {}, ): Promise { const projectId = process.env['GOOGLE_CLOUD_PROJECT'] || @@ -85,7 +87,7 @@ export async function setupUser( const caServer = new CodeAssistServer( client, projectId, - {}, + httpOptions, '', undefined, undefined,