Uh oh!
There was an error while loading. Please reload this page.
fix(client-exec): send correct client workflow state override - #3143
Conversation
The latest updates on your projects. Learn more about Vercel for GitHub. |
Greptile OverviewGreptile SummaryFixed workflow execution validation by ensuring the client-side workflow state is always sent to the server as Key Changes:
Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Client as useWorkflowExecution
participant Stream as executionStream
participant API as /api/workflows/execute
participant Core as execution-core.ts
participant DB as Database
Note over Client: User triggers execution
Client->>Client: Read latest workflow state from store
Client->>Client: Build clientWorkflowState object
Note over Client: BEFORE: conditionally sent override<br/>AFTER: always sent override
Client->>Stream: execute({ workflowStateOverride })
Note over Stream: workflowStateOverride always defined now
Stream->>API: POST with workflowStateOverride
API->>Core: executeWorkflowCore(snapshot)
Note over Core: snapshot.metadata.workflowStateOverride
alt workflowStateOverride present
Core->>Core: Use client-side state (blocks, edges, loops, parallels)
Note over Core: Validates against current client state<br/>DB may be 1-2 seconds behind
else no override (old behavior)
Core->>DB: Load draft state from DB
Note over Core: Validates against DB state<br/>May be stale for 1-2 seconds
end
Core->>Core: Run validations on workflow state
Core-->>API: Execution result
API-->>Stream: SSE events stream
Stream-->>Client: Callbacks invoked
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Summary
Need to send client side state as workflow state override correctly since db is out of sync for 1-2 seconds so validations must run on the former.
Type of Change
Testing
Tested manually
Checklist