agent_diva_agent/tool_config/
builtin.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct BuiltInToolsConfig {
6 #[serde(default = "default_true")]
7 pub filesystem: bool,
8 #[serde(default = "default_true")]
9 pub shell: bool,
10 #[serde(default = "default_true")]
11 pub web_search: bool,
12 #[serde(default = "default_true")]
13 pub web_fetch: bool,
14 #[serde(default = "default_true")]
15 pub spawn: bool,
16 #[serde(default)]
17 pub cron: bool,
18 #[serde(default = "default_true")]
19 pub mcp: bool,
20 #[serde(default = "default_true")]
21 pub attachment: bool,
22}
23
24fn default_true() -> bool {
25 true
26}
27
28impl BuiltInToolsConfig {
29 pub fn minimal() -> Self {
30 Self {
31 filesystem: true,
32 shell: false,
33 web_search: false,
34 web_fetch: false,
35 spawn: false,
36 cron: false,
37 mcp: false,
38 attachment: false,
39 }
40 }
41
42 pub fn none() -> Self {
43 Self {
44 filesystem: false,
45 shell: false,
46 web_search: false,
47 web_fetch: false,
48 spawn: false,
49 cron: false,
50 mcp: false,
51 attachment: false,
52 }
53 }
54
55 pub fn all() -> Self {
56 Self {
57 filesystem: true,
58 shell: true,
59 web_search: true,
60 web_fetch: true,
61 spawn: true,
62 cron: true,
63 mcp: true,
64 attachment: true,
65 }
66 }
67
68 pub fn for_subagent(&self) -> Self {
69 Self {
70 filesystem: self.filesystem,
71 shell: self.shell,
72 web_search: self.web_search,
73 web_fetch: self.web_fetch,
74 spawn: false,
75 cron: false,
76 mcp: self.mcp,
77 attachment: false,
78 }
79 }
80}
81
82impl Default for BuiltInToolsConfig {
83 fn default() -> Self {
84 Self {
85 filesystem: true,
86 shell: true,
87 web_search: true,
88 web_fetch: true,
89 spawn: true,
90 cron: false,
91 mcp: true,
92 attachment: true,
93 }
94 }
95}