Readonly[Brand identifying this object as a BaseNode (see isBaseNode).
ReadonlydescriptionOptional ReadonlyinputOptional ReadonlyisolationReadonlynameOptional 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 fan-in barrier node: via requiresAllPredecessors the engine holds it until ALL of its predecessors complete, then runs it with their aggregated outputs as input.
This node emits that input unchanged — the engine supplies the predecessor-name → output map; the join just passes it through as its output. The barrier itself is enforced by the orchestrator (which reads
requiresAllPredecessors) and lands in a later part.Ported from
google/adk-pythonworkflow/_join_node.py.