mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-25 18:54:09 +02:00
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import type { OpenClawConfig } from "../config/types.openclaw.js";
|
|
import { parseClawHubPluginSpec } from "../infra/clawhub-spec.js";
|
|
import type { PluginRecord } from "../plugins/registry.js";
|
|
|
|
export function resolvePluginUninstallId<
|
|
TPlugin extends Pick<PluginRecord, "id" | "name">,
|
|
>(params: {
|
|
rawId: string;
|
|
config: OpenClawConfig;
|
|
plugins: TPlugin[];
|
|
}): { pluginId: string; plugin?: TPlugin } {
|
|
const rawId = params.rawId.trim();
|
|
const plugin = params.plugins.find((entry) => entry.id === rawId || entry.name === rawId);
|
|
if (plugin) {
|
|
return { pluginId: plugin.id, plugin };
|
|
}
|
|
|
|
for (const [pluginId, install] of Object.entries(params.config.plugins?.installs ?? {})) {
|
|
if (
|
|
install.spec === rawId ||
|
|
install.resolvedSpec === rawId ||
|
|
install.resolvedName === rawId ||
|
|
install.marketplacePlugin === rawId
|
|
) {
|
|
return { pluginId };
|
|
}
|
|
}
|
|
|
|
const requestedClawHub = parseClawHubPluginSpec(rawId);
|
|
if (requestedClawHub) {
|
|
for (const [pluginId, install] of Object.entries(params.config.plugins?.installs ?? {})) {
|
|
const installedClawHubName =
|
|
install.clawhubPackage ??
|
|
parseClawHubPluginSpec(install.spec ?? "")?.name ??
|
|
parseClawHubPluginSpec(install.resolvedSpec ?? "")?.name;
|
|
if (installedClawHubName === requestedClawHub.name) {
|
|
return { pluginId };
|
|
}
|
|
}
|
|
}
|
|
|
|
return { pluginId: rawId };
|
|
}
|