Readonly[Brand identifying this object as a BaseNode (see isBaseNode).
ReadonlydescriptionOptional ReadonlyinputOptional ReadonlyisolationOptional ReadonlymaxReadonlynameOptional ReadonlyoutputOptional ReadonlypreparedThe retry config with its exception filter normalized once, up front (see prepareRetryConfig). Used by the node runner so the retry hot path never re-normalizes or throws on a malformed config mid-retry.
ReadonlyrerunOptional ReadonlyretryOptional ReadonlystateOptional ReadonlytimeoutReadonlywaitWhether this node must wait for ALL of its predecessors to trigger before
it runs (fan-in barrier). Overridden by JoinNode.
Runs the node, normalizing every yielded item into an Event. This
is what the engine (and ctx.runNode()) consumes. Validates the input
against inputSchema once, up front (skipping genai Content, which nodes
coerce themselves).
ProtectedrunCore execution contract. Subclasses yield one of:
output is that value),null/undefined (skipped).ProtectedtoNormalizes a single yielded item into an Event (or null to skip).
Subclasses may override for richer coercion (e.g. FunctionNode).
ProtectedvalidateValidates node input against inputSchema (Content passes through). Only
enforced for Zod schemas; a genai Schema is left unvalidated (see
parseWithSchema).
ProtectedvalidateValidates node output against outputSchema (Content passes through). Only
enforced for Zod schemas; a genai Schema is left unvalidated (see
parseWithSchema).
A node that runs a wrapped node once per item of a list input, preserving order, bounded by
maxParallelWorkers, and stopping on the first error.Ported from
google/adk-pythonworkflow/_parallel_worker.py. A non-list input is treated as a single-element list. Each item runs viactx.runNode(inner, item, {useSubBranch: true}); the node's output is the ordered list of the children's outputs.The wrapped value is anything an edge accepts — an agent, a tool, a plain function, or an already-built node — and is built the same way, so
new ParallelWorker(myAgent)works withoutnode(myAgent). It is built when the worker is constructed, not per item, so every item runs the one inner node — which is also where the worker's own name comes from.Notes:
retryConfig/timeoutpassed tobuildNodeapply to the wrapped node (per item); the ParallelWorker itself carries neither, so the two levels don't compose. Wrapping the value yourself —new ParallelWorker(node(myAgent, {timeout: 5}))— is how those options are set.rerunOnResume), and items that already completed are fast-forwarded by their run id rather than executed again.ctx.runNodehas no way to forward a signal into a child run.