[workspace] members = [ "crates/bascule-core", "crates/bascule-server", "crates/bascule-auth-agent-id", "crates/bascule-shell", "crates/bascule-dashboard", "crates/bascule-dashboard-web", ] resolver = "2" [workspace.package] version = "0.1.0" edition = "2021" license = "Apache-2.0" [workspace.dependencies] # M1: depend on the canonical proto-generated SAT types from the substrate # workspace. Path dep across workspaces. # # Layout: working trees nested under the substrate-project umbrella; # bascule-oss is a sibling checkout to substrate/ (NOT side-by-side with # substrate-project at a higher directory). Paths resolve relative to # bascule-oss's root Cargo.toml: `../substrate/...` → the sibling # substrate/ checkout. If a future layout supports side-by-side checkouts, # a parallel `[patch]`-based override or a second path alternative can be # added. # # substrate-proto is itself a thin facade over substrate-common, which owns # the tonic-build invocation, so consumers only need to worry about the # substrate-proto import surface. # # Open item: the substrate-* naming on these crates violates this repo's # CLAUDE.md "zero substrate deps" rule in spirit and the CI contamination # check in letter, despite the CONTENT being a legitimate neutral protocol # contract. See NOTES-SUBSTRATE-PROTO-NAMING-VIOLATION.md for the proposed # rename (substrate-proto → sat-proto) and CNCF-sandbox-positioning # rationale. Not v1-blocking; tracked for post-foundation cleanup. substrate-proto = { path = "../substrate/crates/substrate-proto" } # Post-M6: optional HFL kernel-dispatch path. Pulled by `bascule-core` # under the `hfl` feature so the M5/M1 SAT compose path can route through # audit::SAT_BUNDLE on nodes with /dev/substrate-hfl loaded. Same # cross-workspace path conventions as above; same NOTES-* open item covers # the naming-violation question for these crates. hfl-types = { path = "../substrate/crates/hfl-types" } substrate-hfl = { path = "../substrate/crates/substrate-hfl" } russh = "0.46" russh-keys = "0.46" tokio = { version = "1", features = ["full"] } async-trait = "0.1" anyhow = "1" thiserror = "1" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } serde = { version = "1", features = ["derive"] } toml = "0.8" chrono = { version = "0.4", features = ["serde"] } uuid = { version = "1", features = ["v4"] } rand = "0.8" clap = { version = "4", features = ["derive"] } portable-pty = "0.8" serde_json = "1" reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] } jsonwebtoken = "9"