openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
50 lines (49 loc) • 2.28 kB
JavaScript
import { n as openDoctorStateSchemaReadAdmission } from "./openclaw-state-db-doctor-schema-DAg1UZ9R.mjs";
import { t as DoctorMaintenanceRefusalError } from "./update-doctor-result-Buvixhp2.mjs";
import { r as inspectUpdateRepairDriverAdmission } from "./update-run-activity-BGHPrpRf.mjs";
import { d as recordUpdateRunRepairContinuation } from "./update-run-ledger-CgeXEnlV.mjs";
import { t as createUpdateRunAdmissionReader } from "./update-run-reader-DRAJVcbf.mjs";
import "./update-control-plane-sentinel-Do9UY9jx.mjs";
//#region src/commands/doctor-maintenance-admission.ts
function resolveDoctorUpdateAdmission(env, boundRunId) {
const inheritedRunId = (boundRunId ?? env["OPENCLAW_UPDATE_RUN_ID"])?.trim();
const readRuns = createUpdateRunAdmissionReader({
active: true,
limit: 100,
includeRunId: inheritedRunId
}, { env }, openDoctorStateSchemaReadAdmission);
const readAdmission = () => {
const runs = readRuns();
const admission = inspectUpdateRepairDriverAdmission(runs, inheritedRunId);
if (admission.kind === "conflict") {
if (admission.reason === "ancestry-unverified") throw new DoctorMaintenanceRefusalError(admission.message, {
kind: "deferred",
reason: "admission-unavailable"
});
throw new Error(admission.message);
}
return admission;
};
const admission = readAdmission();
const continuation = admission.kind === "continuation" ? admission.run : admission.runs.find((run) => run.runId === inheritedRunId);
return {
assertCurrent: () => {
readAdmission();
},
readContinuation: () => {
const current = readAdmission();
return current.kind === "continuation" ? current.run : void 0;
},
recordContinuation: () => {
const current = readAdmission();
if (continuation?.steps.some((step) => step.step === "finalize:repair-continuation")) {
const run = current.kind === "continuation" ? current.run : current.runs.find((entry) => entry.runId === continuation.runId);
const step = current.kind === "continuation" ? "finalize:repair-continuation" : "finalize:repair-takeover";
if (run?.steps.some((entry) => entry.step === step)) return;
recordUpdateRunRepairContinuation(continuation.runId, inheritedRunId, { env });
}
}
};
}
//#endregion
export { resolveDoctorUpdateAdmission as t };