Skip to main content

AgentOrchestrator

Struct AgentOrchestrator 

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

Manages a set of named agents with parent/child hierarchies and supervision.

§Usage

let mut orchestrator = AgentOrchestrator::new();
orchestrator.add_agent("planner", || planner_options());
orchestrator.add_child("researcher", "planner", || researcher_options());

let handle = orchestrator.spawn("planner")?;
let result = handle.send_message("Plan a trip to Paris").await?;

Implementations§

Source§

impl AgentOrchestrator

Source

pub fn new() -> Self

Create a new empty orchestrator.

Source

pub fn with_supervisor(self, policy: impl SupervisorPolicy + 'static) -> Self

Set a supervisor policy for error recovery.

Source

pub const fn with_channel_buffer(self, size: usize) -> Self

Set the request channel buffer size (default: 32).

Source

pub const fn with_max_restarts(self, max: u32) -> Self

Set the default max restarts for supervised agents (default: 3).

Source

pub fn add_agent( &mut self, name: impl Into<String>, options_factory: impl Fn() -> AgentOptions + Send + Sync + 'static, )

Register an agent by name with a factory that produces its options.

The factory is called each time the agent is spawned or restarted.

§Panics

Panics if an agent with the same name has already been registered.

Source

pub fn add_child( &mut self, name: impl Into<String>, parent: impl Into<String>, options_factory: impl Fn() -> AgentOptions + Send + Sync + 'static, )

Register a child agent under the given parent.

§Panics

Panics if the parent agent has not been registered or if the child name is already registered.

Source

pub fn parent_of(&self, name: &str) -> Option<&str>

Get the parent name for a registered agent.

Source

pub fn children_of(&self, name: &str) -> Option<&[String]>

Get the child names for a registered agent.

Source

pub fn names(&self) -> Vec<&str>

List all registered agent names.

Source

pub fn contains(&self, name: &str) -> bool

Whether an agent with this name is registered.

Source

pub fn spawn(&self, name: &str) -> Result<OrchestratedHandle, AgentError>

Spawn a registered agent, returning a handle for interaction.

The agent runs in a background tokio task listening for requests. Each request triggers prompt_async and the result is sent via a one-shot reply channel.

If a SupervisorPolicy is set, the agent is automatically restarted when the supervisor returns SupervisorAction::Restart.

§Errors

Returns AgentError::Plugin if the agent name is not registered.

Trait Implementations§

Source§

impl Debug for AgentOrchestrator

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for AgentOrchestrator

Source§

fn default() -> Self

Returns the “default value” for a type. 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<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: 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: 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> 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<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