fix(cliproxy): add Kimi model catalog, sync, and pricing to dashboard

- Add kimi entry to UI model-catalogs.ts with K2.5, K2 Thinking, K2
  models and preset mappings so dashboard shows available models
- Add kimi to CHANNEL_TO_PROVIDER and SYNCABLE_PROVIDERS in
  catalog-cache.ts so models sync from upstream CLIProxyAPI
- Add kimi/moonshot to provider-editor ownerMap for model filtering
- Update Kimi model pricing to match official Kimi Platform rates:
  kimi-k2.5 ($0.60/$3.00), kimi-k2-thinking ($0.60/$2.50),
  kimi-k2-turbo-preview ($1.15/$8.00)
- Add missing kimi-k2.5 pricing entry

Closes #581
This commit is contained in:
Tam Nhu Tran
2026-02-19 10:28:40 +07:00
parent 63f1bacfbe
commit 3767b95735
4 changed files with 61 additions and 18 deletions
+2 -1
View File
@@ -23,6 +23,7 @@ const CHANNEL_TO_PROVIDER: Record<string, CLIProxyProvider> = {
codex: 'codex',
qwen: 'qwen',
iflow: 'iflow',
kimi: 'kimi',
};
/** CCS provider → channel name mapping (reverse) */
@@ -31,7 +32,7 @@ export const PROVIDER_TO_CHANNEL: Record<string, string> = Object.fromEntries(
);
/** Providers to sync from CLIProxyAPI */
export const SYNCABLE_PROVIDERS: CLIProxyProvider[] = ['agy', 'gemini', 'codex', 'claude'];
export const SYNCABLE_PROVIDERS: CLIProxyProvider[] = ['agy', 'gemini', 'codex', 'claude', 'kimi'];
function getCacheFilePath(): string {
return path.join(getCcsDir(), CACHE_FILE_NAME);
+24 -17
View File
@@ -450,37 +450,44 @@ const PRICING_REGISTRY: Record<string, ModelPricing> = {
},
// ---------------------------------------------------------------------------
// Kimi Models (Moonshot AI) - Source: better-ccusage
// Kimi Models (Moonshot AI) - Source: Official Kimi Platform pricing
// inputPerMillion = cache miss price, cacheReadPerMillion = cache hit price
// ---------------------------------------------------------------------------
'kimi-for-coding': {
inputPerMillion: 0.15,
outputPerMillion: 0.6,
'kimi-k2.5': {
inputPerMillion: 0.6,
outputPerMillion: 3.0,
cacheCreationPerMillion: 0.0,
cacheReadPerMillion: 0.0,
cacheReadPerMillion: 0.1,
},
'kimi-for-coding': {
inputPerMillion: 0.6,
outputPerMillion: 2.5,
cacheCreationPerMillion: 0.0,
cacheReadPerMillion: 0.15,
},
'kimi-k2-0905-preview': {
inputPerMillion: 0.15,
outputPerMillion: 0.6,
inputPerMillion: 0.6,
outputPerMillion: 2.5,
cacheCreationPerMillion: 0.0,
cacheReadPerMillion: 0.0,
cacheReadPerMillion: 0.15,
},
'kimi-k2-turbo-preview': {
inputPerMillion: 0.15,
outputPerMillion: 1.15,
inputPerMillion: 1.15,
outputPerMillion: 8.0,
cacheCreationPerMillion: 0.0,
cacheReadPerMillion: 0.0,
cacheReadPerMillion: 0.15,
},
'kimi-k2-thinking': {
inputPerMillion: 0.15,
outputPerMillion: 0.6,
inputPerMillion: 0.6,
outputPerMillion: 2.5,
cacheCreationPerMillion: 0.0,
cacheReadPerMillion: 0.0,
cacheReadPerMillion: 0.15,
},
'kimi-k2-thinking-turbo': {
inputPerMillion: 0.15,
outputPerMillion: 1.15,
inputPerMillion: 1.15,
outputPerMillion: 8.0,
cacheCreationPerMillion: 0.0,
cacheReadPerMillion: 0.0,
cacheReadPerMillion: 0.15,
},
'kimi-k2-instruct': {
inputPerMillion: 1.0,
@@ -70,6 +70,7 @@ export function ProviderEditor({
iflow: ['iflow'],
kiro: ['kiro', 'aws'],
ghcp: ['github', 'copilot'],
kimi: ['kimi', 'moonshot'],
};
const owners = ownerMap[modelFilterProvider.toLowerCase()] || [
modelFilterProvider.toLowerCase(),
+34
View File
@@ -275,6 +275,40 @@ export const MODEL_CATALOGS: Record<string, ProviderCatalog> = {
},
],
},
kimi: {
provider: 'kimi',
displayName: 'Kimi (Moonshot)',
defaultModel: 'kimi-k2.5',
models: [
{
id: 'kimi-k2.5',
name: 'Kimi K2.5',
description: 'Latest multimodal model (262K context)',
presetMapping: {
default: 'kimi-k2.5',
opus: 'kimi-k2.5',
sonnet: 'kimi-k2-thinking',
haiku: 'kimi-k2',
},
},
{
id: 'kimi-k2-thinking',
name: 'Kimi K2 Thinking',
description: 'Extended reasoning model',
presetMapping: {
default: 'kimi-k2-thinking',
opus: 'kimi-k2.5',
sonnet: 'kimi-k2-thinking',
haiku: 'kimi-k2',
},
},
{
id: 'kimi-k2',
name: 'Kimi K2',
description: 'Flagship coding model',
},
],
},
kiro: {
provider: 'kiro',
displayName: 'Kiro (AWS)',