#[derive(Debug, Clone, PartialEq)]
pub enum ToolPermissionStatus {
Pending, Granted, Denied, }
#[derive(Debug, Clone)]
pub struct PendingToolExecution {
pub tool_name: String,
pub tool_args: String,
pub description: String,
pub diff_preview: Option<String>, }
pub trait PermissionHandler {
fn requires_permission(&self, tool_name: &str) -> bool;
fn request_tool_permission(&mut self, tool_name: &str, args: &str) -> ToolPermissionStatus;
fn handle_permission_response(&mut self, granted: bool);
fn extract_argument(&self, args: &str, arg_name: &str) -> Option<String>;
fn requires_permission_check(&self) -> bool;
}