TowerRule schema — predicate + trigger + federation types for yah-tower. Zero deps on tower runtime; consumed by the rule engine, desktop UI, tower.simulate, and tests.
/// Export all tower-rules TypeScript bindings to the UI gen directory.
////// Usage: `cargo run -p tower-rules --bin tower-rules-export-ts [OUTPUT_DIR]`
////// Default output: `packages/yah/ui/src/gen/` relative to workspace root.
fnmain(){let out_dir =std::env::args().nth(1).unwrap_or_else(||{let manifest_dir =env!("CARGO_MANIFEST_DIR");// Cargo.toml lives at crates/yah/tower-rules/; go up 3 levels to workspace root
format!("{manifest_dir}/../../../packages/yah/ui/src/gen")});std::fs::create_dir_all(&out_dir).unwrap_or_else(|e|panic!("failed to create output dir {out_dir}: {e}"));tower_rules::export_ts(&out_dir).unwrap_or_else(|e|panic!("failed to export TypeScript bindings: {e}"));println!("tower-rules: TypeScript bindings written to {out_dir}");}