claude_agent_sdk/types/
config.rs1use 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}