import type { OpenClawConfig } from "../../../src/config/config.js"; function asRecord(value: unknown): Record { return typeof value === "object" && value !== null ? (value as Record) : {}; } export function unwrapRemoteConfigSnapshot(raw: unknown): OpenClawConfig { const rawObj = asRecord(raw); const resolved = asRecord(rawObj.resolved); if (Object.keys(resolved).length > 0) { return resolved as OpenClawConfig; } const wrapped = asRecord(rawObj.config); if (Object.keys(wrapped).length > 0) { return wrapped as OpenClawConfig; } const legacyPayload = asRecord(rawObj.payload); const legacyResolved = asRecord(legacyPayload.resolved); if (Object.keys(legacyResolved).length > 0) { return legacyResolved as OpenClawConfig; } const legacyConfig = asRecord(legacyPayload.config); if (Object.keys(legacyConfig).length > 0) { return legacyConfig as OpenClawConfig; } if (Object.keys(rawObj).length > 0 && !Object.prototype.hasOwnProperty.call(rawObj, "payload")) { return rawObj as OpenClawConfig; } throw new Error("remote gateway config.get returned empty config payload"); }