use std::sync::Arc;
use tracing::error;
use cortex_mem_core::{
memory::MemoryManager,
types::{MemoryMetadata, MemoryResult, Message},
Result,
};
pub struct ConversationProcessor {
memory_manager: Arc<MemoryManager>,
}
impl ConversationProcessor {
pub fn new(memory_manager: Arc<MemoryManager>) -> Self {
Self { memory_manager }
}
pub async fn process_turn(
&self,
messages: &[Message],
metadata: MemoryMetadata,
) -> Result<Vec<MemoryResult>> {
match self.memory_manager.add_memory(messages, metadata).await {
Ok(results) => Ok(results),
Err(e) => {
error!("Failed to process conversation turn for memory: {}", e);
Err(e)
}
}
}
}