UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

53 lines (52 loc) • 2.18 kB
import { o as asRecord } from "./record-coerce-TIsquoVR.mjs"; import { a as loadCronRows, i as fingerprintCronJobRows, n as deleteCronJobRowInDatabase, o as loadedCronStoreFromRows, y as tryParseJsonObject } from "./row-codec-CXnIpQeG.mjs"; import { n as repairCronRuntimeAuthorityRows, t as loadCronRuntimeAuthorities } from "./runtime-authority-store-Ci0eOzZx.mjs"; //#region src/cron/store/load.kernel.ts function isRetiredCollectionReview(row) { return row.payload_kind === "skillCollectionReview" || asRecord(tryParseJsonObject(row.job_json)?.payload).kind === "skillCollectionReview"; } function loadCronStoreFromDatabase(database, storeKey, writer) { let rows = loadCronRows(database, storeKey); const retiredIds = new Set(rows.filter(isRetiredCollectionReview).map((row) => row.job_id)); if (!writer) rows = rows.filter((row) => !retiredIds.has(row.job_id)); else if (retiredIds.size > 0) { if (writer.write((db) => { const current = loadCronRows(db, storeKey, retiredIds).filter(isRetiredCollectionReview); for (const row of current) deleteCronJobRowInDatabase(db, storeKey, row.job_id); return current.length; }, "cron.retire-collection-review") > 0) writer.committed(); rows = loadCronRows(database, storeKey); } const loaded = loadedCronStoreFromRows(rows); if (rows.length > 0) { const authority = loadCronRuntimeAuthorities({ db: database, storeKey, jobs: loaded.store.jobs }); if (writer) repairLoadedCronRuntimeAuthority(writer, { storeKey, jobIds: authority.repairJobIds }); } return !writer ? loaded : { ...loaded, jobsFingerprint: fingerprintCronJobRows(rows) }; } function repairLoadedCronRuntimeAuthority(writer, params) { if (params.jobIds.length === 0) return; if (writer.write((db) => { const rows = loadCronRows(db, params.storeKey, new Set(params.jobIds)); if (rows.length === 0) return false; const loaded = loadedCronStoreFromRows(rows); return repairCronRuntimeAuthorityRows({ db, storeKey: params.storeKey, jobs: loaded.store.jobs, jobIds: params.jobIds }); }, "cron.runtime-authority-repair")) writer.committed(); } //#endregion export { loadCronStoreFromDatabase as t };