Agent assigned to the task.
OptionalConfigurationOptional configuration preset name for the target agent, configured on the Agent step.
User the work runs as.
OptionalContinuationHow many continuation hops led to this run, from the graph's own metadata.
Carried so the chain is BOUNDED. A flow that dispatches a graph containing itself recurses
forever otherwise: each spawned run starts at depth zero, so MAX_REINVOKE_DEPTH compares
against a permanent zero and never fires. The cap exists; this is what feeds it.
Parsed OutputPayload of each completed dependency, keyed by that task's ID.
Parsed Task.InputPayload, if any.
OptionalOnOptional progress sink; the dispatcher turns calls into rate-limited NodeProgress frames.
OptionalParentRoot-first ancestor agent hierarchy ([...parentAgentHierarchy, submittingAgentName]) of the
submitting run, read from the parent task's metadata so TaskGraphAgentRunner can pass it
directly to AgentRunner.RunAgent without walking ancestor runs in a loop.
Provider minted for this task alone — never shared with a sibling.
OptionalSubmittingThe agent run that submitted this graph, when there was one.
Becomes the spawned run's ParentRunID, which is what makes a workflow's total cost a single
indexed sum over RootParentRunID instead of a walk. Null for a graph nobody's run submitted
— a schedule, MCP, or a person — and that is a real case, not a missing value.
Note this is a run→run link: the task graph sits BETWEEN the two conceptually but cannot be
the parent, because the column points at a run. The graph is recovered through
Task.AgentRunID and Task.ParentID.
The task row being executed.
Everything an executor needs to run a single task node.