From c1e4b0fcbf43ac27f27d1f8dc332f9048245221c Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Sun, 22 Feb 2026 11:16:57 +0700 Subject: [PATCH] server: only emit attention notifications for ui agents --- .../websocket-server.notifications.test.ts | 26 +++++++++++++++++++ .../server/src/server/websocket-server.ts | 10 +++++++ 2 files changed, 36 insertions(+) diff --git a/packages/server/src/server/websocket-server.notifications.test.ts b/packages/server/src/server/websocket-server.notifications.test.ts index 340ece2b2..483a02523 100644 --- a/packages/server/src/server/websocket-server.notifications.test.ts +++ b/packages/server/src/server/websocket-server.notifications.test.ts @@ -97,6 +97,7 @@ describe("VoiceAssistantWebSocketServer notification payloads", () => { getAgent: vi.fn(() => ({ config: { title: null }, cwd: "/tmp/worktree", + labels: { ui: "true" }, timeline: [ { type: "assistant_message", @@ -126,4 +127,29 @@ describe("VoiceAssistantWebSocketServer notification payloads", () => { } ); }); + + it("skips push notifications for non-UI agents", () => { + const { server } = createServer({ + getAgent: vi.fn(() => ({ + config: { title: null }, + cwd: "/tmp/worktree", + labels: {}, + timeline: [ + { + type: "assistant_message", + text: "Done.", + }, + ], + pendingPermissions: new Map(), + })), + }); + + (server as any).broadcastAgentAttention({ + agentId: "agent-2", + provider: "claude", + reason: "finished", + }); + + expect(pushMocks.sendPush).not.toHaveBeenCalled(); + }); }); diff --git a/packages/server/src/server/websocket-server.ts b/packages/server/src/server/websocket-server.ts index d691390ab..36e095008 100644 --- a/packages/server/src/server/websocket-server.ts +++ b/packages/server/src/server/websocket-server.ts @@ -1067,6 +1067,16 @@ export class VoiceAssistantWebSocketServer { const allStates = clientEntries.map((e) => e.state); const agent = this.agentManager.getAgent(params.agentId); + if (agent?.labels?.ui !== "true") { + this.logger.debug( + { + agentId: params.agentId, + labels: agent?.labels ?? null, + }, + "Skipping attention notification for non-UI agent" + ); + return; + } const notification = buildAgentAttentionNotificationPayload({ reason: params.reason, serverId: this.serverId,