Logic Nodes
if_else
Section titled “if_else”Conditional branching with two output handles: true and false.
{ "id": "if-1", "type": "if_else", "data": { "type": "if_else", "condition": "{{agent-1.output}}.includes('positive')", "trueLabel": "Positive", "falseLabel": "Negative" }}Connect the true handle to one branch and false to another using edge sourceHandle.
Loops execution while a condition is true.
{ "id": "while-1", "type": "while", "data": { "type": "while", "condition": "{{state.retryCount}} < 3", "maxIterations": 10 }}| Field | Type | Description |
|---|---|---|
condition | string | Expression evaluated each iteration |
maxIterations | number | Safety limit to prevent infinite loops |
user_approval
Section titled “user_approval”Pauses the flow and waits for human approval before continuing.
{ "id": "approval-1", "type": "user_approval", "data": { "type": "user_approval", "message": "Review this post before publishing:", "timeout": 3600 }}| Field | Type | Description |
|---|---|---|
message | string | Message shown to the reviewer |
timeout | number | Seconds to wait before timing out |
Has two output handles: approved and rejected.
set_state
Section titled “set_state”Sets flow variables to specific values.
{ "id": "state-1", "type": "set_state", "data": { "type": "set_state", "assignments": [ { "key": "counter", "value": "0" }, { "key": "status", "value": "processing" } ] }}parallel_fork / parallel_join
Section titled “parallel_fork / parallel_join”Split execution into parallel branches, then wait for all to complete.
Fork splits into multiple outgoing edges that execute concurrently:
{ "id": "fork-1", "type": "parallel_fork", "data": { "type": "parallel_fork" }}Join waits for all incoming parallel branches to complete:
{ "id": "join-1", "type": "parallel_join", "data": { "type": "parallel_join" }}Pattern
Section titled “Pattern”→ Parallel Fork → Branch A (HTTP API) → Branch B (HTTP API) → Branch C (Agent)→ Parallel Join→ Agent (combine results)