Skip to main content

agent_base/engine/
approval.rs

1use async_trait::async_trait;
2
3use crate::types::{AgentResult, ApprovalDecision, ApprovalRequest};
4
5#[async_trait]
6pub trait ApprovalHandler: Send + Sync {
7    async fn approve(&self, request: ApprovalRequest) -> AgentResult<ApprovalDecision>;
8}
9
10#[derive(Clone, Debug, Default)]
11pub struct DenyAllApprovalHandler;
12
13#[async_trait]
14impl ApprovalHandler for DenyAllApprovalHandler {
15    async fn approve(&self, _request: ApprovalRequest) -> AgentResult<ApprovalDecision> {
16        Ok(ApprovalDecision::Deny)
17    }
18}
19
20#[derive(Clone, Debug, Default)]
21pub struct AllowAllApprovalHandler;
22
23#[async_trait]
24impl ApprovalHandler for AllowAllApprovalHandler {
25    async fn approve(&self, _request: ApprovalRequest) -> AgentResult<ApprovalDecision> {
26        Ok(ApprovalDecision::AllowAlways)
27    }
28}