plugmem-host 0.3.0

Native host layer for plugmem: file storage with locking, Embedder trait and HTTP embedder implementations.
Documentation
[package]
name = "plugmem-host"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Native host layer for plugmem: file storage with locking, Embedder trait and HTTP embedder implementations."
keywords = ["plugmem", "storage", "embedder", "memory", "llm"]
categories = ["filesystem", "api-bindings", "database"]

[dependencies]
plugmem-core = { workspace = true }
thiserror = { workspace = true }
directories = { workspace = true }
memmap2 = { workspace = true }
self_cell = { workspace = true }
ureq = { workspace = true, features = ["json"] }
serde_json = { workspace = true }
serde = { workspace = true, optional = true }
toml = { workspace = true, optional = true }

[features]
# The native host is the configuration boundary, so TOML settings are
# available by default. Consumers that only construct `Config` in code can
# opt out with `default-features = false`; this never changes plugmem-core.
default = ["config"]
# Deterministic work counters (perf gates), forwarded to plugmem-core. Enabling
# it changes the engine lock from an RwLock to a Mutex (the arena's counter
# Cells are not Sync), so read-only verbs serialize instead of running
# concurrently. It is a single-threaded perf-measurement build โ€” do NOT enable
# it in normal use; leave it off to keep concurrent readers.
counters = ["plugmem-core/counters"]
# Optional serde Serialize/Deserialize on the public data types (FactSnapshot,
# ExportedFact, RecoverReport, FsyncPolicy). Off by default; forwards to
# plugmem-core's serde. HostError is not covered โ€” it wraps std::io::Error,
# which is not serializable.
serde = ["dep:serde", "plugmem-core/serde"]
# config.toml loader (Settings): resolves the engine Config, an embedder, and
# the maintenance policy from a TOML file + environment, shared by the CLI and
# MCP wrappers. Enabled by default; opt out with `default-features = false` for
# a host caller that supplies Config programmatically.
config = ["dep:toml"]

[dev-dependencies]
# Cross-OS resident-set-size probe for the overlay RAM-win test (specs/16 ยง9).
memory-stats = { workspace = true }
criterion = { workspace = true }
serde_json = { workspace = true }
plugmem-testgen = { workspace = true }
# The workspace name rule is a security boundary ("a name cannot become a
# path"), so it is checked over arbitrary strings, not only chosen ones.
proptest = { workspace = true }

[[bench]]
name = "integrity"
harness = false

[lints]
workspace = true

# A library / internal tool, not a shipped binary โ€” excluded from cargo-dist releases.
[package.metadata.dist]
dist = false