[workspace]
resolver = "2"
members = [
    "crates/levcs-core",
    "crates/levcs-identity",
    "crates/levcs-merge",
    "crates/levcs-protocol",
    "crates/levcs-store",
    "crates/levcs-client",
    "crates/levcs-instance",
    "crates/levcs-cli",
    "crates/levcs-tui",
]

[workspace.package]
version = "0.1.0"
edition = "2021"
license = "Apache-2.0"
authors = ["Levi J. Neuwirth <ln@levineuwirth.org>"]
rust-version = "1.75"

[workspace.dependencies]
levcs-core = { path = "crates/levcs-core" }
levcs-identity = { path = "crates/levcs-identity" }
levcs-merge = { path = "crates/levcs-merge" }
levcs-protocol = { path = "crates/levcs-protocol" }
levcs-store = { path = "crates/levcs-store" }
levcs-client = { path = "crates/levcs-client" }
levcs-instance = { path = "crates/levcs-instance" }
levcs-tui = { path = "crates/levcs-tui" }

blake3 = "1.5"
ed25519-dalek = { version = "2.1", features = ["rand_core", "std"] }
rand_core = { version = "0.6", features = ["getrandom"] }
getrandom = "0.2"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.8"
thiserror = "1.0"
byteorder = "1.5"
hex = "0.4"
base64 = "0.22"
glob = "0.3"
similar = { version = "2.6", features = ["text"] }
tree-sitter = "0.26"
tree-sitter-rust = "0.24"
tree-sitter-python = "0.25"
tree-sitter-javascript = "0.25"
tree-sitter-typescript = "0.23"
tree-sitter-go = "0.25"
tree-sitter-c = "0.24"
tree-sitter-cpp = "0.23"
tree-sitter-java = "0.23"
tree-sitter-ruby = "0.23"
tree-sitter-bash = "0.25"
serde_yaml = "0.9"
quick-xml = { version = "0.39", features = ["serialize"] }
pulldown-cmark = "0.13"
wasmtime = { version = "25", default-features = false, features = ["cranelift", "runtime"] }
wat = "1"
zstd = "0.13"
clap = { version = "4.5", features = ["derive"] }
argon2 = "0.5"
chacha20poly1305 = "0.10"
zeroize = "1.8"
ratatui = "0.28"
crossterm = "0.28"
tokio = { version = "1.40", features = ["full"] }
axum = "0.7"
tower = "0.5"
tower-http = { version = "0.5", features = ["cors", "trace"] }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json", "blocking"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
anyhow = "1.0"
# levcs-store (Phase 1 storage spine). See doc/phase1-storage-spine-scope.md 2.4
# for why each of these is taken and what was rejected in its place.
arc-swap = "1.7"
crossbeam-channel = "0.5"
im = "15.1"
rustix = { version = "1.1", features = ["fs"] }
libc = "0.2"
memmap2 = "0.9"
hdrhistogram = "7.5"

proptest = "1.5"
criterion = { version = "0.5", default-features = false, features = ["cargo_bench_support"] }
tempfile = "3"

[profile.release]
opt-level = 3
lto = "thin"

# Keep debug info in `bench` builds so cargo-flamegraph can unwind.
# Symbols add to binary size but do not affect runtime perf.
[profile.bench]
debug = true
