Skip to main content

Agent

Struct Agent 

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

The unified agent. Holds the model client, memo store, sandbox, and a shared handle to the currently-served ActiveHarness (which may be hot-swapped by a self-improvement loop).

Implementations§

Source§

impl Agent

Source

pub const MAX_AGENTIC_STEPS: usize = 8

Upper bound on model↔tool iterations within one turn (loop-guard).

Source

pub fn with_harness( config: AgentConfig, model: Box<dyn ModelClient>, memo: Arc<dyn MemoStore>, harness: Arc<ActiveHarness>, ) -> Result<Self, CoreError>

Build with an explicit model client (e.g. StubModel or [OpenAiModel]) and a shared, hot-swappable harness handle.

Source

pub fn with_sandbox( config: AgentConfig, model: Box<dyn ModelClient>, memo: Arc<dyn MemoStore>, harness: Arc<ActiveHarness>, sandbox: Arc<dyn Sandbox>, ) -> Result<Self, CoreError>

Build with an explicit sandbox backend (e.g. a local test sandbox or a codex-backed Sandbox). Useful when the provider string alone does not describe the execution environment.

Source

pub fn with_model( config: AgentConfig, model: Box<dyn ModelClient>, memo: Arc<dyn MemoStore>, ) -> Result<Self, CoreError>

Build with an explicit model client (e.g. StubModel or [OpenAiModel]). A baseline harness is generated from the config’s agent name.

Source

pub fn new( config: AgentConfig, memo: Arc<dyn MemoStore>, ) -> Result<Self, CoreError>

Build using the default model (stub unless openai feature is on).

Source

pub fn session(&self) -> &str

Source

pub fn harness(&self) -> Arc<ActiveHarness>

Shared harness handle — hot-swappable by a self-improvement loop.

Source

pub fn memo(&self) -> Arc<dyn MemoStore>

Shared memo store (used by the SDK to expose Session).

Source

pub async fn run(&self, input: &str) -> Result<String, CoreError>

Run one turn. Injects memo context, calls the model, persists both turns.

Source

pub async fn exec_tool(&self, command: &[String]) -> Result<String, CoreError>

Run a shell command inside the sandbox and remember the result.

Source

pub async fn run_stream( &self, input: &str, ) -> Result<BoxStream<'static, Result<String, CoreError>>, CoreError>

Stream one turn token-by-token. Mirrors Agent::run for the memo contract (recall before / persist both turns after) but emits model tokens as they arrive. The returned stream is 'static and owns its memo handle and model client, so the Agent may be dropped.

Source

pub async fn exec_tool_call( &self, call: &ToolCall, ) -> Result<ToolResult, CoreError>

Execute a single tool call inside the sandbox and return its captured output. The command is taken from the command argument (a JSON array of strings); the result is persisted to memo as a ToolResult fragment so subsequent turns can recall it.

Source

pub async fn run_event_stream( &self, input: &str, tools: &[Tool], ) -> Result<BoxStream<'static, Result<AgentEvent, CoreError>>, CoreError>

Run an agentic turn as an event stream: recall memo context → call the model (with tools) → execute any requested tool calls in the sandbox → refill memo → repeat until the model emits a final reply. The returned stream is 'static and owns every dependency, so the Agent may be dropped while it is still consumed.

Tool execution is delegated to codex’s real SandboxManager via the CodexSandbox backend (ADR-0005 §Decision) — never a bespoke in-process executor. Tests inject a local Sandbox through Agent::with_sandbox.

Source

pub async fn run_agentic( &self, input: &str, tools: &[Tool], ) -> Result<String, CoreError>

Run an agentic turn and fold the event stream into the final text.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Agent

§

impl !UnwindSafe for Agent

§

impl Freeze for Agent

§

impl Send for Agent

§

impl Sync for Agent

§

impl Unpin for Agent

§

impl UnsafeUnpin for Agent

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> 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, 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