potato_agent/agents/memory/
in_memory.rs1use super::{Memory, MemoryTurn};
2use potato_type::prompt::MessageNum;
3
4#[derive(Debug, Default)]
6pub struct InMemoryMemory {
7 turns: Vec<MemoryTurn>,
8}
9
10impl InMemoryMemory {
11 pub fn new() -> Self {
12 Self::default()
13 }
14}
15
16impl Memory for InMemoryMemory {
17 fn push_turn(&mut self, turn: MemoryTurn) {
18 self.turns.push(turn);
19 }
20
21 fn messages(&self) -> Vec<MessageNum> {
22 let mut msgs = Vec::with_capacity(self.turns.len() * 2);
23 for turn in &self.turns {
24 msgs.push(turn.user.clone());
25 msgs.push(turn.assistant.clone());
26 }
27 msgs
28 }
29
30 fn clear(&mut self) {
31 self.turns.clear();
32 }
33
34 fn len(&self) -> usize {
35 self.turns.len()
36 }
37}