macp-runtime 0.7.4

MACP reference runtime: a coordination kernel and gRPC server enforcing session boundaries, message validation, append-only history, modes, and governance policy.
Documentation
[package]
name = "macp-runtime"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
authors.workspace = true
description = "MACP reference runtime: a coordination kernel and gRPC server enforcing session boundaries, message validation, append-only history, modes, and governance policy."
readme = "README.md"
default-run = "macp-runtime"
# Keep operational and development-only directories out of the published crate.
exclude = ["/temp", "/.macp-data", "/plans", "/scripts", "/.githooks"]

[workspace]
members = ["crates/*"]
# integration_tests is a separate crate with its own target dir, run manually
# through the real gRPC boundary; it is not part of the main Cargo build.
exclude = ["integration_tests"]

# Shared package metadata inherited by every workspace crate via
# `<field>.workspace = true`, so version and release metadata live in one place.
[workspace.package]
version = "0.7.4"
edition = "2021"
rust-version = "1.89.0"
license = "Apache-2.0"
repository = "https://github.com/multiagentcoordinationprotocol/macp-runtime"
authors = ["Ajit Koti <ajitkoti@zer07labs.com>"]

# Shared dependency versions for every crate in the workspace. Member crates
# reference these via `{ workspace = true }` so versions stay pinned in one place.
# Internal crates carry both `version` (used when published to crates.io) and
# `path` (used for local workspace builds).
[workspace.dependencies]
# Internal crates
macp-pb = { version = "0.7.4", path = "crates/macp-pb" }
macp-core = { version = "0.7.4", path = "crates/macp-core" }
macp-policy = { version = "0.7.4", path = "crates/macp-policy" }
macp-storage = { version = "0.7.4", path = "crates/macp-storage" }
macp-auth = { version = "0.7.4", path = "crates/macp-auth" }
macp-modes = { version = "0.7.4", path = "crates/macp-modes" }
# External
tokio = { version = "1", features = ["full"] }
tonic = { version = "0.14", features = ["transport", "tls-ring"] }
tonic-health = "0.14"
prost = "0.14"
prost-types = "0.14"
tonic-prost = "0.14"
thiserror = "2"
chrono = "0.4"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio-stream = "0.1"
futures-core = "0.3"
async-stream = "0.3"
async-trait = "0.1"
jsonwebtoken = "9"
reqwest = { version = "0.13", features = ["json"], default-features = false }
uuid = { version = "1", features = ["v4"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
rocksdb = { version = "0.25" }
redis = { version = "1.2", features = ["tokio-comp", "aio"] }
macp-proto = "0.1.9"
tonic-prost-build = "0.14"
tempfile = "3"
base64 = "0.23"
sha2 = "0.11"

[features]
default = []
rocksdb-backend = ["macp-storage/rocksdb-backend"]
redis-backend = ["macp-storage/redis-backend"]
otel = ["dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp", "dep:tracing-opentelemetry"]

[dependencies]
macp-pb = { workspace = true }
macp-core = { workspace = true }
macp-storage = { workspace = true }
macp-policy = { workspace = true }
macp-modes = { workspace = true }
macp-auth = { workspace = true }
tokio = { workspace = true }
tonic = { workspace = true }
tonic-health = { workspace = true }
prost = { workspace = true }
prost-types = { workspace = true }
tonic-prost = { workspace = true }
thiserror = { workspace = true }
chrono = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
tokio-stream = { workspace = true }
futures-core = { workspace = true }
async-stream = { workspace = true }
async-trait = { workspace = true }
uuid = { workspace = true }
base64 = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
opentelemetry = { version = "0.32", optional = true }
opentelemetry_sdk = { version = "0.32", optional = true }
# 0.32 defaults switched to HTTP transport (http-proto + reqwest-blocking-client)
# plus metrics/logs; disable them and select the gRPC/tonic trace path explicitly.
opentelemetry-otlp = { version = "0.32", default-features = false, features = [
    "grpc-tonic",
    "trace",
], optional = true }
tracing-opentelemetry = { version = "0.33", optional = true }
macp-proto = { workspace = true }

[dev-dependencies]
tempfile = { workspace = true }
criterion = "0.5"

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

[build-dependencies]
tonic-prost-build = { workspace = true }
macp-proto = { workspace = true }