Skip to main content

agent_diva_agent/tool_config/
builtin.rs

1use serde::{Deserialize, Serialize};
2
3/// Built-in tool toggles shared by the main agent and nano runtime.
4#[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}