Files
openclaw/extensions/nvidia/index.ts
Agustin Rivera 6fd4aa8a27 fix(nvidia): load featured model catalog (#80775)
* fix(nvidia): load featured model catalog

Co-authored-by: CaptainTimon <CaptainTimon@users.noreply.github.com>

* fix(nvidia): widen catalog fetch timeout

* fix(nvidia): cover catalog registration

* fix(picker): include provider catalog loader

* fix(nvidia): guard featured catalog fetch

* fix(nvidia): sync bundled catalog with live API

Replace minimaxai/minimax-m2.5 (MiniMax M2.5) with minimaxai/minimax-m2.7 (Minimax M2.7) and z-ai/glm5 (GLM-5) with z-ai/glm-5.1 (GLM 5.1) in the bundled fallback catalog to match NVIDIA's public featured-models endpoint.

Update docs table and all extension test expectations.

* fix(nvidia): retain shipped catalog refs

* fix(picker): keep alias catalog rows

* fix(nvidia): restore live catalog priority

---------

Co-authored-by: CaptainTimon <CaptainTimon@users.noreply.github.com>
2026-05-28 12:59:55 -07:00

83 lines
2.4 KiB
TypeScript

import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry";
import { applyNvidiaConfig, NVIDIA_DEFAULT_MODEL_REF } from "./onboard.js";
import {
buildLiveNvidiaProvider,
buildNvidiaProvider,
buildSelectableLiveNvidiaProvider,
} from "./provider-catalog.js";
const PROVIDER_ID = "nvidia";
function hasNvidiaApiToken(ctx: {
env: NodeJS.ProcessEnv;
resolveProviderApiKey?: (providerId?: string) => { apiKey: string | undefined };
}) {
return Boolean(
ctx.resolveProviderApiKey?.(PROVIDER_ID).apiKey?.trim() || ctx.env.NVIDIA_API_KEY?.trim(),
);
}
async function buildNvidiaCatalogModels(ctx: {
env: NodeJS.ProcessEnv;
resolveProviderApiKey?: (providerId?: string) => { apiKey: string | undefined };
}) {
const provider = hasNvidiaApiToken(ctx) ? await buildLiveNvidiaProvider() : buildNvidiaProvider();
return provider.models.map((model) => ({
provider: PROVIDER_ID,
id: model.id,
name: model.name ?? model.id,
contextWindow: model.contextWindow,
reasoning: model.reasoning,
input: model.input,
}));
}
export default defineSingleProviderPluginEntry({
id: PROVIDER_ID,
name: "NVIDIA Provider",
description: "Bundled NVIDIA provider plugin",
provider: {
label: "NVIDIA",
docsPath: "/providers/nvidia",
envVars: ["NVIDIA_API_KEY"],
preserveLiteralProviderPrefix: true,
auth: [
{
methodId: "api-key",
label: "NVIDIA API key",
hint: "Direct API key",
optionKey: "nvidiaApiKey",
flagName: "--nvidia-api-key",
envVar: "NVIDIA_API_KEY",
promptMessage: "Enter NVIDIA API key",
defaultModel: NVIDIA_DEFAULT_MODEL_REF,
applyConfig: applyNvidiaConfig,
},
],
catalog: {
buildProvider: buildSelectableLiveNvidiaProvider,
buildStaticProvider: buildNvidiaProvider,
},
augmentModelCatalog: buildNvidiaCatalogModels,
wizard: {
setup: {
choiceId: "nvidia-api-key",
choiceLabel: "NVIDIA API key",
groupId: "nvidia",
groupLabel: "NVIDIA",
groupHint: "Direct API key",
methodId: "api-key",
modelSelection: {
promptWhenAuthChoiceProvided: true,
allowKeepCurrent: false,
},
},
modelPicker: {
label: "NVIDIA (custom)",
hint: "Use NVIDIA-hosted open models",
methodId: "api-key",
},
},
},
});