BaseNode

abstract class BaseNode(val name: String, val description: String = "", val rerunOnResume: Boolean = false, val waitForOutput: Boolean = false, val config: NodeConfig = NodeConfig(), val inputSchema: Schema? = null, val outputSchema: Schema? = null, val stateSchema: Schema? = null) : Node

The base class for units of work in a workflow graph. A Workflow is itself a node, so graphs nest, and every agent is one too.

Public only so that BaseAgent and Workflow, which are public, can extend it. It is framework plumbing: write a node by implementing Node, not by extending this.

Subclasses implement runNode and emit raw values; run normalizes each into an Event. Node names must be unique within a graph, since the scheduler keys on them.

Inheritors

Constructors

Link copied to clipboard
constructor(name: String, description: String = "", rerunOnResume: Boolean = false, waitForOutput: Boolean = false, config: NodeConfig = NodeConfig(), inputSchema: Schema? = null, outputSchema: Schema? = null, stateSchema: Schema? = null)

Properties

Link copied to clipboard
open override val config: NodeConfig

The node's retry policy and execution timeout.

Link copied to clipboard
open override val description: String

What the node does, for humans and for a model that may call it.

Link copied to clipboard
open override val inputSchema: Schema?

Validates the node's input before it runs.

Link copied to clipboard
override val name: String

Identifies the node within its graph.

Link copied to clipboard
open override val outputSchema: Schema?

Validates the output value the node emits. A value assigned to Context.output and a message-as-output event's content are not checked.

Link copied to clipboard
open override val requiresAllPredecessors: Boolean

Whether the node runs only once every predecessor has completed, receiving all their outputs keyed by node name. A fan-in node overrides this to true.

Link copied to clipboard
open override val rerunOnResume: Boolean

On resume, whether to run the node again from scratch rather than completing it with the resuming answer as its output.

Link copied to clipboard
open override val stateSchema: Schema?

Declares the state keys the node uses. Child nodes inherit it unless they declare their own.

Link copied to clipboard
open override val waitForOutput: Boolean

Whether the node stays re-triggerable until it produces an output or a route, instead of completing when runNode returns. A node that never produces either then waits forever, which is a graph-authoring error.

Functions

Link copied to clipboard
fun run(context: Context, nodeInput: Any?): Flow<Event>

Runs the node and emits its events. It drives runNode and normalizes each raw emission into an Event, so every node behaves the same way at its edges: null and Unit are skipped, an Event passes through with its output validated (a message-as-output event's content is not), and any other value becomes the output.

Link copied to clipboard
abstract fun runNode(context: Context, nodeInput: Any?): Flow<Any?>

The user-facing implementation of the node's execution logic.