Skip to main content

Orchestrator

Struct Orchestrator 

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

The orchestrator coordinates the full Ouroboros lifecycle.

Implementations§

Source§

impl Orchestrator

Source

pub fn new( ouroboros: Arc<dyn OuroborosProtocol>, event_bus: EventBus, state_store: Arc<StateStore>, lifecycle: AgentLifecycleManager, ) -> Self

Creates a new orchestrator.

Source

pub fn with_config( ouroboros: Arc<dyn OuroborosProtocol>, event_bus: EventBus, state_store: Arc<StateStore>, lifecycle: AgentLifecycleManager, config: OrchestratorConfig, ) -> Self

Creates a new orchestrator with custom config.

Source

pub fn set_project_manager(&self, manager: Arc<ProjectManager>)

Set the ProjectManager for context partitioning.

Source

pub fn project_manager(&self) -> Option<Arc<ProjectManager>>

Get a reference to the ProjectManager, if set.

Source

pub fn detect_project_tag(&self, message: &str) -> Option<String>

Detect a project from a message, returning tag string.

Source

pub fn set_a2a(&mut self, a2a: Arc<A2AProtocol>)

Set the A2A protocol for inter-agent task delegation.

Source

pub fn set_git_layer(&mut self, git_layer: Arc<GitLayer>)

Set the GitLayer for auto-commits after state saves.

Source

pub fn update_evolution_config(&self, config: OrchestratorConfig)

Hot-reload evolution config without restart.

Takes effect on the next orchestration run.

Source

pub async fn restore_sessions(&self)

Restore sessions from persisted state.

Loads sessions from the StateStore that have an active_seed_id (meaning they are mid-orchestration) and repopulates the in-memory interview session map so that follow-up messages can continue the conversation.

Source

pub async fn handle_message( &self, user_id: &str, user_message: &str, session_id: Option<&str>, project_ids: Option<&str>, request_id: &str, ) -> Result<OrchestrationResult>

Handle a user message through the full Ouroboros loop.

Returns an OrchestrationResult with the response and metadata.

If the interview phase needs clarification (ambiguity > 0.2), the result will contain the questions and the phase will be Phase::Interview. The caller should send these questions to the user and include the session_id in follow-up messages.

Source

pub async fn delegate_subtasks( &self, subtasks: Vec<SubTask>, parent_seed: &Seed, ) -> Result<Vec<SubTask>>

Execute multiple subtasks using separate agents in parallel.

When A2A is available, the orchestrator delegates tasks through the A2A protocol with circuit breaker and retry support. Otherwise, falls back to direct lifecycle execution.

Results are collected as they complete using JoinSet.

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