Workflows
Draw, author and follow an agent workflow. The execution model is an ordered tree rather than a graph, so both surfaces derive their edges and neither can author one — see the outline and the canvas side by side on the same definition.
Workflow run, from the real timeline shape
Driven by the shape the runtime already returns. It leads with the two questions an operator actually has — what failed, and what is waiting on a person — because a parked step needs a person while a running one only needs patience.
WorkflowRunView
1 step failed
- perLead — provider rate limit; retried 3 times
Waiting on a person, not on the runtime
- signOff — 1 request(s) open
Select a step to see its timing, gate decision, artifacts and error.
Workflow editor (option A, authoring)
Add a step from the palette or from any list own menu, reorder by dragging the handle or with the arrow controls, and edit every property as a field. The palette states where the step will land before you click, because a sidebar is attached to no list and a wrong guess would be silent. A fetch step picks its tool from the catalog and renders that tool declared inputs.
WorkflowEditorWorkflowStepFormWorkflowJsonView
10 of 25 steps
high-volume
else
Select a step to edit its prompt, inputs, outputs and reliability settings — or open the JSON tab to read and copy the whole definition.
Steps reorder within their own list, by dragging the handle or with the arrow controls. Moving one into a different container would change which artifacts are in scope for it, so it is not offered — the runtime would reject the result.
Derived view, live
high-volume
else
Every primitive, configured
One representative step of each of the twelve, with the properties that make it that primitive rendered as real fields. An agent step shows no prompt box on purpose — its prompt lives on its agent config, and inventing the field here would discard whatever was typed into it.
WorkflowStepForm
Agent step
Invoke an agent config serially. The default when no primitive is set.
This step's prompt and model live on its agent config, not on the step. Editing how it writes means editing that config; the payload below is what this step adds to the call.
What each position accepts
The rule the palette enforces, stated where it can be read. It is not intuitive: a return is legal inside a branch case and illegal inside a forEach body at the same depth, because a case flattens into the sequence while a forEach body becomes a Map state.
WorkflowEditor
| Primitive | Top level | Branch case | forEach / parallel body |
|---|---|---|---|
| operation | allowed | allowed | allowed |
| gate | allowed | allowed | allowed |
| wait | allowed | allowed | allowed |
| fetch | allowed | allowed | allowed |
| transform | allowed | allowed | allowed |
| forEach | allowed | — | — |
| branch | allowed | — | — |
| parallel | allowed | — | — |
| subworkflow | allowed | — | — |
| return | allowed | allowed | — |
| approval | allowed | allowed | — |
| waitForEvent | allowed | allowed | — |
- Top level. The sequence itself. Everything is legal.
- Branch case. Flattens into the sequence at compile time, so it keeps return, approval and waitForEvent — but cannot open a new container.
- forEach / parallel body. Compiles to a Map or parallel state, which holds no nesting, no jump, and no human park.
The definition as JSON
The escape hatch, not the primary surface. These definitions are authored by agents as well as people, so someone reviewing one needs the exact text — and copy takes the source rather than a re-serialization that would reorder keys. Invalid JSON leaves the definition untouched.
WorkflowJsonView
Definition — edited here or in the form
The same definition, drawn
high-volume
else
Workflow outline (option A)
The nested-list surface the execution model argues for: reading order is execution order, and no canvas is involved. References are stated rather than drawn.
WorkflowSequence
high-volume
else
Select a step to inspect it. Both surfaces report the same selection.
Workflow canvas (option B)
The same definition on React Flow. Read-only by construction — there is no onConnect, because the runtime has no representation for a user-drawn edge.
WorkflowCanvas
Select a step to inspect it. Both surfaces report the same selection.
Workflow run, both surfaces
One in-flight run rendered by both options, from the identical graph — so the comparison is about the surface rather than the fixture.
WorkflowSequenceWorkflowCanvas
Run, as an outline option A
high-volume
else
Run, on the canvas option B