pub struct ModelRuntime { /* private fields */ }Expand description
Configured pi-ai model/auth collection used by coding-agent and SDK consumers.
Implementations§
Source§impl ModelRuntime
impl ModelRuntime
Sourcepub async fn create(
options: CreateModelRuntimeOptions,
) -> Result<Self, ModelRuntimeError>
pub async fn create( options: CreateModelRuntimeOptions, ) -> Result<Self, ModelRuntimeError>
Create a runtime from the given options.
§Errors
Returns ModelRuntimeError when the compiled-in catalog cannot be
loaded (path-rich catalog failure). File load/parse problems for
models.json are recorded and exposed via Self::get_error.
Sourcepub async fn create_in_memory() -> Result<Self, ModelRuntimeError>
pub async fn create_in_memory() -> Result<Self, ModelRuntimeError>
Convenience constructor for tests: pure in-memory stores, no network.
§Errors
Propagates catalog load failures from Self::create.
Sourcepub fn get_models(&self, provider_id: Option<&str>) -> Vec<Model>
pub fn get_models(&self, provider_id: Option<&str>) -> Vec<Model>
All composed models, optionally filtered by provider.
Sourcepub fn get_model(&self, provider_id: &str, model_id: &str) -> Option<Model>
pub fn get_model(&self, provider_id: &str, model_id: &str) -> Option<Model>
Look up one model by provider and id.
Sourcepub async fn get_available(
&self,
provider_id: Option<&str>,
) -> Result<Vec<Model>, ModelRuntimeError>
pub async fn get_available( &self, provider_id: Option<&str>, ) -> Result<Vec<Model>, ModelRuntimeError>
Models whose providers currently have configured auth.
§Errors
Returns the last availability-refresh error when one was recorded and no snapshot is usable. Offline construction always keeps a snapshot.
Sourcepub fn get_available_snapshot(&self) -> Vec<Model>
pub fn get_available_snapshot(&self) -> Vec<Model>
Latest available-model snapshot without awaiting a refresh.
Sourcepub fn get_error(&self) -> Option<String>
pub fn get_error(&self) -> Option<String>
Aggregated configuration / composition / availability error text.
Sourcepub async fn check_auth(&self, provider_id: &str) -> Option<AuthCheck>
pub async fn check_auth(&self, provider_id: &str) -> Option<AuthCheck>
Side-effect-free auth probe for one provider.
Sourcepub fn is_using_oauth(&self, provider_id: &str) -> bool
pub fn is_using_oauth(&self, provider_id: &str) -> bool
Whether the latest snapshot reports OAuth for provider_id.
Sourcepub fn has_configured_auth(&self, provider_id: &str) -> bool
pub fn has_configured_auth(&self, provider_id: &str) -> bool
Whether the latest snapshot reports configured auth for provider_id.
Sourcepub async fn get_auth_for_provider(
&self,
provider_id: &str,
overrides: ModelRuntimeAuthOverrides,
) -> Result<Option<AuthResult>, ModelRuntimeError>
pub async fn get_auth_for_provider( &self, provider_id: &str, overrides: ModelRuntimeAuthOverrides, ) -> Result<Option<AuthResult>, ModelRuntimeError>
Resolve request auth for a provider id or model.
§Errors
Returns ModelRuntimeError::Models when credential-store access fails.
Sourcepub async fn get_auth_for_model(
&self,
model: &Model,
overrides: ModelRuntimeAuthOverrides,
) -> Result<Option<AuthResult>, ModelRuntimeError>
pub async fn get_auth_for_model( &self, model: &Model, overrides: ModelRuntimeAuthOverrides, ) -> Result<Option<AuthResult>, ModelRuntimeError>
Resolve request auth for a model (applies configured headers).
§Errors
Returns ModelRuntimeError::Models when credential-store access fails.
Sourcepub async fn set_runtime_api_key(
&self,
provider_id: &str,
api_key: impl Into<String>,
) -> Result<(), ModelRuntimeError>
pub async fn set_runtime_api_key( &self, provider_id: &str, api_key: impl Into<String>, ) -> Result<(), ModelRuntimeError>
Install a process-local API key for provider_id and refresh availability.
§Errors
Propagates availability-refresh failures after the key is installed.
Sourcepub async fn remove_runtime_api_key(
&self,
provider_id: &str,
) -> Result<(), ModelRuntimeError>
pub async fn remove_runtime_api_key( &self, provider_id: &str, ) -> Result<(), ModelRuntimeError>
Remove a process-local API key override and refresh availability.
§Errors
Propagates availability-refresh failures after the key is removed.
Sourcepub async fn list_credentials(
&self,
) -> Result<Vec<CredentialInfo>, ModelRuntimeError>
pub async fn list_credentials( &self, ) -> Result<Vec<CredentialInfo>, ModelRuntimeError>
List non-secret credential metadata (runtime + stored).
§Errors
Returns ModelRuntimeError::Models when the credential store fails.
Sourcepub fn get_registered_provider_config(
&self,
provider_id: &str,
) -> Option<ProviderConfigInput>
pub fn get_registered_provider_config( &self, provider_id: &str, ) -> Option<ProviderConfigInput>
Registered extension provider configuration for provider_id.
Sourcepub fn get_registered_provider_ids(&self) -> Vec<String>
pub fn get_registered_provider_ids(&self) -> Vec<String>
Ids of providers registered via Self::register_provider.
Sourcepub fn register_provider(
&self,
provider_id: &str,
config: impl Borrow<ProviderConfigInput>,
) -> Result<(), ModelRuntimeError>
pub fn register_provider( &self, provider_id: &str, config: impl Borrow<ProviderConfigInput>, ) -> Result<(), ModelRuntimeError>
Register or re-register an extension provider.
Re-registration merges defined values over the previous registration and preserves undefined ones.
§Errors
Returns ModelRuntimeError::Registration when the incoming registration
is invalid. A failed re-registration does not mutate the stored config.
Sourcepub fn unregister_provider(&self, provider_id: &str)
pub fn unregister_provider(&self, provider_id: &str)
Unregister an extension provider and recompose.
Sourcepub async fn reload_config(&self) -> Result<(), ModelRuntimeError>
pub async fn reload_config(&self) -> Result<(), ModelRuntimeError>
Reload models.json from disk (or keep the injected snapshot path) and refresh.
§Errors
Propagates catalog recompose failures. File parse problems are recorded
in Self::get_error rather than returned.
Sourcepub async fn refresh(
&self,
options: ModelsRefreshOptions,
) -> Result<ModelsRefreshResult, ModelRuntimeError>
pub async fn refresh( &self, options: ModelsRefreshOptions, ) -> Result<ModelsRefreshResult, ModelRuntimeError>
Refresh dynamic catalogs and availability.
Offline mode (default) recomposes from built-ins + store + overrides and re-probes auth without network I/O.
§Errors
Returns ModelRuntimeError when availability probing fails hard.
Sourcepub fn stream_simple(
&self,
model: Model,
context: Context,
options: StreamOptions,
) -> BoxStream<'static, Result<AssistantMessageEvent, ProviderError>>
pub fn stream_simple( &self, model: Model, context: Context, options: StreamOptions, ) -> BoxStream<'static, Result<AssistantMessageEvent, ProviderError>>
Stream a simple chat completion for model.
Auth is resolved and injected into StreamOptions before dispatch.
After Self::prepare_request, an extension stream handler is selected
only when one is registered for the model provider and the registered
config API exactly equals the prepared model API; otherwise the native
provider registry is used. The stream-provider lock is released before
the provider stream call.
Trait Implementations§
Source§impl Clone for ModelRuntime
impl Clone for ModelRuntime
Source§fn clone(&self) -> ModelRuntime
fn clone(&self) -> ModelRuntime
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for ModelRuntime
impl !UnwindSafe for ModelRuntime
impl Freeze for ModelRuntime
impl Send for ModelRuntime
impl Sync for ModelRuntime
impl Unpin for ModelRuntime
impl UnsafeUnpin for ModelRuntime
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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