[package] name = "flowrs-appshell" version.workspace = true edition.workspace = true publish.workspace = true rust-version.workspace = true authors.workspace = true license = "MIT OR Apache-2.0" description = "The shell an exported flowRS app runs in: the program's labelled Teleplot lines read back as the values its app binds, the app's OpenUI Lang planned by flowrs-app's view into the same kit blocks the IDE draws, rendered as HTML on the IDE's tokens and kit classes in both skins, and served on loopback under a strict Content-Security-Policy. The same page is an MCP Apps `ui://` resource. With `export`, the project generator that ships it." [features] default = [] # The runtime bundle (`runtime`): the source of flowRS's runtime crates, as an exported project # carries it in vendor/, made from the source this crate is compiled from (build.rs lists the # files) with each manifest rewritten to stand alone. No graph engine, so the IDE's build can # write it quickly (src/bin/runtime_bundle.rs). bundle = ["dep:toml", "dep:semver", "dep:flowrs-boards", "dep:flowrs-sim"] # The project generator (`export`): the graph, its codegen and scaffolds, infer and check, and # the bundle it vendors. Off in a generated project, which links only the shell. export = ["bundle", "dep:flowrs-core", "dep:flowrs-connect", "dep:syn", "dep:flowrs-iface", "flowrs-app/graph"] [dependencies] serde = { workspace = true } serde_json = { workspace = true } # The planner (`view`), the registry and the formatter, without the graph engine. flowrs-app = { path = "../flowrs-app", default-features = false } # The language an app is written in, and its runtime. flowrs-openui = { path = "../flowrs-openui" } flowrs-core = { path = "../flowrs-core", optional = true } flowrs-connect = { path = "../flowrs-connect", optional = true } # A robotics export (`robotics`) reads the unit off each edge's interface model. flowrs-iface = { path = "../flowrs-iface", optional = true } # The bundle reads the crates' manifests, the workspace's and its Cargo.lock. Already in the # lock (flowrs-critic's). toml = { version = "1", optional = true } # The exported project's Cargo.lock is resolved as cargo resolves one, with cargo's own # version requirements (src/lock.rs). Already in the lock (rustc_version's). semver = { version = "1.0.28", optional = true } # The board registry and, natively, the twin census the per-board fidelity contract is # generated from (src/fidelity.rs). Already in the tree through flowrs-core. flowrs-boards = { path = "../flowrs-boards", optional = true } # The time base each board's twin keeps (`flowrs_sim::timebase`), written into the contract as # labels. Already in the tree through flowrs-boards. flowrs-sim = { path = "../flowrs-sim", optional = true } # The form contract reads the generated program as syntax (its `unsafe`, by function), not as # text. syn 3 with `full` and `visit` is flowrs-core's already. syn = { version = "3.0.9", features = ["full", "parsing", "visit"], optional = true } [dev-dependencies] # The IDE build's writer of the runtime bundle (Trunk's post-build hook). [[bin]] name = "flowrs-runtime-bundle" path = "src/bin/runtime_bundle.rs" required-features = ["bundle"]