UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

33 lines (32 loc) 1.59 kB
import { o as isRecord } from "./record-coerce-DHZ4bFlT.js"; import { Nn as record, Rn as string, Tn as object } from "./schemas-6cH6bZ7o.js"; import { n as PluginInstallRecordShape } from "./zod-schema.installs-C5nasJ1E.js"; //#region src/config/plugin-install-config-migration.ts const PluginInstallRecordsSchema = record(string(), object(PluginInstallRecordShape).passthrough()); function pruneEmptyPluginsObject(plugins) { const { installs: _installs, ...rest } = plugins; return Object.keys(rest).length === 0 ? void 0 : rest; } /** * Reads legacy shipped `plugins.installs` records for migration into the plugin index. * * Invalid install maps are ignored so config loading can keep using the stripped * runtime config while doctor/write paths decide how to report or recover. */ function extractShippedPluginInstallConfigRecords(config) { if (!isRecord(config) || !isRecord(config.plugins)) return {}; const parsed = PluginInstallRecordsSchema.safeParse(config.plugins.installs); return parsed.success ? structuredClone(parsed.data) : {}; } /** Removes legacy shipped `plugins.installs` without mutating the original config object. */ function stripShippedPluginInstallConfigRecords(config) { if (!isRecord(config) || !isRecord(config.plugins) || !("installs" in config.plugins)) return config; const plugins = pruneEmptyPluginsObject(config.plugins); const { plugins: _plugins, ...rest } = config; return plugins === void 0 ? rest : { ...rest, plugins }; } //#endregion export { stripShippedPluginInstallConfigRecords as n, extractShippedPluginInstallConfigRecords as t };