#[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)
}
}