Skip to main content

agent_base/tool/
policy.rs

1use async_trait::async_trait;
2use serde_json::Value;
3
4use crate::types::ApprovalRequest;
5use super::{ToolContext, ToolOutput};
6
7#[async_trait]
8pub trait ToolPolicy: Send + Sync {
9    fn evaluate_approval(
10        &self,
11        tool_name: &str,
12        args: &Value,
13        args_json: &str,
14    ) -> Option<ApprovalRequest>;
15
16    fn on_pre_call(&self, tool_name: &str, args: &Value, ctx: &ToolContext);
17
18    fn on_post_call(&self, tool_name: &str, args: &Value, result: &ToolOutput, ctx: &ToolContext);
19}