feat: add Nebius Token Factory provider
- Provider configuration with 11 models (Qwen, DeepSeek, Llama, GLM families) - Credential handling and onboarding flow - Complete documentation (nebius.md, config examples, provider list) - Test coverage for config functions - Changelog entry
This commit is contained in:
parent
84a1994890
commit
062ce60bfa
@ -15,6 +15,7 @@ Status: beta.
|
||||
|
||||
### Changes
|
||||
- Providers: add Venice AI integration; update Moonshot Kimi references to kimi-k2.5; update MiniMax API endpoint/format. (#2762, #3064)
|
||||
- Providers: add Nebius Token Factory integration with onboarding flow (Qwen, DeepSeek, Llama, GLM families).
|
||||
- Providers: add Xiaomi MiMo (mimo-v2-flash) support and onboarding flow. (#3454) Thanks @WqyJh.
|
||||
- Telegram: quote replies, edit-message action, silent sends, sticker support + vision caching, linkPreview toggle, plugin sendPayload support. (#2900, #2394, #2382, #2548, #1700, #1917)
|
||||
- Discord: configurable privileged gateway intents for presences/members. (#2266) Thanks @kentaro.
|
||||
|
||||
@ -53,6 +53,7 @@ describe("models-config", () => {
|
||||
const previousMoonshot = process.env.MOONSHOT_API_KEY;
|
||||
const previousSynthetic = process.env.SYNTHETIC_API_KEY;
|
||||
const previousVenice = process.env.VENICE_API_KEY;
|
||||
const previousNebius = process.env.NEBIUS_API_KEY;
|
||||
const previousXiaomi = process.env.XIAOMI_API_KEY;
|
||||
delete process.env.COPILOT_GITHUB_TOKEN;
|
||||
delete process.env.GH_TOKEN;
|
||||
@ -62,6 +63,7 @@ describe("models-config", () => {
|
||||
delete process.env.MOONSHOT_API_KEY;
|
||||
delete process.env.SYNTHETIC_API_KEY;
|
||||
delete process.env.VENICE_API_KEY;
|
||||
delete process.env.NEBIUS_API_KEY;
|
||||
delete process.env.XIAOMI_API_KEY;
|
||||
|
||||
try {
|
||||
@ -95,6 +97,8 @@ describe("models-config", () => {
|
||||
else process.env.SYNTHETIC_API_KEY = previousSynthetic;
|
||||
if (previousVenice === undefined) delete process.env.VENICE_API_KEY;
|
||||
else process.env.VENICE_API_KEY = previousVenice;
|
||||
if (previousNebius === undefined) delete process.env.NEBIUS_API_KEY;
|
||||
else process.env.NEBIUS_API_KEY = previousNebius;
|
||||
if (previousXiaomi === undefined) delete process.env.XIAOMI_API_KEY;
|
||||
else process.env.XIAOMI_API_KEY = previousXiaomi;
|
||||
}
|
||||
|
||||
@ -17,6 +17,8 @@ import {
|
||||
applySyntheticProviderConfig,
|
||||
applyXiaomiConfig,
|
||||
applyXiaomiProviderConfig,
|
||||
applyNebiusConfig,
|
||||
applyNebiusProviderConfig,
|
||||
OPENROUTER_DEFAULT_MODEL_REF,
|
||||
SYNTHETIC_DEFAULT_MODEL_ID,
|
||||
SYNTHETIC_DEFAULT_MODEL_REF,
|
||||
@ -466,3 +468,44 @@ describe("applyOpenrouterConfig", () => {
|
||||
expect(cfg.agents?.defaults?.model?.fallbacks).toEqual(["anthropic/claude-opus-4-5"]);
|
||||
});
|
||||
});
|
||||
describe("applyNebiusConfig", () => {
|
||||
it("adds Nebius provider with correct settings", () => {
|
||||
const cfg = applyNebiusConfig({});
|
||||
expect(cfg.models?.providers?.nebius).toMatchObject({
|
||||
baseUrl: "https://api.tokenfactory.nebius.com/v1",
|
||||
api: "openai-completions",
|
||||
});
|
||||
expect(cfg.agents?.defaults?.model?.primary).toBe("nebius/zai-org/GLM-4.7-FP8");
|
||||
});
|
||||
|
||||
it("merges Nebius models and keeps existing provider overrides", () => {
|
||||
const cfg = applyNebiusProviderConfig({
|
||||
models: {
|
||||
providers: {
|
||||
nebius: {
|
||||
baseUrl: "https://old.example.com",
|
||||
apiKey: "old-key",
|
||||
api: "openai-completions",
|
||||
models: [
|
||||
{
|
||||
id: "custom-model",
|
||||
name: "Custom",
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
cost: { input: 1, output: 2, cacheRead: 0, cacheWrite: 0 },
|
||||
contextWindow: 1000,
|
||||
maxTokens: 100,
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(cfg.models?.providers?.nebius?.baseUrl).toBe("https://api.tokenfactory.nebius.com/v1");
|
||||
expect(cfg.models?.providers?.nebius?.api).toBe("openai-completions");
|
||||
expect(cfg.models?.providers?.nebius?.apiKey).toBe("old-key");
|
||||
expect(cfg.models?.providers?.nebius?.models.map((m) => m.id)).toContain("custom-model");
|
||||
expect(cfg.models?.providers?.nebius?.models.map((m) => m.id)).toContain("zai-org/GLM-4.7-FP8");
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user