Files
openclaw/extensions/xiaomi/onboard.test.ts
NianJiu da5d1a6215 feat(xiaomi): add Token Plan provider support
Adds first-class Xiaomi Token Plan provider support with regional onboarding/configuration, token-plan key prefix validation, runtime pricing/catalog metadata, and docs/test coverage.

Keeps Token Plan model catalog discovery runtime-owned so region-specific base URLs are required and the provider cannot silently fall back to the static SGP manifest catalog.

Fixes #86169.

Verification:
- node scripts/run-vitest.mjs src/plugins/provider-discovery.runtime.test.ts extensions/xiaomi/index.test.ts src/plugins/manifest-model-catalog.test.ts src/model-catalog/manifest-planner.test.ts
- git diff --check
- autoreview --mode local: clean, no accepted/actionable findings
- CI run 26678998539: all relevant checks passed; check-prod-types failed on unrelated browser unused-function issue already present on origin/main

Co-authored-by: NianJiuZst <3235467914@qq.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-05-30 11:37:36 +02:00

85 lines
3.1 KiB
TypeScript

import {
expectProviderOnboardMergedLegacyConfig,
expectProviderOnboardPrimaryModel,
} from "openclaw/plugin-sdk/provider-test-contracts";
import { describe, expect, it } from "vitest";
import {
applyXiaomiConfig,
applyXiaomiProviderConfig,
applyXiaomiTokenPlanConfig,
applyXiaomiTokenPlanProviderConfig,
} from "./onboard.js";
import { buildXiaomiProvider, buildXiaomiTokenPlanProvider } from "./provider-catalog.js";
describe("xiaomi onboard", () => {
it("adds Xiaomi provider with correct settings", () => {
const cfg = applyXiaomiConfig({});
const provider = cfg.models?.providers?.xiaomi;
expect(provider).toEqual(buildXiaomiProvider());
expect(provider?.models.map((m) => m.id)).toEqual([
"mimo-v2-flash",
"mimo-v2-pro",
"mimo-v2-omni",
]);
expect(cfg.agents?.defaults?.models?.["xiaomi/mimo-v2-flash"]).toEqual({ alias: "Xiaomi" });
expect(cfg.agents?.defaults?.model).toEqual({ primary: "xiaomi/mimo-v2-flash" });
expectProviderOnboardPrimaryModel({
applyConfig: applyXiaomiConfig,
modelRef: "xiaomi/mimo-v2-flash",
});
});
it("merges Xiaomi models and keeps existing provider overrides", () => {
const provider = expectProviderOnboardMergedLegacyConfig({
applyProviderConfig: applyXiaomiProviderConfig,
providerId: "xiaomi",
providerApi: "openai-completions",
baseUrl: "https://api.xiaomimimo.com/v1",
legacyApi: "openai-completions",
legacyModelId: "custom-model",
legacyModelName: "Custom",
});
expect(provider?.models.map((m) => m.id)).toEqual([
"custom-model",
"mimo-v2-flash",
"mimo-v2-pro",
"mimo-v2-omni",
]);
});
it("adds Xiaomi Token Plan provider with a regional endpoint preset", () => {
const cfg = applyXiaomiTokenPlanConfig({}, "ams");
const provider = cfg.models?.providers?.["xiaomi-token-plan"];
expect(provider).toEqual({
...buildXiaomiTokenPlanProvider(),
baseUrl: "https://token-plan-ams.xiaomimimo.com/v1",
});
expect(provider?.models.map((m) => m.id)).toEqual(["mimo-v2.5-pro", "mimo-v2.5"]);
expect(cfg.agents?.defaults?.models?.["xiaomi-token-plan/mimo-v2.5-pro"]).toEqual({
alias: "Xiaomi MiMo V2.5 Pro",
});
expect(cfg.agents?.defaults?.model).toEqual({ primary: "xiaomi-token-plan/mimo-v2.5-pro" });
expectProviderOnboardPrimaryModel({
applyConfig: (config) => applyXiaomiTokenPlanConfig(config, "ams"),
modelRef: "xiaomi-token-plan/mimo-v2.5-pro",
});
});
it("merges Xiaomi Token Plan models and rewrites the selected regional base URL", () => {
const provider = expectProviderOnboardMergedLegacyConfig({
applyProviderConfig: (config) => applyXiaomiTokenPlanProviderConfig(config, "sgp"),
providerId: "xiaomi-token-plan",
providerApi: "openai-completions",
baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1",
legacyApi: "openai-completions",
legacyModelId: "custom-token-plan-model",
legacyModelName: "Custom Token Plan",
});
expect(provider?.models.map((m) => m.id)).toEqual([
"custom-token-plan-model",
"mimo-v2.5-pro",
"mimo-v2.5",
]);
});
});