refactor: share trusted catalog fallback listing

This commit is contained in:
Peter Steinberger
2026-04-19 00:57:27 +01:00
parent 60d83b1d32
commit a86c43e1fd

View File

@@ -53,11 +53,14 @@ export function getTrustedChannelPluginCatalogEntry(
});
}
export function listTrustedChannelPluginCatalogEntries(params: {
cfg: OpenClawConfig;
workspaceDir?: string;
env?: NodeJS.ProcessEnv;
}): ChannelPluginCatalogEntry[] {
function listChannelPluginCatalogEntriesWithTrustedFallback(
params: {
cfg: OpenClawConfig;
workspaceDir?: string;
env?: NodeJS.ProcessEnv;
},
onMissingFallback: (entry: ChannelPluginCatalogEntry) => ChannelPluginCatalogEntry[],
): ChannelPluginCatalogEntry[] {
const unfiltered = listChannelPluginCatalogEntries({
workspaceDir: params.workspaceDir,
});
@@ -72,29 +75,22 @@ export function listTrustedChannelPluginCatalogEntries(params: {
return [entry];
}
const fallback = fallbackById.get(entry.id);
return fallback ? [fallback] : [];
return fallback ? [fallback] : onMissingFallback(entry);
});
}
export function listTrustedChannelPluginCatalogEntries(params: {
cfg: OpenClawConfig;
workspaceDir?: string;
env?: NodeJS.ProcessEnv;
}): ChannelPluginCatalogEntry[] {
return listChannelPluginCatalogEntriesWithTrustedFallback(params, () => []);
}
export function listSetupDiscoveryChannelPluginCatalogEntries(params: {
cfg: OpenClawConfig;
workspaceDir?: string;
env?: NodeJS.ProcessEnv;
}): ChannelPluginCatalogEntry[] {
const unfiltered = listChannelPluginCatalogEntries({
workspaceDir: params.workspaceDir,
});
const fallbackById = new Map(
listChannelPluginCatalogEntries({
workspaceDir: params.workspaceDir,
excludeWorkspace: true,
}).map((entry) => [entry.id, entry]),
);
return unfiltered.flatMap((entry) => {
if (isTrustedWorkspaceChannelCatalogEntry(entry, params.cfg, params.env)) {
return [entry];
}
const fallback = fallbackById.get(entry.id);
return fallback ? [fallback] : [entry];
});
return listChannelPluginCatalogEntriesWithTrustedFallback(params, (entry) => [entry]);
}