ConfirmationProvider

Trait ConfirmationProvider 

pub trait ConfirmationProvider: Send + Sync {
    // Required method
    fn confirm<'life0, 'async_trait>(
        &'life0 self,
        request: ConfirmationRequest,
    ) -> Pin<Box<dyn Future<Output = ToolConfirmation> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             Self: 'async_trait;
}
Expand description

Decides whether a confirmation-gated tool call may proceed.

Wire one into a ToolDispatcher via with_confirmation_provider. When a tool reports ToolFunction::requires_confirmation (e.g. one built with T::confirm(..)), the dispatcher consults the provider before executing and returns an error if it is denied. Enforcement is opt-in: with no provider configured, confirmation-gated tools run normally.

Required Methods§

fn confirm<'life0, 'async_trait>( &'life0 self, request: ConfirmationRequest, ) -> Pin<Box<dyn Future<Output = ToolConfirmation> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Resolve a confirmation decision for the given request.

Implementors§

§

impl ConfirmationProvider for StaticConfirmation

§

impl<F, Fut> ConfirmationProvider for F
where F: Fn(ConfirmationRequest) -> Fut + Send + Sync, Fut: Future<Output = ToolConfirmation> + Send,

Blanket impl so a plain async closure can act as a ConfirmationProvider:

dispatcher.set_confirmation_provider(std::sync::Arc::new(
    |req: ConfirmationRequest| async move {
        if req.tool_name == "delete_account" {
            ToolConfirmation::denied("blocked by policy")
        } else {
            ToolConfirmation::confirmed()
        }
    },
));