diff --git a/ui/src/pages/chat/chat-state-route.ts b/ui/src/pages/chat/chat-state-route.ts index 94716df15af5..dac0a7b12328 100644 --- a/ui/src/pages/chat/chat-state-route.ts +++ b/ui/src/pages/chat/chat-state-route.ts @@ -78,10 +78,19 @@ export function selectedChatSessionRow(state: ChatPageHost) { return row; } const selectedAgentId = resolveUiSelectedGlobalAgentId(state); - const mismatchedOwner = [state.sessionsResultAgentId, row.observerDigest?.agentId].some( - (agentId) => agentId && normalizeAgentId(agentId) !== selectedAgentId, - ); - return mismatchedOwner ? undefined : row; + if ( + state.sessionsResultAgentId && + normalizeAgentId(state.sessionsResultAgentId) !== selectedAgentId + ) { + return undefined; + } + if ( + row.observerDigest?.agentId && + normalizeAgentId(row.observerDigest.agentId) !== selectedAgentId + ) { + return { ...row, observerDigest: undefined }; + } + return row; } function saveChatQueueForSession(state: ChatPageHost, sessionKey: string) { diff --git a/ui/src/pages/chat/chat-state.test.ts b/ui/src/pages/chat/chat-state.test.ts index 48dd8b4293e1..de03f0bc48b7 100644 --- a/ui/src/pages/chat/chat-state.test.ts +++ b/ui/src/pages/chat/chat-state.test.ts @@ -239,6 +239,15 @@ describe("ChatStateController render lifecycle", () => { expect(state.observerDigest?.headline).toBe("Reconnected live status"); expect(requestUpdate).toHaveBeenCalledOnce(); + const projectedRow = state.sessionsResult?.sessions[0]; + if (projectedRow?.observerDigest) { + projectedRow.observerDigest.agentId = "main"; + } + const sanitized = selectedChatSessionRow(state); + expect(sanitized?.key).toBe("global"); + expect(sanitized?.activeRunIds).toEqual(["run-work"]); + expect(sanitized?.observerDigest).toBeUndefined(); + state.sessionsResultAgentId = "main"; expect(selectedChatSessionRow(state)).toBeUndefined(); });