openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
46 lines (45 loc) • 1.72 kB
JavaScript
import { M as containsAuthoredInclude, N as isSingleTopLevelIncludeMigration, s as readConfigFileSnapshot } from "./io.runtime-B9iJRs3w.js";
import { h as validateConfigObjectWithPlugins } from "./io.types-BUCjdS5v.js";
import { r as replaceConfigFile } from "./mutate-ZNN4iFCn.js";
import "./config-Cs0XXL3x.js";
import { t as migrateLegacyConfig } from "./legacy-config-migrate-ibYHB0mZ.js";
//#region src/commands/doctor/legacy-config-repair.ts
/** Migrate a legacy config snapshot during update, unless validation blocks it. */
async function repairLegacyConfigForUpdateChannel(params) {
const hasAuthoredIncludes = containsAuthoredInclude(params.configSnapshot.parsed);
const migrated = migrateLegacyConfig(params.configSnapshot.sourceConfig);
if (!migrated.config) return {
snapshot: params.configSnapshot,
repaired: false
};
const validated = validateConfigObjectWithPlugins(migrated.config);
if (!validated.ok) return {
snapshot: params.configSnapshot,
repaired: false
};
const nextConfig = hasAuthoredIncludes && migrated.sourceConfig ? migrated.sourceConfig : validated.config;
if (hasAuthoredIncludes && !isSingleTopLevelIncludeMigration({
parsed: params.configSnapshot.parsed,
sourceConfig: params.configSnapshot.sourceConfig,
candidate: nextConfig
})) return {
snapshot: params.configSnapshot,
repaired: false
};
await replaceConfigFile({
nextConfig,
baseHash: params.configSnapshot.hash,
writeOptions: {
auditOrigin: "doctor",
allowConfigSizeDrop: true,
skipOutputLogs: params.jsonMode
}
});
const snapshot = await readConfigFileSnapshot();
return {
snapshot,
repaired: snapshot.valid
};
}
//#endregion
export { repairLegacyConfigForUpdateChannel };