import type { OpenClawConfig } from "../../config/types.openclaw.js"; import type { PluginInstallRecord } from "../../config/types.plugins.js"; import type { PostCorePluginUpdateResult } from "./update-command-plugins.js"; import "./update-command-plugins.js"; type MissingPluginInstallPayload = { pluginId: string; installPath?: string; reason: "missing-install-path" | "missing-package-dir" | "missing-package-json"; }; type UpdateCommandPluginsTestApi = { buildInvalidConfigPostCoreUpdateResult(): { message: string; guidance: string[]; result: PostCorePluginUpdateResult; }; collectMissingPluginInstallPayloads(params: { records: Record; config?: OpenClawConfig; skipDisabledPlugins?: boolean; syncOfficialPluginInstalls?: boolean; env?: NodeJS.ProcessEnv; }): Promise; resolvePostSyncPluginUpdateSkipIds(params: { switchedToClawHub: readonly string[]; switchedToNpm: readonly string[]; repairedMissingPayloadIds: ReadonlySet; }): Set; }; function getTestApi(): UpdateCommandPluginsTestApi { return (globalThis as Record)[ Symbol.for("openclaw.updateCommandPluginsTestApi") ] as UpdateCommandPluginsTestApi; } export function buildInvalidConfigPostCoreUpdateResult() { return getTestApi().buildInvalidConfigPostCoreUpdateResult(); } export async function collectMissingPluginInstallPayloads( params: Parameters[0], ): Promise { return await getTestApi().collectMissingPluginInstallPayloads(params); } export function resolvePostSyncPluginUpdateSkipIds( params: Parameters[0], ): Set { return getTestApi().resolvePostSyncPluginUpdateSkipIds(params); }