9c44c709e9
The previous computeLayers used a reachability-based relation (a « b) with depth tiebreaker to define a < b, then grouped nodes by == into equivalence classes. However == is NOT an equivalence relation (fails transitivity), making the grouping order-dependent and incorrect for graphs with parallel branches. Replace with standard Sugiyama longest-path layering: 1. DFS to detect and remove back-edges (break cycles) 2. Kahn's topological sort on the resulting DAG 3. rank(n) = max(rank(pred) + 1) for longest-path assignment 4. Group nodes by rank into layers Also removes the experimental dagre layout strategy that was added for comparison — longest-path produces better results for our workflow graphs.
@uncaged/workflow-dashboard
Web dashboard for the Uncaged Workflow engine. Connects to the local
uncaged-workflow serve API to display threads, workflows, and CAS data.
Development
# Start the local API server (in another terminal)
uncaged-workflow serve
# Start the dashboard dev server
bun run dev
Opens at http://localhost:5173. Vite proxies /api/* to localhost:7860.
Build
bun run build
Output goes to dist/ — static files ready for CF Pages or any host.