From eb8d7a19af53b563f8134550a21d4c8dab9d5375 Mon Sep 17 00:00:00 2001 From: Sash Zats Date: Tue, 6 Jan 2026 19:55:03 -0500 Subject: [PATCH 1/2] Cron: enqueue system events in main session --- src/gateway/server.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gateway/server.ts b/src/gateway/server.ts index cf46ab54c..ccaa6b6c4 100644 --- a/src/gateway/server.ts +++ b/src/gateway/server.ts @@ -32,7 +32,11 @@ import { deriveDefaultBridgePort, deriveDefaultCanvasHostPort, } from "../config/port-defaults.js"; -import { loadSessionStore, resolveStorePath } from "../config/sessions.js"; +import { + loadSessionStore, + resolveMainSessionKey, + resolveStorePath, +} from "../config/sessions.js"; import { runCronIsolatedAgentTurn } from "../cron/isolated-agent.js"; import { appendCronRunLog, resolveCronRunLogPath } from "../cron/run-log.js"; import { CronService } from "../cron/service.js"; @@ -689,7 +693,9 @@ export async function startGatewayServer( const cron = new CronService({ storePath, cronEnabled, - enqueueSystemEvent, + enqueueSystemEvent: (text) => { + enqueueSystemEvent(text, { sessionKey: resolveMainSessionKey(cfg) }); + }, requestHeartbeatNow, runIsolatedAgentJob: async ({ job, message }) => { const runtimeConfig = loadConfig(); From f1643a5b8d744388d21119941089c319cdc621f4 Mon Sep 17 00:00:00 2001 From: Sash Zats Date: Tue, 6 Jan 2026 20:14:30 -0500 Subject: [PATCH 2/2] Heartbeat: resolve main session key for session store --- src/infra/heartbeat-runner.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/infra/heartbeat-runner.ts b/src/infra/heartbeat-runner.ts index 1fa7065bc..f75e37fef 100644 --- a/src/infra/heartbeat-runner.ts +++ b/src/infra/heartbeat-runner.ts @@ -12,6 +12,7 @@ import type { ClawdbotConfig } from "../config/config.js"; import { loadConfig } from "../config/config.js"; import { loadSessionStore, + resolveMainSessionKey, resolveStorePath, type SessionEntry, saveSessionStore, @@ -113,8 +114,8 @@ function resolveHeartbeatAckMaxChars(cfg: ClawdbotConfig) { function resolveHeartbeatSession(cfg: ClawdbotConfig) { const sessionCfg = cfg.session; const scope = sessionCfg?.scope ?? "per-sender"; - const mainKey = (sessionCfg?.mainKey ?? "main").trim() || "main"; - const sessionKey = scope === "global" ? "global" : mainKey; + const sessionKey = + scope === "global" ? "global" : resolveMainSessionKey(cfg); const storePath = resolveStorePath(sessionCfg?.store); const store = loadSessionStore(storePath); const entry = store[sessionKey];