use async_trait;
use Value;
/// Decision returned by a [`ToolApprovalHandler`] for a pending tool call.
/// Gate that is consulted before every tool execution.
///
/// Implement this trait to add interactive prompts, pattern-based allow/deny
/// rules, or any other approval policy. The agent calls [`approve`] with the
/// tool name and its JSON arguments; execution only proceeds on `Approved` or
/// `ApprovedForSession`.
///
/// Implementations must be `Send + Sync` because the agent executes tools
/// concurrently.