Skip to main content

Interface: ProcessableChild

Defined in: packages/core/src/types.ts:324

One entry of Processable.getChildren().

Properties

edge

edge: ProcessableEdge

Defined in: packages/core/src/types.ts:326

How this child is reached from its parent.


label

label: string

Defined in: packages/core/src/types.ts:334

What this child is to this parent — 'onPass', 'catch', 'merge'.

Distinct from node.getName(), which is the child's own identity. The same bot used as both onPass and onFail has one name and two roles, and a reader needs the role to make sense of the shape.


node

node: Processable

Defined in: packages/core/src/types.ts:360


nodeId

nodeId: string

Defined in: packages/core/src/types.ts:359

The id this parent reports for this child in NodeContext.nodeId when it runs it. The join between structure and liveness.

Separate from label because the two answer different questions and genuinely disagree: a pipeline's second step is the role 'step 2' and the address 'step-2'; a loop's child is the role 'body' and the address stem 'iteration'. Reading liveness off label works for graph, gate and router, and then silently fails for pipeline, loop, map, filter and an unnamed parallel branch — the node lays out and never lights up.

For a repeat edge this is a stem, not a whole id: one structural child becomes many executions, and the runtime appends the ordinal (iteration-1, iteration-2, try-3). That is the honest shape of a loop rather than a defect to paper over, and the edge tag is what lets a consumer handle it without naming a primitive.

Do not compare this by hand — use matchesChild(), which is the single rule and handles the stem case.

For most primitives this equals label. Where it does not, the difference is load-bearing.