ceylon_memory/lib.rs
1//! # Ceylon Memory
2//!
3//! Memory backend implementations for agent state persistence.
4//!
5//! This crate provides pluggable storage backends implementing the [`ceylon_core::Memory`] trait:
6//!
7//! - [`InMemoryBackend`] - Fast, thread-safe in-memory storage (default)
8//! - [`SqliteBackend`] - File-based persistent storage (feature: `sqlite`)
9//! - [`RedisBackend`] - Distributed persistent storage (feature: `redis`)
10//! - [`QdrantBackend`] - Qdrant vector database (feature: `qdrant`)
11//! - [`ChromaDBBackend`] - ChromaDB vector database (feature: `chromadb`)
12//! - [`PineconeBackend`] - Pinecone vector database (feature: `pinecone`)
13//!
14//! # Example
15//!
16//! ```rust,no_run
17//! use ceylon_memory::InMemoryBackend;
18//! use ceylon_core::{Memory, MemoryEntry, MemoryQuery};
19//!
20//! # async fn example() -> anyhow::Result<()> {
21//! let memory = InMemoryBackend::new();
22//!
23//! // Store an entry
24//! let entry = MemoryEntry::new("Important note");
25//! let id = memory.store(entry).await?;
26//!
27//! // Retrieve by ID
28//! if let Some(entry) = memory.get(&id).await? {
29//! println!("Content: {}", entry.content);
30//! }
31//! # Ok(())
32//! # }
33//! ```
34
35mod in_memory;
36
37#[cfg(feature = "sqlite")]
38mod sqlite;
39
40#[cfg(feature = "redis")]
41mod redis;
42
43#[cfg(feature = "qdrant")]
44mod qdrant;
45
46#[cfg(feature = "chromadb")]
47mod chromadb;
48
49#[cfg(feature = "pinecone")]
50mod pinecone;
51
52pub use in_memory::InMemoryBackend;
53
54#[cfg(feature = "sqlite")]
55pub use sqlite::SqliteBackend;
56
57#[cfg(feature = "redis")]
58pub use redis::RedisBackend;
59
60#[cfg(feature = "qdrant")]
61pub use qdrant::QdrantBackend;
62
63#[cfg(feature = "chromadb")]
64pub use chromadb::ChromaDBBackend;
65
66#[cfg(feature = "pinecone")]
67pub use pinecone::PineconeBackend;
68
69// Re-export core memory types for convenience
70pub use ceylon_core::{Memory, MemoryEntry, MemoryQuery, VectorMemory};