[workspace]
resolver = "3"
members = [
    "crates/spec-parser",
    "crates/forge-oci",
    "crates/forge-engine",
    "crates/forge-builder",
    "crates/forger",
]

[workspace.package]
edition = "2024"
rust-version = "1.85"

[workspace.dependencies]
# Parsing
knuffel = "3.2"

# Error handling & diagnostics
miette = { version = "7", features = ["fancy"] }
thiserror = "2"

# CLI
clap = { version = "4.5", features = ["derive", "env"] }

# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"

# Async runtime
tokio = { version = "1", features = ["rt-multi-thread", "macros", "fs", "process", "time"] }

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

# OCI
oci-spec = "0.8"
oci-client = "0.15"

# Crypto & encoding
sha2 = "0.10"
hex = "0.4"

# IO
bytes = "1"
tar = "0.4"
flate2 = "1"
walkdir = "2"
tempfile = "3"

# Misc
bytesize = "2"
indicatif = "0.17"

# Builder VM support
vm-manager = { path = "../vm-manager/crates/vm-manager" }
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-native-roots", "stream"] }
libc = "0.2"
dirs = "6"
ssh2 = "0.9"
openssl = { version = "0.10", features = ["vendored"] }
ssh-key = { version = "0.6", features = ["ed25519", "rand_core", "getrandom"] }

# Internal crates
spec-parser = { path = "crates/spec-parser" }
forge-oci = { path = "crates/forge-oci" }
forge-engine = { path = "crates/forge-engine" }
forge-builder = { path = "crates/forge-builder" }
