From 404eb72d4b8d086c1bd13b3b21d72d69013d067b Mon Sep 17 00:00:00 2001 From: Sehoon Shon Date: Mon, 30 Mar 2026 17:03:00 -0400 Subject: [PATCH] fix(core): resolve 500 errors with gemini-3-flash-preview model - Refactor default model configs to prevent Flash models from inheriting thinkingConfig - Add synthetic model turn to initial chat history to enforce alternating user/model roles required by gemini-3-flash-preview - Fix trailing newline assertion error in file-system integration test --- integration-tests/file-system.test.ts | 2 +- .../core/src/config/defaultModelConfigs.ts | 21 ++++++++++++------- packages/core/src/utils/environmentContext.ts | 4 ++++ packages/test-utils/src/test-rig.ts | 7 +++++-- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/integration-tests/file-system.test.ts b/integration-tests/file-system.test.ts index 64481068c2..e540086953 100644 --- a/integration-tests/file-system.test.ts +++ b/integration-tests/file-system.test.ts @@ -132,7 +132,7 @@ describe('file-system', () => { 'Expected to find a write_file tool call', ).toBeTruthy(); - const newFileContent = rig.readFile(fileName); + const newFileContent = rig.readFile(fileName).trim(); expect(newFileContent).toBe('hello'); }); diff --git a/packages/core/src/config/defaultModelConfigs.ts b/packages/core/src/config/defaultModelConfigs.ts index 84c2478a5f..7f368061a4 100644 --- a/packages/core/src/config/defaultModelConfigs.ts +++ b/packages/core/src/config/defaultModelConfigs.ts @@ -21,16 +21,23 @@ export const DEFAULT_MODEL_CONFIGS: ModelConfigServiceConfig = { }, }, }, - 'chat-base': { + 'chat-base-no-thinking': { extends: 'base', + modelConfig: { + generateContentConfig: { + temperature: 1, + topP: 0.95, + topK: 64, + }, + }, + }, + 'chat-base': { + extends: 'chat-base-no-thinking', modelConfig: { generateContentConfig: { thinkingConfig: { includeThoughts: true, }, - temperature: 1, - topP: 0.95, - topK: 64, }, }, }, @@ -66,7 +73,7 @@ export const DEFAULT_MODEL_CONFIGS: ModelConfigServiceConfig = { }, }, 'gemini-3-flash-preview': { - extends: 'chat-base-3', + extends: 'chat-base-no-thinking', modelConfig: { model: 'gemini-3-flash-preview', }, @@ -78,13 +85,13 @@ export const DEFAULT_MODEL_CONFIGS: ModelConfigServiceConfig = { }, }, 'gemini-2.5-flash': { - extends: 'chat-base-2.5', + extends: 'chat-base-no-thinking', modelConfig: { model: 'gemini-2.5-flash', }, }, 'gemini-2.5-flash-lite': { - extends: 'chat-base-2.5', + extends: 'chat-base-no-thinking', modelConfig: { model: 'gemini-2.5-flash-lite', }, diff --git a/packages/core/src/utils/environmentContext.ts b/packages/core/src/utils/environmentContext.ts index abdf6faae9..e66583a2cc 100644 --- a/packages/core/src/utils/environmentContext.ts +++ b/packages/core/src/utils/environmentContext.ts @@ -96,6 +96,10 @@ export async function getInitialChatHistory( role: 'user', parts: [{ text: envContextString }], }, + { + role: 'model', + parts: [{ text: 'Understood. I am ready.' }], + }, ...(extraHistory ?? []), ]; } diff --git a/packages/test-utils/src/test-rig.ts b/packages/test-utils/src/test-rig.ts index ae2e9cc0ef..053d8fba94 100644 --- a/packages/test-utils/src/test-rig.ts +++ b/packages/test-utils/src/test-rig.ts @@ -11,7 +11,10 @@ import { join, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; import { env } from 'node:process'; import { setTimeout as sleep } from 'node:timers/promises'; -import { DEFAULT_GEMINI_MODEL, GEMINI_DIR } from '@google/gemini-cli-core'; +import { + GEMINI_DIR, + PREVIEW_GEMINI_FLASH_MODEL, +} from '@google/gemini-cli-core'; export { GEMINI_DIR }; import * as pty from '@lydell/node-pty'; import stripAnsi from 'strip-ansi'; @@ -457,7 +460,7 @@ export class TestRig { ...(env['GEMINI_TEST_TYPE'] === 'integration' ? { model: { - name: DEFAULT_GEMINI_MODEL, + name: PREVIEW_GEMINI_FLASH_MODEL, }, } : {}),