Skip to main content

AgentConfig

Struct AgentConfig 

Source
pub struct AgentConfig {
Show 22 fields pub prompt_slots: SystemPromptSlots, pub tools: Vec<ToolDefinition>, pub max_tool_rounds: usize, pub security_provider: Option<Arc<dyn SecurityProvider>>, pub permission_checker: Option<Arc<dyn PermissionChecker>>, pub confirmation_manager: Option<Arc<dyn ConfirmationProvider>>, pub context_providers: Vec<Arc<dyn ContextProvider>>, pub planning_enabled: bool, pub goal_tracking: bool, pub hook_engine: Option<Arc<dyn HookExecutor>>, pub skill_registry: Option<Arc<SkillRegistry>>, pub max_parse_retries: u32, pub tool_timeout_ms: Option<u64>, pub circuit_breaker_threshold: u32, pub auto_compact: bool, pub auto_compact_threshold: f32, pub max_context_tokens: usize, pub llm_client: Option<Arc<dyn LlmClient>>, pub memory: Option<Arc<AgentMemory>>, pub continuation_enabled: bool, pub max_continuation_turns: u32, pub tool_index: Option<ToolIndex>,
}
Expand description

Agent configuration

Fields§

§prompt_slots: SystemPromptSlots

Slot-based system prompt customization.

Users can customize specific parts (role, guidelines, response style, extra) without overriding the core agentic capabilities. The default agentic core (tool usage, autonomous behavior, completion criteria) is always preserved.

§tools: Vec<ToolDefinition>§max_tool_rounds: usize§security_provider: Option<Arc<dyn SecurityProvider>>

Optional security provider for input taint tracking and output sanitization

§permission_checker: Option<Arc<dyn PermissionChecker>>

Optional permission checker for tool execution control

§confirmation_manager: Option<Arc<dyn ConfirmationProvider>>

Optional confirmation manager for HITL (Human-in-the-Loop)

§context_providers: Vec<Arc<dyn ContextProvider>>

Context providers for augmenting prompts with external context

§planning_enabled: bool

Enable planning phase before execution

§goal_tracking: bool

Enable goal tracking

§hook_engine: Option<Arc<dyn HookExecutor>>

Optional hook engine for firing lifecycle events (PreToolUse, PostToolUse, etc.)

§skill_registry: Option<Arc<SkillRegistry>>

Optional skill registry for tool permission enforcement

§max_parse_retries: u32

Max consecutive malformed-tool-args errors before aborting (default: 2).

When the LLM returns tool arguments with __parse_error, the error is fed back as a tool result. After this many consecutive parse errors the loop bails instead of retrying indefinitely.

§tool_timeout_ms: Option<u64>

Per-tool execution timeout in milliseconds (None = no timeout).

When set, each tool execution is wrapped in tokio::time::timeout. A timeout produces an error result sent back to the LLM rather than crashing the session.

§circuit_breaker_threshold: u32

Circuit-breaker threshold: max consecutive LLM API failures before aborting (default: 3).

In non-streaming mode, transient LLM failures are retried up to this many times (with short exponential backoff) before the loop bails. In streaming mode, any failure is fatal (events cannot be replayed).

§auto_compact: bool

Enable auto-compaction when context usage exceeds threshold.

§auto_compact_threshold: f32

Context usage percentage threshold to trigger auto-compaction (0.0 - 1.0). Default: 0.80 (80%).

§max_context_tokens: usize

Maximum context window size in tokens (used for auto-compact calculation). Default: 200_000.

§llm_client: Option<Arc<dyn LlmClient>>

LLM client reference for auto-compaction (needs to call LLM for summarization).

§memory: Option<Arc<AgentMemory>>

Optional agent memory for auto-remember after tool execution and recall before prompts.

§continuation_enabled: bool

Inject a continuation message when the LLM stops calling tools before the task is complete. Enabled by default. Set to false to disable.

When enabled, if the LLM produces a response with no tool calls but the response text looks like an intermediate step (not a final answer), the loop injects [crate::prompts::CONTINUATION] as a user message and continues for up to max_continuation_turns additional turns.

§max_continuation_turns: u32

Maximum number of continuation injections per execution (default: 3).

Prevents infinite loops when the LLM repeatedly stops without completing.

§tool_index: Option<ToolIndex>

Optional tool search index for filtering tools per-turn.

When set, only tools matching the user prompt are sent to the LLM, reducing context usage when many MCP tools are registered.

Trait Implementations§

Source§

impl Clone for AgentConfig

Source§

fn clone(&self) -> AgentConfig

Returns a duplicate of the value. Read more
1.0.0 · 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

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

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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> 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<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