openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
49 lines (48 loc) • 2.34 kB
JavaScript
import { c as isRecord } from "./record-coerce-DItp3I4t.js";
import { l as normalizeOptionalString } from "./string-coerce-CIXf7egm.js";
import { r as isMissingPathError } from "./errno-CkbDOfLk.js";
import { t as parseJsonWithJson5Fallback } from "./parse-json-compat-Cc8PAOTi.js";
import { n as normalizeAgentId } from "./agent-id-CeT3w4ap.js";
import { O as parseAgentSessionKey } from "./session-key-BnWWjqNc.js";
import "./errors-Db3Ymjlb.js";
import { v as writeTextAtomic } from "./json-files-Bq1lIlQB.js";
import { s as runOpenClawStateWriteTransaction } from "./openclaw-state-db-BRTnL-D8.js";
import { s as materializeCronRowAgentOwners } from "./row-codec-Bv7_IRNO.js";
import { t as cronStoreKey } from "./key-BBZ40bDq.js";
import path from "node:path";
import fs from "node:fs/promises";
//#region src/cron/legacy-default-agent-owner-migration.ts
async function materializeLegacyJsonOwners(storePath, agentId) {
let raw;
try {
raw = await fs.readFile(storePath, "utf8");
} catch (error) {
if (isMissingPathError(error)) return 0;
throw error;
}
const parsed = parseJsonWithJson5Fallback(raw);
const jobs = Array.isArray(parsed) ? parsed : isRecord(parsed) && Array.isArray(parsed.jobs) ? parsed.jobs : [];
let rewritten = 0;
for (const job of jobs) {
if (!isRecord(job) || normalizeOptionalString(job.agentId) || parseAgentSessionKey(normalizeOptionalString(job.sessionKey))?.agentId) continue;
job.agentId = agentId;
rewritten += 1;
}
if (rewritten === 0) return 0;
await writeTextAtomic(storePath, JSON.stringify(parsed, null, 2), {
mode: 384,
tempPrefix: path.basename(storePath),
trailingNewline: true,
beforeRename: async () => {
if (await fs.readFile(storePath, "utf8") !== raw) throw new Error("legacy cron source changed while assigning its retained owner");
}
});
return rewritten;
}
async function materializeLegacyDefaultCronJobOwners(params) {
const agentId = normalizeAgentId(params.legacyDefaultAgentId);
const storePath = path.resolve(params.storePath);
return runOpenClawStateWriteTransaction(({ db }) => materializeCronRowAgentOwners(db, cronStoreKey(storePath), agentId), { env: params.env }, { operationLabel: "cron.legacy-default-owner" }) + await materializeLegacyJsonOwners(storePath, agentId);
}
//#endregion
export { materializeLegacyDefaultCronJobOwners as t };