use super::messages::Message;
pub trait BaseMemory: Send + Sync {
fn messages(&self) -> Vec<Message>;
fn add_user_message(&mut self, message: &dyn std::fmt::Display) {
self.add_message(Message::new_human_message(&message.to_string()));
}
fn add_ai_message(&mut self, message: &dyn std::fmt::Display) {
self.add_message(Message::new_ai_message(&message.to_string()));
}
fn add_message(&mut self, message: Message);
fn clear(&mut self);
fn to_string(&self) -> String {
self.messages()
.iter()
.map(|msg| format!("{}: {}", msg.message_type.to_string(), msg.content))
.collect::<Vec<String>>()
.join("\n")
}
}