Skip to content

fix: keep cloud task follow-ups connected#2060

Merged
tatoalo merged 3 commits into
mainfrom
fix/cloud-agent/failing-improvements
May 7, 2026
Merged

fix: keep cloud task follow-ups connected#2060
tatoalo merged 3 commits into
mainfrom
fix/cloud-agent/failing-improvements

Conversation

@tatoalo
Copy link
Copy Markdown
Contributor

@tatoalo tatoalo commented May 6, 2026

Problem

cloud task streams can end while the run is still active. In that state, ph-code could stop watching the run and miss later task updates, making follow-up messages appear stuck or disappear from the conversation.

the be fix in PostHog/posthog#57836 also changes follow-up user_message responses to acknowledge queueing instead of returning the agent turn result synchronously, so the desktop client needs to keep the prompt pending until the streamed prompt echo arrives.

Changes

  • reconnect the cloud task watcher after a clean stream completion when the fetched run state is still non-terminal

  • start or refresh the cloud watcher before sending a cloud follow-up prompt

  • treat queued follow-up responses as pending, render the optimistic user message at the tail of the transcript, and clear that optimistic item once a streamed session/prompt event arrives

@tatoalo tatoalo force-pushed the fix/cloud-agent/failing-improvements branch from d77d52f to 9aab186 Compare May 6, 2026 15:37
@tatoalo tatoalo marked this pull request as ready for review May 6, 2026 16:07
@tatoalo tatoalo self-assigned this May 6, 2026
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 6, 2026

Comments Outside Diff (1)

  1. apps/code/src/renderer/features/sessions/service/service.ts, line 3216-3220 (link)

    P2 The clearTailOptimisticItems and appendEvents calls are separate Zustand state updates. Although React 18 batches synchronous setState calls within the same microtask, clearing the tail item before appending the new events creates a window where neither the optimistic item nor the conversation echo is present. Swapping the order (append first, then clear) keeps the tail item visible via deduplication until the echo lands, avoiding any potential flash. The same pattern appears in the two reconcileCloudLogGapOnce call sites as well.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: apps/code/src/renderer/features/sessions/service/service.ts
    Line: 3216-3220
    
    Comment:
    The `clearTailOptimisticItems` and `appendEvents` calls are separate Zustand state updates. Although React 18 batches synchronous `setState` calls within the same microtask, clearing the tail item before appending the new events creates a window where neither the optimistic item nor the conversation echo is present. Swapping the order (append first, then clear) keeps the tail item visible via deduplication until the echo lands, avoiding any potential flash. The same pattern appears in the two `reconcileCloudLogGapOnce` call sites as well.
    
    
    
    How can I resolve this? If you propose a fix, please make it concise.
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 1
apps/code/src/renderer/features/sessions/service/service.ts:3216-3220
The `clearTailOptimisticItems` and `appendEvents` calls are separate Zustand state updates. Although React 18 batches synchronous `setState` calls within the same microtask, clearing the tail item before appending the new events creates a window where neither the optimistic item nor the conversation echo is present. Swapping the order (append first, then clear) keeps the tail item visible via deduplication until the echo lands, avoiding any potential flash. The same pattern appears in the two `reconcileCloudLogGapOnce` call sites as well.

```suggestion
        sessionStoreSetters.appendEvents(taskRunId, newEvents, expectedCount);
        if (hasSessionPromptEvent(newEvents)) {
          sessionStoreSetters.clearTailOptimisticItems(taskRunId);
        }
        this.updatePromptStateFromEvents(taskRunId, newEvents);
```

Reviews (1): Last reviewed commit: "fix: keep cloud task follow-ups connecte..." | Re-trigger Greptile

@tatoalo tatoalo requested a review from a team May 6, 2026 17:05
@tatoalo tatoalo added the Create Release This will trigger a new release label May 7, 2026
@tatoalo tatoalo merged commit 33a2d08 into main May 7, 2026
15 checks passed
@tatoalo tatoalo deleted the fix/cloud-agent/failing-improvements branch May 7, 2026 09:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Create Release This will trigger a new release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants