mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-09 00:08:28 +00:00
fix: skip heartbeat when HEARTBEAT.md does not exist (#20461)
Merged via /review-pr -> /prepare-pr -> /merge-pr.
Prepared head SHA: f6e5f8172a
Co-authored-by: vikpos <24960005+vikpos@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
This commit is contained in:
54
src/infra/heartbeat-reason.ts
Normal file
54
src/infra/heartbeat-reason.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
export type HeartbeatReasonKind =
|
||||
| "retry"
|
||||
| "interval"
|
||||
| "manual"
|
||||
| "exec-event"
|
||||
| "wake"
|
||||
| "cron"
|
||||
| "hook"
|
||||
| "other";
|
||||
|
||||
function trimReason(reason?: string): string {
|
||||
return typeof reason === "string" ? reason.trim() : "";
|
||||
}
|
||||
|
||||
export function normalizeHeartbeatWakeReason(reason?: string): string {
|
||||
const trimmed = trimReason(reason);
|
||||
return trimmed.length > 0 ? trimmed : "requested";
|
||||
}
|
||||
|
||||
export function resolveHeartbeatReasonKind(reason?: string): HeartbeatReasonKind {
|
||||
const trimmed = trimReason(reason);
|
||||
if (trimmed === "retry") {
|
||||
return "retry";
|
||||
}
|
||||
if (trimmed === "interval") {
|
||||
return "interval";
|
||||
}
|
||||
if (trimmed === "manual") {
|
||||
return "manual";
|
||||
}
|
||||
if (trimmed === "exec-event") {
|
||||
return "exec-event";
|
||||
}
|
||||
if (trimmed === "wake") {
|
||||
return "wake";
|
||||
}
|
||||
if (trimmed.startsWith("cron:")) {
|
||||
return "cron";
|
||||
}
|
||||
if (trimmed.startsWith("hook:")) {
|
||||
return "hook";
|
||||
}
|
||||
return "other";
|
||||
}
|
||||
|
||||
export function isHeartbeatEventDrivenReason(reason?: string): boolean {
|
||||
const kind = resolveHeartbeatReasonKind(reason);
|
||||
return kind === "exec-event" || kind === "cron" || kind === "wake" || kind === "hook";
|
||||
}
|
||||
|
||||
export function isHeartbeatActionWakeReason(reason?: string): boolean {
|
||||
const kind = resolveHeartbeatReasonKind(reason);
|
||||
return kind === "manual" || kind === "exec-event" || kind === "hook";
|
||||
}
|
||||
Reference in New Issue
Block a user