pub struct SessionOptions {Show 18 fields
pub model: Option<String>,
pub agent_dirs: Vec<PathBuf>,
pub queue_config: Option<SessionQueueConfig>,
pub security_provider: Option<Arc<dyn SecurityProvider>>,
pub context_providers: Vec<Arc<dyn ContextProvider>>,
pub confirmation_manager: Option<Arc<dyn ConfirmationProvider>>,
pub permission_checker: Option<Arc<dyn PermissionChecker>>,
pub planning_enabled: bool,
pub goal_tracking: bool,
pub skill_registry: Option<Arc<SkillRegistry>>,
pub memory_store: Option<Arc<dyn MemoryStore>>,
pub session_store: Option<Arc<dyn SessionStore>>,
pub session_id: Option<String>,
pub auto_save: bool,
pub max_parse_retries: Option<u32>,
pub tool_timeout_ms: Option<u64>,
pub circuit_breaker_threshold: Option<u32>,
pub sandbox_config: Option<SandboxConfig>,
/* private fields */
}Expand description
Optional per-session overrides.
Fields§
§model: Option<String>Override the default model. Format: "provider/model" (e.g., "openai/gpt-4o").
agent_dirs: Vec<PathBuf>Extra directories to scan for agent files.
Merged with any global agent_dirs from CodeConfig.
queue_config: Option<SessionQueueConfig>Optional queue configuration for lane-based tool execution.
When set, enables priority-based tool scheduling with parallel execution of read-only (Query-lane) tools, DLQ, metrics, and external task handling.
security_provider: Option<Arc<dyn SecurityProvider>>Optional security provider for taint tracking and output sanitization
context_providers: Vec<Arc<dyn ContextProvider>>Optional context providers for RAG
confirmation_manager: Option<Arc<dyn ConfirmationProvider>>Optional confirmation manager for HITL
permission_checker: Option<Arc<dyn PermissionChecker>>Optional permission checker
planning_enabled: boolEnable planning
goal_tracking: boolEnable goal tracking
skill_registry: Option<Arc<SkillRegistry>>Optional skill registry for instruction injection
memory_store: Option<Arc<dyn MemoryStore>>Optional memory store for long-term memory persistence
session_store: Option<Arc<dyn SessionStore>>Optional session store for persistence
session_id: Option<String>Explicit session ID (auto-generated if not set)
auto_save: boolAuto-save after each send() call
max_parse_retries: Option<u32>Max consecutive parse errors before aborting (overrides default of 2).
None uses the AgentConfig default.
tool_timeout_ms: Option<u64>Per-tool execution timeout in milliseconds.
None = no timeout (default).
circuit_breaker_threshold: Option<u32>Circuit-breaker threshold: max consecutive LLM API failures before
aborting in non-streaming mode (overrides default of 3).
None uses the AgentConfig default.
sandbox_config: Option<SandboxConfig>Optional sandbox configuration.
When set, bash tool commands are routed through an A3S Box MicroVM
sandbox instead of std::process::Command. Requires the sandbox
Cargo feature to be enabled.
Implementations§
Source§impl SessionOptions
impl SessionOptions
pub fn new() -> Self
pub fn with_model(self, model: impl Into<String>) -> Self
pub fn with_agent_dir(self, dir: impl Into<PathBuf>) -> Self
pub fn with_queue_config(self, config: SessionQueueConfig) -> Self
Sourcepub fn with_default_security(self) -> Self
pub fn with_default_security(self) -> Self
Enable default security provider with taint tracking and output sanitization
Sourcepub fn with_security_provider(self, provider: Arc<dyn SecurityProvider>) -> Self
pub fn with_security_provider(self, provider: Arc<dyn SecurityProvider>) -> Self
Set a custom security provider
Sourcepub fn with_fs_context(self, root_path: impl Into<PathBuf>) -> Self
pub fn with_fs_context(self, root_path: impl Into<PathBuf>) -> Self
Add a file system context provider for simple RAG
Sourcepub fn with_context_provider(self, provider: Arc<dyn ContextProvider>) -> Self
pub fn with_context_provider(self, provider: Arc<dyn ContextProvider>) -> Self
Add a custom context provider
Sourcepub fn with_confirmation_manager(
self,
manager: Arc<dyn ConfirmationProvider>,
) -> Self
pub fn with_confirmation_manager( self, manager: Arc<dyn ConfirmationProvider>, ) -> Self
Set a confirmation manager for HITL
Sourcepub fn with_permission_checker(
self,
checker: Arc<dyn PermissionChecker>,
) -> Self
pub fn with_permission_checker( self, checker: Arc<dyn PermissionChecker>, ) -> Self
Set a permission checker
Sourcepub fn with_permissive_policy(self) -> Self
pub fn with_permissive_policy(self) -> Self
Allow all tool execution without confirmation (permissive mode).
Use this for automated scripts, demos, and CI environments where
human-in-the-loop confirmation is not needed. Without this (or a
custom permission checker), the default is Ask, which requires a
HITL confirmation manager to be configured.
Sourcepub fn with_planning(self, enabled: bool) -> Self
pub fn with_planning(self, enabled: bool) -> Self
Enable planning
Sourcepub fn with_goal_tracking(self, enabled: bool) -> Self
pub fn with_goal_tracking(self, enabled: bool) -> Self
Enable goal tracking
Sourcepub fn with_builtin_skills(self) -> Self
pub fn with_builtin_skills(self) -> Self
Add a skill registry with built-in skills
Sourcepub fn with_skill_registry(self, registry: Arc<SkillRegistry>) -> Self
pub fn with_skill_registry(self, registry: Arc<SkillRegistry>) -> Self
Add a custom skill registry
Sourcepub fn with_skills_from_dir(self, dir: impl AsRef<Path>) -> Self
pub fn with_skills_from_dir(self, dir: impl AsRef<Path>) -> Self
Load skills from a directory
Sourcepub fn with_memory(self, store: Arc<dyn MemoryStore>) -> Self
pub fn with_memory(self, store: Arc<dyn MemoryStore>) -> Self
Set a custom memory store
Sourcepub fn with_file_memory(self, dir: impl Into<PathBuf>) -> Self
pub fn with_file_memory(self, dir: impl Into<PathBuf>) -> Self
Use a file-based memory store at the given directory.
The store is created lazily when the session is built (requires async).
This stores the directory path; FileMemoryStore::new() is called during
session construction.
Sourcepub fn with_session_store(self, store: Arc<dyn SessionStore>) -> Self
pub fn with_session_store(self, store: Arc<dyn SessionStore>) -> Self
Set a session store for persistence
Sourcepub fn with_file_session_store(self, dir: impl Into<PathBuf>) -> Self
pub fn with_file_session_store(self, dir: impl Into<PathBuf>) -> Self
Use a file-based session store at the given directory
Sourcepub fn with_session_id(self, id: impl Into<String>) -> Self
pub fn with_session_id(self, id: impl Into<String>) -> Self
Set an explicit session ID (auto-generated UUID if not set)
Sourcepub fn with_auto_save(self, enabled: bool) -> Self
pub fn with_auto_save(self, enabled: bool) -> Self
Enable auto-save after each send() call
Sourcepub fn with_parse_retries(self, max: u32) -> Self
pub fn with_parse_retries(self, max: u32) -> Self
Set the maximum number of consecutive malformed-tool-args errors before the agent loop bails.
Default: 2 (the LLM gets two chances to self-correct before the session is aborted).
Sourcepub fn with_tool_timeout(self, timeout_ms: u64) -> Self
pub fn with_tool_timeout(self, timeout_ms: u64) -> Self
Set a per-tool execution timeout.
When set, each tool execution is wrapped in tokio::time::timeout.
A timeout produces an error message that is fed back to the LLM
(the session continues).
Sourcepub fn with_circuit_breaker(self, threshold: u32) -> Self
pub fn with_circuit_breaker(self, threshold: u32) -> Self
Set the circuit-breaker threshold.
In non-streaming mode, the agent retries transient LLM API failures up to this many times (with exponential backoff) before aborting. Default: 3 attempts.
Sourcepub fn with_resilience_defaults(self) -> Self
pub fn with_resilience_defaults(self) -> Self
Enable all resilience defaults with sensible values:
max_parse_retries = 2tool_timeout_ms = 120_000(2 minutes)circuit_breaker_threshold = 3
Sourcepub fn with_sandbox(self, config: SandboxConfig) -> Self
pub fn with_sandbox(self, config: SandboxConfig) -> Self
Route bash tool execution through an A3S Box MicroVM sandbox.
The workspace directory is mounted read-write at /workspace inside
the sandbox. Requires the sandbox Cargo feature; without it a warning
is logged and bash commands continue to run locally.
§Example
use a3s_code_core::{SessionOptions, SandboxConfig};
SessionOptions::new().with_sandbox(SandboxConfig {
image: "ubuntu:22.04".into(),
memory_mb: 512,
network: false,
..SandboxConfig::default()
});Trait Implementations§
Source§impl Clone for SessionOptions
impl Clone for SessionOptions
Source§fn clone(&self) -> SessionOptions
fn clone(&self) -> SessionOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more