mod forgetting;
mod gc;
pub use forgetting::AdaptiveForgetting;
pub use gc::ExpiredMemoryGc;
use std::sync::Arc;
use basemyai_core::{MaintenanceTask, Result, Store};
use crate::{LlmInference, Memory, consolidate};
pub struct ConsolidationTask {
memory: Arc<Memory>,
llm: Arc<dyn LlmInference>,
}
impl ConsolidationTask {
pub fn new(memory: Arc<Memory>, llm: Arc<dyn LlmInference>) -> Self {
Self { memory, llm }
}
}
#[async_trait::async_trait]
impl MaintenanceTask for ConsolidationTask {
fn name(&self) -> &str {
"consolidation"
}
async fn run(&self, _store: &Store) -> Result<()> {
consolidate(&self.memory, self.llm.as_ref())
.await
.map(|_| ())
.map_err(|e| basemyai_core::CoreError::Storage(e.to_string()))
}
}