Skip to content

PersistentAI API Documentation / @persistentai/fireflow-types / PortResolver

Class: PortResolver

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:26

The single source of truth for all port resolution and dependency tracking.

Key design principles:

  1. Centralized — all port/dependency logic in one place
  2. Port resolution != node completion — ports can resolve while node still runs
  3. First-resolved-wins — multi-edge to same port handled in resolveTransferableEdges
  4. Error/success branching — separate resolveCompletedNodePorts vs resolveErrorPorts
  5. Dynamic discovery — onNodeBecameReady callback for plan interpreter integration
  6. Monotonic — resolvedPorts only grows, never shrinks

Constructors

Constructor

new PortResolver(flow): PortResolver

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:39

Parameters

flow

IFlow

Returns

PortResolver

Methods

canEdgeTransfer()

canEdgeTransfer(edge): boolean

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:213

Can this specific edge transfer? (source port resolved?)

Parameters

edge

IEdge

Returns

boolean


getCapturedChildren()

getCapturedChildren(nodeId): Set<string> | undefined

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:257

Parameters

nodeId

string

Returns

Set<string> | undefined


initialize()

initialize(completedNodes): void

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:45

Build all dependency maps from flow edges and captured children. Called once before execution.

Parameters

completedNodes

Set<string>

Returns

void


isNodeReady()

isNodeReady(nodeId, completedNodes): boolean

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:177

Is a node ready to execute? All input ports must have >= 1 resolved source AND all captured children completed.

Parameters

nodeId

string

completedNodes

Set<string>

Returns

boolean


isPortResolved()

isPortResolved(nodeId, portId): boolean

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:253

Parameters

nodeId

string

portId

string

Returns

boolean


resolveCompletedNodePorts()

resolveCompletedNodePorts(node, completedNodes): string[]

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:114

Resolve all non-error output/passthrough ports on success.

Parameters

node

INode

completedNodes

Set<string>

Returns

string[]


resolveErrorPorts()

resolveErrorPorts(node, completedNodes): string[]

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:134

Resolve only error+errorMessage ports on failure.

Parameters

node

INode

completedNodes

Set<string>

Returns

string[]


resolveFlowPorts()

resolveFlowPorts(node, completedNodes): string[]

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:152

Resolve flow control ports (flowOut) when a node is skipped. Only resolves ports with portCategory === 'flow'. Does NOT resolve data ports or error ports.

Parameters

node

INode

completedNodes

Set<string>

Returns

string[]


resolvePort()

resolvePort(nodeId, portId, completedNodes): string[]

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:98

Mark a port as resolved. Returns list of newly-ready nodeIds. Does NOT require the node to be completed.

Parameters

nodeId

string

portId

string

completedNodes

Set<string>

Returns

string[]


resolveTransferableEdges()

resolveTransferableEdges(edges): object

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:222

For a node's incoming edges, find which ones can transfer. Groups by TARGET port — first resolved source wins per port.

Parameters

edges

IEdge[]

Returns

object

transferableEdges

transferableEdges: IEdge[]

unresolvedPorts

unresolvedPorts: string[]


setOnNodeBecameReady()

setOnNodeBecameReady(cb): void

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:88

Set callback for when a previously-unready node becomes ready.

Parameters

cb

(nodeId) => void

Returns

void


triggerNodeBecameReady()

triggerNodeBecameReady(nodeId): void

Defined in: packages/fireflow-types/src/flow/execution/runtime/port-resolver.ts:265

Trigger onNodeBecameReady callback for a specific node. Used when manually marking nodes as ready (e.g., after skipping).

Parameters

nodeId

string

Returns

void

Licensed under BUSL-1.1