Skip to main content

agentrs_memory/
lib.rs

1#![forbid(unsafe_code)]
2
3//! Memory backends for `agentrs`.
4
5mod in_memory;
6#[cfg(feature = "redis")]
7mod redis_backend;
8mod sliding_window;
9mod token_aware;
10mod vector;
11
12use async_trait::async_trait;
13
14pub use in_memory::InMemoryMemory;
15#[cfg(feature = "redis")]
16pub use redis_backend::RedisMemory;
17pub use sliding_window::SlidingWindowMemory;
18pub use token_aware::{ApproximateTokenizer, TokenAwareMemory, Tokenizer};
19pub use vector::{
20    Embedder, InMemoryVectorStore, SimpleEmbedder, VectorMemory, VectorSearchResult, VectorStore,
21};
22
23use agentrs_core::{Memory, Message, Result};
24
25/// Shared extension trait for memory utilities.
26#[async_trait]
27pub trait SearchableMemory: Memory {
28    /// Returns the approximate token count for the current history.
29    async fn token_count(&self) -> Result<usize>;
30
31    /// Semantic or lexical search over memory.
32    async fn search(&self, query: &str, limit: usize) -> Result<Vec<Message>> {
33        self.retrieve(query, limit).await
34    }
35}