abu-agent 0.1.0

Agent development library
Documentation
use std::convert::Infallible;
use abu_base::chat::ChatMessage;
use super::Memory;

#[derive(Default)]
pub struct SequentialMemory {
    history: Vec<ChatMessage>,
}

impl SequentialMemory {
    pub fn new() -> Self {
        Self { history: vec![] }
    }
}

impl Memory for SequentialMemory {
    type Error = Infallible;

    async fn add(&mut self, user_input: &str, ai_response: &str) -> Result<(), Self::Error> {
        let user_message = ChatMessage::user(user_input);
        let ai_message = ChatMessage::assistant(ai_response, []);
        self.history.push(user_message);
        self.history.push(ai_message);
        Ok(())
    }
    
    async fn search(&self, _query: &str) -> Result<Vec<ChatMessage>, Self::Error> {
        Ok(self.history.clone())
    }

    async fn clear(&mut self) -> Result<(), Self::Error> {
        self.history.clear();
        Ok(())
    }
}