fix(pulse-monitor): reset heartbeat after tool execution to prevent false positives

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)
This commit is contained in:
YeonGyu-Kim
2025-12-09 10:36:03 +09:00
parent c7d29fea48
commit b07dd22093

View File

@@ -132,8 +132,13 @@ export function createPulseMonitorHook(ctx: PluginInput) {
// Pause monitoring while tool runs locally (tools can take time) // Pause monitoring while tool runs locally (tools can take time)
stopMonitoring() stopMonitoring()
}, },
"tool.execute.after": async (_input: { sessionID: string }) => { "tool.execute.after": async (input: { sessionID: string }) => {
// Don't forcefully restart monitoring here to avoid false positives // 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 // Monitoring will naturally resume when next session/message event arrives
// This prevents stalled detection on legitimately idle sessions // This prevents stalled detection on legitimately idle sessions
} }