Skip to main content

AgentConfig

Struct AgentConfig 

Source
pub struct AgentConfig {
Show 25 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 mode: Mode, 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).

§mode: Mode

Autonomy mode — Mode::Default (interactive) or Mode::Auto (autonomous; the ask tool is short-circuited and a directive reinforces autonomous operation). Default: Mode::Default.

§provider_options: Option<ProviderOptions>

Per-provider options for fine-grained control.

When set, these are passed through to oxicode_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>) -> AgentConfig

Create a new config with the given model ID.

Source

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

Set the agent name.

Source

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

Set the system prompt.

Source

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

Set the timeout in seconds for the entire agent run.

Source

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

Set the compaction strategy for long conversations.

Source

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

Set a custom instruction passed to the compactor.

Source

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

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>) -> AgentConfig

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<(), Error>

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

impl Default for AgentConfig

Source§

fn default() -> AgentConfig

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

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

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<AgentConfig, <__D as Deserializer<'de>>::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 as Serializer>::Ok, <__S as Serializer>::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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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

Source§

type Output = T

Should always be Self
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, 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