From 653f8092aea7e9b0d0e3f7ca7d6fd2a42f87e4a5 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Sun, 22 Feb 2026 00:14:15 +0700 Subject: [PATCH] fix(cliproxy): add gemini 3.1 preview alias compatibility --- src/cliproxy/config/generator.ts | 5 ++++- tests/unit/cliproxy/config-generator.test.js | 23 ++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/cliproxy/config/generator.ts b/src/cliproxy/config/generator.ts index ca832297..c5de0df8 100644 --- a/src/cliproxy/config/generator.ts +++ b/src/cliproxy/config/generator.ts @@ -28,8 +28,9 @@ export const CCS_CONTROL_PANEL_SECRET = 'ccs'; * v5: Added disable-cooling: true for stability * v6: Added oauth-model-alias with Opus 4.6 support * v7: Added fork:true for Claude model aliases (keep both upstream and alias names) + * v8: Added Gemini 3.1 preview aliases for provider routing compatibility */ -export const CLIPROXY_CONFIG_VERSION = 7; +export const CLIPROXY_CONFIG_VERSION = 8; /** * Default Antigravity oauth-model-alias entries. @@ -40,6 +41,8 @@ const DEFAULT_ANTIGRAVITY_ALIASES: Array<{ name: string; alias: string; fork?: b { name: 'rev19-uic3-1p', alias: 'gemini-2.5-computer-use-preview-10-2025' }, { name: 'gemini-3-pro-image', alias: 'gemini-3-pro-image-preview' }, { name: 'gemini-3-pro-high', alias: 'gemini-3-pro-preview' }, + { name: 'gemini-3-pro-high', alias: 'gemini-3.1-pro-preview' }, + { name: 'gemini-3-pro-high', alias: 'gemini-3.1-pro-preview-customtools' }, { name: 'gemini-3-flash', alias: 'gemini-3-flash-preview' }, { name: 'claude-sonnet-4-5', alias: 'gemini-claude-sonnet-4-5', fork: true }, { name: 'claude-sonnet-4-5-thinking', alias: 'gemini-claude-sonnet-4-5-thinking', fork: true }, diff --git a/tests/unit/cliproxy/config-generator.test.js b/tests/unit/cliproxy/config-generator.test.js index 22b28984..1a184bf9 100644 --- a/tests/unit/cliproxy/config-generator.test.js +++ b/tests/unit/cliproxy/config-generator.test.js @@ -621,6 +621,29 @@ auth-dir: "${cliproxyDir.replace(/\\/g, '/')}/auth" } }); + it('generates Gemini 3.1 compatibility aliases without fork', () => { + regenerateConfig(); + + const cliproxyDir = path.join(testDir, '.ccs', 'cliproxy'); + const config = fs.readFileSync(path.join(cliproxyDir, 'config.yaml'), 'utf-8'); + const lines = config.split('\n'); + + const gemini31AliasLines = [ + 'alias: gemini-3.1-pro-preview', + 'alias: gemini-3.1-pro-preview-customtools', + ]; + + for (const aliasLine of gemini31AliasLines) { + const lineIndex = lines.findIndex((line) => line.includes(aliasLine)); + assert(lineIndex >= 0, `Should include ${aliasLine}`); + const nextLine = lines[lineIndex + 1] || ''; + assert( + !nextLine.trim().startsWith('fork:'), + `Gemini alias should not have fork: ${aliasLine}` + ); + } + }); + it('preserves user-added aliases with fork during regeneration', () => { const cliproxyDir = path.join(testDir, '.ccs', 'cliproxy'); fs.mkdirSync(cliproxyDir, { recursive: true });