From ed3904ddd3c4a8d4afa27ff364df314392137998 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Mon, 18 May 2026 00:14:31 +0200 Subject: [PATCH] fix(ai): switch xiaomi models to openai completions closes #4505 --- packages/ai/CHANGELOG.md | 4 + packages/ai/scripts/generate-models.ts | 10 +-- packages/ai/src/models.generated.ts | 120 ++++++++++++------------- 3 files changed, 69 insertions(+), 65 deletions(-) diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 19ae4c71..23ff630a 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- Fixed Xiaomi MiMo model metadata to use the OpenAI-compatible endpoints and `openai-completions` API, restoring multi-turn thinking/tool-call sessions ([#4505](https://github.com/earendil-works/pi/issues/4505)). + ## [0.75.0] - 2026-05-17 ### Breaking Changes diff --git a/packages/ai/scripts/generate-models.ts b/packages/ai/scripts/generate-models.ts index 5a694a20..a836e873 100644 --- a/packages/ai/scripts/generate-models.ts +++ b/packages/ai/scripts/generate-models.ts @@ -1074,10 +1074,10 @@ async function loadModelsDevData(): Promise[]> { // keys from platform.xiaomimimo.com). The three `xiaomi-token-plan-*` // providers cover prepaid Token Plan endpoints in cn / ams / sgp. const xiaomiVariants = [ - { provider: "xiaomi", baseUrl: "https://api.xiaomimimo.com/anthropic" }, - { provider: "xiaomi-token-plan-cn", baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic" }, - { provider: "xiaomi-token-plan-ams", baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic" }, - { provider: "xiaomi-token-plan-sgp", baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic" }, + { provider: "xiaomi", baseUrl: "https://api.xiaomimimo.com/v1" }, + { provider: "xiaomi-token-plan-cn", baseUrl: "https://token-plan-cn.xiaomimimo.com/v1" }, + { provider: "xiaomi-token-plan-ams", baseUrl: "https://token-plan-ams.xiaomimimo.com/v1" }, + { provider: "xiaomi-token-plan-sgp", baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1" }, ] as const; if (data.xiaomi?.models) { @@ -1089,7 +1089,7 @@ async function loadModelsDevData(): Promise[]> { models.push({ id: modelId, name: m.name || modelId, - api: "anthropic-messages", + api: "openai-completions", provider, baseUrl, reasoning: m.reasoning === true, diff --git a/packages/ai/src/models.generated.ts b/packages/ai/src/models.generated.ts index 791857bf..5b980251 100644 --- a/packages/ai/src/models.generated.ts +++ b/packages/ai/src/models.generated.ts @@ -15876,9 +15876,9 @@ export const MODELS = { "mimo-v2-flash": { id: "mimo-v2-flash", name: "MiMo-V2-Flash", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi", - baseUrl: "https://api.xiaomimimo.com/anthropic", + baseUrl: "https://api.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -15889,13 +15889,13 @@ export const MODELS = { }, contextWindow: 262144, maxTokens: 65536, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2-omni": { id: "mimo-v2-omni", name: "MiMo-V2-Omni", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi", - baseUrl: "https://api.xiaomimimo.com/anthropic", + baseUrl: "https://api.xiaomimimo.com/v1", reasoning: true, input: ["text", "image"], cost: { @@ -15906,13 +15906,13 @@ export const MODELS = { }, contextWindow: 262144, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2-pro": { id: "mimo-v2-pro", name: "MiMo-V2-Pro", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi", - baseUrl: "https://api.xiaomimimo.com/anthropic", + baseUrl: "https://api.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -15923,13 +15923,13 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2.5": { id: "mimo-v2.5", name: "MiMo-V2.5", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi", - baseUrl: "https://api.xiaomimimo.com/anthropic", + baseUrl: "https://api.xiaomimimo.com/v1", reasoning: true, input: ["text", "image"], cost: { @@ -15940,13 +15940,13 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2.5-pro": { id: "mimo-v2.5-pro", name: "MiMo-V2.5-Pro", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi", - baseUrl: "https://api.xiaomimimo.com/anthropic", + baseUrl: "https://api.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -15957,15 +15957,15 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, }, "xiaomi-token-plan-ams": { "mimo-v2-flash": { id: "mimo-v2-flash", name: "MiMo-V2-Flash", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-ams", - baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-ams.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -15976,13 +15976,13 @@ export const MODELS = { }, contextWindow: 262144, maxTokens: 65536, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2-omni": { id: "mimo-v2-omni", name: "MiMo-V2-Omni", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-ams", - baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-ams.xiaomimimo.com/v1", reasoning: true, input: ["text", "image"], cost: { @@ -15993,13 +15993,13 @@ export const MODELS = { }, contextWindow: 262144, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2-pro": { id: "mimo-v2-pro", name: "MiMo-V2-Pro", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-ams", - baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-ams.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -16010,13 +16010,13 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2.5": { id: "mimo-v2.5", name: "MiMo-V2.5", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-ams", - baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-ams.xiaomimimo.com/v1", reasoning: true, input: ["text", "image"], cost: { @@ -16027,13 +16027,13 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2.5-pro": { id: "mimo-v2.5-pro", name: "MiMo-V2.5-Pro", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-ams", - baseUrl: "https://token-plan-ams.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-ams.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -16044,15 +16044,15 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, }, "xiaomi-token-plan-cn": { "mimo-v2-flash": { id: "mimo-v2-flash", name: "MiMo-V2-Flash", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-cn", - baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-cn.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -16063,13 +16063,13 @@ export const MODELS = { }, contextWindow: 262144, maxTokens: 65536, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2-omni": { id: "mimo-v2-omni", name: "MiMo-V2-Omni", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-cn", - baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-cn.xiaomimimo.com/v1", reasoning: true, input: ["text", "image"], cost: { @@ -16080,13 +16080,13 @@ export const MODELS = { }, contextWindow: 262144, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2-pro": { id: "mimo-v2-pro", name: "MiMo-V2-Pro", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-cn", - baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-cn.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -16097,13 +16097,13 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2.5": { id: "mimo-v2.5", name: "MiMo-V2.5", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-cn", - baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-cn.xiaomimimo.com/v1", reasoning: true, input: ["text", "image"], cost: { @@ -16114,13 +16114,13 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2.5-pro": { id: "mimo-v2.5-pro", name: "MiMo-V2.5-Pro", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-cn", - baseUrl: "https://token-plan-cn.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-cn.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -16131,15 +16131,15 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, }, "xiaomi-token-plan-sgp": { "mimo-v2-flash": { id: "mimo-v2-flash", name: "MiMo-V2-Flash", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-sgp", - baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -16150,13 +16150,13 @@ export const MODELS = { }, contextWindow: 262144, maxTokens: 65536, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2-omni": { id: "mimo-v2-omni", name: "MiMo-V2-Omni", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-sgp", - baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1", reasoning: true, input: ["text", "image"], cost: { @@ -16167,13 +16167,13 @@ export const MODELS = { }, contextWindow: 262144, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2-pro": { id: "mimo-v2-pro", name: "MiMo-V2-Pro", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-sgp", - baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -16184,13 +16184,13 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2.5": { id: "mimo-v2.5", name: "MiMo-V2.5", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-sgp", - baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1", reasoning: true, input: ["text", "image"], cost: { @@ -16201,13 +16201,13 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, "mimo-v2.5-pro": { id: "mimo-v2.5-pro", name: "MiMo-V2.5-Pro", - api: "anthropic-messages", + api: "openai-completions", provider: "xiaomi-token-plan-sgp", - baseUrl: "https://token-plan-sgp.xiaomimimo.com/anthropic", + baseUrl: "https://token-plan-sgp.xiaomimimo.com/v1", reasoning: true, input: ["text"], cost: { @@ -16218,7 +16218,7 @@ export const MODELS = { }, contextWindow: 1048576, maxTokens: 131072, - } satisfies Model<"anthropic-messages">, + } satisfies Model<"openai-completions">, }, "zai": { "glm-4.5-air": {