use std::collections::HashSet; use std::sync::Arc; use crate::skills::SkillRuntime; use crate::storage::SessionStore; use crate::tools::{ BashTool, CalculatorTool, FileEditTool, FileReadTool, FileWriteTool, HttpRequestTool, MemoryManageTool, MemorySearchTool, SchedulerManageTool, SkillActivateTool, SkillListTool, SkillManageTool, TimeTool, ToolRegistry, WebFetchTool, }; pub(crate) struct ToolRegistryFactory { skills: Arc, store: Arc, known_agents: HashSet, default_timezone: String, } impl ToolRegistryFactory { pub(crate) fn new( skills: Arc, store: Arc, known_agents: HashSet, default_timezone: String, ) -> Self { Self { skills, store, known_agents, default_timezone, } } pub(crate) fn build(&self) -> ToolRegistry { let mut registry = ToolRegistry::new(); registry.register(CalculatorTool::new()); registry.register(TimeTool::new(self.default_timezone.clone())); registry.register(FileReadTool::new()); registry.register(FileWriteTool::new()); registry.register(FileEditTool::new()); registry.register(MemorySearchTool::new(self.store.clone())); registry.register(MemoryManageTool::new(self.store.clone())); registry.register(SchedulerManageTool::new( self.store.clone(), self.known_agents.clone(), )); registry.register(SkillActivateTool::new( self.skills.clone(), self.store.clone(), )); registry.register(SkillListTool::new(self.skills.clone())); registry.register(SkillManageTool::new(self.skills.clone())); registry.register(BashTool::new()); registry.register(HttpRequestTool::new( vec!["*".to_string()], 1_000_000, 30, false, )); registry.register(WebFetchTool::new(50_000, 30)); registry } }