Skip to main content

ai_agents_memory/
lib.rs

1//! Memory implementations for AI Agents framework
2
3mod compacting;
4mod context;
5mod events;
6mod in_memory;
7mod native;
8mod summarizer;
9mod token_budget;
10
11use async_trait::async_trait;
12
13pub use ai_agents_core::MemorySnapshot;
14pub use compacting::{CompactingMemory, CompactingMemoryConfig, CompressionEvent};
15pub use context::{CompressResult, ConversationContext, estimate_message_tokens, estimate_tokens};
16pub use events::{
17    EvictionReason, FactExtractedEvent, MemoryBudgetEvent, MemoryCompressEvent, MemoryEvictEvent,
18};
19pub use in_memory::InMemoryStore;
20pub use summarizer::{LLMSummarizer, NoopSummarizer, Summarizer};
21pub use token_budget::{MemoryBudgetState, MemoryTokenBudget, OverflowStrategy, TokenAllocation};
22
23/// Extended memory trait that preserves the original interface.
24#[async_trait]
25pub trait Memory: ai_agents_core::Memory {
26    async fn get_context(&self) -> ai_agents_core::Result<ConversationContext> {
27        let messages = self.get_messages(None).await?;
28        Ok(ConversationContext::with_messages(messages))
29    }
30
31    async fn compress(
32        &self,
33        _summarizer: Option<&dyn Summarizer>,
34    ) -> ai_agents_core::Result<CompressResult> {
35        Ok(CompressResult::NotNeeded)
36    }
37
38    fn needs_compression(&self) -> bool {
39        false
40    }
41}