Files
zerogravity/src/api/models.rs

62 lines
1.8 KiB
Rust

//! Model definitions and lookup.
//!
//! Maps our user-friendly model names to internal Antigravity identifiers.
//! The `model_enum` values are protobuf enum numbers extracted from extension.js:
//! placeholder models use 1000+N (e.g. M26→1026), while named models like
//! `MODEL_CLAUDE_4_OPUS` have their own enum values (e.g. 290).
//! See `docs/ls-binary-analysis.md` for the full enum mapping.
/// Model definition: friendly name → (antigravity_id, protobuf_enum, label).
pub(crate) struct ModelDef {
pub name: &'static str,
#[allow(dead_code)]
pub ag_id: &'static str,
pub model_enum: u32,
pub label: &'static str,
}
pub(crate) const MODELS: &[ModelDef] = &[
ModelDef {
name: "opus-4.6",
ag_id: "MODEL_PLACEHOLDER_M26",
model_enum: 1026,
label: "Claude Opus 4.6 (Thinking)",
},
ModelDef {
name: "opus-4.5",
ag_id: "MODEL_PLACEHOLDER_M12",
model_enum: 1012,
label: "Claude Opus 4.5 (Thinking)",
},
ModelDef {
name: "gemini-3-pro",
ag_id: "MODEL_PLACEHOLDER_M8",
model_enum: 1008,
label: "Gemini 3 Pro (High)",
},
ModelDef {
name: "gemini-3-pro-high",
ag_id: "MODEL_PLACEHOLDER_M8",
model_enum: 1008,
label: "Gemini 3 Pro (High)",
},
ModelDef {
name: "gemini-3-pro-low",
ag_id: "MODEL_PLACEHOLDER_M7",
model_enum: 1007,
label: "Gemini 3 Pro (Low)",
},
ModelDef {
name: "gemini-3-flash",
ag_id: "MODEL_PLACEHOLDER_M18",
model_enum: 1018,
label: "Gemini 3 Flash",
},
];
pub(crate) const DEFAULT_MODEL: &str = "opus-4.6";
pub(crate) fn lookup_model(name: &str) -> Option<&'static ModelDef> {
MODELS.iter().find(|m| m.name == name)
}