content: # Enable a small amount of optimization in debug mode
  [profile.dev]
  opt-level = 1
  
  # Enable high optimizations for dependencies (incl. Bevy), but not for our code:
  [profile.dev.package."*"]
  opt-level = 3
  
  # sweet backtracing
  [profile.test]
  opt-level = 0
  [profile.test.package.sweet]
  opt-level = 0
  
  [workspace.package]
  version = "0.0.7"
  authors = ["Pete Hayman"]
  edition = "2024"
  description = "A Very Bevy Metaframework"
  documentation = "https://docs.rs/beet"
  readme = "README.md"
  homepage = "https://beetstack.dev"
  repository = "https://github.com/mrchantey/beet"
  license = "MIT OR Apache-2.0"
  keywords = ["beet", "beetmash", "behavior", "game-ai", "robotics"]
  categories = [
  	"science::robotics",
  	"game-development",
  	"simulation",
  	"wasm",
  	"embedded",
  ]
  publish = false
  
  [workspace]
  # default resolver
  resolver = "2"
  
  exclude = [
  	"infra",
  	"examples/todo-app",
  	"crates/beet_mcp",
  ]
  
  members = [
  
  	## 💡 Core
  	"crates/beet_core",
  	"crates/beet_core/macros",
  	"crates/beet_utils",
  	"crates/sweet/macros",
  	"crates/sweet",
  	"crates/sweet/cli",
  
  	## 💡 Flow
  	"crates/beet_examples",
  	"crates/beet_flow",
  	"crates/beet_ml",
  	"crates/beet_sim",
  	"crates/beet_spatial",
  
  	## 💡 RSX
  	"crates/beet_net",
  	"crates/beet_agent",
  	"crates/beet_build",
  	"crates/beet_design",
  	"crates/beet_dom",
  	"crates/beet_parse",
  	"crates/beet_query",
  	"crates/beet_query/macros",
  	"crates/beet_router",
  	"crates/beet_rsx_combinator",
  	"crates/beet_rsx/macros",
  	"crates/beet_rsx",
  
  	## 💡 Beet
  	"crates/beet_site",
  	"crates/beet-cli",
  ]
  
  [workspace.dependencies]
  ## internal
  
  beet_utils = { path = "crates/beet_utils", version = "0.0.7" }
  sweet_macros = { path = "crates/sweet/macros", version = "0.0.7" }
  sweet = { path = "crates/sweet", version = "0.4.2" }
  beet_core_macros = { path = "crates/beet_core/macros", version = "0.0.7" }
  beet_core = { path = "crates/beet_core", version = "0.0.7" }
  
  beet_flow = { path = "crates/beet_flow", version = "0.0.7" }
  beet_spatial = { path = "crates/beet_spatial", version = "0.0.7" }
  beet_ml = { path = "crates/beet_ml", version = "0.0.7" }
  beet_sim = { path = "crates/beet_sim", version = "0.0.7" }
  beet_examples = { path = "crates/beet_examples", version = "0.0.7" }
  
  beet_rsx_combinator = { path = "crates/beet_rsx_combinator", version = "0.0.7" }
  beet_parse = { path = "crates/beet_parse", version = "0.0.7" }
  beet_rsx_macros = { path = "crates/beet_rsx/macros", version = "0.0.7" }
  beet_rsx = { path = "crates/beet_rsx", version = "0.0.7" }
  beet_build = { path = "crates/beet_build", version = "0.0.7" }
  beet_design = { path = "crates/beet_design", version = "0.0.7" }
  beet_net = { path = "crates/beet_net", version = "0.0.7" }
  beet_router = { path = "crates/beet_router", version = "0.0.7" }
  beet_dom = { path = "crates/beet_dom", version = "0.0.7" }
  beet_query = { path = "crates/beet_query", version = "0.0.7" }
  beet_query_macros = { path = "crates/beet_query/macros", version = "0.0.7" }
  beet_agent = { path = "crates/beet_agent", version = "0.0.7" }
  
  beet = { path = "", version = "0.0.7" }
  
  #💡 local
  bevy = { version = "0.17.0", default-features = false, features = [
  	"std", # std for reflect PathBuf
  	"debug",
  	"bevy_log",
  	"bevy_color",
  	# bevy reccommends to not do this in libraries but beet_core --all-features wont compile without it
  	# even if feature forced on, not sure why
  	"reflect_auto_register",
  	# for most oneshot apps multi-threaded coldstart is much slower than
  	# any potential performance gain, even more prominent for linear pipelines
  	# "multi_threaded",
  	# "track_location",
  ] }
  
  #💡 utility
  anyhow = "1"
  thiserror = "1"
  heck = "0.4"
  glob = "0.3"
  dotenv = "0.15"
  send_wrapper = "0.6"
  rapidhash = "1"
  web-time = "1"
  tempfile = "3"
  mime_guess = "2"
  uuid = {version = "1",features=["js"]}
  chrono = "0.4"
  # old rand until https://github.com/bevyengine/bevy/pull/18047
  # also when you update it remove all the RandomSource.0 in beet too please
  rand = "0.8.5"
  rand_chacha = "0.3.1"
  # # wasm_js ignored in native
  getrandom = { version = "0.2.15", features = ["js"] }
  variadics_please = "1"
  
  #💡 logging
  log = "0.4"
  tracing = "0.1"
  colorize = "0.1"
  tracing-subscriber = { version = "0.3", features = ["env-filter"] }
  pretty_env_logger = "0.4"
  console_log = { version = "1", features = ["color"] }
  
  
  #💡 async
  futures = "0.3"
  futures-lite = { version = "2", default-features = false, features = ["alloc"] }
  async-channel = "2"
  async-executor = "1"
  async-fs = "2"
  async-io = "2"
  async-lock = "3"
  async-process = "2"
  async-task = "4"
  # todo replace with async channel
  flume = "0.11"
  # todo replace with bevy tasks
  rayon = "1"
  # todo replace with async-std
  tokio = { version = "1", features = [
  	"macros",
  	"sync",
  	"rt",
  	"rt-multi-thread",
  	"time",
  ] }
  
  #💡 macros
  
  syn = { version = "2", features = [
  	"extra-traits",
  	"visit",
  	# full for syn::pat
  	"full",
  ] }
  quote = "1"
  proc-macro2 = { version = "1", features = ["span-locations"] }
  proc-macro2-diagnostics = "0.10"
  prettyplease = "0.2"
  
  #💡 attributes
  strum = { version = "0.26", features = ["derive"] }
  strum_macros = "0.26"
  extend = "1"
  
  #💡 io
  serde = { version = "1", features = ["derive"] }
  serde_json = "1"
  base64 = "0.22"
  ron = "0.8"
  toml = "0.8"
  clap = { version = "4", features = ["derive"] }
  bytes = "1"
  
  #💡 http
  http = "1"
  http-body-util = "0.1"
  
  #💡 server
  axum = { version = "0.8", features = ["macros"] }
  axum-server = { version = "0.7" }
  axum-extra = "0.10"
  tower = "0.5"
  tower-livereload = { version = "0.9" }
  tower-http = { version = "0.6", features = [
  	"trace",
  	"fs",
  	"cors",
  	"normalize-path",
  	"set-header",
  ] }
  
  #💡 web
  js-sys = "0.3"
  wasm-bindgen = "0.2"
  wasm-bindgen-futures = "0.4"
  console_error_panic_hook = "0.1"
  # https://github.com/wasm-bindgen/wasm-bindgen/blob/215b914c739c598e5c076f8ed22df20d2c77a3dd/crates/web-sys/Cargo.toml#L45
  web-sys = "0.3"
  
  [package]
  name = "beet"
  version.workspace = true
  edition.workspace = true
  description.workspace = true
  documentation.workspace = true
  readme.workspace = true
  homepage.workspace = true
  repository.workspace = true
  license.workspace = true
  keywords.workspace = true
  categories.workspace = true
  
  include = ["CHANGELOG.md", "README.md", "/src", "/examples", "/scenes"]
  
  [features]
  # default = ["nightly"]
  #💡 helper features
  launch = ["dom","net", "build"]
  server = ["serde","dom","fs", "net", "router", "design"]
  client = [
  	"rsx",
  	"design",
  	"net",
  	"dom",
  	"serde",
  	"router",
  	"beet_net/client",
  	"beet_dom/client",
  	"beet_design/client",
  ]
  
  #💡 fine-grained
  native-tls = [
  	"beet_agent?/native-tls",
  	"beet_net?/native-tls",
  	"beet_router?/native-tls"
  ]
  rustls-tls = [
  	"beet_agent?/rustls-tls",
  	"beet_net?/rustls-tls",
  	"beet_router?/rustls-tls"
  ]
  serde = ["beet_core/serde", "beet_net?/serde", "beet_router?/serde"]
  nightly = ["beet_core/nightly","beet_dom?/nightly","beet_rsx?/nightly"]
  rand = ["beet_core/rand"]
  agent = ["dep:beet_agent"]
  dom = ["dep:beet_dom"]
  router = ["dep:beet_router"]
  examples = ["bevy_default", "spatial", "dep:beet_examples"]
  flow = ["dep:beet_flow"]
  css = ["beet_parse?/css", "beet_rsx?/css"]
  design = ["rsx", "dep:beet_design"]
  webdriver = ["dom","beet_dom?/webdriver"]
  # query = ["dep:beet_query"]
  parse = ["dep:beet_parse"]
  rsx = ["dep:beet_rsx"]
  ml = ["flow", "dep:beet_ml", "beet_examples?/ml"]
  cuda = ["ml","beet_ml/cuda"]
  # 💡 Server
  axum = ["beet_router?/axum"]
  lambda = ["rustls-tls", "beet_router?/lambda"]
  aws = ["beet_net?/aws","beet_router?/aws"]
  
  spatial = ["flow", "dep:beet_spatial", "beet_ml?/spatial"]
  sim = ["flow", "dep:beet_sim"]
  build = ["parse", "dep:beet_build"]
  bevy_scene = ["beet_core/bevy_scene"]
  bevy_default = [
  	"bevy/default",
  	"beet_core/bevy_default",
  	"beet_dom/bevy_scene",
  	"beet_dom/bevy_text",
  	"beet_examples?/bevy_default",
  	"beet_flow?/bevy_default",
  	"beet_ml?/bevy_default",
  	"beet_spatial?/bevy_default",
  	"beet_sim?/bevy_default",
  ]
  #💡 utils
  fs = ["beet_agent?/fs","beet_core/fs","beet_net?/fs","beet_router?/fs"]
  net = ["dep:beet_net"]
  
  # animation = ["beet_spatial?/animation"]
  # assets = ["beet_spatial?/assets"]
  # ui = ["beet_spatial?/ui"]
  # reflect = ["beet_flow/reflect"]
  # dynamic_linking = ["bevy/dynamic_linking"]
  
  [dependencies]
  bevy = { workspace = true }
  
  #💡 utils
  beet_utils.workspace = true
  beet_core.workspace = true
  
  #💡 web
  beet_net = { workspace = true, optional = true }
  beet_dom = { workspace = true, optional = true }
  beet_parse = { workspace = true, optional = true }
  beet_rsx = { workspace = true, optional = true }
  beet_router = { workspace = true, optional = true }
  beet_build = { workspace = true, optional = true }
  beet_design = { workspace = true, optional = true }
  beet_agent = { workspace = true, optional = true }
  # beet_query = { workspace = true, optional = true }
  
  #💡 flow
  beet_flow = { workspace = true, optional = true }
  beet_ml = { workspace = true, optional = true }
  beet_sim = { workspace = true, optional = true }
  beet_spatial = { workspace = true, optional = true }
  
  beet_examples = { workspace = true, optional = true }
  
  
  [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
  tokio.workspace = true
  
  [target.'cfg(target_arch = "wasm32")'.dependencies]
  # required for rand 0.9 to compile on wasm targets
  uuid = { workspace = true, features = ["rng-getrandom"] }
  # getrandom = { workspace = true }
  getrandom = { version = "0.3", features = ["wasm_js"] }
  
  [dev-dependencies]
  beet = { path = "", features = ["flow","examples"] }
  # beet = { path = "", features = ["launch", "server", "client", "rand"] }
  # bevy.workspace = true
  # bevy = { workspace = true, default_features = true }
  serde.workspace = true
  clap.workspace = true
  
  [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
  beet = { path = "", features = ["fs"] }
  tokio.workspace = true
  axum.workspace = true
  
  
  [target.'cfg(target_arch = "wasm32")'.dev-dependencies]
  console_error_panic_hook.workspace = true
  web-sys.workspace = true
  # console_log.workspace = true
  # js-sys.workspace = true
  # wasm-bindgen.workspace = true
  # wasm-bindgen-futures.workspace = true
  
  
  # 💡 Examples - agent
  [[example]]
  name = "chat"
  path = "examples/agent/chat.rs"
  required-features = ["agent","native-tls"]
  [[example]]
  name = "image"
  path = "examples/agent/image.rs"
  required-features = ["agent","native-tls"]
  
  
  # 💡 Examples - dom
  [[example]]
  name = "csr"
  path = "examples/rsx/csr.rs"
  required-features = ["client"]
  
  [[example]]
  name = "ssr"
  path = "examples/rsx/ssr.rs"
  required-features = ["server"]
  
  [[example]]
  name = "hydration"
  path = "examples/rsx/hydration.rs"
  required-features = ["rsx"]
  
  # 💡 Examples - flow
  
  [[example]]
  name = "bench_local"
  path = "examples/flow/bench_local.rs"
  required-features = ["flow"]
  
  [[example]]
  name = "bench_global"
  path = "examples/flow/bench_global.rs"
  required-features = ["flow"]
  
  [[example]]
  name = "hello_world"
  path = "examples/flow/hello_world.rs"
  required-features = ["flow"]
  
  [[example]]
  name = "long_running"
  path = "examples/flow/long_running.rs"
  required-features = ["flow"]
  
  [[example]]
  name = "malenia"
  path = "examples/flow/malenia.rs"
  required-features = ["flow", "rand"]
  
  [[example]]
  name = "repeat_while"
  path = "examples/flow/repeat_while.rs"
  required-features = ["flow"]
  
  [[example]]
  name = "simple_action"
  path = "examples/flow/simple_action.rs"
  required-features = ["flow"]
  
  [[example]]
  name = "state_machine"
  path = "examples/flow/state_machine.rs"
  required-features = ["flow"]
  
  [[example]]
  name = "utility_ai"
  path = "examples/flow/utility_ai.rs"
  required-features = ["flow"]
  
  # 💡 Examples - app
  
  [[example]]
  name = "hello_terminal"
  path = "examples/app/hello_terminal.rs"
  required-features = ["examples"]
  
  [[package.metadata.scene]]
  name = "hello-terminal"
  thumb-text = "🌍"
  thumb-url = "https://bevyhub-public.s3.us-west-2.amazonaws.com/assets/screenshots/hello-world.png"
  description = "A simple behavior that prints 'Hello' then 'World' to the console."
  app = "app"
  path = "scenes/hello-world.json"
  include = ["beet-debug", "bevyhub/camera-2d", "bevyhub/ui-terminal"]
  
  
  # [[example]]
  # name = "app_ml"
  # path = "examples/app_ml.rs"
  
  # [[package.metadata.scene]]
  # name = "app-ml"
  # thumb-text = "🔨"
  # description = "Full Beet App with machine learning, networking, and UI."
  # app.js-url = "https://mrchantey.github.io/bevyhub-apps/beet/app_ml.js"
  # app.wasm-url = "https://mrchantey.github.io/bevyhub-apps/beet/app_ml_bg.wasm"
  # app.type-registry-url = "https://mrchantey.github.io/bevyhub-apps/beet/registries/type_registry_ml.json"
  # app.replication-registry-url = "https://mrchantey.github.io/bevyhub-apps/beet/registries/replication_registry_ml.json"
  
  # [[example]]
  # name = "app"
  # path = "examples/app.rs"
  
  # [[package.metadata.scene]]
  # name = "app"
  # thumb-text = "🔨"
  # description = "Basic Beet App with debugging, camera, and UI."
  # app.js-url = "https://mrchantey.github.io/bevyhub-apps/beet/app.js"
  # app.wasm-url = "https://mrchantey.github.io/bevyhub-apps/beet/app_bg.wasm"
  # app.type-registry-url = "https://mrchantey.github.io/bevyhub-apps/beet/registries/type_registry.json"
  # app.replication-registry-url = "https://mrchantey.github.io/bevyhub-apps/beet/registries/replication_registry.json"
  
  # [[package.metadata.scene]]
  # name = "beet-debug"
  # thumb-text = "🐛"
  # description = "Enable debugging for printing to the console, and screen if used with bevyhub/ui-terminal."
  # path = "scenes/beet-debug.json"
  
  # [[example]]
  # name = "export_scenes"
  # path = "examples/export_scenes.rs"
  
  # 💡 Examples - ml
  
  # [[package.metadata.scene]]
  # name = "fetch-scene"
  # thumb-text = "🏠"
  # description = "A camera and the items that the fetch character can go to."
  # path = "scenes/fetch-scene.json"
  
  [[example]]
  name = "fetch"
  path = "examples/ml/fetch.rs"
  required-features = ["examples", "ml"]
  
  # [[package.metadata.scene]]
  # name = "fetch"
  # description = "Combining LLM, steering and animation behaviors."
  # thumb-url = "https://bevyhub-public.s3.us-west-2.amazonaws.com/assets/screenshots/fetch.png"
  # app = "app-ml"
  # path = "scenes/fetch-npc.json"
  # include = [
  # 	"bevyhub/ui-terminal-input",
  # 	"bevyhub/lighting-3d",
  # 	"bevyhub/ground-3d",
  # 	"fetch-scene",
  # ]
  # events.playerMessage.initial = "I'm hungry!"
  
  # [[package.metadata.scene]]
  # name = "frozen-lake-scene"
  # thumb-text = "❄️"
  # description = "The static scene for the frozen lake environment."
  # path = "scenes/frozen-lake-scene.json"
  
  
  [[example]]
  name = "frozen_lake_train"
  path = "examples/ml/frozen_lake_train.rs"
  required-features = ["examples", "ml"]
  
  # [[package.metadata.scene]]
  # name = "frozen-lake-train"
  # description = "Train a Q-learning agent to navigate the frozen lake environment."
  # thumb-url = "https://bevyhub-public.s3.us-west-2.amazonaws.com/assets/screenshots/frozen-lake-run.png"
  # app = "app-ml"
  # path = "scenes/frozen-lake-train.json"
  # include = [
  # 	"bevyhub/ui-terminal",
  # 	"bevyhub/lighting-3d",
  # 	"beet-debug",
  # 	"frozen-lake-scene",
  # ]
  
  [[example]]
  name = "frozen_lake_run"
  path = "examples/ml/frozen_lake_run.rs"
  required-features = ["examples", "ml"]
  
  # [[package.metadata.scene]]
  # name = "frozen-lake-run"
  # description = "Use a trained Q-learning agent to navigate the frozen lake environment."
  # thumb-url = "https://bevyhub-public.s3.us-west-2.amazonaws.com/assets/screenshots/frozen-lake-run.png"
  # app = "app-ml"
  # path = "scenes/frozen-lake-run.json"
  # include = [
  # 	"bevyhub/ui-terminal",
  # 	"bevyhub/lighting-3d",
  # 	"beet-debug",
  # 	"frozen-lake-scene",
  # ]
  
  [[example]]
  name = "hello_ml_chat"
  path = "examples/ml/hello_ml_chat.rs"
  required-features = ["examples", "ml"]
  
  [[example]]
  name = "hello_ml"
  path = "examples/ml/hello_ml.rs"
  required-features = ["examples", "ml"]
  
  [[package.metadata.scene]]
  name = "hello-ml"
  description = "A behavior that uses a Sentence Selector to score child behaviors, deciding which will run next."
  thumb-url = "https://bevyhub-public.s3.us-west-2.amazonaws.com/assets/screenshots/hello-llm.png"
  path = "scenes/hello-ml.json"
  include = ["bevyhub/camera-2d", "bevyhub/ui-terminal", "beet-debug"]
  
  # 💡 Examples - spatial
  
  [[example]]
  name = "flock"
  path = "examples/spatial/flock.rs"
  required-features = ["examples", "spatial"]
  
  # Too big, we need to handle for loops in scene files
  # [[package.metadata.scene]]
  # name = "flock"
  # description = "Demonstration of flocking behaviors."
  # thumb-url = "https://bevyhub-public.s3.us-west-2.amazonaws.com/assets/screenshots/flock.png"
  # app = "app"
  # path = "scenes/flock.json"
  # include = ["beet-debug", "bevyhub/camera-2d", "bevyhub/space-scene"]
  
  
  [[example]]
  name = "hello_animation"
  path = "examples/spatial/hello_animation.rs"
  required-features = ["examples", "spatial"]
  
  
  [[package.metadata.scene]]
  name = "hello-animation"
  description = "A simple behavior demonstrating animation control."
  thumb-url = "https://bevyhub-public.s3.us-west-2.amazonaws.com/assets/screenshots/hello-animation.png"
  app = "app"
  path = "scenes/hello-animation.json"
  include = [
  	"bevyhub/ui-terminal",
  	"bevyhub/lighting-3d",
  	"bevyhub/ground-3d",
  	"beet-debug",
  ]
  
  [[example]]
  name = "inverse_kinematics"
  path = "examples/spatial/inverse_kinematics.rs"
  required-features = ["examples", "spatial"]
  
  [[example]]
  name = "seek"
  path = "examples/spatial/seek.rs"
  required-features = ["examples", "spatial"]
  
  [[example]]
  name = "seek_3d"
  path = "examples/spatial/seek_3d.rs"
  required-features = ["examples", "spatial"]
  
  # [[package.metadata.scene]]
  # name = "seek"
  # description = "Demonstration of the seek behavior."
  # thumb-url = "https://bevyhub-public.s3.us-west-2.amazonaws.com/assets/screenshots/seek.png"
  # app = "app"
  # path = "scenes/seek.json"
  # include = ["beet-debug", "bevyhub/camera-2d", "bevyhub/space-scene"]
  
  # [[package.metadata.scene]]
  # name = "seek-3d"
  # description = "A 3D demonstration of the seek behavior."
  # thumb-url = "https://bevyhub-public.s3.us-west-2.amazonaws.com/assets/screenshots/seek-3d.png"
  # app = "app"
  # path = "scenes/seek-3d.json"
  # include = ["beet-debug", "bevyhub/lighting-3d", "bevyhub/ground-3d"]
  
  # 💡 Benches
  
  [[bench]]
  name = "bevy_coldstart"
  path = "tests/benches/bevy_coldstart.rs"
  harness = false
  
  [[bench]]
  name = "assert"
  path = "tests/benches/assert.rs"
  harness = false
  