pub mod consolidation;
pub mod episodic;
pub mod helpers;
pub mod semantic;
#[cfg(feature = "postgres")]
pub mod semantic_pg;
#[cfg(test)]
mod tests;
pub mod working;
#[cfg(feature = "postgres")]
pub use semantic_pg::PostgresSemanticStore;
use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use crate::error::KowalskiError;
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct MemoryUnit {
pub id: String, pub timestamp: u64,
pub content: String,
pub embedding: Option<Vec<f32>>,
}
#[async_trait]
pub trait MemoryProvider {
async fn add(&mut self, memory: MemoryUnit) -> Result<(), KowalskiError>;
async fn retrieve(
&self,
query: &str,
retrieval_limit: usize,
) -> Result<Vec<MemoryUnit>, KowalskiError>;
async fn search(&self, query: MemoryQuery) -> Result<Vec<MemoryUnit>, KowalskiError>;
}
#[derive(Debug, Clone)]
pub struct MemoryQuery {
pub text_query: String,
pub vector_query: Option<Vec<f32>>,
pub top_k: usize,
}