Skip to main content

AgentLoop

Struct AgentLoop 

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

High-level agent orchestration loop.

Wraps an AgentRuntime with slash command routing, tape recording, and optional system prompt overrides.

§Construction

let agent_loop = AgentLoop::new(runtime, tools)
    .with_tape(tape_store)
    .with_system_prompt("You are a helpful assistant.".to_string());

Implementations§

Source§

impl AgentLoop

Source

pub fn new(runtime: Arc<dyn AgentRuntime>, tools: Arc<dyn ToolPort>) -> Self

Create a new agent loop wrapping the given runtime and tool port.

Source

pub fn with_tape(self, tape: Arc<dyn TapeStorePort>) -> Self

Attach a tape store for persistent conversation recording.

Source

pub fn with_events(self, events: Arc<dyn EventSink>) -> Self

Attach an event sink for observability.

Source

pub fn with_system_prompt(self, prompt: String) -> Self

Set a system prompt that overrides the default runtime prompt.

This is typically loaded from a workspace file (e.g. .agent/system-prompt.md) at the composition root. The content is passed as a pre-loaded string to keep the runtime free from filesystem dependencies.

Source

pub async fn handle_input( &self, input: &str, session_id: &str, ) -> Result<AgentLoopOutput, AgentError>

Process a single user input and return the appropriate output.

Slash commands are handled deterministically. Natural language input is forwarded to the LLM pipeline.

Trait Implementations§

Source§

impl Debug for AgentLoop

Source§

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

Formats the value using the given formatter. 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, 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, 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.