62 lines
1.8 KiB
Rust
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)
|
|
}
|