plugmem-host 0.1.4

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 }
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]
# 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"]
# Optional 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. Off by default so library users who build a
# Config in code do not pull the `toml` parser.
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 }

[[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