Skip to main content

vv_agent/tools/
policy.rs

1#[derive(Clone, Default)]
2pub struct ToolPolicy {
3    pub allowed_tools: Option<Vec<String>>,
4    pub disallowed_tools: Vec<String>,
5    pub approval: ApprovalPolicy,
6    pub max_concurrency: Option<usize>,
7}
8
9impl ToolPolicy {
10    pub fn allow_only(mut self, tools: impl IntoIterator<Item = impl Into<String>>) -> Self {
11        self.allowed_tools = Some(tools.into_iter().map(Into::into).collect());
12        self
13    }
14
15    pub fn disallow(mut self, tool: impl Into<String>) -> Self {
16        self.disallowed_tools.push(tool.into());
17        self
18    }
19}
20
21#[derive(Debug, Clone, Default, PartialEq, Eq)]
22pub enum ApprovalPolicy {
23    #[default]
24    Never,
25    Always,
26    OnRequest,
27}
28
29#[derive(Debug, Clone, PartialEq, Eq)]
30pub enum ApprovalDecision {
31    Approved,
32    Denied(String),
33    NeedsApproval,
34}