fix: honor plugin disablement in provider index rows

This commit is contained in:
Shakker
2026-04-26 07:11:56 +01:00
parent f48dc96d43
commit 78fb0ade09
3 changed files with 49 additions and 3 deletions

View File

@@ -76,7 +76,7 @@ export async function modelsListCommand(
if (!useManifestCatalogFastPath && !useProviderCatalogFastPath && opts.all && providerFilter) {
const { loadProviderIndexCatalogRowsForList } =
await import("./list.provider-index-catalog.js");
providerIndexCatalogRows = loadProviderIndexCatalogRowsForList({ providerFilter });
providerIndexCatalogRows = loadProviderIndexCatalogRowsForList({ cfg, providerFilter });
}
const useProviderIndexCatalogFastPath = providerIndexCatalogRows.length > 0;
const shouldLoadRegistry = modelRowSourcesRequireRegistry({

View File

@@ -0,0 +1,31 @@
import { describe, expect, it } from "vitest";
import type { OpenClawConfig } from "../../config/types.openclaw.js";
import { loadProviderIndexCatalogRowsForList } from "./list.provider-index-catalog.js";
const baseConfig = {} satisfies OpenClawConfig;
describe("loadProviderIndexCatalogRowsForList", () => {
it("returns provider-index preview rows when the provider plugin is enabled", () => {
expect(
loadProviderIndexCatalogRowsForList({
cfg: baseConfig,
providerFilter: "moonshot",
}).map((row) => row.ref),
).toContain("moonshot/kimi-k2.6");
});
it("suppresses provider-index preview rows when the provider plugin is disabled", () => {
expect(
loadProviderIndexCatalogRowsForList({
cfg: {
plugins: {
entries: {
moonshot: { enabled: false },
},
},
},
providerFilter: "moonshot",
}),
).toEqual([]);
});
});

View File

@@ -1,19 +1,34 @@
import type { OpenClawConfig } from "../../config/types.openclaw.js";
import {
loadOpenClawProviderIndex,
normalizeModelCatalogProviderId,
planProviderIndexModelCatalogRows,
} from "../../model-catalog/index.js";
import type { NormalizedModelCatalogRow } from "../../model-catalog/index.js";
import { normalizePluginsConfig, resolveEffectiveEnableState } from "../../plugins/config-state.js";
export function loadProviderIndexCatalogRowsForList(params: {
providerFilter: string;
cfg: OpenClawConfig;
}): readonly NormalizedModelCatalogRow[] {
const providerFilter = normalizeModelCatalogProviderId(params.providerFilter);
if (!providerFilter) {
return [];
}
const index = loadOpenClawProviderIndex();
return planProviderIndexModelCatalogRows({
index: loadOpenClawProviderIndex(),
index,
providerFilter,
}).rows;
})
.entries.filter(
(entry) =>
resolveEffectiveEnableState({
id: entry.pluginId,
origin: "bundled",
config: normalizePluginsConfig(params.cfg.plugins),
rootConfig: params.cfg,
enabledByDefault: true,
}).enabled,
)
.flatMap((entry) => entry.rows);
}