Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
Greptile SummaryThis PR replaces the client-side async tool resumption logic (claim/release/deliver flow against the local DB) with a lighter Go-side checkpoint polling model: Sim now polls
Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Sim as Sim (orchestrator)
participant Go as Go Backend
Sim->>Go: POST /api/copilot (initial stream)
Go-->>Sim: SSE events (tool_call, content, ...)
Note over Sim: tool_call handler fires executeToolAndReport() in background
Go-->>Sim: SSE done {async_pause: {checkpointId, pendingToolCallIds}}
Note over Sim: context.awaitingAsyncContinuation set
loop Poll checkpoint readiness (up to 40x × 250ms backoff)
Sim->>Go: GET /api/tools/checkpoint-status?checkpointId=...
Go-->>Sim: {ready: false}
end
Sim->>Go: GET /api/tools/checkpoint-status?checkpointId=...
Go-->>Sim: {ready: true}
loop Retry on 502/503/504 (up to 3x)
Sim->>Go: POST /api/tools/resume {checkpointId}
Go-->>Sim: SSE events (next turn)
end
Note over Sim: executeToolAndReport awaits markToolComplete (no longer fire-and-forget)
Sim->>Go: markToolComplete(toolCallId, status, result)
Go-->>Sim: ack
Reviews (1): Last reviewed commit: "Fix lint" | Re-trigger Greptile |
| context.awaitingAsyncContinuation = undefined | ||
| route = '/api/tools/resume' | ||
| payload = { | ||
| checkpointId: continuation.checkpointId, | ||
| } | ||
| resumeReady = true | ||
|
|
||
| if (!resumeReady) { | ||
| break | ||
| } |
There was a problem hiding this comment.
Dead code:
resumeReady flag is always true here
resumeReady is set to true unconditionally on line 338, immediately before this guard. There is no code path that reaches if (!resumeReady) with resumeReady === false — if checkpoint readiness failed, the earlier if (!readiness.ready) block pushes an error and breaks out of the loop before getting here. This guard (and the variable itself) is a leftover artifact from the previous inner for(;;) loop pattern that was removed in this refactor and should be cleaned up.
| context.awaitingAsyncContinuation = undefined | |
| route = '/api/tools/resume' | |
| payload = { | |
| checkpointId: continuation.checkpointId, | |
| } | |
| resumeReady = true | |
| if (!resumeReady) { | |
| break | |
| } | |
| context.awaitingAsyncContinuation = undefined | |
| route = '/api/tools/resume' | |
| payload = { | |
| checkpointId: continuation.checkpointId, | |
| } |
| @@ -190,193 +277,66 @@ export async function orchestrateCopilotStream( | |||
| if (!continuation) break | |||
|
|
|||
| let resumeReady = false | |||
* fix(home): voice input text persistence bugs * fix(home): gate setIsListening on startRecognition success * fix(home): handle startRecognition failure in restartRecognition * fix(home): reset speech prefix on submit while mic is active
* feat(table): column drag-and-drop reorder * fix(table): remove duplicate onDragEnd call from handleDrop * fix(table): persist columnOrder on rename/delete and defer delete to onSuccess * fix(table): prevent stale refs during column drag operations Fix two bugs in column drag-and-drop: 1. Stale columnWidths ref during rename - compute updated widths inline before passing to updateMetadata 2. Escape-cancelled drag still reorders - update dropTargetColumnNameRef directly in handleColumnDragLeave to prevent handleColumnDragEnd from reading stale ref value Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(table): insert column at correct side when anchor is unordered When the anchor column isn't in columnOrder, add it first then insert the new column relative to it, so 'right' insertions appear after the anchor as expected. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore: fix conflicts * chore: fix review changes * chore: fix review changes * chore: fix review changes
* feat: add product tour * chore: updated modals * chore: fix the tour * chore: Tour Updates * chore: fix review changes * chore: fix review changes * chore: fix review changes * chore: fix review changes * chore: fix review changes * minor improvements * chore(tour): address PR review comments - Extract shared TourState, TourStateContext, mapPlacement, and TourTooltipAdapter into tour-shared.tsx, eliminating ~100 lines of duplication between product-tour.tsx and workflow-tour.tsx - Fix stale closure in handleStartTour — add isOnWorkflowPage to useCallback deps so Take a tour dispatches the correct event after navigation * chore(tour): address remaining PR review comments - Remove unused logger import and instance in product-tour.tsx - Remove unused tour-tooltip-fade animation from tailwind config - Remove unnecessary overflow-hidden wrapper around WorkflowTour - Add border stroke to arrow SVG in tour-tooltip for visual consistency Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(tour): address second round of PR review comments - Remove unnecessary 'use client' from workflow layout (children are already client components) - Fix ref guard timing issue in TourTooltipAdapter that could prevent Joyride from tracking tooltip on subsequent steps Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore(tour): extract shared Joyride config, fix popover arrow overflow - Extract duplicated Joyride floaterProps/styles into getSharedJoyrideProps() in tour-shared.tsx, parameterized by spotlightBorderRadius - Fix showArrow disabling content scrolling in PopoverContent by wrapping children in a scrollable div when arrow is visible Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * lint * fix(tour): stop running tour when disabled becomes true Prevents nav and workflow tours from overlapping. When a user navigates to a workflow page while the nav tour is running, the disabled flag now stops the nav tour instead of just suppressing auto-start. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(tour): move auto-start flag into timer, fix truncate selector conflict - Move hasAutoStarted flag inside setTimeout callback so it's only set when the timer fires, allowing retry if disabled changes during delay - Add data-popover-scroll attribute to showArrow scroll wrapper and exclude it from the flex-1 truncate selector to prevent overflow conflict Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(tour): remove duplicate overlay on center-placed tour steps Joyride's spotlight already renders a full-screen overlay via boxShadow. The centered TourTooltip was adding its own bg-black/55 overlay on top, causing double-darkened backgrounds. Removed the redundant overlay div. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor: move docs link from settings to help dropdown The Docs link (https://docs.sim.ai) was buried in settings navigation. Moved it to the Help dropdown in the sidebar for better discoverability. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Adithya Krishna <aadithya794@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat(home): auth-aware landing page navigation - Redirect authenticated users from / to /workspace via middleware (?home param bypasses) - Show "Go to App" instead of "Log in / Get started" in navbar for authenticated users - Logo links to /?home for authenticated users to stay in marketing context - Settings "Home Page" button opens /?home - Handle isPending session state to prevent CTA button flash * lint * fix(home): remove stale ?from=nav params in landing nav * fix(home): preserve ?home param in nav links during session pending state * lint
Summary
Fix boundary issues
Type of Change
Testing
Manual
Checklist