


























@@ -1,5 +1,9 @@
11import { describe, expect, it } from "vitest";
2-import { resolveProviderDiscoveryFilterForTest } from "./models-config.providers.implicit.js";
2+import type { PluginMetadataSnapshotOwnerMaps } from "../plugins/plugin-metadata-snapshot.js";
3+import {
4+resolvePluginMetadataProviderOwnersForTest,
5+resolveProviderDiscoveryFilterForTest,
6+} from "./models-config.providers.implicit.js";
3748function liveFilterEnv(overrides: NodeJS.ProcessEnv): NodeJS.ProcessEnv {
59return {
@@ -12,6 +16,22 @@ function resolveOwners(provider: string): readonly string[] | undefined {
1216return provider === "claude-cli" ? ["anthropic"] : undefined;
1317}
141819+function metadataOwners(
20+overrides: Partial<PluginMetadataSnapshotOwnerMaps>,
21+): PluginMetadataSnapshotOwnerMaps {
22+return {
23+channels: new Map(),
24+channelConfigs: new Map(),
25+providers: new Map(),
26+modelCatalogProviders: new Map(),
27+cliBackends: new Map(),
28+setupProviders: new Map(),
29+commandAliases: new Map(),
30+contracts: new Map(),
31+ ...overrides,
32+};
33+}
34+1535describe("resolveProviderDiscoveryFilterForTest", () => {
1636it("maps live provider backend ids to owning plugin ids", () => {
1737expect(
@@ -48,4 +68,26 @@ describe("resolveProviderDiscoveryFilterForTest", () => {
4868}),
4969).toEqual(["openrouter"]);
5070});
71+72+it("maps live provider backend ids through plugin metadata cli backend owners", () => {
73+const snapshot = {
74+owners: metadataOwners({
75+cliBackends: new Map([["claude-cli", ["anthropic"]]]),
76+}),
77+};
78+79+const resolveMetadataOwners = (provider: string) =>
80+resolvePluginMetadataProviderOwnersForTest(snapshot, provider);
81+82+expect(resolveMetadataOwners("claude-cli")).toEqual(["anthropic"]);
83+expect(
84+resolveProviderDiscoveryFilterForTest({
85+env: liveFilterEnv({
86+OPENCLAW_LIVE_TEST: "1",
87+OPENCLAW_LIVE_PROVIDERS: "claude-cli",
88+}),
89+resolveOwners: resolveMetadataOwners,
90+}),
91+).toEqual(["anthropic"]);
92+});
5193});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。