Skip to main content

AgentController

Struct AgentController 

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

Process-lifetime Agent controller for one immutable Provider binding.

The controller, not the Provider, owns normalized run_seq, journal records, public inspection, command acknowledgement, and EOF-to-Unknown handling. One controller may host many isolated Runs.

Implementations§

Source§

impl AgentController

Source

pub fn new( provider: Arc<dyn AgentProvider>, binding_ref: ProviderBindingRef, ) -> Result<Self, AgentProtocolError>

Source

pub fn with_event_buffer( provider: Arc<dyn AgentProvider>, binding_ref: ProviderBindingRef, event_buffer: usize, ) -> Result<Self, AgentProtocolError>

Source

pub fn with_journal_store( provider: Arc<dyn AgentProvider>, binding_ref: ProviderBindingRef, journal_store: Arc<dyn AgentJournalStore>, ) -> Result<Self, AgentProtocolError>

Source

pub fn with_journal_store_and_event_buffer( provider: Arc<dyn AgentProvider>, binding_ref: ProviderBindingRef, journal_store: Arc<dyn AgentJournalStore>, event_buffer: usize, ) -> Result<Self, AgentProtocolError>

Source

pub fn descriptor(&self) -> &AgentDescriptorEnvelope

Source

pub async fn start( self: &Arc<Self>, run: AgentRunEnvelope, ) -> Result<AgentExecutionRef, AgentControlError>

Starts or idempotently reopens one immutable Run and begins consuming its atomic Provider stream in the background.

Source

pub async fn inspect( &self, run_id: &RunId, ) -> Result<AgentRunView, AgentControlError>

Returns the bounded Host projection for a Run.

Source

pub async fn initial_input( &self, run_id: &RunId, ) -> Result<Vec<Content>, AgentControlError>

Returns the immutable initial input from the registered Run spec.

This is separate from the bounded public Run projection because it is conversation content, not reducible execution state. Authenticated Host surfaces can use it to reconstruct a transcript without duplicating the input in a transport-specific registry.

Source

pub async fn run_extensions( &self, run_id: &RunId, ) -> Result<Extensions, AgentControlError>

Returns digest-bound metadata from the immutable Run specification.

Source

pub async fn catalog_runs( &self, ) -> Result<Vec<AgentRunCatalogEntry>, AgentControlError>

Lists durable Runs directly from the Host journal. Transport-specific session registries must not maintain a second Run ownership index.

Source

pub async fn can_control_run( &self, run_id: &RunId, ) -> Result<bool, AgentControlError>

Reports whether a durable Run was registered against this controller’s current immutable Provider contract.

Discovery surfaces use this before enriching a native session with a Host-controlled Run. A Provider upgrade may legitimately change its descriptor digest; those older journals remain durable history, but they cannot be rehydrated or controlled by the new binding.

Source

pub async fn has_run(&self, run_id: &RunId) -> Result<bool, AgentControlError>

Source

pub async fn events( &self, run_id: &RunId, after_run_seq: u64, ) -> Result<Vec<AgentJournalRecord>, AgentControlError>

Replays normalized durable facts after the supplied Run sequence.

Source

pub async fn subscribe( &self, run_id: &RunId, ) -> Result<Receiver<AgentControlEvent>, AgentControlError>

Subscribes to events published after subscription. Call events first (and again after broadcast lag) for lossless durable replay.

Source

pub async fn command( &self, command: AgentCommandEnvelope, ) -> Result<CommandAck, AgentControlError>

Records, forwards, and durably projects one idempotent Provider command. Replays return the existing Host acknowledgement without forwarding.

Source

pub async fn cancel( &self, run_id: &RunId, reason: impl Into<String>, ) -> Result<CommandAck, AgentControlError>

Requests cancellation with a fresh idempotency identity. Callers that need retry-stable command IDs should construct an AgentCommandEnvelope once and use Self::command directly.

Source

pub async fn recorded_command( &self, run_id: &RunId, command_id: &CommandId, ) -> Result<Option<AgentCommandEnvelope>, AgentControlError>

Reads immutable command identity without recovering or attaching native work. Session-level retries use this even after the target Run ends.

Source

pub async fn command_ack( &self, run_id: &RunId, command_id: &CommandId, ) -> Result<CommandAck, AgentControlError>

Source

pub async fn recover( self: &Arc<Self>, run_id: &RunId, ) -> Result<AgentRunView, AgentControlError>

Conservatively reattaches a Provider stream after a Host-recorded EOF.

The reference controller requires the recovered stream to replay the complete committed Provider prefix with stable event IDs and draft digests. It restores continuity only after that prefix matches; opaque adapters that cannot provide such evidence remain Unknown rather than being guessed healthy.

Source

pub async fn wait_for_terminal( &self, run_id: &RunId, ) -> Result<AgentRunView, AgentControlError>

Waits until the Run reaches an authoritative terminal. Unknown is returned explicitly rather than guessed as success or cancellation.

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. 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 = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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