From a258503590598f7b0734c37a2cafc49030aa1da3 Mon Sep 17 00:00:00 2001 From: Vignesh Natarajan Date: Mon, 16 Feb 2026 14:37:22 -0800 Subject: [PATCH] Cron: dedupe gateway wake target resolution --- src/gateway/server-cron.ts | 54 ++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/src/gateway/server-cron.ts b/src/gateway/server-cron.ts index 17938db9fa8..68ba5423941 100644 --- a/src/gateway/server-cron.ts +++ b/src/gateway/server-cron.ts @@ -115,6 +115,26 @@ export function buildGatewayCronService(params: { return canonical; }; + const resolveCronWakeTarget = (opts?: { agentId?: string; sessionKey?: string | null }) => { + const runtimeConfig = loadConfig(); + const requestedAgentId = opts?.agentId ? resolveCronAgent(opts.agentId).agentId : undefined; + const derivedAgentId = + requestedAgentId ?? + (opts?.sessionKey + ? normalizeAgentId(resolveAgentIdFromSessionKey(opts.sessionKey)) + : undefined); + const agentId = derivedAgentId || undefined; + const sessionKey = + opts?.sessionKey && agentId + ? resolveCronSessionKey({ + runtimeConfig, + agentId, + requestedSessionKey: opts.sessionKey, + }) + : undefined; + return { runtimeConfig, agentId, sessionKey }; + }; + const defaultAgentId = resolveDefaultAgentId(params.cfg); const resolveSessionStorePath = (agentId?: string) => resolveStorePath(params.cfg.session?.store, { @@ -140,22 +160,7 @@ export function buildGatewayCronService(params: { enqueueSystemEvent(text, { sessionKey, contextKey: opts?.contextKey }); }, requestHeartbeatNow: (opts) => { - const runtimeConfig = loadConfig(); - const requestedAgentId = opts?.agentId ? resolveCronAgent(opts.agentId).agentId : undefined; - const derivedAgentId = - requestedAgentId ?? - (opts?.sessionKey - ? normalizeAgentId(resolveAgentIdFromSessionKey(opts.sessionKey)) - : undefined); - const agentId = derivedAgentId || undefined; - const sessionKey = - opts?.sessionKey && agentId - ? resolveCronSessionKey({ - runtimeConfig, - agentId, - requestedSessionKey: opts.sessionKey, - }) - : undefined; + const { agentId, sessionKey } = resolveCronWakeTarget(opts); requestHeartbeatNow({ reason: opts?.reason, agentId, @@ -163,22 +168,7 @@ export function buildGatewayCronService(params: { }); }, runHeartbeatOnce: async (opts) => { - const runtimeConfig = loadConfig(); - const requestedAgentId = opts?.agentId ? resolveCronAgent(opts.agentId).agentId : undefined; - const derivedAgentId = - requestedAgentId ?? - (opts?.sessionKey - ? normalizeAgentId(resolveAgentIdFromSessionKey(opts.sessionKey)) - : undefined); - const agentId = derivedAgentId || undefined; - const sessionKey = - opts?.sessionKey && agentId - ? resolveCronSessionKey({ - runtimeConfig, - agentId, - requestedSessionKey: opts.sessionKey, - }) - : undefined; + const { runtimeConfig, agentId, sessionKey } = resolveCronWakeTarget(opts); return await runHeartbeatOnce({ cfg: runtimeConfig, reason: opts?.reason,