Skip to main content

AgentConfig

Struct AgentConfig 

Source
pub struct AgentConfig {
Show 24 fields pub name: String, pub description: Option<String>, pub model_id: String, pub system_prompt: Option<String>, pub timeout_seconds: u64, pub temperature: Option<f64>, pub max_tokens: Option<usize>, pub compaction_strategy: CompactionStrategy, pub compaction_instruction: Option<String>, pub context_window: usize, pub workspace_dir: Option<PathBuf>, pub output_mode: Option<String>, pub session_id: Option<String>, pub provider_options: Option<ProviderOptions>, pub ttsr_engine: Option<Arc<TtsrEngine>>, pub memory: Option<Arc<dyn MemoryBackend>>, pub todo: Option<Arc<dyn TodoStateProvider>>, pub agent_pool: Option<Arc<dyn AgentPoolProvider>>, pub url_resolver: Option<Arc<dyn UrlResolver>>, pub lsp: Option<Arc<dyn LspProvider>>, pub max_tool_result_bytes: Option<usize>, pub subagent_runner: Option<Arc<dyn SubagentRunner>>, pub subagent_depth: u8, pub snapshot_store: Option<Arc<dyn SnapshotStore>>,
}
Expand description

Agent runtime configuration

Fields§

§name: String

Agent name

§description: Option<String>

Agent description

§model_id: String

Model ID to use

§system_prompt: Option<String>

System prompt

§timeout_seconds: u64

Timeout in seconds for the entire agent run

§temperature: Option<f64>

Temperature for generation (0.0 to 1.0)

§max_tokens: Option<usize>

Maximum tokens to generate

§compaction_strategy: CompactionStrategy

Compaction strategy for long conversations

§compaction_instruction: Option<String>

Custom instruction passed to the compactor

§context_window: usize

Model context window size (used for threshold-based compaction)

§workspace_dir: Option<PathBuf>

Working directory for file tools. Defaults to current directory if None.

§output_mode: Option<String>

Output mode for agent responses.

When set, the agent extracts structured output from the final response. See OutputMode for available modes.

§session_id: Option<String>

Session identity used by tools that gate behavior on liveness (e.g. the issue tool’s start/close ownership checks). When Some, this value is threaded through to crate::tools::ToolContext::session_id. None means the tool receives session_id == None and ownership-gated operations will reject the call (defensive default).

§provider_options: Option<ProviderOptions>

Per-provider options for fine-grained control.

When set, these are passed through to oxi_ai::StreamOptions::provider_options so the provider can read provider-specific settings (e.g. Anthropic adaptive thinking, OpenAI reasoning_effort, Google thinkingConfig).

§ttsr_engine: Option<Arc<TtsrEngine>>

TTSR engine for stream rule checking. When set, streaming output is checked against registered rules and violations trigger crate::agent_loop::StreamOutcome::RuleInterrupt.

§memory: Option<Arc<dyn MemoryBackend>>

Memory backend for memory_* tools.

§todo: Option<Arc<dyn TodoStateProvider>>

Todo state provider for the todo tool.

§agent_pool: Option<Arc<dyn AgentPoolProvider>>

Agent pool for Hub display and sub-agent matching.

§url_resolver: Option<Arc<dyn UrlResolver>>

URL resolver for internal protocol schemes (issue://, pr://, etc.). Threaded through to crate::agent_loop::config::AgentLoopConfig::url_resolver. When None, URL-prefixed paths are treated as regular file paths.

§lsp: Option<Arc<dyn LspProvider>>

LSP provider for the lsp tool. Threaded through to crate::agent_loop::config::AgentLoopConfig::lsp. When None, the lsp tool returns an error.

§max_tool_result_bytes: Option<usize>

Maximum bytes of a tool result’s text content before truncation (#28 gap 1, surfaced as #32). Threaded through to crate::agent_loop::config::AgentLoopConfig::max_tool_result_bytes.

When set, tool results exceeding this limit are truncated and a "... [truncated: N bytes omitted]" marker is appended, preventing a single large tool output from consuming the context window.

None (default) = no limit. Opt-in.

§subagent_runner: Option<Arc<dyn SubagentRunner>>

In-process sub-agent runner (#28 gap 3, surfaced as #32). When set, the subagent tool prefers an in-process isolated run over shelling out. Threaded through to crate::agent_loop::config::AgentLoopConfig::subagent_runner.

§subagent_depth: u8

Current sub-agent nesting depth (#28 gap 3, surfaced as #32). Default 0 (top-level). The subagent tool increments this when forking a child config to cap recursion.

§snapshot_store: Option<Arc<dyn SnapshotStore>>

Snapshot store for hashline line-anchored edit mode.

When Some, the read tool records file snapshots and emits [path#TAG] headers, and the edit tool validates edits against them. When None (default), hashline anchoring is disabled and the edit tool falls back to plain text replacement.

Implementations§

Source§

impl AgentConfig

Source

pub fn new(model_id: impl Into<String>) -> Self

Create a new config with the given model ID.

Source

pub fn with_name(self, name: impl Into<String>) -> Self

Set the agent name.

Source

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

Set the system prompt.

Source

pub fn with_timeout(self, seconds: u64) -> Self

Set the timeout in seconds for the entire agent run.

Source

pub fn with_compaction_strategy(self, strategy: CompactionStrategy) -> Self

Set the compaction strategy for long conversations.

Source

pub fn with_compaction_instruction(self, instruction: impl Into<String>) -> Self

Set a custom instruction passed to the compactor.

Source

pub fn with_session_id(self, session_id: impl Into<String>) -> Self

Set the session identity threaded into crate::tools::ToolContext::session_id.

Tools that gate behavior on liveness (e.g. an issue tool’s start/close ownership checks) use this to identify the caller. Leaving it None causes those tools to see an empty caller id and reject ownership-gated operations (defensive default).

Source

pub fn with_snapshot_store(self, store: Arc<dyn SnapshotStore>) -> Self

Set the hashline snapshot store — enables line-anchored edit mode in the read/edit tools (emits [path#TAG] headers, validates edits).

Trait Implementations§

Source§

impl Clone for AgentConfig

Source§

fn clone(&self) -> AgentConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for AgentConfig

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for AgentConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for AgentConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for AgentConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> MaybeSendSync for T

Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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