use claude_rust_errors::AppResult;
use serde_json::Value;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PermissionLevel {
ReadOnly,
Dangerous,
}
#[async_trait::async_trait]
pub trait Tool: Send + Sync {
fn name(&self) -> &str;
fn description(&self) -> &str;
fn input_schema(&self) -> Value;
fn permission_level(&self) -> PermissionLevel;
async fn execute(&self, input: Value) -> AppResult<String>;
}