[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 = ["dep:agentfs-sdk"]
hnsw = ["hnsw_rs"]
csm = ["chaotic_semantic_memory"]
http-emitter = ["reqwest"]
wasm32 = []
[dependencies]
tokio = { workspace = true, features = ["sync", "macros", "rt", "time", "io-util"] }
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.4", features = ["json"], optional = true }
ort = { version = "2.0.0-rc.12", optional = true }
tokenizers = { version = "0.23.1", optional = true }
ndarray = { version = "0.17", optional = true }
augurs-changepoint = "0.10.2"
changepoint = "0.15.0"
rand = "0.10"
dirs = "6.0"
strsim = "0.11.1"
agentfs-sdk = { version = "0.6.4", optional = true }
regex = "1.12"
proptest = { version = "1.11", optional = true }
hnsw_rs = { version = "0.3.0", optional = true }
chaotic_semantic_memory = { version = "0.3.6", optional = true }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tokio = { workspace = true, features = ["fs"] }
[dev-dependencies]
tokio = { workspace = true, features = ["sync", "macros", "rt", "time", "io-util", "rt-multi-thread", "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.5"
criterion = "0.8"
proptest = "1.11"
insta = "1.47"
postcard = { workspace = true }
do-memory-core = { path = ".", features = ["proptest-arbitrary"] }
[lints]
workspace = true
[target.'cfg(target_arch = "wasm32")'.dependencies]
tokio = { workspace = true, features = ["sync", "macros", "rt", "time", "io-util"] }
getrandom = { version = "0.2", features = ["js"] }
getrandom03 = { package = "getrandom", version = "0.3", features = ["wasm_js"] }
getrandom04 = { package = "getrandom", version = "0.4", features = ["wasm_js"] }
uuid = { version = "1", features = ["js"] }