From 2f337dab138f6d3faf15a5979d1119203e19a879 Mon Sep 17 00:00:00 2001 From: SaneApps <22772275+MrSaneApps@users.noreply.github.com> Date: Mon, 16 Feb 2026 00:26:01 -0500 Subject: [PATCH] fix: use Gemini v1 API endpoint instead of v1beta (#1082) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v1beta does not support newer models like gemini-3-flash, causing silent 404 errors that back up the observation queue indefinitely. Users with CLAUDE_MEM_GEMINI_MODEL=gemini-3-flash get zero observations stored, with no visible error — the queue just grows silently. Changes: - Switch API URL from v1beta/models to v1/models (generateContent works identically on both endpoints) - Add gemini-3-flash to GeminiModel type and RPM limits - Update test to match new endpoint Co-authored-by: Claude Opus 4.6 --- src/services/worker/GeminiAgent.ts | 7 +++++-- tests/gemini_agent.test.ts | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/services/worker/GeminiAgent.ts b/src/services/worker/GeminiAgent.ts index fbefd300..458f6f7a 100644 --- a/src/services/worker/GeminiAgent.ts +++ b/src/services/worker/GeminiAgent.ts @@ -28,8 +28,9 @@ import { type FallbackAgent } from './agents/index.js'; -// Gemini API endpoint -const GEMINI_API_URL = 'https://generativelanguage.googleapis.com/v1beta/models'; +// Gemini API endpoint — use v1 (stable), not v1beta. +// v1beta does not support newer models like gemini-3-flash. +const GEMINI_API_URL = 'https://generativelanguage.googleapis.com/v1/models'; // Gemini model types (available via API) export type GeminiModel = @@ -38,6 +39,7 @@ export type GeminiModel = | 'gemini-2.5-pro' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' + | 'gemini-3-flash' | 'gemini-3-flash-preview'; // Free tier RPM limits by model (requests per minute) @@ -47,6 +49,7 @@ const GEMINI_RPM_LIMITS: Record = { 'gemini-2.5-pro': 5, 'gemini-2.0-flash': 15, 'gemini-2.0-flash-lite': 30, + 'gemini-3-flash': 10, 'gemini-3-flash-preview': 5, }; diff --git a/tests/gemini_agent.test.ts b/tests/gemini_agent.test.ts index 37896d3a..f567f1d8 100644 --- a/tests/gemini_agent.test.ts +++ b/tests/gemini_agent.test.ts @@ -168,7 +168,7 @@ describe('GeminiAgent', () => { expect(global.fetch).toHaveBeenCalledTimes(1); const url = (global.fetch as any).mock.calls[0][0]; - expect(url).toContain('https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-lite:generateContent'); + expect(url).toContain('https://generativelanguage.googleapis.com/v1/models/gemini-2.5-flash-lite:generateContent'); expect(url).toContain('key=test-api-key'); });