mod load_memory;
mod save_memory;
mod search_knowledge;
pub use load_memory::LoadMemoryTool;
pub use save_memory::SaveMemoryTool;
pub use search_knowledge::SearchKnowledgeTool;
use crate::runtime::context::AuthContext;
use crate::runtime::memory::MemoryService;
use crate::tools::{BaseTool, BaseToolset};
use std::sync::Arc;
pub struct MemoryToolset {
load_memory: LoadMemoryTool,
save_memory: SaveMemoryTool,
search_knowledge: SearchKnowledgeTool,
}
impl MemoryToolset {
pub fn new(memory_service: Arc<dyn MemoryService>, auth_context: AuthContext) -> Self {
Self {
load_memory: LoadMemoryTool::new(Arc::clone(&memory_service), auth_context.clone()),
save_memory: SaveMemoryTool::new(Arc::clone(&memory_service), auth_context.clone()),
search_knowledge: SearchKnowledgeTool::new(memory_service, auth_context),
}
}
}
#[cfg_attr(
all(target_os = "wasi", target_env = "p1"),
async_trait::async_trait(?Send)
)]
#[cfg_attr(
not(all(target_os = "wasi", target_env = "p1")),
async_trait::async_trait
)]
impl BaseToolset for MemoryToolset {
async fn get_tools(&self) -> Vec<&dyn BaseTool> {
vec![&self.load_memory, &self.save_memory, &self.search_knowledge]
}
async fn close(&self) {
}
}