Skip to main content

AgentRuntime

Struct AgentRuntime 

Source
pub struct AgentRuntime<P: ChatProvider, S = Idle> { /* private fields */ }
Expand description

Thin wrapper around session and env actors.

AgentRuntime owns no mutable data — all persistent state lives in background actors:

The generic parameter S is a type-state marker — Idle means no send/send_stream is in progress, Acquired means one is active. Send operations consume AgentRuntime<P, Idle> and return a handle that eventually yields back AgentRuntime<P, Idle>.

§Mutation

All env mutations (e.g., set_model, add_tool) send an EnvCmd to the actor, which atomically updates the internal state, pushes to the watch channel (picked up by the ReAct loop on the next iteration), and broadcasts an EnvStateEvent.

§Hot-Reload

The ReAct loop calls get_react_config once per fire/send call to obtain a ReActConfig bundle containing the [FuneraEnvWatcher]. Every iteration, the watcher snapshots the latest model, client, tools, and skills from the watch channels — enabling zero-coordination runtime changes.

Implementations§

Source§

impl<P: ChatProvider, S> AgentRuntime<P, S>

Source

pub fn builder() -> AgentRuntimeBuilder

Create a new builder.

Source

pub fn reset(&self)

Reset the conversation session (clear message history).

Source

pub fn session_tx(&self) -> UnboundedSender<SessionCmd>

Access the session control channel.

Source

pub async fn subscribe_env_state(&self) -> Receiver<EnvStateEvent>

Subscribe to runtime-level environment state events.

Source

pub async fn model(&self) -> String

Query the current LLM model name from the env actor.

Source

pub async fn tool_names(&self) -> Vec<String>

List registered tool names from the env actor.

Source

pub fn set_model(&self, model: impl Into<String>)

Change the LLM model name at runtime.

Pushes to the internal watch channel (picked up by the ReAct loop on the next iteration) and broadcasts EnvStateEvent::LlmChanged.

Source

pub fn set_client(&self, client: Client<OpenAIConfig>)

Change the LLM client at runtime (endpoint, key, etc.).

Source

pub fn add_tool(&self, tool: Arc<dyn Tool>)

Register a new tool at runtime.

Source

pub fn remove_tool(&self, name: impl Into<String>)

Remove a tool by name at runtime.

Source

pub fn set_tool_availability(&self, name: impl Into<String>, available: bool)

Set tool availability (enabled/disabled) at runtime.

Auto Trait Implementations§

§

impl<P, S> Freeze for AgentRuntime<P, S>

§

impl<P, S> RefUnwindSafe for AgentRuntime<P, S>
where S: RefUnwindSafe,

§

impl<P, S> Send for AgentRuntime<P, S>
where S: Send,

§

impl<P, S> Sync for AgentRuntime<P, S>
where S: Sync,

§

impl<P, S> Unpin for AgentRuntime<P, S>
where S: Unpin,

§

impl<P, S> UnsafeUnpin for AgentRuntime<P, S>

§

impl<P, S> UnwindSafe for AgentRuntime<P, S>
where S: UnwindSafe,

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<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> MaybeSend for T
where T: Send,

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, 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<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