flowrs-engine/crates/flowrs-capture/Cargo.toml
flowRS fd958c0547 flowRS engine, cut from flowRS 3451b065
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-02 19:04:39 -05:00

65 lines
3.3 KiB
TOML

[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 = []