fix(cli): migrate Gemini models to explicit antigravity- prefix for quota routing

All Gemini model references now use the `antigravity-` prefix to ensure explicit
routing to Antigravity quota pools instead of relying on legacy `-preview` suffix
disambiguation. This approach prevents potential breakage if Google removes the
`-preview` suffix in future versions.

Updates include:
- config-manager: Updated Gemini model assignments with antigravity- prefix
- config-manager.test.ts: Updated test assertions to match new naming convention
- install.ts: Updated config summary display to show antigravity-prefixed model name

Migration follows opencode-antigravity-auth plugin v1.2.7+ guidance for explicit
quota routing configuration.

🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
This commit is contained in:
YeonGyu-Kim
2026-01-05 23:36:10 +09:00
parent 21236d88a7
commit 898d3e6175
3 changed files with 27 additions and 11 deletions

View File

@@ -11,9 +11,9 @@ describe("config-manager ANTIGRAVITY_PROVIDER_CONFIG", () => {
expect(models).toBeTruthy() expect(models).toBeTruthy()
const required = [ const required = [
"gemini-3-pro-high", "antigravity-gemini-3-pro-high",
"gemini-3-pro-low", "antigravity-gemini-3-pro-low",
"gemini-3-flash", "antigravity-gemini-3-flash",
] ]
for (const key of required) { for (const key of required) {

View File

@@ -279,8 +279,10 @@ export function generateOmoConfig(installConfig: InstallConfig): Record<string,
agents["librarian"] = { model: "opencode/glm-4.7-free" } agents["librarian"] = { model: "opencode/glm-4.7-free" }
// Gemini models use `antigravity-` prefix for explicit Antigravity quota routing
// @see ANTIGRAVITY_PROVIDER_CONFIG comments for rationale
if (installConfig.hasGemini) { if (installConfig.hasGemini) {
agents["explore"] = { model: "google/gemini-3-flash" } agents["explore"] = { model: "google/antigravity-gemini-3-flash" }
} else if (installConfig.hasClaude && installConfig.isMax20) { } else if (installConfig.hasClaude && installConfig.isMax20) {
agents["explore"] = { model: "anthropic/claude-haiku-4-5" } agents["explore"] = { model: "anthropic/claude-haiku-4-5" }
} else { } else {
@@ -294,9 +296,9 @@ export function generateOmoConfig(installConfig: InstallConfig): Record<string,
} }
if (installConfig.hasGemini) { if (installConfig.hasGemini) {
agents["frontend-ui-ux-engineer"] = { model: "google/gemini-3-pro-high" } agents["frontend-ui-ux-engineer"] = { model: "google/antigravity-gemini-3-pro-high" }
agents["document-writer"] = { model: "google/gemini-3-flash" } agents["document-writer"] = { model: "google/antigravity-gemini-3-flash" }
agents["multimodal-looker"] = { model: "google/gemini-3-flash" } agents["multimodal-looker"] = { model: "google/antigravity-gemini-3-flash" }
} else { } else {
const fallbackModel = installConfig.hasClaude ? "anthropic/claude-opus-4-5" : "opencode/glm-4.7-free" const fallbackModel = installConfig.hasClaude ? "anthropic/claude-opus-4-5" : "opencode/glm-4.7-free"
agents["frontend-ui-ux-engineer"] = { model: fallbackModel } agents["frontend-ui-ux-engineer"] = { model: fallbackModel }
@@ -497,25 +499,39 @@ export async function runBunInstallWithDetails(): Promise<BunInstallResult> {
} }
} }
/**
* Antigravity Provider Configuration
*
* IMPORTANT: Model names MUST use `antigravity-` prefix for stability.
*
* The opencode-antigravity-auth plugin supports two naming conventions:
* - `antigravity-gemini-3-pro-high` (RECOMMENDED, explicit Antigravity quota routing)
* - `gemini-3-pro-high` (LEGACY, backward compatible but may break in future)
*
* Legacy names rely on Gemini CLI using `-preview` suffix for disambiguation.
* If Google removes `-preview`, legacy names may route to wrong quota.
*
* @see https://github.com/NoeFabris/opencode-antigravity-auth#migration-guide-v127
*/
export const ANTIGRAVITY_PROVIDER_CONFIG = { export const ANTIGRAVITY_PROVIDER_CONFIG = {
google: { google: {
name: "Google", name: "Google",
models: { models: {
"gemini-3-pro-high": { "antigravity-gemini-3-pro-high": {
name: "Gemini 3 Pro High (Antigravity)", name: "Gemini 3 Pro High (Antigravity)",
thinking: true, thinking: true,
attachment: true, attachment: true,
limit: { context: 1048576, output: 65535 }, limit: { context: 1048576, output: 65535 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] }, modalities: { input: ["text", "image", "pdf"], output: ["text"] },
}, },
"gemini-3-pro-low": { "antigravity-gemini-3-pro-low": {
name: "Gemini 3 Pro Low (Antigravity)", name: "Gemini 3 Pro Low (Antigravity)",
thinking: true, thinking: true,
attachment: true, attachment: true,
limit: { context: 1048576, output: 65535 }, limit: { context: 1048576, output: 65535 },
modalities: { input: ["text", "image", "pdf"], output: ["text"] }, modalities: { input: ["text", "image", "pdf"], output: ["text"] },
}, },
"gemini-3-flash": { "antigravity-gemini-3-flash": {
name: "Gemini 3 Flash (Antigravity)", name: "Gemini 3 Flash (Antigravity)",
attachment: true, attachment: true,
limit: { context: 1048576, output: 65536 }, limit: { context: 1048576, output: 65536 },

View File

@@ -49,7 +49,7 @@ function formatConfigSummary(config: InstallConfig): string {
const sisyphusModel = config.hasClaude ? "claude-opus-4-5" : "glm-4.7-free" const sisyphusModel = config.hasClaude ? "claude-opus-4-5" : "glm-4.7-free"
const oracleModel = config.hasChatGPT ? "gpt-5.2" : (config.hasClaude ? "claude-opus-4-5" : "glm-4.7-free") const oracleModel = config.hasChatGPT ? "gpt-5.2" : (config.hasClaude ? "claude-opus-4-5" : "glm-4.7-free")
const librarianModel = "glm-4.7-free" const librarianModel = "glm-4.7-free"
const frontendModel = config.hasGemini ? "gemini-3-pro-high" : (config.hasClaude ? "claude-opus-4-5" : "glm-4.7-free") const frontendModel = config.hasGemini ? "antigravity-gemini-3-pro-high" : (config.hasClaude ? "claude-opus-4-5" : "glm-4.7-free")
lines.push(` ${SYMBOLS.bullet} Sisyphus ${SYMBOLS.arrow} ${color.cyan(sisyphusModel)}`) lines.push(` ${SYMBOLS.bullet} Sisyphus ${SYMBOLS.arrow} ${color.cyan(sisyphusModel)}`)
lines.push(` ${SYMBOLS.bullet} Oracle ${SYMBOLS.arrow} ${color.cyan(oracleModel)}`) lines.push(` ${SYMBOLS.bullet} Oracle ${SYMBOLS.arrow} ${color.cyan(oracleModel)}`)