Skip to main content

ConfirmationProvider

Trait ConfirmationProvider 

Source
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 Self: 'async_trait,
             'life0: '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§

Source

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

Resolve a confirmation decision for the given request.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§

Source§

impl ConfirmationProvider for StaticConfirmation

Source§

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()
        }
    },
));