MCPcopy
hub / github.com/FlowiseAI/Flowise / setupNodeDependencies

Function setupNodeDependencies

packages/server/src/utils/buildAgentflow.ts:672–714  Ā·  view source on GitHub ↗

* Analyzes node dependencies and sets up expected inputs

(nodeId: string, edges: IReactFlowEdge[], nodes: IReactFlowNode[])

Source from the content-addressed store, hash-verified

670 * Analyzes node dependencies and sets up expected inputs
671 */
672function setupNodeDependencies(nodeId: string, edges: IReactFlowEdge[], nodes: IReactFlowNode[]): IWaitingNode {
673 logger.debug(`\nšŸ” Analyzing dependencies for node: ${nodeId}`)
674 const inputConnections = getNodeInputConnections(edges, nodeId)
675 const waitingNode: IWaitingNode = {
676 nodeId,
677 receivedInputs: new Map(),
678 expectedInputs: new Set(),
679 isConditional: false,
680 conditionalGroups: new Map()
681 }
682
683 // Group inputs by their parent condition nodes
684 const inputsByCondition = new Map<string | null, string[]>()
685
686 for (const connection of inputConnections) {
687 const sourceNode = nodes.find((n) => n.id === connection.source)
688 if (!sourceNode) continue
689
690 // Find if this input comes from a conditional branch
691 const conditionParent = findConditionParent(connection.source, edges, nodes)
692
693 if (conditionParent) {
694 logger.debug(` šŸ“Œ Found conditional input from ${connection.source} (condition: ${conditionParent})`)
695 waitingNode.isConditional = true
696 const group = inputsByCondition.get(conditionParent) || []
697 group.push(connection.source)
698 inputsByCondition.set(conditionParent, group)
699 } else {
700 logger.debug(` šŸ“Œ Found required input from ${connection.source}`)
701 waitingNode.expectedInputs.add(connection.source)
702 }
703 }
704
705 // Set up conditional groups
706 inputsByCondition.forEach((sources, conditionId) => {
707 if (conditionId) {
708 logger.debug(` šŸ“‹ Conditional group ${conditionId}: [${sources.join(', ')}]`)
709 waitingNode.conditionalGroups.set(conditionId, sources)
710 }
711 })
712
713 return waitingNode
714}
715
716/**
717 * Finds the parent condition node for a given node, if any

Callers 1

processNodeOutputsFunction Ā· 0.85

Calls 5

getNodeInputConnectionsFunction Ā· 0.85
findConditionParentFunction Ā· 0.85
setMethod Ā· 0.80
getMethod Ā· 0.45
addMethod Ā· 0.45

Tested by

no test coverage detected