Skip to main content

BaseAgent

Struct BaseAgent 

Source
pub struct BaseAgent<T: AgentDeriveT + AgentExecutor + AgentHooks + Send + Sync, A: AgentType> {
    pub id: ActorID,
    /* private fields */
}
Expand description

Base agent type that wraps an AgentDeriveT implementation with additional runtime components

Fields§

§id: ActorID

Agent ID

Implementations§

Source§

impl<T: AgentDeriveT + AgentExecutor + AgentHooks, A: AgentType> BaseAgent<T, A>

Source

pub async fn new( inner: T, llm: Arc<dyn LLMProvider>, memory: Option<Box<dyn MemoryProvider>>, tx: Sender<Event>, stream: bool, ) -> Result<Self, RunnableAgentError>

Create a new BaseAgent wrapping an AgentDeriveT implementation

Source

pub fn inner(&self) -> Arc<T>

Source

pub fn name(&self) -> &str

Get the agent’s name

Source

pub fn description(&self) -> &str

Get the agent’s description

Source

pub fn tools(&self) -> Vec<Box<dyn ToolT>>

Get the tools as Arc-wrapped references

Source

pub fn serialized_tools(&self) -> Option<Arc<Vec<Tool>>>

Source

pub fn stream(&self) -> bool

Source

pub fn agent_config(&self) -> AgentConfig

Source

pub fn llm(&self) -> Arc<dyn LLMProvider>

Get the LLM provider

Source

pub fn memory(&self) -> Option<Arc<Mutex<Box<dyn MemoryProvider>>>>

Get the memory provider if available

Source§

impl<T: AgentDeriveT + AgentExecutor + AgentHooks> BaseAgent<T, ActorAgent>

Source

pub fn tx(&self) -> Result<Sender<Event>, RunnableAgentError>

Source

pub async fn run( self: Arc<Self>, task: Task, ) -> Result<<T as AgentDeriveT>::Output, RunnableAgentError>

Source

pub async fn run_stream( self: Arc<Self>, task: Task, ) -> Result<BoxRuntimeStream<Result<<T as AgentDeriveT>::Output, RunnableAgentError>>, RunnableAgentError>

Return a live executor output stream without the full task lifecycle.

Event channel: Does not emit terminal protocol events (TaskComplete, TaskError) on the agent event channel. In-stream failures appear only as Err items on the returned stream. Lifecycle hooks (on_run_start, on_run_complete) are also skipped.

Use Self::run_stream_to_completion when dispatching through a runtime, waiting on TaskComplete / TaskError, or matching the pub/sub actor path (which calls run_stream_to_completion internally).

Mid-run events (StreamChunk, tool-call events, etc.) may still be emitted by the executor while the returned stream is polled.

Source

pub async fn run_stream_to_completion( self: Arc<Self>, task: Task, ) -> Result<<T as AgentDeriveT>::Output, RunnableAgentError>

Execute a streaming task to completion inside the actor, draining the stream and running lifecycle hooks before returning.

This is the event-aware streaming entry point: emits TaskError on hook abort, stream setup failure, in-stream item errors, and empty streams; emits TaskComplete on success. Pub/sub AgentActor dispatch uses this method when stream() is enabled.

When the executor stream yields multiple successful outputs, only the last item is used for TaskComplete and the returned agent output. Intermediate items are not emitted as terminal events.

For incremental output without terminal events, see Self::run_stream.

Source§

impl<T: AgentDeriveT + AgentExecutor + AgentHooks> BaseAgent<T, DirectAgent>

Source

pub async fn run( &self, task: Task, ) -> Result<<T as AgentDeriveT>::Output, RunnableAgentError>

Execute the agent for a single task and return the final agent output.

Source

pub async fn run_stream( &self, task: Task, ) -> Result<BoxRuntimeStream<Result<<T as AgentDeriveT>::Output, Error>>, RunnableAgentError>

Execute the agent with streaming enabled and receive a stream of partial outputs which culminate in a final chunk with done=true.

Trait Implementations§

Source§

impl<T: Clone + AgentDeriveT + AgentExecutor + AgentHooks + Send + Sync, A: Clone + AgentType> Clone for BaseAgent<T, A>

Source§

fn clone(&self) -> BaseAgent<T, A>

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: AgentDeriveT + AgentExecutor + AgentHooks, A: AgentType> Debug for BaseAgent<T, A>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<T, A> !RefUnwindSafe for BaseAgent<T, A>

§

impl<T, A> !UnwindSafe for BaseAgent<T, A>

§

impl<T, A> Freeze for BaseAgent<T, A>

§

impl<T, A> Send for BaseAgent<T, A>

§

impl<T, A> Sync for BaseAgent<T, A>

§

impl<T, A> Unpin for BaseAgent<T, A>
where A: Unpin,

§

impl<T, A> UnsafeUnpin for BaseAgent<T, A>

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Message for T
where T: Any + Send + 'static,

Source§

fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>

Convert a BoxedMessage to this concrete type
Source§

fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>

Convert this message to a BoxedMessage
Source§

impl<T> OutputMessage for T
where T: Message + Clone,

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> State for T
where T: Any + Send + 'static,

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. 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