fix: bypass empty-heartbeat-file check for cron jobs
Cron jobs with wakeMode: 'now' were being skipped when HEARTBEAT.md was empty, even though they had pending system events to process. This adds cron jobs to the bypass list alongside exec events, since both have the same need: they've already enqueued system events and need the agent to wake up and process them. Fixes #4224
This commit is contained in:
parent
4583f88626
commit
694b029fa9
@ -459,13 +459,14 @@ export async function runHeartbeatOnce(opts: {
|
||||
|
||||
// Skip heartbeat if HEARTBEAT.md exists but has no actionable content.
|
||||
// This saves API calls/costs when the file is effectively empty (only comments/headers).
|
||||
// EXCEPTION: Don't skip for exec events - they have pending system events to process.
|
||||
// EXCEPTION: Don't skip for exec events or cron jobs - they have pending system events to process.
|
||||
const isExecEventReason = opts.reason === "exec-event";
|
||||
const isCronReason = opts.reason?.startsWith("cron:");
|
||||
const workspaceDir = resolveAgentWorkspaceDir(cfg, agentId);
|
||||
const heartbeatFilePath = path.join(workspaceDir, DEFAULT_HEARTBEAT_FILENAME);
|
||||
try {
|
||||
const heartbeatFileContent = await fs.readFile(heartbeatFilePath, "utf-8");
|
||||
if (isHeartbeatContentEffectivelyEmpty(heartbeatFileContent) && !isExecEventReason) {
|
||||
if (isHeartbeatContentEffectivelyEmpty(heartbeatFileContent) && !isExecEventReason && !isCronReason) {
|
||||
emitHeartbeatEvent({
|
||||
status: "skipped",
|
||||
reason: "empty-heartbeat-file",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user