From a3d969751d29b06693d29159f4232246310876b3 Mon Sep 17 00:00:00 2001 From: pragnyanramtha Date: Sun, 17 May 2026 05:11:12 +0000 Subject: [PATCH] fix: preserve requestStream query params --- src/_api_client.ts | 5 +++++ test/unit/api_client_test.ts | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/_api_client.ts b/src/_api_client.ts index 387fef6757..7176cc5904 100644 --- a/src/_api_client.ts +++ b/src/_api_client.ts @@ -493,6 +493,11 @@ export class ApiClient implements GeminiNextGenAPIClientAdapter { patchedHttpOptions, prependProjectLocation, ); + if (request.queryParams) { + for (const [key, value] of Object.entries(request.queryParams)) { + url.searchParams.append(key, String(value)); + } + } if (!url.searchParams.has('alt') || url.searchParams.get('alt') !== 'sse') { url.searchParams.set('alt', 'sse'); } diff --git a/test/unit/api_client_test.ts b/test/unit/api_client_test.ts index 383fcd4c76..457a1a1e00 100644 --- a/test/unit/api_client_test.ts +++ b/test/unit/api_client_test.ts @@ -2068,7 +2068,7 @@ describe('ApiClient', () => { const timeoutArgs = timeoutSpy.calls.first().args; expect(timeoutArgs[1]).toEqual(1001); expect(fetchArgs[0]).toEqual( - 'https://custom-client-base-url.googleapis.com/v1alpha/test-path?alt=sse', + 'https://custom-client-base-url.googleapis.com/v1alpha/test-path?param1=value1¶m2=value2&alt=sse', ); }); it('should not override the client http options permanently', async () => { @@ -2123,7 +2123,7 @@ describe('ApiClient', () => { const timeoutArgs = timeoutSpy.calls.mostRecent().args; expect(timeoutArgs[1]).toEqual(1002); expect(fetchArgs[0]).toEqual( - 'https://custom-request-base-url.googleapis.com/v1alpha/test-path?alt=sse', + 'https://custom-request-base-url.googleapis.com/v1alpha/test-path?param1=value1¶m2=value2&alt=sse', ); await client.requestStream({ @@ -2133,7 +2133,7 @@ describe('ApiClient', () => { }); const secondFetchArgs = fetchSpy.calls.mostRecent().args; - const secondRequestInit = fetchArgs[1] as RequestInit; + const secondRequestInit = secondFetchArgs[1] as RequestInit; const secondHeaders = secondRequestInit.headers as Headers; expect(secondHeaders.get('Content-Type')).toBe('application/json'); expect(secondHeaders.get('x-goog-api-key')).toBe('test-api-key'); @@ -2142,12 +2142,12 @@ describe('ApiClient', () => { 'google-genai-sdk/', ); expect(secondHeaders.get('google-custom-header')).toBe( - 'custom-header-request-value', + 'custom-header-value', ); const secondTimeoutArgs = timeoutSpy.calls.mostRecent().args; expect(secondTimeoutArgs[1]).toEqual(1000); expect(secondFetchArgs[0]).toEqual( - 'https://custom-client-base-url.googleapis.com/v1beta1/test-path?alt=sse', + 'https://custom-client-base-url.googleapis.com/v1beta1/test-path?param1=value1¶m2=value2&alt=sse', ); }); it('should set undici dispatcher on requestInit when timeout is provided for requestStream', async () => {