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
Fields§
§name: StringAgent name
description: Option<String>Agent description
model_id: StringModel ID to use
system_prompt: Option<String>System prompt
timeout_seconds: u64Timeout 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: CompactionStrategyCompaction strategy for long conversations
compaction_instruction: Option<String>Custom instruction passed to the compactor
context_window: usizeModel 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: ModeAutonomy 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: u8Current 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
impl AgentConfig
Sourcepub fn new(model_id: impl Into<String>) -> AgentConfig
pub fn new(model_id: impl Into<String>) -> AgentConfig
Create a new config with the given model ID.
Sourcepub fn with_name(self, name: impl Into<String>) -> AgentConfig
pub fn with_name(self, name: impl Into<String>) -> AgentConfig
Set the agent name.
Sourcepub fn with_system_prompt(self, prompt: impl Into<String>) -> AgentConfig
pub fn with_system_prompt(self, prompt: impl Into<String>) -> AgentConfig
Set the system prompt.
Sourcepub fn with_timeout(self, seconds: u64) -> AgentConfig
pub fn with_timeout(self, seconds: u64) -> AgentConfig
Set the timeout in seconds for the entire agent run.
Sourcepub fn with_compaction_strategy(
self,
strategy: CompactionStrategy,
) -> AgentConfig
pub fn with_compaction_strategy( self, strategy: CompactionStrategy, ) -> AgentConfig
Set the compaction strategy for long conversations.
Sourcepub fn with_compaction_instruction(
self,
instruction: impl Into<String>,
) -> AgentConfig
pub fn with_compaction_instruction( self, instruction: impl Into<String>, ) -> AgentConfig
Set a custom instruction passed to the compactor.
Sourcepub fn with_session_id(self, session_id: impl Into<String>) -> AgentConfig
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).
Sourcepub fn with_snapshot_store(self, store: Arc<dyn SnapshotStore>) -> AgentConfig
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
impl Clone for AgentConfig
Source§fn clone(&self) -> AgentConfig
fn clone(&self) -> AgentConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more