From f5ec3bffb7f83defdf29ca771b4d33c12c10ff30 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Tue, 2 Dec 2025 14:16:50 +0000 Subject: [PATCH] Update agent lastActivityAt on stream events MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problem: lastActivityAt was only updated when agent_state messages arrived (which only happens on agent lifecycle changes), not when the agent was actively streaming output. This meant the agent directory showed stale "last activity" times. Solution: Update agent.lastActivityAt whenever agent_stream events arrive, using the event's timestamp. Now lastActivityAt tracks real-time activity. Updates happen on: 1. agent_state message → lastActivityAt = updatedAt (from server) 2. agent_stream message → lastActivityAt = event.timestamp (real-time!) This ensures the agent directory always shows fresh activity times. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- packages/app/src/contexts/session-context.tsx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/app/src/contexts/session-context.tsx b/packages/app/src/contexts/session-context.tsx index 535bffd48..4e4d31bb3 100644 --- a/packages/app/src/contexts/session-context.tsx +++ b/packages/app/src/contexts/session-context.tsx @@ -628,6 +628,17 @@ export function SessionProvider({ children, serverUrl, serverId }: SessionProvid next.set(agentId, false); return next; }); + + // Update agent's lastActivityAt to track stream activity + setAgents(serverId, (prev) => { + const agent = prev.get(agentId); + if (!agent) { + return prev; + } + const next = new Map(prev); + next.set(agentId, { ...agent, lastActivityAt: parsedTimestamp }); + return next; + }); }); const unsubAgentStreamSnapshot = ws.on("agent_stream_snapshot", (message) => {