cel-memory-sqlite 0.1.0

SQLite + sqlite-vec implementation of cel-memory's MemoryProvider trait. Local-first, single-file storage with optional FastEmbed-powered embeddings.
Documentation
[package]
name = "cel-memory-sqlite"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "SQLite + sqlite-vec implementation of cel-memory's MemoryProvider trait. Local-first, single-file storage with optional FastEmbed-powered embeddings."
keywords = ["ai", "memory", "sqlite", "vector-search", "embedding"]
categories = ["asynchronous", "database"]
readme = "README.md"

[dependencies]
async-trait.workspace = true
cel-memory = { path = "../cel-memory", version = "0.1.0" }
chrono = { workspace = true, features = ["serde"] }
rusqlite = { workspace = true, features = ["functions"] }
serde_json.workspace = true
sqlite-vec = "0.1"
thiserror.workspace = true
tokio = { workspace = true }
tracing.workspace = true
uuid = { workspace = true, features = ["v7", "serde"] }
zerocopy = "0.7"

# fastembed pulls in onnxruntime + tokenizers; gated behind a feature so
# downstream crates can opt in only when they need real embeddings (model
# download is ~130 MB). The MockEmbedder is always available.
fastembed = { version = "4", optional = true }

[features]
default = []
fastembed = ["dep:fastembed"]

[dev-dependencies]
chrono = { workspace = true, features = ["serde"] }
tempfile = "3"
tokio = { workspace = true, features = ["macros", "rt", "rt-multi-thread"] }
# NOTE: daemon-only crates (rule gateway, Cellar event types) are intentionally
# NOT dev-deps here. Daemon-level integration tests that need them live in the
# downstream Cellar daemon; keeping them out keeps this crate standalone-testable
# with only cel-memory + storage deps.