diff --git a/src/backend/base/langflow/graph/graph/base.py b/src/backend/base/langflow/graph/graph/base.py index f064e65be..c1e79d9ac 100644 --- a/src/backend/base/langflow/graph/graph/base.py +++ b/src/backend/base/langflow/graph/graph/base.py @@ -1928,6 +1928,13 @@ class Graph: return [layer for layer in refined_layers if layer] def sort_chat_inputs_first(self, vertices_layers: list[list[str]]) -> list[list[str]]: + # First check if any chat inputs have dependencies + for layer in vertices_layers: + for vertex_id in layer: + if "ChatInput" in vertex_id and self.get_predecessors(self.get_vertex(vertex_id)): + return vertices_layers + + # If no chat inputs have dependencies, move them to first layer chat_inputs_first = [] for layer in vertices_layers: layer_chat_inputs_first = [vertex_id for vertex_id in layer if "ChatInput" in vertex_id] @@ -1935,6 +1942,7 @@ class Graph: for vertex_id in layer_chat_inputs_first: # Remove the ChatInput from the layer layer.remove(vertex_id) + if not chat_inputs_first: return vertices_layers