Skip bypassed nodes (mode 4) in workflow conversion
All checks were successful
Build and Push Docker Image / build (push) Successful in 4m2s

Bypassed/muted nodes should not be included in the API workflow,
and connections from bypassed nodes should be ignored.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Nick
2025-12-27 23:19:24 +13:00
parent 56e8e164ab
commit dba11a9f45

View File

@@ -116,10 +116,15 @@ def convert_frontend_to_api(frontend_workflow: dict) -> dict:
nodes = frontend_workflow.get("nodes", []) nodes = frontend_workflow.get("nodes", [])
links = frontend_workflow.get("links", []) links = frontend_workflow.get("links", [])
# Build set of active (non-bypassed) node IDs
active_nodes = {str(node["id"]) for node in nodes if node.get("mode") != 4}
# Build link lookup: link_id -> (source_node_id, source_slot) # Build link lookup: link_id -> (source_node_id, source_slot)
# Only include links from active nodes
link_map = {} link_map = {}
for link in links: for link in links:
link_id, src_node, src_slot, dst_node, dst_slot, link_type = link[:6] link_id, src_node, src_slot, dst_node, dst_slot, link_type = link[:6]
if str(src_node) in active_nodes:
link_map[link_id] = (str(src_node), src_slot) link_map[link_id] = (str(src_node), src_slot)
# Widget mappings for each node type: list of input names in order # Widget mappings for each node type: list of input names in order
@@ -165,6 +170,10 @@ def convert_frontend_to_api(frontend_workflow: dict) -> dict:
} }
for node in nodes: for node in nodes:
# Skip bypassed/muted nodes (mode 4)
if node.get("mode") == 4:
continue
node_id = str(node["id"]) node_id = str(node["id"])
class_type = node.get("type", "") class_type = node.get("type", "")