Chain editor

Primitive-based orchestration at /app/workflows/chains/{slug}/edit.

ChainEditor component — form-based, not React Flow. Save PATCHes the full chain document. Test runs use POST /v1/workflow-chains/{slug}/run from the studio (requires Editor + runtime.simulate).

Editable fields

  • Name, status (draft/live/paused), summary blurb.
  • When trigger — free-text label describing entry (e.g. cron, webhook received).
  • Primary steps — ordered list; add/remove/reorder; each step picks kind + label + config.
  • Branches — named branch + nested step list for parallel paths after decide.
  • Primitive chips preview — visual summary on card and in editor header.

Assistant & Agent steps

assistant steps resolve Assistants by label/slug match in the workspace and call the assistant runtime. agent steps invoke AI Agents via run_playground_turn with guardrails. Output text feeds decide branches (case-insensitive substring match on match labels).

Webhook & human steps

  • webhook (outbound) — POSTs signed JSON to config.url with retries and timeout.
  • webhook (inbound) — set config.secret on the webhook step; external callers POST to public or authenticated ingress URLs with HMAC of the raw JSON body.
  • human — sets run status to awaiting_human; resume via POST .../runs/{run_id}/resume after operator action.

Run history

GET /v1/workflow-chains/{slug}/runs returns recent runs (status, branch_taken, duration). GET .../runs/{run_id} includes primary_trace and branch_trace step timelines. Audit events: workflow_chain.run, workflow_chain.resume, workflow_chain.ingress.