crossflow 0.0.2

Reactive programming and workflow engine in bevy
Documentation
[package]
name = "crossflow"
version = "0.0.2"
edition = "2021"
authors = ["Grey <mxgrey@intrinsic.ai>"]
license = "Apache-2.0"
description = "Reactive programming and workflow engine in bevy"
readme = "README.md"
repository = "https://github.com/open-rmf/crossflow"
keywords = ["reactive", "workflow", "behavior", "agent", "bevy"]
categories = [
  "science::robotics",
  "asynchronous",
  "concurrency",
  "game-development",
]

# Exclude files related to the npm package management done by crossflow_diagram_editor,
# and other miscellaneous config files.
exclude = [
  ".github/*",
  "biome.json",
  "package.json",
  "pnpm-lock.yaml",
  "pnpm-workspace.yaml",
]

[workspace.dependencies]
axum = { version = "0.8.4", default-features = false }
bevy_app = "0.16"
bevy_derive = "0.16"
bevy_diagnostic = "0.16"
bevy_ecs = "0.16"
bevy_tasks = "0.16"
bevy_time = "0.16"
bevy_utils = "0.16"
clap = { version = "4.5.23", features = ["derive"] }
mime_guess = "2.0.5"
schemars = "0.9.0"
serde = "1.0.219"
serde_json = "1.0.140"
tokio = { version = "1.47.1", default-features = false }
tonic = "0.14"
prost = "0.14"
tonic-prost = "0.14"
tonic-prost-build = "0.14"
prost-build = "0.14"
prost-reflect = "0.16"
tracing = "0.1.41"
tracing-subscriber = "0.3.19"
futures = "0.3.31"
futures-util = "0.3.31"
uuid = { version = "1.13.1", default-features = false }
wasm-bindgen = "0.2.100"
zenoh = "1.5.1"
zenoh-ext = "1.5.1"

[dependencies]
crossflow_derive = { path = "macros", version = "0.0.2" }
bevy_ecs = { workspace = true }
bevy_utils = { workspace = true }
bevy_derive = { workspace = true }
bevy_diagnostic = { workspace = true }
bevy_app = { workspace = true }

async-task = { version = "4.7.1", optional = true }

# TODO(@mxgrey) We could probably remove bevy_tasks when the single_threaded_async
# feature is active, but we'd have to refactor some internal usage of
# bevy_tasks::Task, so we're leaving it as a mandatory dependency for now.
bevy_tasks = { workspace = true, features = ["multi_threaded"] }

itertools = "0.13"
smallvec = { version = "1.13", features = ["serde"] }
tokio = { workspace = true, features = ["sync"] }
futures = { workspace = true }
backtrace = "0.3"
anyhow = "1.0"
thiserror = "1.0"

# These dependencies are only used by the testing module.
# We may want to consider feature-gating them, but we use
# the testing module for doctests, and doctests can only
# make use of default features, so we're a bit stuck with
# these for now.
bevy_time = { workspace = true }

schemars = { workspace = true, optional = true }
serde = { workspace = true, optional = true, features = ["derive", "rc"] }
serde_json = { workspace = true, optional = true }
cel-interpreter = { version = "0.9.0", features = ["json"], optional = true }

# --- Dependencies for grpc feature
tonic = { workspace = true, optional = true }
prost = { workspace = true, optional = true }
tonic-prost = { workspace = true, optional = true }
prost-reflect = { workspace = true, features = ["serde"], optional = true }
http = { version = "1.3", optional = true }
futures-lite = { version = "2.6", features = ["std", "race"], optional = true }
async-std = { version = "1.12", optional = true}
# --- end grpc

# --- Dependencies for zenoh feature
zenoh = { workspace = true, features = ["unstable"], optional = true }
zenoh-ext = { workspace = true, features = ["unstable"], optional = true }
# --- end zenoh

tracing = { workspace = true }
strum = { version = "0.26.3", optional = true, features = ["derive"] }
semver = { version = "1.0.24", optional = true }

variadics_please = "1.1"

[target.wasm32-unknown-unknown.dependencies]
uuid = { workspace = true, default-features = false, features = ["js"] }
getrandom = { version = "0.3.3", features = ["wasm_js"] }

[features]
single_threaded_async = ["dep:async-task"]
diagram = [
  "dep:cel-interpreter",
  "dep:schemars",
  "dep:semver",
  "dep:serde",
  "dep:serde_json",
  "dep:strum",
]
trace = ["diagram"]

grpc = [
  "dep:tonic",
  "dep:prost",
  "dep:tonic-prost",
  "dep:tonic-prost-build",
  "dep:prost-reflect",
  "tokio/rt-multi-thread",
  "dep:http",
  "dep:futures-lite",
  "dep:async-std",
]

zenoh = [
  "dep:zenoh",
  "dep:zenoh-ext",
  "dep:prost-reflect",
  "dep:futures-lite",
  "dep:tonic-prost-build",
]

# Turn on all capability related features. This differs from --all-features
# because it would not include single_threaded_async which has a diminishing
# effect on capabilities.
maximal = [
  "diagram",
  "trace",
  "grpc",
  "zenoh",
]

[dev-dependencies]
async-std = { version = "1.12" }
test-log = { version = "0.2.16", features = [
  "trace",
], default-features = false }

[workspace]
members = [
  "examples/diagram/calculator",
  "examples/zenoh-examples",
  "diagram-editor",
  "diagram-editor/wasm",
  "examples/diagram/calculator_wasm",
  "examples/diagram/calculator_ops_catalog",
  "examples/native"
]

[[bin]]
name = "generate_schema"
path = "src/diagram/generate_schema.rs"
required-features = ["diagram"]
doc = false

[build-dependencies]
tonic-prost-build = { workspace = true, optional = true }