rspace-online/backlog/tasks/task-42 - Implement-Data-Pi...

2.2 KiB

id title status assignee created_date labels milestone dependencies references priority
TASK-42 Implement Data Pipes: typed data flow through arrows To Do
2026-02-18 20:06
feature
phase-1
ecosystem
m-1
TASK-41
rspace-online/lib/folk-arrow.ts
rspace-online/lib/folk-shape.ts
rspace-online/lib/folk-image-gen.ts
rspace-online/lib/folk-prompt.ts
high

Description

Transform folk-arrow from visual-only connector into a typed data conduit between shapes.

New file lib/data-types.ts:

  • DataType enum: string, number, boolean, image-url, video-url, text, json, trigger, any
  • Type compatibility matrix and isCompatible() function

Add port mixin to FolkShape:

  • ports map, getPort(), setPortValue(), onPortValueChanged()
  • Port values stored in Automerge: doc.shapes[id].ports[name].value
  • 100ms debounce on port propagation to prevent keystroke thrashing

Enhance folk-arrow:

  • sourcePort/targetPort fields referencing named ports
  • Listen for port-value-changed on source, push to target
  • Type compatibility check before pushing
  • Visual: arrows tinted by data type, flow animation when active
  • Port handle UI during connect mode

Add port descriptors to AI shapes:

  • folk-image-gen: input "prompt" (text), output "image" (image-url)
  • folk-video-gen: input "prompt" (text), input "image" (image-url), output "video" (video-url)
  • folk-prompt: input "context" (text), output "response" (text)
  • folk-transcription: output "transcript" (text)

Example pipeline: Transcription →[text]→ Prompt →[text]→ ImageGen →[image-url]→ VideoGen

Acceptance Criteria

  • #1 DataType system with compatibility matrix works
  • #2 Shapes can declare input/output ports via registration
  • #3 setPortValue() writes to Automerge and dispatches event
  • #4 folk-arrow pipes data from source port to target port
  • #5 Type incompatible connections show warning
  • #6 Arrows visually indicate data type and active flow
  • #7 Port values sync to remote clients via Automerge
  • #8 100ms debounce prevents thrashing on rapid changes