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.
Auto Trait Implementations§
impl Freeze for ModelRegistry
impl RefUnwindSafe for ModelRegistry
impl Send for ModelRegistry
impl Sync for ModelRegistry
impl Unpin for ModelRegistry
impl UnsafeUnpin for ModelRegistry
impl UnwindSafe for ModelRegistry
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more