D
DreamLake

Data

action_label

Interval annotations — phase labels, operator narration, task-segmentation events. Each entry has a start (ts), end (te), and a text label.

Chunk format

  • Format: jsonl
  • Decoder: jsonlDecoder

JSONL shape

{
  ts: number       // interval start (seconds)
  te: number       // interval end (seconds)
  label: string    // display text
  kind?: string    // free tag ('milestone', 'attempt', 'halted', ...)
  color?: 'blue' | 'green' | 'orange' | 'purple' | 'gray-light' | 'gray-medium'
  createTime?: number  // queued-at time (renders a dashed wait-line preceding the execution bar)
  [extra]: unknown     // anything else the consumer may use
}

Sample data

{"ts": 0.0,  "te": 2.5, "label": "reach",   "operator": "alice", "target": "cube_A"}
{"ts": 2.5,  "te": 4.0, "label": "approach","operator": "alice"}
{"ts": 4.0,  "te": 5.5, "label": "grasp",   "operator": "alice", "object": "cube_A"}
{"ts": 5.5,  "te": 8.0, "label": "lift",    "color": "orange"}

Compatible timeline lanes

LaneNotes
PillLaneDefault. Pill bars with start-dot + centered duration label. kind: 'halted' → dashed segment; kind: 'attempt' → diagonal stripes; createTime → wait-line before the bar.

Compatible standalone views

ViewNotes
ActionLabelViewFull-width timeline ribbon + event list.

Default props

FieldValue
textField'label'

Python generator

from dreamlake import Episode
 
ep = Episode.create("ep1")
phases = ep.track("narration/phases", dtype="action_label")
 
phases.append({"ts": 0.0,  "te": 2.5, "label": "reach",    "target": "cube_A"})
phases.append({"ts": 2.5,  "te": 4.0, "label": "approach"})
phases.append({"ts": 4.0,  "te": 5.5, "label": "grasp",    "color": "green"})
phases.append({"ts": 5.5,  "te": 8.0, "label": "lift"})

registerDtype override

registerDtype({
  id: 'action_label',
  name: 'Action label',
  defaults: { textField: 'name' },  // if your JSONL uses `name` instead of `label`
})