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