potato_agent/agents/memory/
mod.rs1pub mod in_memory;
2pub mod windowed;
3
4pub use in_memory::InMemoryMemory;
5pub use windowed::WindowedMemory;
6
7use potato_type::prompt::MessageNum;
8use serde::{Deserialize, Serialize};
9use std::fmt::Debug;
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct MemoryTurn {
14 pub user: MessageNum,
15 pub assistant: MessageNum,
16}
17
18pub trait Memory: Send + Sync + Debug {
20 fn push_turn(&mut self, turn: MemoryTurn);
21 fn messages(&self) -> Vec<MessageNum>;
23 fn clear(&mut self);
24 fn len(&self) -> usize;
25 fn is_empty(&self) -> bool {
26 self.len() == 0
27 }
28 fn as_any_mut(&mut self) -> Option<&mut dyn std::any::Any> {
31 None
32 }
33}