UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

67 lines (66 loc) 2.74 kB
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js"; import { n as normalizeAgentId } from "./agent-id-CeT3w4ap.js"; import { c as resolveAgentConfig, i as listAgentEntries, o as listAgentIds, w as tryResolveAmbientOwnerAgentId } from "./agent-scope-config-DcbEhP0R.js"; import "./session-key-BnWWjqNc.js"; import { t as parseDurationMs } from "./parse-duration-CuuCHKpt.js"; import "./heartbeat-ofet59jF.js"; //#region src/infra/heartbeat-agent-resolution.ts function tryResolveAmbientHeartbeatAgentId(cfg) { return tryResolveAmbientOwnerAgentId(cfg, cfg.agents?.defaults?.heartbeat?.agentId); } //#endregion //#region src/infra/heartbeat-config.ts /** Pure heartbeat enrollment and configuration shared by scheduling, health, and Doctor. */ function resolveHeartbeatConfig(cfg, agentId) { const defaults = cfg.agents?.defaults?.heartbeat; if (!agentId) return defaults; const overrides = resolveAgentConfig(cfg, agentId)?.heartbeat; return defaults || overrides ? { ...defaults, ...overrides } : void 0; } /** Resolve the cadence owned by the effective heartbeat configuration. */ function resolveHeartbeatIntervalMs(cfg, overrideEvery, heartbeat) { const raw = overrideEvery ?? heartbeat?.every ?? cfg.agents?.defaults?.heartbeat?.every ?? "30m"; const trimmed = normalizeOptionalString(raw); if (!trimmed) return null; try { const intervalMs = parseDurationMs(trimmed, { defaultUnit: "m" }); return intervalMs > 0 ? intervalMs : null; } catch { return null; } } function resolveHeartbeatAgents(cfg) { const explicitAgents = listAgentEntries(cfg).filter((entry) => entry.heartbeat); if (explicitAgents.length > 0) return explicitAgents.map((entry) => { const agentId = normalizeAgentId(entry.id); return { agentId, heartbeat: resolveHeartbeatConfig(cfg, agentId) }; }).filter((agent) => agent.agentId); const configuredAgentId = normalizeOptionalString(cfg.agents?.defaults?.heartbeat?.agentId); if (configuredAgentId) { const agentId = normalizeAgentId(configuredAgentId); return [{ agentId, heartbeat: resolveHeartbeatConfig(cfg, agentId) }]; } if (cfg.agents?.defaults?.heartbeat) return listAgentIds(cfg).map((agentId) => ({ agentId, heartbeat: resolveHeartbeatConfig(cfg, agentId) })); const agentId = tryResolveAmbientHeartbeatAgentId(cfg); return agentId ? [{ agentId, heartbeat: resolveHeartbeatConfig(cfg, agentId) }] : []; } function isHeartbeatOwnerUnresolved(cfg) { return listAgentIds(cfg).length > 1 && resolveHeartbeatAgents(cfg).length === 0; } //#endregion export { tryResolveAmbientHeartbeatAgentId as a, resolveHeartbeatIntervalMs as i, resolveHeartbeatAgents as n, resolveHeartbeatConfig as r, isHeartbeatOwnerUnresolved as t };