pub struct AgentRuntime {
pub state: AgentSessionState,
/* private fields */
}Expand description
Orchestrates a single agent turn: manages steering, lifecycle events, and the LLM call.
Fields§
§state: AgentSessionStateMutable session state including conversation history and statistics.
Implementations§
Source§impl AgentRuntime
impl AgentRuntime
Sourcepub fn new(
state: AgentSessionState,
event_sink: Option<EventSink>,
steering_receiver: Option<UnboundedReceiver<SteeringMessage>>,
) -> Self
pub fn new( state: AgentSessionState, event_sink: Option<EventSink>, steering_receiver: Option<UnboundedReceiver<SteeringMessage>>, ) -> Self
Create a new runtime with the given session state, optional event sink, and steering receiver.
Sourcepub fn set_event_handler(&mut self, sink: Option<EventSink>)
pub fn set_event_handler(&mut self, sink: Option<EventSink>)
Replace the structured event sink used for lifecycle event emission.
Sourcepub fn set_steering_receiver(
&mut self,
receiver: Option<UnboundedReceiver<SteeringMessage>>,
)
pub fn set_steering_receiver( &mut self, receiver: Option<UnboundedReceiver<SteeringMessage>>, )
Replace the steering message receiver channel for this runtime.
Sourcepub fn take_steering_receiver(
&mut self,
) -> Option<UnboundedReceiver<SteeringMessage>>
pub fn take_steering_receiver( &mut self, ) -> Option<UnboundedReceiver<SteeringMessage>>
Take ownership of the steering receiver, leaving None in its place.
Sourcepub fn split_mut(&mut self) -> (&mut AgentSessionState, &mut RuntimeSteering)
pub fn split_mut(&mut self) -> (&mut AgentSessionState, &mut RuntimeSteering)
Borrow the session state and steering controller mutably at the same time.
Sourcepub fn has_pending_follow_up_inputs(&self) -> bool
pub fn has_pending_follow_up_inputs(&self) -> bool
Returns true if there are queued follow-up user inputs waiting to be consumed.
Sourcepub fn run_until_idle(&mut self) -> Option<String>
pub fn run_until_idle(&mut self) -> Option<String>
Pop the next queued follow-up input, add a tagged user message, and retain the intent until the enclosing history checkpoint succeeds.
Sourcepub fn queue_follow_up_input(&mut self, input: String)
pub fn queue_follow_up_input(&mut self, input: String)
Queue a follow-up input to be consumed by run_until_idle on the next
iteration, causing the session loop to start a new turn with this input
without waiting for the user to type anything.
Sourcepub fn try_queue_follow_up_input(
&mut self,
input: String,
) -> Result<(), FollowUpQueueFull>
pub fn try_queue_follow_up_input( &mut self, input: String, ) -> Result<(), FollowUpQueueFull>
Queue a follow-up input while exposing FIFO overflow to the caller.
Sourcepub fn restore_follow_up_state(
&mut self,
pending_intents: impl IntoIterator<Item = QueuedFollowUpIntent>,
applied_intent_ids: impl IntoIterator<Item = String>,
) -> Result<(), FollowUpQueueFull>
pub fn restore_follow_up_state( &mut self, pending_intents: impl IntoIterator<Item = QueuedFollowUpIntent>, applied_intent_ids: impl IntoIterator<Item = String>, ) -> Result<(), FollowUpQueueFull>
Restore the durable steering snapshot after loading session history. Pending intents already represented by a tagged user message, or already in the applied-ID window, are skipped; identical text with a different ID is intentionally retained.
Sourcepub fn applied_follow_up_intent_ids(&self) -> &VecDeque<String>
pub fn applied_follow_up_intent_ids(&self) -> &VecDeque<String>
Access the intent IDs acknowledged by this runtime for checkpointing.
Sourcepub fn clear_pending_follow_up_inputs(&mut self)
pub fn clear_pending_follow_up_inputs(&mut self)
Drop follow-up inputs belonging to the discarded execution context.
Sourcepub async fn poll_turn_control(&mut self) -> RuntimeControl
pub async fn poll_turn_control(&mut self) -> RuntimeControl
Poll the steering channel for control signals during the current turn.
Sourcepub async fn poll_tool_control(&mut self) -> RuntimeControl
pub async fn poll_tool_control(&mut self) -> RuntimeControl
Poll the steering channel for control signals during tool execution.
Sourcepub fn take_emitted_events(&mut self) -> Vec<ThreadEvent>
pub fn take_emitted_events(&mut self) -> Vec<ThreadEvent>
Take all emitted lifecycle events, leaving the internal buffer empty.
Sourcepub fn tool_call_item_id(&self, call_id: &str) -> Option<String>
pub fn tool_call_item_id(&self, call_id: &str) -> Option<String>
Look up the lifecycle item ID for a given tool call identifier.
Sourcepub fn complete_tool_call(
&mut self,
call_id: &str,
status: ToolCallStatus,
outcome: Option<ToolOutcome>,
)
pub fn complete_tool_call( &mut self, call_id: &str, status: ToolCallStatus, outcome: Option<ToolOutcome>, )
Mark a specific tool call as completed with the given status and emit lifecycle events.
Sourcepub fn complete_open_tool_calls(&mut self, status: ToolCallStatus)
pub fn complete_open_tool_calls(&mut self, status: ToolCallStatus)
Mark all still-open tool calls as completed with the given status and emit lifecycle events.
Sourcepub async fn run_turn_once(
&mut self,
provider: &mut Box<dyn LLMProvider>,
request: LLMRequest,
timeout: Option<Duration>,
) -> Result<TurnExecution>
pub async fn run_turn_once( &mut self, provider: &mut Box<dyn LLMProvider>, request: LLMRequest, timeout: Option<Duration>, ) -> Result<TurnExecution>
Execute a single LLM turn: stream the response, update session state, and return the result.
Auto Trait Implementations§
impl !RefUnwindSafe for AgentRuntime
impl !UnwindSafe for AgentRuntime
impl Freeze for AgentRuntime
impl Send for AgentRuntime
impl Sync for AgentRuntime
impl Unpin for AgentRuntime
impl UnsafeUnpin for AgentRuntime
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
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>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
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)
fn as_any(&self) -> &(dyn Any + 'static)
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&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
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more