[package] name = "flowrs-capture" version.workspace = true edition.workspace = true publish.workspace = true rust-version.workspace = true authors.workspace = true license.workspace = true description = "Open capture formats in one in-memory model: VCD, FST and GHW (through wellen), sigrok .sr sessions and Saleae binary/CSV exports, with M4/min-max decimation for drawing millions of samples and the decoded lanes flowrs-decode adds." [lib] crate-type = ["rlib"] [dependencies] # The one implementation of sin, exp, ln, atan2, powf and the rest, the same bits in the # browser and in a generated program (crates/flowrs-math). flowrs-math = { path = "../flowrs-math" } # The decoders' lane and trace types: a capture carries its digital lines as # `DigitalTrace`s and its decoded lanes as `Lane`s, so nothing is converted between the # importer, the decoders and the panel. flowrs-decode = { path = "../flowrs-decode", features = ["serde"] } # VCD, FST and GHW (BSD-3-Clause). The reader Surfer is built on; parses in safe Rust and # compiles to wasm32 (its memmap2 dependency has a stub there), so the editor reads an # HDL simulator's dump in the browser. wellen = "0.25.7" # Raw DEFLATE for the ZIP members of a sigrok session file (MIT/Zlib/Apache-2.0). Already # in the tree under wellen; the ZIP container itself is read here, it is a page of code. miniz_oxide = "0.9.1" serde = { workspace = true } # The min/max/std pyramid the waveform view decimates through: dpb-plot's history, the # store behind the Live panel's scope too, so one implementation serves both panels. # Its no_std core only (libm). dpb-plot = { path = "../dpb-plot", default-features = false } # MCAP, the session format (src/mcap.rs): the container, its chunks, indexes and summary # (MIT). Default features off: they bind the C zstd and lz4 libraries, which do not build # for wasm32-unknown-unknown. Chunks are written uncompressed and read through the two # pure-Rust decoders below, registered on the reader's decompressor hook (new in 0.26). mcap = { version = "0.26.0", default-features = false } # zstd, rosbag2's default chunk compression, decoded in pure Rust (MIT). ruzstd = "0.9.1" # The LZ4 frame format, MCAP's other chunk compression (MIT). The version already in the # lock (wellen's FST reader uses it), frame decoding only. lz4_flex = { version = "0.13.1", default-features = false, features = ["frame", "safe-decode", "checked-decode"] } # Messages as values: a decoded ROS message, a JSON channel's message, a JSON Schema. serde_json = { workspace = true } # Symposium (`cargo agents`): an agent working on a project that depends on this crate gets # the flowRS skill (crates/flowrs-mcp/symposium/flowrs, rendered by flowrs-mcp's # skills::symposium_plugin) and the flowRS MCP server under the read-only plan profile. Never # the full profile: a dependency is not a trust root, and Symposium registers servers at user # level. Symposium 0.5.1 parses a crate's MCP entry but does not dispatch it yet; a registry # carrying symposium/flowrs/SYMPOSIUM.toml registers the same entry today. [package.metadata.symposium] [package.metadata.symposium.defaults] skills = false [[package.metadata.symposium.skills]] source.path = "../flowrs-mcp/symposium/flowrs/skills/core" [[package.metadata.symposium.mcp_servers]] name = "flowrs" command = "flowrs-mcp" args = ["--profile", "plan"] env = []