agent_base/tool/
policy.rs1use 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}