UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

45 lines (44 loc) 1.64 kB
import { c as isRecord } from "./utils-CCC-BEJH.js"; import { E as validateConfigObjectWithPlugins, u as readConfigFileSnapshot } from "./io-Gi7-pyU-.js"; import "./includes-Cf57krG9.js"; import { i as replaceConfigFile } from "./config-C9RxTsn1.js"; import { t as migrateLegacyConfig } from "./legacy-config-migrate-TV9KmmFR.js"; //#region src/commands/doctor/legacy-config-repair.ts /** Return true when a config tree uses authored includes that doctor must not flatten. */ function containsAuthoredInclude(value) { if (!isRecord(value)) return false; if (Object.hasOwn(value, "$include")) return true; return Object.values(value).some((entry) => containsAuthoredInclude(entry)); } /** Migrate a legacy config snapshot during update, unless includes or validation block it. */ async function repairLegacyConfigForUpdateChannel(params) { if (containsAuthoredInclude(params.configSnapshot.parsed)) return { snapshot: params.configSnapshot, repaired: false }; const migrated = migrateLegacyConfig(params.configSnapshot.parsed); if (!migrated.config) return { snapshot: params.configSnapshot, repaired: false }; const validated = validateConfigObjectWithPlugins(migrated.config); if (!validated.ok) return { snapshot: params.configSnapshot, repaired: false }; await replaceConfigFile({ nextConfig: validated.config, baseHash: params.configSnapshot.hash, writeOptions: { allowConfigSizeDrop: true, skipOutputLogs: params.jsonMode } }); const snapshot = await readConfigFileSnapshot(); return { snapshot, repaired: snapshot.valid }; } //#endregion export { repairLegacyConfigForUpdateChannel };