UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

38 lines (37 loc) 1.42 kB
import "./src-vebZIeLe.js"; import { t as stableStringify } from "./stable-stringify-C8X7niaI.js"; import { n as sha256Base64Url } from "./crypto-digest-C4hqTb_e.js"; import { c as projectCronJobThroughStorageCodec } from "./row-codec-Bv7_IRNO.js"; //#region src/cron/config-revision.ts /** Opaque revision token for cron configuration, excluding scheduler-maintained state. */ function configRevisionDefinition(projected) { const { updatedAtMs: _updatedAtMs, state: _state, ...definition } = projected; if (definition.payload.kind !== "command" || !definition.payload.env) return definition; const foldedKeys = /* @__PURE__ */ new Set(); if (!Object.keys(definition.payload.env).some((key) => { const folded = key.toLowerCase(); if (foldedKeys.has(folded)) return true; foldedKeys.add(folded); return false; })) return definition; const { env, ...payload } = definition.payload; return { ...definition, payload: { ...payload, envEntries: Object.entries(env) } }; } /** Hashes the job definition while preserving meaningful own-undefined config fields. */ function resolveCronJobConfigRevision(job) { const projected = projectCronJobThroughStorageCodec({ ...job, updatedAtMs: 0, state: {} }); const fingerprint = stableStringify(configRevisionDefinition(projected)); return `sha256:${sha256Base64Url(fingerprint)}`; } //#endregion export { resolveCronJobConfigRevision as t };