ai-agent 0.13.4

Idiomatic agent sdk inspired by the claude code source leak
Documentation
// Source: /data/home/swei/claudecode/openclaudecode/src/types/tools.ts
#[derive(Debug, Clone, PartialEq)]
pub enum ToolCapability {
    Read,
    Write,
    Edit,
    Delete,
    Execute,
    Search,
    Network,
}

pub struct ToolDefinition {
    pub name: String,
    pub description: String,
    pub capabilities: Vec<ToolCapability>,
    pub input_schema: serde_json::Value,
}

impl ToolDefinition {
    pub fn new(name: &str, description: &str) -> Self {
        Self {
            name: name.to_string(),
            description: description.to_string(),
            capabilities: Vec::new(),
            input_schema: serde_json::json!({}),
        }
    }

    pub fn with_capability(mut self, cap: ToolCapability) -> Self {
        self.capabilities.push(cap);
        self
    }

    pub fn has_capability(&self, cap: &ToolCapability) -> bool {
        self.capabilities.contains(cap)
    }
}