Skip to main content

cel_memory/
lib.rs

1//! cel-memory — the durable cross-turn memory contract for AI agents.
2//!
3//! This crate answers one question: **what should persist across turns?** It
4//! owns the memory *contract* — the [`MemoryProvider`] trait plus the value
5//! types every backend and caller share (chunks, sessions, queries, retrieval
6//! profiles, caller scopes, write hooks, summaries, rollups, aging, export).
7//! Storage backends implement the trait; callers depend only on it.
8//!
9//! The crate is deliberately narrow. It does **not** observe live environment
10//! state and it does **not** assemble per-turn LLM prompts. `cel-memory` owns
11//! persistence only.
12//!
13//! [`BasicMemoryProvider`] is the in-crate reference implementation — real
14//! bodies for [`MemoryProvider::retrieve`], [`MemoryProvider::write`], session
15//! lifecycle, simple deletes, export, and stats; `Err(NotImplemented)` for
16//! summarization, rollups, and re-embed; no-ops for `update_importance` and
17//! `supersede`. A full storage backend (e.g. the `cel-memory-sqlite` crate)
18//! drops in behind the same trait without caller churn.
19
20#![deny(missing_docs)]
21#![warn(rust_2018_idioms)]
22
23pub mod basic;
24pub mod chunk;
25pub mod error;
26pub mod importance;
27pub mod offdevice_hook;
28pub mod ops;
29pub mod provider;
30pub mod query;
31pub mod session;
32pub mod summarizer;
33pub mod write_hook;
34
35// Convenient re-exports — the symbols every caller will name.
36pub use basic::BasicMemoryProvider;
37pub use chunk::{ChunkKind, ChunkSource, MemoryChunk, MemoryTier, NewMemoryChunk};
38pub use error::{MemoryError, Result};
39pub use importance::score as score_importance;
40pub use offdevice_hook::{
41    ClosureOffdeviceHook, OffdeviceCallDescriptor, OffdeviceCallHook, OffdeviceDecision,
42};
43pub use ops::{
44    AccessEntry, AgingReport, EvictionEntry, EvictionReason, ExportBundle, ExportFilter,
45    MemoryStats, PurgeReport, ReEmbedReport,
46};
47pub use provider::MemoryProvider;
48pub use query::{CallerScope, MemoryPredicate, MemoryQuery, RetrievalProfile};
49pub use session::{MemorySession, NewMemorySession, SessionFilter, SessionOutcome};
50pub use summarizer::{
51    MockSummarizer, MockSummaryCall, Summarizer, SummarizerError, SummarizerResult, SummaryContext,
52};
53pub use write_hook::{ClosureHook, MemoryWriteHook, WriteDecision};