use std::collections::HashMap;
use super::*;
#[derive(Debug, Clone)]
pub struct ClaudeAgentOptions {
pub tools: Vec<String>,
pub tools_set: bool,
pub tools_preset: Option<ToolsPreset>,
pub allowed_tools: Vec<String>,
pub system_prompt: Option<String>,
pub system_prompt_preset: Option<SystemPromptPreset>,
pub system_prompt_file: Option<SystemPromptFile>,
pub mcp_servers: HashMap<String, MCPServerConfig>,
pub mcp_servers_config: Option<String>,
pub permission_mode: Option<PermissionMode>,
pub continue_conversation: bool,
pub resume: Option<String>,
pub session_id: Option<String>,
pub fork_session: bool,
pub max_turns: Option<i32>,
pub max_budget_usd: Option<f64>,
pub task_budget: Option<TaskBudget>,
pub disallowed_tools: Vec<String>,
pub model: Option<String>,
pub fallback_model: Option<String>,
pub betas: Vec<SdkBeta>,
pub permission_prompt_tool_name: Option<String>,
pub cwd: Option<String>,
pub cli_path: Option<String>,
pub settings: Option<String>,
pub add_dirs: Vec<String>,
pub env: HashMap<String, String>,
pub extra_args: HashMap<String, Option<String>>,
pub max_buffer_size: Option<usize>,
pub user: Option<String>,
pub include_partial_messages: bool,
pub include_hook_events: bool,
pub strict_mcp_config: bool,
pub setting_sources: Option<Vec<SettingSource>>,
pub skills: Option<SkillsConfig>,
pub sandbox: Option<SandboxSettings>,
pub plugins: Vec<SDKPluginConfig>,
pub max_thinking_tokens: Option<i32>,
pub thinking: Option<ThinkingConfig>,
pub effort: Option<String>,
pub output_format: Option<serde_json::Map<String, serde_json::Value>>,
pub enable_file_checkpointing: bool,
pub stderr: Option<StderrCallback>,
pub can_use_tool: Option<CanUseToolCallback>,
pub sdk_mcp_servers: HashMap<String, crate::mcp::SimpleMCPServer>,
pub hooks: HookMap,
pub agents: HashMap<String, AgentDefinition>,
pub session_store: Option<crate::session_store::SessionStoreHandle>,
pub session_store_flush: SessionStoreFlushMode,
pub load_timeout_ms: i32,
}
impl Default for ClaudeAgentOptions {
fn default() -> Self {
Self {
tools: Vec::new(),
tools_set: false,
tools_preset: None,
allowed_tools: Vec::new(),
system_prompt: None,
system_prompt_preset: None,
system_prompt_file: None,
mcp_servers: HashMap::new(),
mcp_servers_config: None,
permission_mode: None,
continue_conversation: false,
resume: None,
session_id: None,
fork_session: false,
max_turns: None,
max_budget_usd: None,
task_budget: None,
disallowed_tools: Vec::new(),
model: None,
fallback_model: None,
betas: Vec::new(),
permission_prompt_tool_name: None,
cwd: None,
cli_path: None,
settings: None,
add_dirs: Vec::new(),
env: HashMap::new(),
extra_args: HashMap::new(),
max_buffer_size: None,
user: None,
include_partial_messages: false,
include_hook_events: false,
strict_mcp_config: false,
setting_sources: None,
skills: None,
sandbox: None,
plugins: Vec::new(),
max_thinking_tokens: None,
thinking: None,
effort: None,
output_format: None,
enable_file_checkpointing: false,
stderr: None,
can_use_tool: None,
sdk_mcp_servers: HashMap::new(),
hooks: HashMap::new(),
agents: HashMap::new(),
session_store: None,
session_store_flush: SessionStoreFlushMode::Batched,
load_timeout_ms: 60_000,
}
}
}