64 lines
2.0 KiB
Rust
64 lines
2.0 KiB
Rust
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<SkillRuntime>,
|
|
store: Arc<SessionStore>,
|
|
known_agents: HashSet<String>,
|
|
default_timezone: String,
|
|
}
|
|
|
|
impl ToolRegistryFactory {
|
|
pub(crate) fn new(
|
|
skills: Arc<SkillRuntime>,
|
|
store: Arc<SessionStore>,
|
|
known_agents: HashSet<String>,
|
|
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
|
|
}
|
|
}
|