use mnemo::{Mnemo, MnemoConfig, RecallRequest, Result, Turn};
fn main() -> Result<()> {
let path = std::env::temp_dir().join("mnemo-session.mnemo");
let _ = std::fs::remove_file(&path);
let cfg = MnemoConfig { dimensions: 4, ..Default::default() };
let mut db = Mnemo::create(&path, "session-passphrase", cfg)?;
{
let mut chat = db.session("assistant");
println!("opened session {}", chat.id());
chat.add_turn(Turn::user("my flight is on Friday", vec![1.0, 0.0, 0.0, 0.0]))?;
chat.add_turn(Turn::assistant("noted — Friday it is", vec![0.9, 0.1, 0.0, 0.0]))?;
chat.add_turn(Turn::user("book me an aisle seat", vec![0.0, 1.0, 0.0, 0.0]))?;
let context = chat.recall(RecallRequest::new(vec![1.0, 0.0, 0.0, 0.0]).top_k(3))?;
println!("recalled {} memories for context", context.len());
let promoted = chat.close()?;
println!("session closed: {promoted} turns consolidated to episodic memory");
}
let episodic = db
.memories()?
.into_iter()
.filter(|m| matches!(m.memory_type, mnemo::MemoryType::Episodic))
.count();
println!("\n{episodic} episodic memories persisted from the conversation");
db.close()?;
let _ = std::fs::remove_file(&path);
Ok(())
}