diff --git a/src/lib/litegraph/src/LGraph.ts b/src/lib/litegraph/src/LGraph.ts index 7f32a7c52..b588baa74 100644 --- a/src/lib/litegraph/src/LGraph.ts +++ b/src/lib/litegraph/src/LGraph.ts @@ -1665,7 +1665,7 @@ export class LGraph continue } - const input = subgraphNode.findInputSlotByType(link.type, true, true) + const input = subgraphNode.inputs[i - 1] outputNode.connectSlots(output, subgraphNode, input, link.parentId) } diff --git a/src/lib/litegraph/src/subgraph/ExecutableNodeDTO.ts b/src/lib/litegraph/src/subgraph/ExecutableNodeDTO.ts index f041376f6..2dea0ebcd 100644 --- a/src/lib/litegraph/src/subgraph/ExecutableNodeDTO.ts +++ b/src/lib/litegraph/src/subgraph/ExecutableNodeDTO.ts @@ -294,25 +294,21 @@ export class ExecutableNodeDTO implements ExecutableLGraphNode { // Fallback check for nodes performing link redirection const virtualLink = this.node.getInputLink(slot) if (virtualLink) { - const outputNode = this.graph.getNodeById(virtualLink.origin_id) - if (!outputNode) + const { inputNode } = virtualLink.resolve(this.graph) + if (!inputNode) throw new InvalidLinkError( `Virtual node failed to resolve parent [${this.id}] slot [${slot}]` ) - const outputNodeExecutionId = [ + const inputNodeExecutionId = [ ...this.subgraphNodePath, - outputNode.id + inputNode.id ].join(':') - const outputNodeDto = this.nodesByExecutionId.get(outputNodeExecutionId) - if (!outputNodeDto) - throw new Error(`No output node DTO found for id [${outputNode.id}]`) + const inputNodeDto = this.nodesByExecutionId.get(inputNodeExecutionId) + if (!inputNodeDto) + throw new Error(`No input node DTO found for id [${inputNode.id}]`) - return outputNodeDto.resolveOutput( - virtualLink.origin_slot, - type, - visited - ) + return inputNodeDto.resolveInput(virtualLink.target_slot, visited, type) } // Virtual nodes without a matching input should be discarded.