Skip to main content

OperatorSpawner

Struct OperatorSpawner 

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

A SpawnerAdapter implementation that hands the dispatch off to an Arc<dyn Operator>.

OperatorSpawner itself does not inspect the operator’s kindMainAi / Human / Automate / Composite all go through the same path, and the operator implementation absorbs the differences.

§Position — the AgentSpec-axis Operator path

Use this type on the path that bakes a separate Operator backend into every AgentDef. For an AgentKind::Operator AgentDef, the OperatorSpawnerFactory produces one with OperatorSpawner::new(op, system_prompt, worker_binding) and places it in routes[agent_name]. Agents flowing in through the agent.md loader default to kind = Operator, so they land here.

The paired Blueprint-global (session) axis is crate::middleware::OperatorDelegateMiddleware — a single operator backend registered on the session and applied uniformly across every agent. When both are effective, the delegate middleware sits at the outer end of the stack and bypasses inner.spawn; this type is inert and no double fire can occur. See the OperatorSpawnerFactory doc for the exclusivity narrative.

Implementations§

Source§

impl OperatorSpawner

Source

pub fn new( operator: Arc<dyn Operator>, system_prompt: Option<String>, worker_binding: Option<WorkerBinding>, ) -> Self

Binds an operator backend plus an optional compile-time system_prompt template (rendered per-spawn via render_system) and an optional compile-time-baked worker_binding.

Trait Implementations§

Source§

impl SpawnerAdapter for OperatorSpawner

Source§

fn spawn<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, engine: &'life1 Engine, ctx: &'life2 Ctx, task_id: TaskId, attempt: u32, token: CapToken, ) -> Pin<Box<dyn Future<Output = Result<Box<dyn Worker>, SpawnError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Spawn one attempt as a worker. Returns Box<dyn Worker>. 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> 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> MaybeSend for T

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