refactor(plugins): share provider catalog filter · openclaw/openclaw@a118102
vincentkoc
·
2026-06-23
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -28,6 +28,7 @@ import {
|
28 | 28 | import { |
29 | 29 | groupPluginDiscoveryProvidersByOrder, |
30 | 30 | normalizePluginDiscoveryResult, |
| 31 | +providerMatchesFilter, |
31 | 32 | resolveRuntimePluginDiscoveryProviders, |
32 | 33 | runProviderCatalog, |
33 | 34 | runProviderStaticCatalog, |
@@ -50,17 +51,6 @@ function buildProviderCatalogEnvCacheFingerprint(env: NodeJS.ProcessEnv): string
|
50 | 51 | return createHash("sha256").update(JSON.stringify(entries)).digest("hex"); |
51 | 52 | } |
52 | 53 | |
53 | | -function providerMatchesFilter(params: { |
54 | | -provider: Pick<ProviderPlugin, "id" | "aliases" | "hookAliases">; |
55 | | -providerFilter: string; |
56 | | -}): boolean { |
57 | | -return [ |
58 | | -params.provider.id, |
59 | | - ...(params.provider.aliases ?? []), |
60 | | - ...(params.provider.hookAliases ?? []), |
61 | | -].some((providerId) => normalizeProviderId(providerId) === params.providerFilter); |
62 | | -} |
63 | | - |
64 | 54 | function collectMatchingContributionOwners( |
65 | 55 | index: PluginRegistrySnapshot, |
66 | 56 | contribution: "providers" | "cliBackends", |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -22,6 +22,18 @@ function textModel(id: string, name: string): ModelDefinitionConfig {
|
22 | 22 | } |
23 | 23 | |
24 | 24 | const providerDiscoveryMocks = vi.hoisted(() => ({ |
| 25 | +providerMatchesFilter: vi.fn( |
| 26 | +({ |
| 27 | + provider, |
| 28 | + providerFilter, |
| 29 | +}: { |
| 30 | +provider: Pick<ProviderPlugin, "id" | "aliases" | "hookAliases">; |
| 31 | +providerFilter: string; |
| 32 | +}) => |
| 33 | +[provider.id, ...(provider.aliases ?? []), ...(provider.hookAliases ?? [])].some( |
| 34 | +(providerId) => providerId.trim().toLowerCase() === providerFilter, |
| 35 | +), |
| 36 | +), |
25 | 37 | resolveRuntimePluginDiscoveryProviders: vi.fn<() => Promise<ProviderPlugin[]>>(), |
26 | 38 | runProviderCatalog: vi.fn( |
27 | 39 | async ({ provider, ...ctx }: { provider: ProviderPlugin } & Record<string, unknown>) => |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -16,6 +16,7 @@ import { createSubsystemLogger } from "../logging/subsystem.js";
|
16 | 16 | import { |
17 | 17 | groupPluginDiscoveryProvidersByOrder, |
18 | 18 | normalizePluginDiscoveryResult, |
| 19 | +providerMatchesFilter, |
19 | 20 | resolveRuntimePluginDiscoveryProviders, |
20 | 21 | runProviderCatalog, |
21 | 22 | } from "../plugins/provider-discovery.js"; |
@@ -25,17 +26,6 @@ import type { ProviderPlugin } from "../plugins/types.js";
|
25 | 26 | const log = createSubsystemLogger("model-picker-provider-catalog"); |
26 | 27 | const DISCOVERY_ORDERS = ["simple", "profile", "paired", "late"] as const; |
27 | 28 | |
28 | | -function providerMatchesFilter(params: { |
29 | | -provider: Pick<ProviderPlugin, "id" | "aliases" | "hookAliases">; |
30 | | -providerFilter: string; |
31 | | -}): boolean { |
32 | | -return [ |
33 | | -params.provider.id, |
34 | | - ...(params.provider.aliases ?? []), |
35 | | - ...(params.provider.hookAliases ?? []), |
36 | | -].some((providerId) => normalizeProviderId(providerId) === params.providerFilter); |
37 | | -} |
38 | | - |
39 | 29 | function positiveNumber(value: number | undefined): number | undefined { |
40 | 30 | return typeof value === "number" && value > 0 ? value : undefined; |
41 | 31 | } |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -104,6 +104,18 @@ export function groupPluginDiscoveryProvidersByOrder(
|
104 | 104 | return grouped; |
105 | 105 | } |
106 | 106 | |
| 107 | +/** Matches a normalized provider filter against all provider-owned identifiers. */ |
| 108 | +export function providerMatchesFilter(params: { |
| 109 | +provider: Pick<ProviderPlugin, "id" | "aliases" | "hookAliases">; |
| 110 | +providerFilter: string; |
| 111 | +}): boolean { |
| 112 | +return [ |
| 113 | +params.provider.id, |
| 114 | + ...(params.provider.aliases ?? []), |
| 115 | + ...(params.provider.hookAliases ?? []), |
| 116 | +].some((providerId) => normalizeProviderId(providerId) === params.providerFilter); |
| 117 | +} |
| 118 | + |
107 | 119 | /** Normalizes a plugin discovery response into safe provider-config keys. */ |
108 | 120 | export function normalizePluginDiscoveryResult(params: { |
109 | 121 | provider: ProviderPlugin; |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。