Skip to main content

agent_base/tool/
policy.rs

1use serde_json::Value;
2
3use crate::types::{AgentResult, ApprovalRequest};
4use super::{ToolContext, ToolOutput};
5
6pub trait ToolPolicy: Send + Sync {
7    fn evaluate_approval(
8        &self,
9        tool_name: &str,
10        args: &Value,
11    ) -> Option<ApprovalRequest>;
12
13    fn before_call(&self, tool_name: &str, args: &Value, ctx: &ToolContext) -> AgentResult<()> {
14        let _ = (tool_name, args, ctx);
15        Ok(())
16    }
17
18    fn after_call(&self, tool_name: &str, args: &Value, result: &ToolOutput, ctx: &ToolContext) -> AgentResult<()> {
19        let _ = (tool_name, args, result, ctx);
20        Ok(())
21    }
22}