Skip to main content

EngineApi

Struct EngineApi 

Source
pub struct EngineApi { /* private fields */ }
Expand description

Engine API facade — model catalog introspection + config writes + routing.

Holds a shared reference to the live config (behind RwLock) and the path to config.toml so write operations can persist to disk. Routing stats are shared with AgentRuntime via Arc<RoutingStats>.

When config writes change the model or API key, EngineApi rebuilds OxiosEngine via [EngineHandle] so the runtime picks up the change on the next agent execution (hot-swap, no restart required).

Implementations§

Source§

impl EngineApi

Source

pub fn new( config: Arc<RwLock<OxiosConfig>>, config_path: PathBuf, routing_stats: Arc<RoutingStats>, engine_handle: Arc<EngineHandle>, ) -> Self

Create a new EngineApi.

  • config — shared config store (backed by RwLock)
  • config_path — path to config.toml for persistence
  • routing_stats — shared stats tracker (shared with AgentRuntime)
  • engine_handle — hot-swap handle for live engine replacement
Source

pub fn routing_stats(&self) -> Arc<RoutingStats>

Get the shared RoutingStats reference (for AgentRuntime wiring).

Source

pub fn engine_handle(&self) -> &Arc<EngineHandle>

Get a reference to the engine handle.

Source

pub fn providers(&self) -> Vec<ProviderInfo>

List all available providers from the oxi-sdk catalog.

Filters out hidden/internal providers (those flagged with hidden: true in [PROVIDER_META]) and augments each entry with credential status, display name, and description.

Providers without a [PROVIDER_META] entry are shown by default — a new provider landing in oxi-sdk should be available to users even before its metadata is added here.

Source

pub fn models(&self, provider: &str, query: Option<&str>) -> Vec<ModelInfo>

List models for a given provider, optionally filtered by a query.

Source

pub fn search_models(&self, query: &str) -> Vec<ModelInfo>

Search models across all providers.

Source

pub fn config(&self) -> EngineConfigResponse

Get the current engine configuration + credential status + routing.

Source

pub fn routing_stats_snapshot(&self) -> RoutingStatsSnapshot

Get routing stats snapshot (for Web dashboard).

Source

pub fn fallback_history(&self, limit: usize) -> Vec<FallbackEvent>

Get recent fallback history.

Source

pub fn set_model(&self, model_id: &str) -> Result<()>

Set the default model in config.toml.

Updates both the in-memory config and the on-disk file, then hot-swaps the runtime engine so the next agent execution uses the new model.

Source

pub fn set_api_key(&self, provider: &str, key: &str) -> Result<()>

Set an API key for a provider.

Stores the key via CredentialStore (→ ~/.oxi/auth.json) and also updates config.toml’s [engine].api_key when the provider matches the current default model. Hot-swaps the runtime engine afterward.

Source

pub fn set_provider_options(&self, opts: &ProviderOptions) -> Result<()>

Update provider options in config.toml.

Persists the options and makes them available for the next agent run. They are passed through to AgentLoopConfig::provider_options.

Source

pub fn set_routing(&self, update: RoutingUpdate) -> Result<()>

Update routing configuration in config.toml.

Only the fields provided in update are changed; others are left untouched. Changes are persisted to disk immediately.

Source

pub fn validate_key(&self, provider: &str, api_key: &str) -> ValidateKeyResult

Validate an API key by making a simple test call.

Creates a lightweight provider and attempts a minimal request. Returns the validation result.

Source

pub fn estimate_cost( model_id: &str, input_tokens: u64, output_tokens: u64, ) -> f64

Estimate cost for a model invocation.

Trait Implementations§

Source§

impl Debug for EngineApi

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more