From dd2e8a0dc064393065cd76432a93e48bb5726da4 Mon Sep 17 00:00:00 2001 From: "@mrubens" <2600+mrubens@users.noreply.github.com> Date: Tue, 27 Oct 2026 01:52:13 +0000 Subject: [PATCH 1/2] feat: add Kimi K3.1 Pro model support --- .changeset/kimi-k31-pro-models.md | 5 ++ apps/docs/models.mdx | 24 ++++++ .../commands/task-models/models-dev.test.ts | 83 +++++++++++++++++++ .../trpc/commands/task-models/models-dev.ts | 11 ++- .../kimi-for-coding-opencode-provider.test.ts | 27 ++++++ .../src/kimi-for-coding-opencode-provider.ts | 22 +++++ .../types/src/model-provider-config.test.ts | 24 +++++- packages/types/src/model-provider-config.ts | 10 +++ packages/types/src/recommended-task-models.ts | 7 ++ 9 files changed, 211 insertions(+), 2 deletions(-) create mode 100644 .changeset/kimi-k31-pro-models.md diff --git a/.changeset/kimi-k31-pro-models.md b/.changeset/kimi-k31-pro-models.md new file mode 100644 index 0000000000..78cd3579b7 --- /dev/null +++ b/.changeset/kimi-k31-pro-models.md @@ -0,0 +1,5 @@ +--- +'@roomote/web': patch +--- + +Add Kimi K3.1 Pro and Highspeed to recommended models on verified provider routes, including explicit Kimi for Coding runtime metadata and Requesty catalog compatibility. diff --git a/apps/docs/models.mdx b/apps/docs/models.mdx index ba08ada9b5..b465291ebe 100644 --- a/apps/docs/models.mdx +++ b/apps/docs/models.mdx @@ -252,6 +252,30 @@ version, and whether the error occurs on navigation or when opening a preset. Check migration logs for schema errors separately from invalid saved selections. Do not wipe model settings or reset the database to recover a preset. +### Kimi K3.1 Pro + +**Kimi K3.1 Pro** is recommended through Moonshot AI, OpenRouter, Vercel AI +Gateway, Requesty, Kimi for Coding, and OpenCode Go. **Kimi K3.1 Pro Highspeed** +is also available through Moonshot AI, Vercel AI Gateway, Requesty, and Kimi +for Coding. + +In **Settings > Models**, connect one of these providers and select the model. +For manual configuration, use the provider's full task model ID: + +| Provider | Kimi K3.1 Pro | Kimi K3.1 Pro Highspeed | +| --- | --- | --- | +| Moonshot AI | `moonshotai/kimi-k3.1-pro` | `moonshotai/kimi-k3.1-pro-highspeed` | +| OpenRouter | `openrouter/moonshotai/kimi-k3.1-pro` | — | +| Vercel AI Gateway | `vercel/moonshotai/kimi-k3.1-pro` | `vercel/moonshotai/kimi-k3.1-pro-highspeed` | +| Requesty | `requesty/moonshot/kimi-k3.1-pro` | `requesty/moonshot/kimi-k3.1-pro-highspeed` | +| Kimi for Coding | `kimi-for-coding/k3.1-pro` | `kimi-for-coding/k3.1-pro-highspeed` | +| OpenCode Go | `opencode-go/kimi-k3.1-pro` | — | + +Kimi for Coding requires an eligible membership plan; access to the full 1M +context window and Highspeed depends on the plan. Keep thinking enabled and +start a new session when moving from an older Kimi model. See +[Kimi's model and membership requirements](https://www.kimi.com/code/docs/en/kimi-code/models.html). + ## Env-based setup Most deployments should configure providers from **Settings > Models**. Use diff --git a/apps/web/src/trpc/commands/task-models/models-dev.test.ts b/apps/web/src/trpc/commands/task-models/models-dev.test.ts index bc8ecde7b4..22678e9eca 100644 --- a/apps/web/src/trpc/commands/task-models/models-dev.test.ts +++ b/apps/web/src/trpc/commands/task-models/models-dev.test.ts @@ -86,6 +86,12 @@ describe('resolveModelsDevSlug', () => { expect(resolveModelsDevSlug('kimi-for-coding/kimi-for-coding')).toBe( 'kimi-code-plan-cn/kimi-for-coding', ); + expect(resolveModelsDevSlug('kimi-for-coding/k3.1-pro')).toBe( + 'kimi-code-plan-cn/k3.1-pro', + ); + expect(resolveModelsDevSlug('kimi-for-coding/k3.1-pro-highspeed')).toBe( + 'kimi-code-plan-cn/k3.1-pro-highspeed', + ); }); it('strips the vercel/ prefix for AI Gateway routed models', () => { @@ -477,6 +483,83 @@ describe('lookupModelMetadataFromCatalog', () => { expect(result.displayName).toBe('Claude Sonnet 5'); }); + it.each(['kimi-k3.1-pro', 'kimi-k3.1-pro-highspeed'])( + 'resolves metadata for the live Requesty moonshot/%s route', + (slug) => { + const catalog = buildCatalog({ + gatewayModelsByLowerSlug: { + requesty: { + [slug]: { + limit: { context: 1_048_576 }, + modalities: { input: ['text', 'image', 'video'] }, + reasoning: true, + reasoning_options: [ + { type: 'effort', values: ['low', 'high', 'max'] }, + ], + cost: { input: 2, output: 10 }, + }, + }, + }, + }); + const modelId = `requesty/moonshot/${slug}`; + + expect(lookupModelMetadataFromCatalog(catalog, modelId).metadata).toEqual( + { + contextWindow: 1_048_576, + inputTypes: ['text', 'image', 'video'], + supportsReasoning: true, + supportedReasoningEfforts: ['low', 'high', 'max'], + inputPricePerToken: 0.000002, + outputPricePerToken: 0.00001, + }, + ); + + // When models.dev adopts Requesty's real route, its metadata wins. + catalog.gatewayModelsByLowerSlug.requesty![`moonshot/${slug}`] = { + limit: { context: 262_144 }, + }; + expect( + lookupModelMetadataFromCatalog(catalog, modelId).metadata.contextWindow, + ).toBe(262_144); + }, + ); + + it.each(['k3.1-pro', 'k3.1-pro-highspeed'])( + 'resolves Kimi for Coding %s metadata through the renamed catalog provider', + (slug) => { + const catalog = buildCatalog({ + providers: { + 'kimi-code-plan-cn': { + models: { + [slug]: { + name: 'Kimi K3.1 Pro', + limit: { context: 1_048_576, output: 131_072 }, + modalities: { input: ['text', 'image', 'video'] }, + reasoning: true, + reasoning_options: [ + { type: 'effort', values: ['low', 'high', 'max'] }, + ], + cost: { input: 0, output: 0 }, + }, + }, + }, + }, + }); + + expect( + lookupModelMetadataFromCatalog(catalog, `kimi-for-coding/${slug}`), + ).toMatchObject({ + metadata: { + contextWindow: 1_048_576, + inputTypes: ['text', 'image', 'video'], + supportedReasoningEfforts: ['low', 'high', 'max'], + inputPricePerToken: 0, + outputPricePerToken: 0, + }, + }); + }, + ); + it('falls back to the provider-agnostic models map for requesty-routed models missing from the gateway entry', () => { const catalog = buildCatalog({ models: { diff --git a/apps/web/src/trpc/commands/task-models/models-dev.ts b/apps/web/src/trpc/commands/task-models/models-dev.ts index f5e0af9b11..77f1b10888 100644 --- a/apps/web/src/trpc/commands/task-models/models-dev.ts +++ b/apps/web/src/trpc/commands/task-models/models-dev.ts @@ -319,8 +319,17 @@ export function lookupModelMetadataFromCatalog( ); if (gatewayProviderId) { + const gatewayModels = catalog.gatewayModelsByLowerSlug[gatewayProviderId]; + // Requesty's API publishes these routes with `moonshot/`, while models.dev + // currently uses bare ids. Prefer the real route if the catalog catches up. + const legacyRequestySlug = + gatewayProviderId === 'requesty' && + /^moonshot\/kimi-k3\.1-pro(?:-highspeed)?$/u.test(slug) + ? slug.slice('moonshot/'.length) + : undefined; const gatewayEntry = extractMetadataFromEntry( - catalog.gatewayModelsByLowerSlug[gatewayProviderId]?.[slug.toLowerCase()], + gatewayModels?.[slug.toLowerCase()] ?? + (legacyRequestySlug ? gatewayModels?.[legacyRequestySlug] : undefined), ); if ( Object.keys(gatewayEntry.metadata ?? {}).length > 0 || diff --git a/packages/types/src/__tests__/kimi-for-coding-opencode-provider.test.ts b/packages/types/src/__tests__/kimi-for-coding-opencode-provider.test.ts index 3687ab5638..073c33b9db 100644 --- a/packages/types/src/__tests__/kimi-for-coding-opencode-provider.test.ts +++ b/packages/types/src/__tests__/kimi-for-coding-opencode-provider.test.ts @@ -38,6 +38,8 @@ describe('mergeKimiForCodingProviderConfig', () => { expect(Object.keys(models).sort()).toEqual([ 'k3', 'k3-256k', + 'k3.1-pro', + 'k3.1-pro-highspeed', 'kimi-for-coding', 'kimi-for-coding-highspeed', ]); @@ -53,6 +55,31 @@ describe('mergeKimiForCodingProviderConfig', () => { }); }); + it.each(['k3.1-pro', 'k3.1-pro-highspeed'])( + 'registers %s with full capabilities on the membership endpoint', + (modelId) => { + const merged = mergeKimiForCodingProviderConfig({}, [ + `kimi-for-coding/${modelId}`, + ]); + + expect(merged['kimi-for-coding']).toMatchObject({ + npm: '@ai-sdk/anthropic', + api: 'https://api.kimi.com/coding/v1', + models: { + [modelId]: { + family: 'kimi-k3', + reasoning: true, + temperature: false, + tool_call: true, + attachment: true, + modalities: { input: ['text', 'image', 'video'], output: ['text'] }, + limit: { context: 1_048_576, output: 131_072 }, + }, + }, + }); + }, + ); + it('gives a selected model Kimi added later a usable entry', () => { const merged = mergeKimiForCodingProviderConfig({}, [ ' kimi-for-coding/k4-preview ', diff --git a/packages/types/src/kimi-for-coding-opencode-provider.ts b/packages/types/src/kimi-for-coding-opencode-provider.ts index 8d8e4780ec..b4adfa9b66 100644 --- a/packages/types/src/kimi-for-coding-opencode-provider.ts +++ b/packages/types/src/kimi-for-coding-opencode-provider.ts @@ -47,6 +47,28 @@ type KimiForCodingModelDefinition = { const KIMI_FOR_CODING_MODELS: Readonly< Record > = { + 'k3.1-pro': { + name: 'Kimi K3.1 Pro', + family: 'kimi-k3', + release_date: '2026-10-23', + attachment: true, + reasoning: true, + temperature: false, + tool_call: true, + modalities: { input: ['text', 'image', 'video'], output: ['text'] }, + limit: { context: 1_048_576, output: 131_072 }, + }, + 'k3.1-pro-highspeed': { + name: 'Kimi K3.1 Pro Highspeed', + family: 'kimi-k3', + release_date: '2026-10-23', + attachment: true, + reasoning: true, + temperature: false, + tool_call: true, + modalities: { input: ['text', 'image', 'video'], output: ['text'] }, + limit: { context: 1_048_576, output: 131_072 }, + }, k3: { name: 'Kimi K3', family: 'kimi-k3', diff --git a/packages/types/src/model-provider-config.test.ts b/packages/types/src/model-provider-config.test.ts index ce9b05d66b..9ec693e7de 100644 --- a/packages/types/src/model-provider-config.test.ts +++ b/packages/types/src/model-provider-config.test.ts @@ -538,6 +538,26 @@ describe('SETUP_MODEL_PROVIDER_CATALOG', () => { ['github-copilot', 'github-copilot/claude-opus-5.5'], ], }, + { + displayName: 'Kimi K3.1 Pro', + expected: [ + ['openrouter', 'openrouter/moonshotai/kimi-k3.1-pro'], + ['vercel', 'vercel/moonshotai/kimi-k3.1-pro'], + ['requesty', 'requesty/moonshot/kimi-k3.1-pro'], + ['moonshotai', 'moonshotai/kimi-k3.1-pro'], + ['kimi-for-coding', 'kimi-for-coding/k3.1-pro'], + ['opencode-go', 'opencode-go/kimi-k3.1-pro'], + ], + }, + { + displayName: 'Kimi K3.1 Pro Highspeed', + expected: [ + ['vercel', 'vercel/moonshotai/kimi-k3.1-pro-highspeed'], + ['requesty', 'requesty/moonshot/kimi-k3.1-pro-highspeed'], + ['moonshotai', 'moonshotai/kimi-k3.1-pro-highspeed'], + ['kimi-for-coding', 'kimi-for-coding/k3.1-pro-highspeed'], + ], + }, { displayName: 'Kimi K3', expected: [ @@ -1195,7 +1215,7 @@ describe('SETUP_MODEL_PROVIDER_CATALOG', () => { }); }); - it('maps Requesty to its current models.dev catalog and coding default', () => { + it('maps Requesty to verified model routes and its coding default', () => { const requestyProvider = SETUP_MODEL_PROVIDER_CATALOG.find( (provider) => provider.id === 'requesty', ); @@ -1234,6 +1254,8 @@ describe('SETUP_MODEL_PROVIDER_CATALOG', () => { 'requesty/gemini-3.8-flash', 'requesty/glm-5.3-flash', 'requesty/glm-5.3', + 'requesty/moonshot/kimi-k3.1-pro', + 'requesty/moonshot/kimi-k3.1-pro-highspeed', 'requesty/kimi-k3', 'requesty/xai/grok-4.7', ]); diff --git a/packages/types/src/model-provider-config.ts b/packages/types/src/model-provider-config.ts index 3635c31f73..988c256dcd 100644 --- a/packages/types/src/model-provider-config.ts +++ b/packages/types/src/model-provider-config.ts @@ -788,6 +788,8 @@ export const SETUP_MODEL_PROVIDER_CATALOG = [ 'deepseek-v4-pro-0813': 'vercel/deepseek/deepseek-v4-pro-0813', 'glm-5-3-flash': 'vercel/zai/glm-5.3-flash', 'glm-5-3': 'vercel/zai/glm-5.3', + 'kimi-k3-1-pro': 'vercel/moonshotai/kimi-k3.1-pro', + 'kimi-k3-1-pro-highspeed': 'vercel/moonshotai/kimi-k3.1-pro-highspeed', 'kimi-k3': 'vercel/moonshotai/kimi-k3', 'kimi-k2-7-code': 'vercel/moonshotai/kimi-k2.7-code', 'qwen3-8-max': 'vercel/alibaba/qwen3.8-max', @@ -830,6 +832,9 @@ export const SETUP_MODEL_PROVIDER_CATALOG = [ 'gemini-3-8-flash': 'requesty/gemini-3.8-flash', 'glm-5-3-flash': 'requesty/glm-5.3-flash', 'glm-5-3': 'requesty/glm-5.3', + // Verified against Requesty's live catalog, which includes the lab prefix. + 'kimi-k3-1-pro': 'requesty/moonshot/kimi-k3.1-pro', + 'kimi-k3-1-pro-highspeed': 'requesty/moonshot/kimi-k3.1-pro-highspeed', 'kimi-k3': 'requesty/kimi-k3', 'grok-4-7': 'requesty/xai/grok-4.7', }), @@ -1035,6 +1040,8 @@ export const SETUP_MODEL_PROVIDER_CATALOG = [ linkLabel: 'Open Kimi API Platform keys', }, suggestedTaskModels: mapRecommendedTaskModels({ + 'kimi-k3-1-pro': 'moonshotai/kimi-k3.1-pro', + 'kimi-k3-1-pro-highspeed': 'moonshotai/kimi-k3.1-pro-highspeed', 'kimi-k3': 'moonshotai/kimi-k3', 'kimi-k2-7-code': 'moonshotai/kimi-k2.7-code', }), @@ -1062,6 +1069,8 @@ export const SETUP_MODEL_PROVIDER_CATALOG = [ // renamed upstream to `kimi-for-coding`, the rolling default coding model // (no longer K2.7, so it is not offered under that recommended name). suggestedTaskModels: mapRecommendedTaskModels({ + 'kimi-k3-1-pro': 'kimi-for-coding/k3.1-pro', + 'kimi-k3-1-pro-highspeed': 'kimi-for-coding/k3.1-pro-highspeed', 'kimi-k3': 'kimi-for-coding/k3', }), recommendedRoleModels: { @@ -1143,6 +1152,7 @@ export const SETUP_MODEL_PROVIDER_CATALOG = [ 'glm-5-3': 'opencode-go/glm-5.3', 'grok-4-7': 'opencode-go/grok-4.7', 'kimi-k2-7-code': 'opencode-go/kimi-k2.7-code', + 'kimi-k3-1-pro': 'opencode-go/kimi-k3.1-pro', 'kimi-k3': 'opencode-go/kimi-k3', 'minimax-m3': 'opencode-go/minimax-m3', 'qwen3-8-max': 'opencode-go/qwen3.8-max', diff --git a/packages/types/src/recommended-task-models.ts b/packages/types/src/recommended-task-models.ts index d3ce949814..082de829f6 100644 --- a/packages/types/src/recommended-task-models.ts +++ b/packages/types/src/recommended-task-models.ts @@ -69,6 +69,12 @@ export const RECOMMENDED_TASK_MODELS = [ { id: 'glm-5-3-flash', displayName: 'GLM 5.3 Flash', family: 'GLM' }, { id: 'glm-5-3', displayName: 'GLM 5.3', family: 'GLM' }, { id: 'glm-5-2', displayName: 'GLM 5.2', family: 'GLM' }, + { id: 'kimi-k3-1-pro', displayName: 'Kimi K3.1 Pro', family: 'Kimi' }, + { + id: 'kimi-k3-1-pro-highspeed', + displayName: 'Kimi K3.1 Pro Highspeed', + family: 'Kimi', + }, { id: 'kimi-k3', displayName: 'Kimi K3', family: 'Kimi' }, { id: 'kimi-k2-7-code', displayName: 'Kimi K2.7 Code', family: 'Kimi' }, { id: 'qwen3-8-max', displayName: 'Qwen3.8 Max', family: 'Qwen' }, @@ -129,6 +135,7 @@ export const OPENROUTER_RECOMMENDED_TASK_MODEL_SLUGS = { 'deepseek-v4-pro-0813': 'openrouter/deepseek/deepseek-v4-pro-0813', 'glm-5-3-flash': 'openrouter/z-ai/glm-5.3-flash', 'glm-5-3': 'openrouter/z-ai/glm-5.3', + 'kimi-k3-1-pro': 'openrouter/moonshotai/kimi-k3.1-pro', 'kimi-k3': 'openrouter/moonshotai/kimi-k3', 'kimi-k2-7-code': 'openrouter/moonshotai/kimi-k2.7-code', 'qwen3-8-max': 'openrouter/qwen/qwen3.8-max-0902', From 5e5b6e58d757ea78bf9f0dd31252eff126009733 Mon Sep 17 00:00:00 2001 From: "@mrubens" <2600+mrubens@users.noreply.github.com> Date: Tue, 27 Oct 2026 02:00:11 +0000 Subject: [PATCH 2/2] fix: remove Requesty from Kimi K3.1 model additions --- .changeset/kimi-k31-pro-models.md | 2 +- apps/docs/models.mdx | 5 +-- .../commands/task-models/models-dev.test.ts | 41 ------------------- .../trpc/commands/task-models/models-dev.ts | 11 +---- .../types/src/model-provider-config.test.ts | 6 +-- packages/types/src/model-provider-config.ts | 3 -- 6 files changed, 5 insertions(+), 63 deletions(-) diff --git a/.changeset/kimi-k31-pro-models.md b/.changeset/kimi-k31-pro-models.md index 78cd3579b7..3c3dabb455 100644 --- a/.changeset/kimi-k31-pro-models.md +++ b/.changeset/kimi-k31-pro-models.md @@ -2,4 +2,4 @@ '@roomote/web': patch --- -Add Kimi K3.1 Pro and Highspeed to recommended models on verified provider routes, including explicit Kimi for Coding runtime metadata and Requesty catalog compatibility. +Add Kimi K3.1 Pro and Highspeed to recommended models on verified provider routes, including explicit Kimi for Coding runtime metadata. diff --git a/apps/docs/models.mdx b/apps/docs/models.mdx index b465291ebe..4d5b7d58fe 100644 --- a/apps/docs/models.mdx +++ b/apps/docs/models.mdx @@ -255,8 +255,8 @@ Do not wipe model settings or reset the database to recover a preset. ### Kimi K3.1 Pro **Kimi K3.1 Pro** is recommended through Moonshot AI, OpenRouter, Vercel AI -Gateway, Requesty, Kimi for Coding, and OpenCode Go. **Kimi K3.1 Pro Highspeed** -is also available through Moonshot AI, Vercel AI Gateway, Requesty, and Kimi +Gateway, Kimi for Coding, and OpenCode Go. **Kimi K3.1 Pro Highspeed** +is also available through Moonshot AI, Vercel AI Gateway, and Kimi for Coding. In **Settings > Models**, connect one of these providers and select the model. @@ -267,7 +267,6 @@ For manual configuration, use the provider's full task model ID: | Moonshot AI | `moonshotai/kimi-k3.1-pro` | `moonshotai/kimi-k3.1-pro-highspeed` | | OpenRouter | `openrouter/moonshotai/kimi-k3.1-pro` | — | | Vercel AI Gateway | `vercel/moonshotai/kimi-k3.1-pro` | `vercel/moonshotai/kimi-k3.1-pro-highspeed` | -| Requesty | `requesty/moonshot/kimi-k3.1-pro` | `requesty/moonshot/kimi-k3.1-pro-highspeed` | | Kimi for Coding | `kimi-for-coding/k3.1-pro` | `kimi-for-coding/k3.1-pro-highspeed` | | OpenCode Go | `opencode-go/kimi-k3.1-pro` | — | diff --git a/apps/web/src/trpc/commands/task-models/models-dev.test.ts b/apps/web/src/trpc/commands/task-models/models-dev.test.ts index 22678e9eca..ad47301dcf 100644 --- a/apps/web/src/trpc/commands/task-models/models-dev.test.ts +++ b/apps/web/src/trpc/commands/task-models/models-dev.test.ts @@ -483,47 +483,6 @@ describe('lookupModelMetadataFromCatalog', () => { expect(result.displayName).toBe('Claude Sonnet 5'); }); - it.each(['kimi-k3.1-pro', 'kimi-k3.1-pro-highspeed'])( - 'resolves metadata for the live Requesty moonshot/%s route', - (slug) => { - const catalog = buildCatalog({ - gatewayModelsByLowerSlug: { - requesty: { - [slug]: { - limit: { context: 1_048_576 }, - modalities: { input: ['text', 'image', 'video'] }, - reasoning: true, - reasoning_options: [ - { type: 'effort', values: ['low', 'high', 'max'] }, - ], - cost: { input: 2, output: 10 }, - }, - }, - }, - }); - const modelId = `requesty/moonshot/${slug}`; - - expect(lookupModelMetadataFromCatalog(catalog, modelId).metadata).toEqual( - { - contextWindow: 1_048_576, - inputTypes: ['text', 'image', 'video'], - supportsReasoning: true, - supportedReasoningEfforts: ['low', 'high', 'max'], - inputPricePerToken: 0.000002, - outputPricePerToken: 0.00001, - }, - ); - - // When models.dev adopts Requesty's real route, its metadata wins. - catalog.gatewayModelsByLowerSlug.requesty![`moonshot/${slug}`] = { - limit: { context: 262_144 }, - }; - expect( - lookupModelMetadataFromCatalog(catalog, modelId).metadata.contextWindow, - ).toBe(262_144); - }, - ); - it.each(['k3.1-pro', 'k3.1-pro-highspeed'])( 'resolves Kimi for Coding %s metadata through the renamed catalog provider', (slug) => { diff --git a/apps/web/src/trpc/commands/task-models/models-dev.ts b/apps/web/src/trpc/commands/task-models/models-dev.ts index 77f1b10888..f5e0af9b11 100644 --- a/apps/web/src/trpc/commands/task-models/models-dev.ts +++ b/apps/web/src/trpc/commands/task-models/models-dev.ts @@ -319,17 +319,8 @@ export function lookupModelMetadataFromCatalog( ); if (gatewayProviderId) { - const gatewayModels = catalog.gatewayModelsByLowerSlug[gatewayProviderId]; - // Requesty's API publishes these routes with `moonshot/`, while models.dev - // currently uses bare ids. Prefer the real route if the catalog catches up. - const legacyRequestySlug = - gatewayProviderId === 'requesty' && - /^moonshot\/kimi-k3\.1-pro(?:-highspeed)?$/u.test(slug) - ? slug.slice('moonshot/'.length) - : undefined; const gatewayEntry = extractMetadataFromEntry( - gatewayModels?.[slug.toLowerCase()] ?? - (legacyRequestySlug ? gatewayModels?.[legacyRequestySlug] : undefined), + catalog.gatewayModelsByLowerSlug[gatewayProviderId]?.[slug.toLowerCase()], ); if ( Object.keys(gatewayEntry.metadata ?? {}).length > 0 || diff --git a/packages/types/src/model-provider-config.test.ts b/packages/types/src/model-provider-config.test.ts index 9ec693e7de..38fd3bfc54 100644 --- a/packages/types/src/model-provider-config.test.ts +++ b/packages/types/src/model-provider-config.test.ts @@ -543,7 +543,6 @@ describe('SETUP_MODEL_PROVIDER_CATALOG', () => { expected: [ ['openrouter', 'openrouter/moonshotai/kimi-k3.1-pro'], ['vercel', 'vercel/moonshotai/kimi-k3.1-pro'], - ['requesty', 'requesty/moonshot/kimi-k3.1-pro'], ['moonshotai', 'moonshotai/kimi-k3.1-pro'], ['kimi-for-coding', 'kimi-for-coding/k3.1-pro'], ['opencode-go', 'opencode-go/kimi-k3.1-pro'], @@ -553,7 +552,6 @@ describe('SETUP_MODEL_PROVIDER_CATALOG', () => { displayName: 'Kimi K3.1 Pro Highspeed', expected: [ ['vercel', 'vercel/moonshotai/kimi-k3.1-pro-highspeed'], - ['requesty', 'requesty/moonshot/kimi-k3.1-pro-highspeed'], ['moonshotai', 'moonshotai/kimi-k3.1-pro-highspeed'], ['kimi-for-coding', 'kimi-for-coding/k3.1-pro-highspeed'], ], @@ -1215,7 +1213,7 @@ describe('SETUP_MODEL_PROVIDER_CATALOG', () => { }); }); - it('maps Requesty to verified model routes and its coding default', () => { + it('maps Requesty to its current models.dev catalog and coding default', () => { const requestyProvider = SETUP_MODEL_PROVIDER_CATALOG.find( (provider) => provider.id === 'requesty', ); @@ -1254,8 +1252,6 @@ describe('SETUP_MODEL_PROVIDER_CATALOG', () => { 'requesty/gemini-3.8-flash', 'requesty/glm-5.3-flash', 'requesty/glm-5.3', - 'requesty/moonshot/kimi-k3.1-pro', - 'requesty/moonshot/kimi-k3.1-pro-highspeed', 'requesty/kimi-k3', 'requesty/xai/grok-4.7', ]); diff --git a/packages/types/src/model-provider-config.ts b/packages/types/src/model-provider-config.ts index 988c256dcd..af904012a7 100644 --- a/packages/types/src/model-provider-config.ts +++ b/packages/types/src/model-provider-config.ts @@ -832,9 +832,6 @@ export const SETUP_MODEL_PROVIDER_CATALOG = [ 'gemini-3-8-flash': 'requesty/gemini-3.8-flash', 'glm-5-3-flash': 'requesty/glm-5.3-flash', 'glm-5-3': 'requesty/glm-5.3', - // Verified against Requesty's live catalog, which includes the lab prefix. - 'kimi-k3-1-pro': 'requesty/moonshot/kimi-k3.1-pro', - 'kimi-k3-1-pro-highspeed': 'requesty/moonshot/kimi-k3.1-pro-highspeed', 'kimi-k3': 'requesty/kimi-k3', 'grok-4-7': 'requesty/xai/grok-4.7', }),