Skip to main content

Agent

Struct Agent 

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

The unified agent. Holds the model client, context store and sandbox.

The system prompt is static: the agent name plus optional instructions.

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_sandbox( config: AgentConfig, model: Box<dyn ModelClient>, context: Arc<dyn ContextStore>, 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>, context: Arc<dyn ContextStore>, ) -> Result<Self, CoreError>

Build with an explicit model client (e.g. StubModel or [OpenAiModel]); the sandbox is resolved from config.sandbox_provider.

Source

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

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

Source

pub fn session(&self) -> &str

Source

pub fn system_text(&self) -> String

The static system prompt sent to the model (agent name + optional session/agent instructions).

Source

pub fn context(&self) -> Arc<dyn ContextStore>

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

Source

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

Run one turn. Injects recalled 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, 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