From 3840f626b5c3bdc23237676a5cfbe3d0022801b9 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Dec 2025 08:54:09 +0000 Subject: [PATCH 1/2] Initial plan From 6921a050c38f96d21ccb7471818bb42eda758d74 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Dec 2025 09:00:04 +0000 Subject: [PATCH 2/2] Add apiVersion support to GeminiClient configuration Co-authored-by: ikechan8370 <21212372+ikechan8370@users.noreply.github.com> --- src/adapters/impl/gemini/GeminiClient.ts | 9 +++++++++ src/adapters/impl/gemini/gemini.test.ts | 25 ++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/adapters/impl/gemini/GeminiClient.ts b/src/adapters/impl/gemini/GeminiClient.ts index 657e5b3..de2e650 100644 --- a/src/adapters/impl/gemini/GeminiClient.ts +++ b/src/adapters/impl/gemini/GeminiClient.ts @@ -27,11 +27,18 @@ const DEFAULT_TOOL_CALL_LIMIT: ToolCallLimitConfig = { export type GeminiClientOptions = BaseClientOptions & { toolCallLimit?: ToolCallLimitConfig + /** Optional. The API version to use. + * If unset, the default API version will be used. + */ + apiVersion?: string } export class GeminiClient extends AbstractClient { + private readonly apiVersion?: string + constructor(options: GeminiClientOptions | Partial, context?: ChaiteContext) { super(options, context) this.name = 'gemini' + this.apiVersion = (options as Partial)?.apiVersion const providedLimit = (options as Partial)?.toolCallLimit const effectiveLimit = { ...DEFAULT_TOOL_CALL_LIMIT, @@ -58,6 +65,7 @@ export class GeminiClient extends AbstractClient { } const ai = new GoogleGenAI({ apiKey, + apiVersion: this.apiVersion, httpOptions: { baseUrl: this.baseUrl, headers: { @@ -144,6 +152,7 @@ export class GeminiClient extends AbstractClient { const model = options.model || 'text-embedding-004' const ai = new GoogleGenAI({ apiKey, + apiVersion: this.apiVersion, httpOptions: { baseUrl: this.baseUrl, headers: { diff --git a/src/adapters/impl/gemini/gemini.test.ts b/src/adapters/impl/gemini/gemini.test.ts index 6c053da..4ade5b3 100644 --- a/src/adapters/impl/gemini/gemini.test.ts +++ b/src/adapters/impl/gemini/gemini.test.ts @@ -101,4 +101,29 @@ describe('GeminiClient', () => { expect(response.contents[0].type).toBe('text') }, 60000); + + test('GeminiClient accepts apiVersion configuration', () => { + const geminiClient = new GeminiClient({ + apiKey: 'test-api-key', + baseUrl: 'https://test.example.com', + features: ['chat'], + historyManager: DefaultHistoryManager, + apiVersion: 'v1alpha' + }) + // Verify the client is created successfully with apiVersion + expect(geminiClient).toBeDefined() + expect(geminiClient.name).toBe('gemini') + }); + + test('GeminiClient works without apiVersion (uses default)', () => { + const geminiClient = new GeminiClient({ + apiKey: 'test-api-key', + baseUrl: 'https://test.example.com', + features: ['chat'], + historyManager: DefaultHistoryManager + }) + // Verify the client is created successfully without apiVersion + expect(geminiClient).toBeDefined() + expect(geminiClient.name).toBe('gemini') + }); });