Skip to main content

jellyflow_runtime/
lib.rs

1//! Headless runtime, rules, schema, and profile pipeline for Jellyflow.
2//!
3//! This crate owns the portable B-layer store and change pipeline built on top of
4//! `jellyflow-core` graph transactions. It must stay free of Fret UI, renderer, platform, and
5//! windowing dependencies.
6//!
7//! Public API shape:
8//! - crate-root re-exports are the canonical runtime entry points,
9//! - [`io`] owns persisted files and editor configuration,
10//! - [`runtime::xyflow`] is an explicit compatibility adapter, not the primary store contract.
11
12#![deny(unsafe_code)]
13
14mod node_origin;
15
16pub mod io;
17pub mod profile;
18pub mod rules;
19pub mod runtime;
20pub mod schema;
21
22pub use profile::{
23    ApplyPipelineError, GraphProfile, apply_connect_plan_with_profile,
24    apply_transaction_with_profile,
25};
26pub use runtime::commit::NodeGraphPatch;
27pub use runtime::store::{DispatchError, DispatchOutcome, NodeGraphStore};
28
29#[cfg(test)]
30mod tests {
31    #[test]
32    fn manifest_stays_free_of_fret_ui_renderer_and_platform_dependencies() {
33        let manifest = include_str!("../Cargo.toml");
34        for forbidden in [
35            "fret-core",
36            "fret-ui",
37            "fret-runtime",
38            "fret-canvas",
39            "wgpu",
40            "winit",
41        ] {
42            assert!(
43                !manifest.contains(forbidden),
44                "jellyflow-runtime must stay headless; forbidden dependency `{forbidden}` found",
45            );
46        }
47    }
48}