From dd38df6b8d7a5367c06b14b0258a271af8545fd4 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Thu, 19 Feb 2026 10:36:42 +0700 Subject: [PATCH] fix(cliproxy): add kimi-k2 pricing and kimi catalog tests Address review feedback from PR #585: - Add missing kimi-k2 pricing entry ($0.60/$2.50, cache $0.15) to avoid fallback to unknown model pricing - Add kimi provider tests to model-catalog.test.js verifying catalog structure, default model, and model IDs --- src/web-server/model-pricing.ts | 6 +++++ tests/unit/cliproxy/model-catalog.test.js | 27 +++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/src/web-server/model-pricing.ts b/src/web-server/model-pricing.ts index 88d008f4..dfc654a6 100644 --- a/src/web-server/model-pricing.ts +++ b/src/web-server/model-pricing.ts @@ -489,6 +489,12 @@ const PRICING_REGISTRY: Record = { cacheCreationPerMillion: 0.0, cacheReadPerMillion: 0.15, }, + 'kimi-k2': { + inputPerMillion: 0.6, + outputPerMillion: 2.5, + cacheCreationPerMillion: 0.0, + cacheReadPerMillion: 0.15, + }, 'kimi-k2-instruct': { inputPerMillion: 1.0, outputPerMillion: 3.0, diff --git a/tests/unit/cliproxy/model-catalog.test.js b/tests/unit/cliproxy/model-catalog.test.js index cbf631cc..1f0fdbf0 100644 --- a/tests/unit/cliproxy/model-catalog.test.js +++ b/tests/unit/cliproxy/model-catalog.test.js @@ -36,6 +36,33 @@ describe('Model Catalog', () => { }); }); + describe('Kimi models', () => { + it('contains Kimi provider catalog', () => { + const { MODEL_CATALOG } = modelCatalog; + assert(MODEL_CATALOG.kimi, 'Should have kimi provider'); + assert.strictEqual(MODEL_CATALOG.kimi.provider, 'kimi'); + assert.strictEqual(MODEL_CATALOG.kimi.displayName, 'Kimi (Moonshot)'); + }); + + it('has correct default model', () => { + const { MODEL_CATALOG } = modelCatalog; + assert.strictEqual(MODEL_CATALOG.kimi.defaultModel, 'kimi-k2.5'); + }); + + it('includes K2.5, K2 Thinking, K2', () => { + const { MODEL_CATALOG } = modelCatalog; + const ids = MODEL_CATALOG.kimi.models.map((m) => m.id); + assert(ids.includes('kimi-k2.5'), 'Should include kimi-k2.5'); + assert(ids.includes('kimi-k2-thinking'), 'Should include kimi-k2-thinking'); + assert(ids.includes('kimi-k2'), 'Should include kimi-k2'); + }); + + it('has 3 models total', () => { + const { MODEL_CATALOG } = modelCatalog; + assert.strictEqual(MODEL_CATALOG.kimi.models.length, 3); + }); + }); + describe('AGY models', () => { it('has correct default model', () => { const { MODEL_CATALOG } = modelCatalog;