diff --git a/src/commands/models/list.list-command.ts b/src/commands/models/list.list-command.ts index 07dab4c2a7c..be3f411c0d5 100644 --- a/src/commands/models/list.list-command.ts +++ b/src/commands/models/list.list-command.ts @@ -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({ diff --git a/src/commands/models/list.provider-index-catalog.test.ts b/src/commands/models/list.provider-index-catalog.test.ts new file mode 100644 index 00000000000..b5124ea0f98 --- /dev/null +++ b/src/commands/models/list.provider-index-catalog.test.ts @@ -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([]); + }); +}); diff --git a/src/commands/models/list.provider-index-catalog.ts b/src/commands/models/list.provider-index-catalog.ts index 5371fe64027..7052cccf3c1 100644 --- a/src/commands/models/list.provider-index-catalog.ts +++ b/src/commands/models/list.provider-index-catalog.ts @@ -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); }