[package]
name = "do-memory-core"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage = "https://github.com/d-o-hub/rust-self-learning-memory"
readme = "README.md"
description = "Core episodic learning system for AI agents with pattern extraction, reward scoring, and dual storage backend"
keywords = ["ai", "memory", "learning", "episodic", "patterns"]
categories = ["database", "development-tools", "science"]
documentation = "https://docs.rs/do-memory-core"
[features]
default = []
openai = ["reqwest"]
mistral = ["reqwest"]
embeddings-full = ["openai", "mistral"]
local-embeddings = ["ort", "tokenizers", "ndarray", "reqwest/stream"]
hybrid_search = []
proptest-arbitrary = ["proptest"]
agentfs = []
[dependencies]
tokio = { workspace = true }
async-trait = { workspace = true }
anyhow = { workspace = true }
thiserror = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
uuid = { workspace = true }
chrono = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { version = "0.3.23", features = ["env-filter", "json"] }
futures = { workspace = true }
lru = { workspace = true }
parking_lot = "0.12.5"
reqwest = { version = "0.13", features = ["json"], optional = true }
ort = { version = "2.0.0-rc.12", optional = true }
tokenizers = { version = "0.22.2", optional = true }
ndarray = { version = "0.17", optional = true }
augurs-changepoint = "0.10.2"
changepoint = "0.15.0"
rand = "0.10"
strsim = "0.11.1"
regex = "1.12"
proptest = { version = "1.11", optional = true }
[dev-dependencies]
tokio = { workspace = true, features = ["test-util"] }
tempfile = { workspace = true }
do-memory-storage-turso = { path = "../memory-storage-turso", features = ["keepalive-pool"] }
do-memory-storage-redb = { path = "../memory-storage-redb" }
libsql = { workspace = true }
serial_test = "3.4"
criterion = "0.8"
proptest = "1.11"
insta = "1.47"
postcard = { workspace = true }
do-memory-core = { path = ".", features = ["proptest-arbitrary"] }
[lints.clippy]
pedantic = { level = "warn" }
missing_docs_in_private_items = { level = "allow" }
missing_errors_doc = { level = "warn" }
missing_safety_doc = { level = "warn" }
doc_markdown = { level = "warn" }