rustchain-community 1.0.0

Open-source AI agent framework with core functionality and plugin system
Documentation
use crate::core::tools::{Tool, ToolCapability};
use std::collections::HashMap;

pub trait PluginTool: Tool {}

pub struct PluginRegistry {
    tools: HashMap<String, Box<dyn PluginTool>>,
}

impl PluginRegistry {
    pub fn new() -> Self {
        Self { tools: HashMap::new() }
    }

    pub fn register(&mut self, tool: Box<dyn PluginTool>) {
        self.tools.insert(tool.name().to_string(), tool);
    }

    pub fn list(&self) -> Vec<String> {
        self.tools.keys().cloned().collect()
    }

    pub fn get(&self, name: &str) -> Option<&Box<dyn PluginTool>> {
        self.tools.get(name)
    }

    pub fn tools_by_capability(&self, cap: ToolCapability) -> Vec<&Box<dyn PluginTool>> {
        self.tools
            .values()
            .filter(|t| t.capabilities().contains(&cap))
            .collect()
    }
}