


























@@ -221,6 +221,47 @@ function listContributionManifestPlugins(
221221}).plugins;
222222}
223223224+function resolveContributionOwnerMap(
225+table: PluginLookUpTable,
226+contribution: PluginRegistryContributionKey,
227+): ReadonlyMap<string, readonly string[]> | undefined {
228+switch (contribution) {
229+case "channels":
230+return table.owners.channels;
231+case "channelConfigs":
232+return table.owners.channelConfigs;
233+case "providers":
234+return table.owners.providers;
235+case "modelCatalogProviders":
236+return table.owners.modelCatalogProviders;
237+case "cliBackends":
238+return table.owners.cliBackends;
239+case "setupProviders":
240+return table.owners.setupProviders;
241+case "commandAliases":
242+return table.owners.commandAliases;
243+case "contracts":
244+return table.owners.contracts;
245+}
246+return undefined;
247+}
248+249+function filterContributionOwnerIds(params: {
250+owners: readonly string[];
251+index: PluginRegistrySnapshot;
252+includeDisabled?: boolean;
253+config?: OpenClawConfig;
254+}): readonly string[] {
255+const enabledPluginIds = new Set(
256+resolveContributionPluginIds({
257+index: params.index,
258+includeDisabled: params.includeDisabled,
259+config: params.config,
260+}),
261+);
262+return sortUnique(params.owners.filter((owner) => enabledPluginIds.has(owner)));
263+}
264+224265export function loadPluginManifestRegistryForPluginRegistry(
225266params: LoadPluginRegistryManifestParams = {},
226267): PluginManifestRegistry {
@@ -310,11 +351,24 @@ export function listPluginContributionIds(
310351export function resolvePluginContributionOwners(
311352params: ResolvePluginContributionOwnersParams,
312353): readonly string[] {
354+const index = params.lookUpTable?.index ?? loadPluginRegistrySnapshot(params);
355+if (params.lookUpTable && typeof params.matches === "string") {
356+const ownerMap = resolveContributionOwnerMap(params.lookUpTable, params.contribution);
357+const owners = ownerMap?.get(params.matches);
358+if (owners) {
359+return filterContributionOwnerIds({
360+ owners,
361+ index,
362+includeDisabled: params.includeDisabled,
363+config: params.config,
364+});
365+}
366+return [];
367+}
313368const matcher =
314369typeof params.matches === "string"
315370 ? (contributionId: string) => contributionId === params.matches
316371 : params.matches;
317-const index = params.lookUpTable?.index ?? loadPluginRegistrySnapshot(params);
318372const plugins = listContributionManifestPlugins({ ...params, index });
319373return sortUnique(
320374plugins.flatMap((plugin) =>
@@ -328,6 +382,19 @@ export function resolveProviderOwners(params: ResolveProviderOwnersParams): read
328382if (!providerId) {
329383return [];
330384}
385+if (params.lookUpTable) {
386+const index = params.lookUpTable.index;
387+const owners = [...params.lookUpTable.owners.providers.entries()].flatMap(
388+([contributionId, ownerIds]) =>
389+normalizeProviderId(contributionId) === providerId ? [...ownerIds] : [],
390+);
391+return filterContributionOwnerIds({
392+ owners,
393+ index,
394+includeDisabled: params.includeDisabled,
395+config: params.config,
396+});
397+}
331398return resolvePluginContributionOwners({
332399 ...params,
333400contribution: "providers",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。