Skip to main content

Approvable

Trait Approvable 

Source
pub trait Approvable<Req>: Send + Sync {
    type ApprovalKey: Hash + Eq + Clone + Debug + Serialize + Send + Sync;

    // Required methods
    fn approval_key(&self, req: &Req) -> Self::ApprovalKey;
    fn start_approval_async<'a>(
        &'a mut self,
        req: &'a Req,
        ctx: ApprovalCtx<'a>,
    ) -> BoxFuture<'a, ReviewDecision>;

    // Provided methods
    fn sandbox_mode_for_first_attempt(&self, _req: &Req) -> SandboxOverride { ... }
    fn should_bypass_approval(
        &self,
        policy: AskForApproval,
        already_approved: bool,
    ) -> bool { ... }
    fn exec_approval_requirement(
        &self,
        _req: &Req,
    ) -> Option<ExecApprovalRequirement> { ... }
    fn wants_no_sandbox_approval(&self, policy: AskForApproval) -> bool { ... }
}
Expand description

Trait for tools that require approval (from Codex)

Required Associated Types§

Source

type ApprovalKey: Hash + Eq + Clone + Debug + Serialize + Send + Sync

The key type used for caching approvals

Required Methods§

Source

fn approval_key(&self, req: &Req) -> Self::ApprovalKey

Generate an approval key for the request

Source

fn start_approval_async<'a>( &'a mut self, req: &'a Req, ctx: ApprovalCtx<'a>, ) -> BoxFuture<'a, ReviewDecision>

Start the approval process asynchronously (from Codex)

Provided Methods§

Source

fn sandbox_mode_for_first_attempt(&self, _req: &Req) -> SandboxOverride

Some tools may request to skip the sandbox on the first attempt

Source

fn should_bypass_approval( &self, policy: AskForApproval, already_approved: bool, ) -> bool

Check if approval should be bypassed

Source

fn exec_approval_requirement( &self, _req: &Req, ) -> Option<ExecApprovalRequirement>

Return custom exec approval requirement, or None for default

Source

fn wants_no_sandbox_approval(&self, policy: AskForApproval) -> bool

Decide if we can request approval for no-sandbox execution

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§