rspace-online/backlog/tasks/task-40 - Port-workflow-eng...

2.1 KiB

id title status assignee created_date labels milestone dependencies references priority
TASK-40 Port workflow engine (propagators + execution) To Do
2026-02-18 19:51
infrastructure
phase-6
workflow
m-0
TASK-24
canvas-website/src/lib/workflow/
canvas-website/src/propagators/WorkflowPropagator.ts
canvas-website/src/propagators/ScopedPropagators.ts
rspace-online/lib/folk-workflow-block.ts
medium

Description

Port the workflow execution engine from canvas-website to rspace-online. This powers the existing folk-workflow-block shape with actual data flow and execution.

Source files (3,676 lines total):

  • canvas-website/src/lib/workflow/types.ts (159 lines) — type definitions
  • canvas-website/src/lib/workflow/blockRegistry.ts (438 lines) — block definition registry
  • canvas-website/src/lib/workflow/executor.ts (548 lines) — block execution engine
  • canvas-website/src/lib/workflow/portBindings.ts (464 lines) — port connection logic
  • canvas-website/src/lib/workflow/validation.ts (417 lines) — graph validation
  • canvas-website/src/lib/workflow/serialization.ts (571 lines) — save/load workflows
  • canvas-website/src/propagators/WorkflowPropagator.ts (326 lines) — real-time data flow

Target: rspace-online/lib/workflow/ directory

Key adaptation needed: canvas-website uses tldraw store for state; rspace-online uses Automerge. The execution engine needs to read/write shape data through CommunitySync instead of tldraw's store.

Also port relevant propagator concepts:

  • canvas-website/src/propagators/ScopedPropagators.ts (314 lines)
  • canvas-website/src/propagators/SpatialIndex.ts (164 lines)

Acceptance Criteria

  • #1 Block registry loads available block types
  • #2 Port connections transfer data between blocks
  • #3 Execution engine runs blocks in correct order
  • #4 Validation catches invalid graph configurations
  • #5 Workflows serialize/deserialize through Automerge
  • #6 Real-time propagation updates connected blocks