Skip to main content

abu_agent/memory/
sequential.rs

1use 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}