pub mod in_memory;
pub mod windowed;
pub use in_memory::InMemoryMemory;
pub use windowed::WindowedMemory;
use potato_type::prompt::MessageNum;
use serde::{Deserialize, Serialize};
use std::fmt::Debug;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MemoryTurn {
pub user: MessageNum,
pub assistant: MessageNum,
}
pub trait Memory: Send + Sync + Debug {
fn push_turn(&mut self, turn: MemoryTurn);
fn messages(&self) -> Vec<MessageNum>;
fn clear(&mut self);
fn len(&self) -> usize;
fn is_empty(&self) -> bool {
self.len() == 0
}
fn as_any_mut(&mut self) -> Option<&mut dyn std::any::Any> {
None
}
}