agent_base/engine/
approval.rs1use 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}