pub struct ModelRegistry { /* private fields */ }Expand description
Indexed view over a ModelConfiguration with identifier-normalised
lookup.
ModelRegistry owns the merged catalog and two auxiliary indices —
by API identifier and by provider — populated at construction time.
Construct one with ModelRegistry::load, which performs the layered
YAML load described on ModelConfiguration. Most callers use the
process-wide singleton returned by get_model_registry rather than
loading their own instance.
Implementations§
Source§impl ModelRegistry
impl ModelRegistry
Sourcepub fn load() -> Result<Self>
pub fn load() -> Result<Self>
Loads the model registry, layering an optional user-side catalog over the embedded one.
Lookup order (highest precedence wins):
OMNI_DEV_MODELS_YAML— explicit override path; short-circuits 2 & 3../.omni-dev/models.yaml— project-local catalog (if present).~/.omni-dev/models.yaml— user-level catalog (if present).- Embedded
src/templates/models.yaml— always present, lowest layer.
Missing user-side files fall through silently. Malformed user-side files log an error and are skipped. A malformed embedded catalog is a hard failure (compile-time invariant).
Sourcepub fn load_layered_from_paths(
project_path: Option<&Path>,
user_path: Option<&Path>,
override_path: Option<&Path>,
) -> Result<Self>
pub fn load_layered_from_paths( project_path: Option<&Path>, user_path: Option<&Path>, override_path: Option<&Path>, ) -> Result<Self>
Loads the registry with explicit paths for the user-side layers.
Exposed primarily for testing — the public entry point is load().
Sourcepub fn config(&self) -> &ModelConfiguration
pub fn config(&self) -> &ModelConfiguration
Returns the merged model configuration.
Sourcepub fn get_model_spec(&self, api_identifier: &str) -> Option<&ModelSpec>
pub fn get_model_spec(&self, api_identifier: &str) -> Option<&ModelSpec>
Returns the model specification for the given API identifier.
Sourcepub fn get_max_output_tokens(&self, api_identifier: &str) -> usize
pub fn get_max_output_tokens(&self, api_identifier: &str) -> usize
Returns the max output tokens for a model, with fallback to provider defaults.
Sourcepub fn get_input_context(&self, api_identifier: &str) -> usize
pub fn get_input_context(&self, api_identifier: &str) -> usize
Returns the input context limit for a model, with fallback to provider defaults.
Sourcepub fn is_legacy_model(&self, api_identifier: &str) -> bool
pub fn is_legacy_model(&self, api_identifier: &str) -> bool
Checks if a model is legacy.
Sourcepub fn get_all_models(&self) -> &[ModelSpec]
pub fn get_all_models(&self) -> &[ModelSpec]
Returns all available models.
Sourcepub fn get_models_by_provider(&self, provider: &str) -> Vec<&ModelSpec>
pub fn get_models_by_provider(&self, provider: &str) -> Vec<&ModelSpec>
Returns models filtered by provider.
Sourcepub fn get_models_by_provider_and_tier(
&self,
provider: &str,
tier: &str,
) -> Vec<&ModelSpec>
pub fn get_models_by_provider_and_tier( &self, provider: &str, tier: &str, ) -> Vec<&ModelSpec>
Returns models filtered by provider and tier.
Sourcepub fn get_default_model(&self, provider: &str) -> Option<&str>
pub fn get_default_model(&self, provider: &str) -> Option<&str>
Returns the default model identifier for a provider, as defined in models.yaml.
Sourcepub fn get_provider_config(&self, provider: &str) -> Option<&ProviderConfig>
pub fn get_provider_config(&self, provider: &str) -> Option<&ProviderConfig>
Returns the provider configuration.
Sourcepub fn get_tier_info(&self, provider: &str, tier: &str) -> Option<&TierInfo>
pub fn get_tier_info(&self, provider: &str, tier: &str) -> Option<&TierInfo>
Returns tier information for a provider.
Sourcepub fn get_beta_headers(&self, api_identifier: &str) -> &[BetaHeader]
pub fn get_beta_headers(&self, api_identifier: &str) -> &[BetaHeader]
Returns the beta headers for a model.
Sourcepub fn get_max_output_tokens_with_beta(
&self,
api_identifier: &str,
beta_value: &str,
) -> usize
pub fn get_max_output_tokens_with_beta( &self, api_identifier: &str, beta_value: &str, ) -> usize
Returns the max output tokens for a model with a specific beta header active.
Sourcepub fn get_input_context_with_beta(
&self,
api_identifier: &str,
beta_value: &str,
) -> usize
pub fn get_input_context_with_beta( &self, api_identifier: &str, beta_value: &str, ) -> usize
Returns the input context for a model with a specific beta header active.