From f21c8f7e052e4386c18ade16870fb12f92459850 Mon Sep 17 00:00:00 2001 From: Pedro Pombeiro Date: Wed, 19 Aug 2026 11:13:49 +0200 Subject: [PATCH] fix(homeassistant): notify every concurrent wait Two permission requests in quick succession produced only one notification. The tracker suppressed onWaiting whenever the session was already waiting, so the second request was tracked but never announced, and the plugin never polled for it. It stayed unanswerable even after the first was approved, because nothing announced it later either. onWaiting now fires for each distinct wait. Deduplication by request ID still applies, so a repeated event for the same ID notifies once, and the session still resumes only when every wait has cleared. Both other consumers are already idempotent: tmux-indicator returns early when active, and terminal-progress writes an unchanged escape sequence. --- packages/_shared/src/agent-state.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/_shared/src/agent-state.ts b/packages/_shared/src/agent-state.ts index 4310a35..6dc5106 100644 --- a/packages/_shared/src/agent-state.ts +++ b/packages/_shared/src/agent-state.ts @@ -69,9 +69,8 @@ export function createAgentStateTracker(options: AgentStateOptions) { async function wait(sessionID: string, id: string, detail: WaitingDetail): Promise { if (!isActive(sessionID) || waits.has(id)) return; waits.set(id, sessionID); - const wasWaiting = states.get(sessionID) === 'waiting'; states.set(sessionID, 'waiting'); - if (!wasWaiting) await options.onWaiting?.(sessionID, detail); + await options.onWaiting?.(sessionID, detail); } async function resume(sessionID: string, id: string): Promise {