mod sequential;
mod slidingwindow;
mod summary;
mod retrieval;
mod augmented;
mod hierarchical;
#[cfg(test)]
mod test;
use abu_base::chat::ChatMessage;
pub use sequential::SequentialMemory;
pub use slidingwindow::SliceWindowMemory;
pub use summary::SummarizationMemory;
pub use retrieval::RetrievalMemory;
pub use augmented::AugmentedMemory;
pub use hierarchical::HierarchicalMemory;
#[allow(async_fn_in_trait)]
pub trait Memory : Send + Sync {
type Error: std::error::Error + 'static + Send + Sync;
async fn add(&mut self, user_input: &str, ai_response: &str) -> Result<(), Self::Error>;
async fn search(&self, query: &str) -> Result<Vec<ChatMessage>, Self::Error>;
async fn clear(&mut self) -> Result<(), Self::Error>;
}