-
Notifications
You must be signed in to change notification settings - Fork 3k
fix(graph): prevent cyclic dependencies in graph following ReactFlow examples #2439
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
fbef731 to
61d96ad
Compare
Greptile SummaryThis PR implements cycle detection for the workflow graph by adding a Key changes:
Implementation is sound:
Minor observation:
Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant Handle as WorkflowBlock Handle
participant ReactFlow
participant OnConnect as workflow.tsx onConnect
participant Store as useWorkflowStore
participant Utils as wouldCreateCycle
User->>Handle: Drag connection from source to target
Handle->>Utils: isValidConnection(connection)
Utils->>Store: getState().edges
Store-->>Utils: current edges[]
Utils->>Utils: Check if source === target
alt Self-connection
Utils-->>Handle: false (reject)
else Valid so far
Utils->>Utils: Build adjacency list from edges
Utils->>Utils: DFS from target to find source
alt Cycle would be created
Utils-->>Handle: false (reject)
else No cycle
Utils-->>Handle: true (allow UI)
end
end
alt Connection allowed by UI
User->>ReactFlow: Drop connection
ReactFlow->>OnConnect: onConnect(connection)
OnConnect->>OnConnect: Validate container boundaries
OnConnect->>Store: addEdge(edge)
Store->>Utils: wouldCreateCycle(edges, source, target)
Utils->>Utils: Run cycle detection again
alt Cycle detected
Utils-->>Store: true
Store->>Store: Log warning and return early
else No cycle
Utils-->>Store: false
Store->>Store: Check for duplicates
Store->>Store: Add edge to store
end
end
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
3 files reviewed, 1 comment
Summary
Type of Change
Testing
Tested manually
Checklist