claude_code_rs/types/
options.rs1use std::collections::HashMap;
2use std::path::PathBuf;
3
4use super::agents::AgentDefinition;
5use super::hooks::HookDefinition;
6use super::mcp_config::McpServerConfig;
7use super::permissions::{CanUseToolCallback, PermissionMode};
8use super::sandbox::SandboxSettings;
9
10#[derive(Default)]
15pub struct ClaudeAgentOptions {
16 pub prompt: Option<String>,
19
20 pub model: Option<String>,
22
23 pub system_prompt: Option<String>,
25
26 pub append_system_prompt: Option<String>,
28
29 pub max_turns: Option<u32>,
31
32 pub max_tokens: Option<u32>,
34
35 pub session_id: Option<String>,
38
39 pub continue_session: bool,
41
42 pub cwd: Option<PathBuf>,
45
46 pub permission_mode: PermissionMode,
49
50 pub allowed_tools: Vec<String>,
52
53 pub can_use_tool: Option<CanUseToolCallback>,
55
56 pub hooks: Vec<HookDefinition>,
59
60 pub mcp_servers: HashMap<String, McpServerConfig>,
63
64 pub agents: Vec<AgentDefinition>,
67
68 pub sandbox: Option<SandboxSettings>,
71
72 pub env: HashMap<String, String>,
75
76 pub verbose: bool,
78
79 pub cli_path: Option<PathBuf>,
81
82 pub extra_cli_args: Vec<String>,
84
85 pub connect_timeout: Option<std::time::Duration>,
87
88 pub control_timeout: Option<std::time::Duration>,
90
91 pub on_stderr: Option<StderrCallback>,
93
94 pub no_cache: bool,
96
97 pub temperature: Option<f64>,
99
100 pub context_window: Option<f64>,
102}
103
104pub type StderrCallback =
106 std::sync::Arc<dyn Fn(String) + Send + Sync>;
107
108impl std::fmt::Debug for ClaudeAgentOptions {
109 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
110 f.debug_struct("ClaudeAgentOptions")
111 .field("model", &self.model)
112 .field("prompt", &self.prompt.as_ref().map(|p| {
113 if p.len() > 50 { format!("{}...", &p[..50]) } else { p.clone() }
114 }))
115 .field("max_turns", &self.max_turns)
116 .field("session_id", &self.session_id)
117 .field("permission_mode", &self.permission_mode)
118 .field("verbose", &self.verbose)
119 .field("hooks_count", &self.hooks.len())
120 .field("mcp_servers_count", &self.mcp_servers.len())
121 .field("agents_count", &self.agents.len())
122 .finish_non_exhaustive()
123 }
124}