From b07dd2209399d3821041d7aae68399c10d6186ab Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Tue, 9 Dec 2025 10:36:03 +0900 Subject: [PATCH] fix(pulse-monitor): reset heartbeat after tool execution to prevent false positives MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tools can take arbitrary time, so we need a fresh baseline after execution. Previously, lastHeartbeat wasn't updated after tool.execute.after, causing stalled detection to trigger immediately after long-running tools. 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) --- src/hooks/pulse-monitor.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/hooks/pulse-monitor.ts b/src/hooks/pulse-monitor.ts index 27fac17..b53e9d0 100644 --- a/src/hooks/pulse-monitor.ts +++ b/src/hooks/pulse-monitor.ts @@ -132,8 +132,13 @@ export function createPulseMonitorHook(ctx: PluginInput) { // Pause monitoring while tool runs locally (tools can take time) stopMonitoring() }, - "tool.execute.after": async (_input: { sessionID: string }) => { - // Don't forcefully restart monitoring here to avoid false positives + "tool.execute.after": async (input: { sessionID: string }) => { + // Reset heartbeat after tool execution to prevent false positives + // Tools can take arbitrary time, so we need a fresh baseline + if (input.sessionID && currentSessionID === input.sessionID) { + lastHeartbeat = Date.now() + } + // Don't forcefully restart monitoring here // Monitoring will naturally resume when next session/message event arrives // This prevents stalled detection on legitimately idle sessions }