// Antigravity CLI (`agy`) model catalog. // // These models are pinned from the live `:fetchAvailableModels` endpoint // (https://daily-cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels) using a // real `agy` consumer-OAuth token. The public catalog exposes the same clean Gemini // 3.5 Flash tier names as the Antigravity IDE provider; the shared Antigravity executor // maps those names to the legacy upstream IDs immediately before dispatch. // // The `agy` provider reuses the `antigravity` executor/translator (identical backend), // but ships its OWN catalog so it can expose models the `antigravity` provider's static // list omits — notably the Claude models (`claude-opus-4-6-thinking`, `claude-sonnet-4-6`), // which `:fetchAvailableModels` reports as user-callable with quota even though the // `antigravity` catalog comment assumes they 404. Tab-completion models // (`tab_flash_lite_preview`, `tab_jump_flash_lite_preview`) are intentionally excluded — // they are not chat-callable. export const AGY_PUBLIC_MODELS = Object.freeze([ // Claude (Antigravity backend) — the headline differentiator for this provider. { id: "claude-opus-4-6-thinking", name: "Claude Opus 4.6 (Thinking)", contextLength: 200000, maxOutputTokens: 65536, supportsReasoning: true, supportsVision: true, toolCalling: true, }, { id: "claude-sonnet-4-6", name: "Claude Sonnet 4.6 (Thinking)", contextLength: 200000, maxOutputTokens: 65536, supportsReasoning: true, supportsVision: true, toolCalling: true, }, // Gemini 3.x { id: "gemini-3.1-pro-high", name: "Gemini 3.1 Pro (High)", contextLength: 1048576, maxOutputTokens: 65535, supportsReasoning: true, supportsVision: true, toolCalling: true, }, { id: "gemini-3.1-pro-low", name: "Gemini 3.1 Pro (Low)", contextLength: 1048576, maxOutputTokens: 65535, supportsReasoning: true, supportsVision: true, toolCalling: true, }, { id: "gemini-pro-agent", name: "Gemini 3.1 Pro (Agent)", contextLength: 1048576, maxOutputTokens: 65535, supportsReasoning: true, supportsVision: true, toolCalling: true, }, { id: "gemini-3.5-flash-low", name: "Gemini 3.5 Flash (Low)", contextLength: 1048576, maxOutputTokens: 65536, supportsVision: true, toolCalling: true, }, { id: "gemini-3.5-flash-medium", name: "Gemini 3.5 Flash (Medium)", contextLength: 1048576, maxOutputTokens: 65536, supportsReasoning: true, supportsVision: true, toolCalling: true, }, { id: "gemini-3.5-flash-high", name: "Gemini 3.5 Flash (High)", contextLength: 1048576, maxOutputTokens: 65536, supportsReasoning: true, supportsVision: true, toolCalling: true, }, { id: "gemini-3.1-flash-lite", name: "Gemini 3.1 Flash Lite", contextLength: 1048576, maxOutputTokens: 65535, toolCalling: true, }, { id: "gemini-3.1-flash-image", name: "Gemini 3.1 Flash Image" }, // Gemini 2.5 { id: "gemini-2.5-pro", name: "Gemini 2.5 Pro", contextLength: 1048576, maxOutputTokens: 65535, supportsReasoning: true, supportsVision: true, toolCalling: true, }, { id: "gemini-2.5-flash", name: "Gemini 2.5 Flash", contextLength: 1048576, maxOutputTokens: 65535, toolCalling: true, }, { id: "gemini-2.5-flash-thinking", name: "Gemini 2.5 Flash Thinking", contextLength: 1048576, maxOutputTokens: 65535, supportsReasoning: true, toolCalling: true, }, { id: "gemini-2.5-flash-lite", name: "Gemini 2.5 Flash Lite", contextLength: 1048576, maxOutputTokens: 65535, toolCalling: true, }, // GPT-OSS { id: "gpt-oss-120b-medium", name: "GPT-OSS 120B (Medium)", contextLength: 131072, maxOutputTokens: 32768, supportsReasoning: true, toolCalling: true, }, ]); const AGY_PUBLIC_MODEL_IDS = new Set(AGY_PUBLIC_MODELS.map((model) => model.id)); const AGY_CLIENT_VISIBLE_MODEL_NAMES = Object.freeze( AGY_PUBLIC_MODELS.reduce>((acc, model) => { acc[model.id] = model.name; return acc; }, {}) ); export function getClientVisibleAgyModelName(modelId: string, fallbackName?: string): string { return AGY_CLIENT_VISIBLE_MODEL_NAMES[modelId] || fallbackName || modelId; } export function isUserCallableAgyModelId(modelId: string): boolean { return !!modelId && AGY_PUBLIC_MODEL_IDS.has(modelId); }