pub mod core_tools;
pub mod memory_tools;
pub mod self_tools;
pub mod skill_tools;
use std::sync::Arc;
use crate::memory::store::MemoryStore;
use crate::tool::ToolSpec;
pub fn default_tools(
memory_store: Option<Arc<std::sync::Mutex<MemoryStore>>>,
) -> Vec<ToolSpec> {
let mut tools = Vec::new();
tools.extend(core_tools::core_tools());
tools.extend(memory_tools::memory_tools(memory_store.clone()));
tools.extend(skill_tools::skill_tools(memory_store));
tools.extend(self_tools::self_tools());
let plugins = crate::plugin::load_plugins();
for p in &plugins {
tools.push(crate::plugin::plugin_to_tool(p));
}
tools
}