From cebea1bf956b2fdc043a3697cf61d41e116e5e3d Mon Sep 17 00:00:00 2001 From: Chinar Amrutkar Date: Sat, 4 Apr 2026 00:22:43 +0000 Subject: [PATCH] fix(heartbeat): remove dead helpers, persist timestamps on all exits - Remove unused getTaskLastRunMs/updateTaskLastRunMs functions - Add timestamp updates to all successful exit paths Fixes: #3030557564, #3034645588 --- src/auto-reply/heartbeat.ts | 28 ---------------------------- src/infra/heartbeat-runner.ts | 6 ++++++ 2 files changed, 6 insertions(+), 28 deletions(-) diff --git a/src/auto-reply/heartbeat.ts b/src/auto-reply/heartbeat.ts index 838327a6129..2cb54af19df 100644 --- a/src/auto-reply/heartbeat.ts +++ b/src/auto-reply/heartbeat.ts @@ -277,31 +277,3 @@ export function isTaskDue(lastRunMs: number | undefined, interval: string, nowMs return false; } } - -/** - * Get or initialize last run time for a task from session store. - */ -export function getTaskLastRunMs( - taskName: string, - sessionEntry: Record | undefined, -): number | undefined { - if (!sessionEntry?.heartbeatTaskState) { - return undefined; - } - const taskState = sessionEntry.heartbeatTaskState as Record; - return taskState[taskName]; -} - -/** - * Update last run time for a task in session store. - */ -export function updateTaskLastRunMs( - taskName: string, - nowMs: number, - sessionEntry: Record, -): void { - if (!sessionEntry.heartbeatTaskState) { - sessionEntry.heartbeatTaskState = {}; - } - (sessionEntry.heartbeatTaskState as Record)[taskName] = nowMs; -} diff --git a/src/infra/heartbeat-runner.ts b/src/infra/heartbeat-runner.ts index 4740eef79e9..140a09a2569 100644 --- a/src/infra/heartbeat-runner.ts +++ b/src/infra/heartbeat-runner.ts @@ -879,6 +879,8 @@ export async function runHeartbeatOnce(opts: { silent: !okSent, indicatorType: visibility.useIndicator ? resolveIndicatorType("ok-token") : undefined, }); + heartbeatSuccess = true; + await updateTaskTimestamps(); return { status: "ran", durationMs: Date.now() - startedAt }; } @@ -915,6 +917,8 @@ export async function runHeartbeatOnce(opts: { channel: delivery.channel !== "none" ? delivery.channel : undefined, accountId: delivery.accountId, }); + heartbeatSuccess = true; + await updateTaskTimestamps(); return { status: "ran", durationMs: Date.now() - startedAt }; } @@ -935,6 +939,8 @@ export async function runHeartbeatOnce(opts: { hasMedia: mediaUrls.length > 0, accountId: delivery.accountId, }); + heartbeatSuccess = true; + await updateTaskTimestamps(); return { status: "ran", durationMs: Date.now() - startedAt }; }