1#![forbid(unsafe_code)]
2
3mod 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#[async_trait]
27pub trait SearchableMemory: Memory {
28 async fn token_count(&self) -> Result<usize>;
30
31 async fn search(&self, query: &str, limit: usize) -> Result<Vec<Message>> {
33 self.retrieve(query, limit).await
34 }
35}