abu_agent/memory/
sequential.rs1use std::convert::Infallible;
2use abu_base::chat::ChatMessage;
3use super::Memory;
4
5#[derive(Default)]
6pub struct SequentialMemory {
7 history: Vec<ChatMessage>,
8}
9
10impl SequentialMemory {
11 pub fn new() -> Self {
12 Self { history: vec![] }
13 }
14}
15
16impl Memory for SequentialMemory {
17 type Error = Infallible;
18
19 async fn add(&mut self, user_input: &str, ai_response: &str) -> Result<(), Self::Error> {
20 let user_message = ChatMessage::user(user_input);
21 let ai_message = ChatMessage::assistant(ai_response, []);
22 self.history.push(user_message);
23 self.history.push(ai_message);
24 Ok(())
25 }
26
27 async fn search(&self, _query: &str) -> Result<Vec<ChatMessage>, Self::Error> {
28 Ok(self.history.clone())
29 }
30
31 async fn clear(&mut self) -> Result<(), Self::Error> {
32 self.history.clear();
33 Ok(())
34 }
35}