From 4b2e3dded0dfcb69eeb0e4443d6dba7fa92aa7ad Mon Sep 17 00:00:00 2001 From: Jinjing <6427696+AmethystLiang@users.noreply.github.com> Date: Mon, 7 Sep 2026 19:58:26 -0700 Subject: [PATCH] fix(activity): prevent monitoring turns from emitting working events Monitoring turns should surface only via the 'monitoring' snapshot in the live state, not as separate working events that would contradict the snapshot signal. --- .../src/components/activity/ActivityPrototypePage.test.ts | 3 +++ src/renderer/src/components/activity/activity-pane-events.ts | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/renderer/src/components/activity/ActivityPrototypePage.test.ts b/src/renderer/src/components/activity/ActivityPrototypePage.test.ts index 4046476fae5..be5710c6ee6 100644 --- a/src/renderer/src/components/activity/ActivityPrototypePage.test.ts +++ b/src/renderer/src/components/activity/ActivityPrototypePage.test.ts @@ -171,6 +171,9 @@ describe('buildActivityEvents', () => { expect(result.liveAgentByPaneKey[PANE_KEY].state).toBe('monitoring') expect(threads[0].currentAgentState).toBe('monitoring') + // A monitoring turn must not emit a `working` event that contradicts the live snapshot. + expect(result.events).toHaveLength(0) + expect(threads[0].latestEvent).toBeNull() expect(groups[0]).toMatchObject({ key: 'monitoring', label: 'Monitoring background tasks', diff --git a/src/renderer/src/components/activity/activity-pane-events.ts b/src/renderer/src/components/activity/activity-pane-events.ts index ea69ef13541..9170bcf8898 100644 --- a/src/renderer/src/components/activity/activity-pane-events.ts +++ b/src/renderer/src/components/activity/activity-pane-events.ts @@ -97,8 +97,11 @@ export function buildPaneActivityEvents(args: PaneEventInputs): ActivityEvent[] ) } + // Monitoring live turns surface only via the 'monitoring' snapshot, never as a working event. const currentState = - args.liveState !== null || isHistoricalActivityState(args.entry.state) ? args.entry.state : null + args.liveState === 'working' || isHistoricalActivityState(args.entry.state) + ? args.entry.state + : null if (currentState === null || args.entry.sessionBoundary === true) { return events }