[package] name = "flowrs-instruments" version.workspace = true edition.workspace = true publish.workspace = true rust-version.workspace = true authors.workspace = true license.workspace = true description = "Bench-instrument capability model for FlowRS: constraint-carrying descriptors (the piece IVI lacked) that validate an instrument config offline, then compile it to a SCPI command sequence — the Rust-native replacement for VISA/IVI driver stacks." [lib] crate-type = ["rlib"] [dependencies] serde = { workspace = true } serde_json = { workspace = true } # The audit log's hash chain and the proposal hash an approval binds to. Pure Rust, so the # browser can verify a chain with the same code that wrote it. Already in the lock file # (flowrs-mcp uses it for the code trust list). sha2 = "0.11" # The catalogue entry's regulatory status (a cleared device, a vendor's non-device # statement, or unknown), the type every hardware catalogue in flowRS shares. flowrs-schemas = { path = "../flowrs-schemas", features = ["serde"] } # The simulated bench (`sim`): simulation files are TOML (LabCraft's format) or pyvisa-sim's # YAML. Both readers are pure Rust, already in the lock (flowrs-critic and flowrs-ingest use # them) and in the browser's bundle (flowrs-ingest is), so the editor reads a bench too. toml = { version = "1", default-features = false, features = ["parse", "std", "serde"] } serde_yaml_ng = "0.10" # A scope's sine (`sim::wave`): libm's, ported, the same bits in the browser and natively, # so a simulated capture is reproducible everywhere, as a quantity's noise is. flowrs-math = { path = "../flowrs-math" } # The hybrid signatures (`hybrid`: Ed25519 and ML-DSA-65, FIPS 204) on approval policies # and audit checkpoints, and the random lease tokens the shared store mints. Native only # and off by default (the browser shows what the server verified). aws-lc-rs: ML-DSA is # stable API in 1.18, inside AWS-LC's FIPS 140-3 validation, and already in the lock as # rustls's provider (flowrs-tls). It replaces ring, which has no ML-DSA. aws-lc-rs = { version = "1.18.2", default-features = false, features = ["aws-lc-sys"], optional = true } [features] default = [] # Signing and verifying policies (`policy::crypto`) and audit checkpoints, random tokens. # flowrs-mcp and flowrs-server turn it on. crypto = ["dep:aws-lc-rs"] [dev-dependencies] # `cfg(kani)` is set by `cargo kani`, never by cargo itself, so rustc does not know the # name. Declared so the proofs in `lifecycle.rs` do not warn in an ordinary build. [lints.rust] unexpected_cfgs = { level = "warn", check-cfg = ['cfg(kani)'] }