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:
- Centralized — all port/dependency logic in one place
- Port resolution != node completion — ports can resolve while node still runs
- First-resolved-wins — multi-edge to same port handled in resolveTransferableEdges
- Error/success branching — separate resolveCompletedNodePorts vs resolveErrorPorts
- Dynamic discovery — onNodeBecameReady callback for plan interpreter integration
- 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
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
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
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
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
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