#[non_exhaustive]pub struct Model {
pub id: Cow<'static, str>,
pub name: Cow<'static, str>,
pub note: Cow<'static, str>,
pub kind: Kind,
pub efforts: Vec<Cow<'static, str>>,
pub is_default: bool,
}Expand description
One model a caller can choose.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.id: Cow<'static, str>Exactly what goes to --model. Passed through verbatim.
name: Cow<'static, str>The vendor’s own display name, for a picker.
note: Cow<'static, str>One line on what it is for. Empty when the vendor offers none.
kind: KindWhether the id tracks a family or names one model.
efforts: Vec<Cow<'static, str>>Reasoning levels this model accepts, in the vendor’s order, for
crate::Request::effort.
Kept as strings for the same reason ids are, and the three agents make
the case on their own: Claude documents five levels, Copilot seven, and
Codex varies them per model, offering ultra on its two frontier models
and not on the rest. A shared enum would have to be edited before a new
level could even be named.
Empty means a picker has nothing to offer for this model. That covers
two cases, and the catalogue comments say which applies: the model
genuinely accepts no level, as Copilot’s auto does, or the levels are
simply not established here. Neither is a promise that a level would be
refused, since nothing in this crate validates against it.
is_default: boolWhether the agent uses this when the caller names no model.