Skip to main content

claude_agent_sdk/types/
config.rs

1use serde::{Deserialize, Serialize};
2
3use super::{PermissionMode, SettingSource};
4
5#[derive(Debug, Clone, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub enum SkillsConfig {
8    All,
9    Names(Vec<String>),
10}
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
13#[serde(rename_all = "camelCase")]
14pub enum SessionStoreFlushMode {
15    #[default]
16    Batched,
17    Eager,
18}
19
20#[derive(Debug, Clone, Default, Serialize, Deserialize)]
21#[serde(rename_all = "camelCase")]
22pub struct SandboxNetworkConfig {
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub allowed_domains: Option<Vec<String>>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub denied_domains: Option<Vec<String>>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub allow_managed_domains_only: Option<bool>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub allow_unix_sockets: Option<Vec<String>>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub allow_all_unix_sockets: Option<bool>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub allow_local_binding: Option<bool>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub allow_mach_lookup: Option<Vec<String>>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub http_proxy_port: Option<i32>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub socks_proxy_port: Option<i32>,
41}
42
43#[derive(Debug, Clone, Default, Serialize, Deserialize)]
44#[serde(rename_all = "camelCase")]
45pub struct SandboxIgnoreViolations {
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub file: Option<Vec<String>>,
48    #[serde(skip_serializing_if = "Option::is_none")]
49    pub network: Option<Vec<String>>,
50}
51
52#[derive(Debug, Clone, Default, Serialize, Deserialize)]
53#[serde(rename_all = "camelCase")]
54pub struct SandboxSettings {
55    #[serde(skip_serializing_if = "Option::is_none")]
56    pub enabled: Option<bool>,
57    #[serde(skip_serializing_if = "Option::is_none")]
58    pub auto_allow_bash_if_sandboxed: Option<bool>,
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub excluded_commands: Option<Vec<String>>,
61    #[serde(skip_serializing_if = "Option::is_none")]
62    pub allow_unsandboxed_commands: Option<bool>,
63    #[serde(skip_serializing_if = "Option::is_none")]
64    pub network: Option<SandboxNetworkConfig>,
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub ignore_violations: Option<SandboxIgnoreViolations>,
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub enable_weaker_nested_sandbox: Option<bool>,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
72#[serde(rename_all = "camelCase")]
73pub struct AgentDefinition {
74    pub description: String,
75    pub prompt: String,
76    #[serde(skip_serializing_if = "Option::is_none")]
77    pub tools: Option<Vec<String>>,
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub disallowed_tools: Option<Vec<String>>,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    pub model: Option<String>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    pub skills: Option<Vec<String>>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    pub memory: Option<SettingSource>,
86    #[serde(skip_serializing_if = "Option::is_none")]
87    pub mcp_servers: Option<Vec<serde_json::Value>>,
88    #[serde(skip_serializing_if = "Option::is_none")]
89    pub initial_prompt: Option<String>,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub max_turns: Option<i32>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub background: Option<bool>,
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub effort: Option<serde_json::Value>,
96    #[serde(skip_serializing_if = "Option::is_none")]
97    pub permission_mode: Option<PermissionMode>,
98}