mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 17:40:44 +00:00
fix: normalize provider metadata live filters
This commit is contained in:
@@ -23,7 +23,7 @@ import {
|
||||
createProviderApiKeyResolver,
|
||||
createProviderAuthResolver,
|
||||
} from "./models-config.providers.secrets.js";
|
||||
import { findNormalizedProviderValue } from "./provider-id.js";
|
||||
import { findNormalizedProviderValue, normalizeProviderId } from "./provider-id.js";
|
||||
|
||||
const log = createSubsystemLogger("agents/model-providers");
|
||||
|
||||
@@ -133,18 +133,55 @@ function resolvePluginMetadataProviderOwners(
|
||||
if (!pluginMetadataSnapshot) {
|
||||
return undefined;
|
||||
}
|
||||
const normalizedProvider = normalizeProviderId(provider);
|
||||
if (!normalizedProvider) {
|
||||
return undefined;
|
||||
}
|
||||
const owners = new Set<string>();
|
||||
for (const owner of pluginMetadataSnapshot.owners.providers.get(provider) ?? []) {
|
||||
owners.add(owner);
|
||||
}
|
||||
for (const owner of pluginMetadataSnapshot.owners.cliBackends.get(provider) ?? []) {
|
||||
owners.add(owner);
|
||||
}
|
||||
appendNormalizedPluginMetadataOwners(
|
||||
owners,
|
||||
pluginMetadataSnapshot.owners.providers,
|
||||
provider,
|
||||
normalizedProvider,
|
||||
);
|
||||
appendNormalizedPluginMetadataOwners(
|
||||
owners,
|
||||
pluginMetadataSnapshot.owners.cliBackends,
|
||||
provider,
|
||||
normalizedProvider,
|
||||
);
|
||||
return owners.size > 0
|
||||
? [...owners].toSorted((left, right) => left.localeCompare(right))
|
||||
: undefined;
|
||||
}
|
||||
|
||||
function appendNormalizedPluginMetadataOwners(
|
||||
target: Set<string>,
|
||||
ownerMap: ReadonlyMap<string, readonly string[]>,
|
||||
provider: string,
|
||||
normalizedProvider: string,
|
||||
): void {
|
||||
for (const owner of ownerMap.get(provider) ?? []) {
|
||||
target.add(owner);
|
||||
}
|
||||
if (normalizedProvider !== provider) {
|
||||
for (const owner of ownerMap.get(normalizedProvider) ?? []) {
|
||||
target.add(owner);
|
||||
}
|
||||
}
|
||||
for (const [ownedId, owners] of ownerMap.entries()) {
|
||||
if (
|
||||
ownedId !== provider &&
|
||||
ownedId !== normalizedProvider &&
|
||||
normalizeProviderId(ownedId) === normalizedProvider
|
||||
) {
|
||||
for (const owner of owners) {
|
||||
target.add(owner);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function resolveProviderDiscoveryFilterForTest(params: {
|
||||
config?: OpenClawConfig;
|
||||
workspaceDir?: string;
|
||||
|
||||
@@ -90,4 +90,46 @@ describe("resolveProviderDiscoveryFilterForTest", () => {
|
||||
}),
|
||||
).toEqual(["anthropic"]);
|
||||
});
|
||||
|
||||
it("normalizes mixed-case backend ids through plugin metadata owners", () => {
|
||||
const snapshot = {
|
||||
owners: metadataOwners({
|
||||
cliBackends: new Map([["claude-cli", ["anthropic"]]]),
|
||||
}),
|
||||
};
|
||||
|
||||
expect(resolvePluginMetadataProviderOwnersForTest(snapshot, "Claude-CLI")).toEqual([
|
||||
"anthropic",
|
||||
]);
|
||||
expect(
|
||||
resolveProviderDiscoveryFilterForTest({
|
||||
env: liveFilterEnv({
|
||||
OPENCLAW_LIVE_TEST: "1",
|
||||
OPENCLAW_LIVE_PROVIDERS: "Claude-CLI",
|
||||
}),
|
||||
resolveOwners: (provider) => resolvePluginMetadataProviderOwnersForTest(snapshot, provider),
|
||||
}),
|
||||
).toEqual(["anthropic"]);
|
||||
});
|
||||
|
||||
it("normalizes provider aliases through plugin metadata owners", () => {
|
||||
const snapshot = {
|
||||
owners: metadataOwners({
|
||||
providers: new Map([["volcengine", ["volcengine"]]]),
|
||||
}),
|
||||
};
|
||||
|
||||
expect(resolvePluginMetadataProviderOwnersForTest(snapshot, "bytedance")).toEqual([
|
||||
"volcengine",
|
||||
]);
|
||||
expect(
|
||||
resolveProviderDiscoveryFilterForTest({
|
||||
env: liveFilterEnv({
|
||||
OPENCLAW_LIVE_TEST: "1",
|
||||
OPENCLAW_LIVE_PROVIDERS: "bytedance",
|
||||
}),
|
||||
resolveOwners: (provider) => resolvePluginMetadataProviderOwnersForTest(snapshot, provider),
|
||||
}),
|
||||
).toEqual(["volcengine"]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user