mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 16:12:52 +00:00
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>
109 lines
3.2 KiB
TypeScript
109 lines
3.2 KiB
TypeScript
import {
|
|
createDefaultModelsPresetAppliers,
|
|
type OpenClawConfig,
|
|
} from "openclaw/plugin-sdk/provider-onboard";
|
|
import {
|
|
buildXiaomiProvider,
|
|
buildXiaomiTokenPlanProvider,
|
|
resolveXiaomiTokenPlanBaseUrl,
|
|
XIAOMI_DEFAULT_MODEL_ID,
|
|
XIAOMI_PROVIDER_ID,
|
|
XIAOMI_TOKEN_PLAN_DEFAULT_MODEL_ID,
|
|
XIAOMI_TOKEN_PLAN_PROVIDER_ID,
|
|
type XiaomiTokenPlanRegion,
|
|
} from "./provider-catalog.js";
|
|
|
|
export const XIAOMI_DEFAULT_MODEL_REF = `${XIAOMI_PROVIDER_ID}/${XIAOMI_DEFAULT_MODEL_ID}`;
|
|
export const XIAOMI_TOKEN_PLAN_DEFAULT_MODEL_REF = `${XIAOMI_TOKEN_PLAN_PROVIDER_ID}/${XIAOMI_TOKEN_PLAN_DEFAULT_MODEL_ID}`;
|
|
|
|
const xiaomiPresetAppliers = createDefaultModelsPresetAppliers({
|
|
primaryModelRef: XIAOMI_DEFAULT_MODEL_REF,
|
|
resolveParams: (_cfg: OpenClawConfig) => {
|
|
const defaultProvider = buildXiaomiProvider();
|
|
return {
|
|
providerId: XIAOMI_PROVIDER_ID,
|
|
api: defaultProvider.api ?? "openai-completions",
|
|
baseUrl: defaultProvider.baseUrl,
|
|
defaultModels: defaultProvider.models ?? [],
|
|
defaultModelId: XIAOMI_DEFAULT_MODEL_ID,
|
|
aliases: [{ modelRef: XIAOMI_DEFAULT_MODEL_REF, alias: "Xiaomi" }],
|
|
};
|
|
},
|
|
});
|
|
|
|
const xiaomiTokenPlanPresetAppliers = createDefaultModelsPresetAppliers({
|
|
primaryModelRef: XIAOMI_TOKEN_PLAN_DEFAULT_MODEL_REF,
|
|
resolveParams: (_cfg: OpenClawConfig) => {
|
|
const defaultProvider = buildXiaomiTokenPlanProvider();
|
|
return {
|
|
providerId: XIAOMI_TOKEN_PLAN_PROVIDER_ID,
|
|
api: defaultProvider.api ?? "openai-completions",
|
|
baseUrl: defaultProvider.baseUrl,
|
|
defaultModels: defaultProvider.models ?? [],
|
|
defaultModelId: XIAOMI_TOKEN_PLAN_DEFAULT_MODEL_ID,
|
|
aliases: (() => {
|
|
const defaultModel = defaultProvider.models?.find(
|
|
(m) => m.id === XIAOMI_TOKEN_PLAN_DEFAULT_MODEL_ID,
|
|
);
|
|
return [
|
|
{
|
|
modelRef: XIAOMI_TOKEN_PLAN_DEFAULT_MODEL_REF,
|
|
alias: defaultModel?.name ?? "MiMo V2.5 Pro",
|
|
},
|
|
];
|
|
})(),
|
|
};
|
|
},
|
|
});
|
|
|
|
function withProviderBaseUrl(
|
|
cfg: OpenClawConfig,
|
|
providerId: string,
|
|
baseUrl: string,
|
|
): OpenClawConfig {
|
|
const providers: Record<string, unknown> = {
|
|
...cfg.models?.providers,
|
|
[providerId]: {
|
|
...cfg.models?.providers?.[providerId],
|
|
baseUrl,
|
|
},
|
|
};
|
|
return {
|
|
...cfg,
|
|
models: {
|
|
...cfg.models,
|
|
providers,
|
|
},
|
|
} as OpenClawConfig;
|
|
}
|
|
|
|
export function applyXiaomiProviderConfig(cfg: OpenClawConfig): OpenClawConfig {
|
|
return xiaomiPresetAppliers.applyProviderConfig(cfg);
|
|
}
|
|
|
|
export function applyXiaomiConfig(cfg: OpenClawConfig): OpenClawConfig {
|
|
return xiaomiPresetAppliers.applyConfig(cfg);
|
|
}
|
|
|
|
export function applyXiaomiTokenPlanProviderConfig(
|
|
cfg: OpenClawConfig,
|
|
region: XiaomiTokenPlanRegion,
|
|
): OpenClawConfig {
|
|
return withProviderBaseUrl(
|
|
xiaomiTokenPlanPresetAppliers.applyProviderConfig(cfg),
|
|
XIAOMI_TOKEN_PLAN_PROVIDER_ID,
|
|
resolveXiaomiTokenPlanBaseUrl(region),
|
|
);
|
|
}
|
|
|
|
export function applyXiaomiTokenPlanConfig(
|
|
cfg: OpenClawConfig,
|
|
region: XiaomiTokenPlanRegion,
|
|
): OpenClawConfig {
|
|
return withProviderBaseUrl(
|
|
xiaomiTokenPlanPresetAppliers.applyConfig(cfg),
|
|
XIAOMI_TOKEN_PLAN_PROVIDER_ID,
|
|
resolveXiaomiTokenPlanBaseUrl(region),
|
|
);
|
|
}
|