mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-24 15:41:40 +00:00
56 lines
1.4 KiB
TypeScript
56 lines
1.4 KiB
TypeScript
import { discoverOpenClawPlugins } from "./discovery.js";
|
|
import {
|
|
loadPluginManifest,
|
|
type PluginPackageChannel,
|
|
type PluginPackageInstall,
|
|
} from "./manifest.js";
|
|
import type { PluginOrigin } from "./types.js";
|
|
|
|
export type PluginChannelCatalogEntry = {
|
|
pluginId: string;
|
|
origin: PluginOrigin;
|
|
packageName?: string;
|
|
workspaceDir?: string;
|
|
rootDir: string;
|
|
channel: PluginPackageChannel;
|
|
install?: PluginPackageInstall;
|
|
};
|
|
|
|
export function listChannelCatalogEntries(
|
|
params: {
|
|
origin?: PluginOrigin;
|
|
workspaceDir?: string;
|
|
env?: NodeJS.ProcessEnv;
|
|
} = {},
|
|
): PluginChannelCatalogEntry[] {
|
|
return discoverOpenClawPlugins({
|
|
workspaceDir: params.workspaceDir,
|
|
env: params.env,
|
|
}).candidates.flatMap((candidate) => {
|
|
if (params.origin && candidate.origin !== params.origin) {
|
|
return [];
|
|
}
|
|
const channel = candidate.packageManifest?.channel;
|
|
if (!channel?.id) {
|
|
return [];
|
|
}
|
|
const manifest = loadPluginManifest(candidate.rootDir, candidate.origin !== "bundled");
|
|
if (!manifest.ok) {
|
|
return [];
|
|
}
|
|
return [
|
|
{
|
|
pluginId: manifest.manifest.id,
|
|
origin: candidate.origin,
|
|
packageName: candidate.packageName,
|
|
workspaceDir: candidate.workspaceDir,
|
|
rootDir: candidate.rootDir,
|
|
channel,
|
|
...(candidate.packageManifest?.install
|
|
? { install: candidate.packageManifest.install }
|
|
: {}),
|
|
},
|
|
];
|
|
});
|
|
}
|