nuro_memory/
conversation.rs1use nuro_core::message::Message;
2
3#[derive(Debug, Clone)]
5pub struct ConversationMemory {
6 max_messages: usize,
7 messages: Vec<Message>,
8}
9
10impl ConversationMemory {
11 pub fn new(max_messages: usize) -> Self {
13 Self {
14 max_messages,
15 messages: Vec::new(),
16 }
17 }
18
19 pub fn max_messages(&self) -> usize {
21 self.max_messages
22 }
23
24 pub fn push(&mut self, message: Message) {
26 self.messages.push(message);
27 self.truncate_if_needed();
28 }
29
30 fn truncate_if_needed(&mut self) {
31 if self.messages.len() > self.max_messages {
32 let overflow = self.messages.len() - self.max_messages;
33 self.messages.drain(0..overflow);
34 }
35 }
36
37 pub fn messages(&self) -> &[Message] {
39 &self.messages
40 }
41}