diff --git a/electron/shared/providers/registry.ts b/electron/shared/providers/registry.ts index aa483e3..dafa124 100644 --- a/electron/shared/providers/registry.ts +++ b/electron/shared/providers/registry.ts @@ -121,7 +121,7 @@ export const PROVIDER_DEFINITIONS: ProviderDefinition[] = [ model: 'Kimi', requiresApiKey: true, defaultBaseUrl: 'https://api.moonshot.cn/v1', - defaultModelId: 'kimi-k2.5', + defaultModelId: 'kimi-k2.6', category: 'official', envVar: 'MOONSHOT_API_KEY', supportedAuthModes: ['api_key'], @@ -133,8 +133,8 @@ export const PROVIDER_DEFINITIONS: ProviderDefinition[] = [ apiKeyEnv: 'MOONSHOT_API_KEY', models: [ { - id: 'kimi-k2.5', - name: 'Kimi K2.5', + id: 'kimi-k2.6', + name: 'Kimi K2.6', reasoning: false, input: ['text'], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, @@ -152,7 +152,7 @@ export const PROVIDER_DEFINITIONS: ProviderDefinition[] = [ model: 'Kimi', requiresApiKey: true, defaultBaseUrl: 'https://api.moonshot.ai/v1', - defaultModelId: 'kimi-k2.5', + defaultModelId: 'kimi-k2.6', category: 'official', envVar: 'MOONSHOT_GLOBAL_API_KEY', supportedAuthModes: ['api_key'], @@ -164,8 +164,8 @@ export const PROVIDER_DEFINITIONS: ProviderDefinition[] = [ apiKeyEnv: 'MOONSHOT_GLOBAL_API_KEY', models: [ { - id: 'kimi-k2.5', - name: 'Kimi K2.5', + id: 'kimi-k2.6', + name: 'Kimi K2.6', reasoning: false, input: ['text'], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, diff --git a/src/lib/providers.ts b/src/lib/providers.ts index e3d4849..856084d 100644 --- a/src/lib/providers.ts +++ b/src/lib/providers.ts @@ -173,8 +173,8 @@ export const PROVIDER_TYPE_INFO: ProviderTypeInfo[] = [ }, { id: 'openrouter', name: 'OpenRouter', icon: '๐ŸŒ', placeholder: 'sk-or-v1-...', model: 'Multi-Model', requiresApiKey: true, showModelId: true, modelIdPlaceholder: 'openai/gpt-5.4', defaultModelId: 'openai/gpt-5.4', docsUrl: 'https://openrouter.ai/models' }, { id: 'minimax-portal-cn', name: 'MiniMax (CN)', icon: 'โ˜๏ธ', placeholder: 'sk-...', model: 'MiniMax', requiresApiKey: false, isOAuth: true, supportsApiKey: true, defaultModelId: 'MiniMax-M2.7', showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'MiniMax-M2.7', apiKeyUrl: 'https://platform.minimaxi.com/' }, - { id: 'moonshot', name: 'Moonshot (CN)', icon: '๐ŸŒ™', placeholder: 'sk-...', model: 'Kimi', requiresApiKey: true, defaultBaseUrl: 'https://api.moonshot.cn/v1', defaultModelId: 'kimi-k2.5', docsUrl: 'https://platform.moonshot.cn/' }, - { id: 'moonshot-global', name: 'Moonshot (Global)', icon: '๐ŸŒ™', placeholder: 'sk-...', model: 'Kimi', requiresApiKey: true, defaultBaseUrl: 'https://api.moonshot.ai/v1', defaultModelId: 'kimi-k2.5', docsUrl: 'https://platform.moonshot.ai/' }, + { id: 'moonshot', name: 'Moonshot (CN)', icon: '๐ŸŒ™', placeholder: 'sk-...', model: 'Kimi', requiresApiKey: true, defaultBaseUrl: 'https://api.moonshot.cn/v1', defaultModelId: 'kimi-k2.6', docsUrl: 'https://platform.moonshot.cn/' }, + { id: 'moonshot-global', name: 'Moonshot (Global)', icon: '๐ŸŒ™', placeholder: 'sk-...', model: 'Kimi', requiresApiKey: true, defaultBaseUrl: 'https://api.moonshot.ai/v1', defaultModelId: 'kimi-k2.6', docsUrl: 'https://platform.moonshot.ai/' }, { id: 'siliconflow', name: 'SiliconFlow (CN)', icon: '๐ŸŒŠ', placeholder: 'sk-...', model: 'Multi-Model', requiresApiKey: true, defaultBaseUrl: 'https://api.siliconflow.cn/v1', showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'deepseek-ai/DeepSeek-V3', defaultModelId: 'deepseek-ai/DeepSeek-V3', docsUrl: 'https://docs.siliconflow.cn/cn/userguide/introduction' }, { id: 'minimax-portal', name: 'MiniMax (Global)', icon: 'โ˜๏ธ', placeholder: 'sk-...', model: 'MiniMax', requiresApiKey: false, isOAuth: true, supportsApiKey: true, defaultModelId: 'MiniMax-M2.7', showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'MiniMax-M2.7', apiKeyUrl: 'https://platform.minimax.io' }, { id: 'modelstudio', name: 'Model Studio', icon: 'โ˜๏ธ', placeholder: 'sk-...', model: 'Qwen', requiresApiKey: true, defaultBaseUrl: 'https://coding.dashscope.aliyuncs.com/v1', showBaseUrl: true, defaultModelId: 'qwen3.5-plus', showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'qwen3.5-plus', apiKeyUrl: 'https://bailian.console.aliyun.com/', hidden: true }, diff --git a/tests/e2e/provider-lifecycle.spec.ts b/tests/e2e/provider-lifecycle.spec.ts index de30420..2bc7f97 100644 --- a/tests/e2e/provider-lifecycle.spec.ts +++ b/tests/e2e/provider-lifecycle.spec.ts @@ -11,7 +11,7 @@ async function seedTestProvider(page: Parameters[0]): Prom name: providerLabel, type: 'moonshot', baseUrl: 'https://api.moonshot.cn/v1', - model: 'kimi-k2.5', + model: 'kimi-k2.6', enabled: true, createdAt: now, updatedAt: now, diff --git a/tests/e2e/token-usage.spec.ts b/tests/e2e/token-usage.spec.ts index 5016fed..ff246e3 100644 --- a/tests/e2e/token-usage.spec.ts +++ b/tests/e2e/token-usage.spec.ts @@ -23,7 +23,7 @@ async function seedTokenUsageTranscripts(homeDir: string): Promise { timestamp: zeroTimestamp, message: { role: 'assistant', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'kimi', usage: { total_tokens: 0, @@ -44,7 +44,7 @@ async function seedTokenUsageTranscripts(homeDir: string): Promise { timestamp: nonzeroTimestamp, message: { role: 'assistant', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'kimi', usage: { total_tokens: 27, diff --git a/tests/unit/agent-config.test.ts b/tests/unit/agent-config.test.ts index 75e7390..837ccba 100644 --- a/tests/unit/agent-config.test.ts +++ b/tests/unit/agent-config.test.ts @@ -107,7 +107,7 @@ describe('agent config lifecycle', () => { agents: { defaults: { model: { - primary: 'moonshot/kimi-k2.5', + primary: 'moonshot/kimi-k2.6', }, }, list: [ @@ -122,12 +122,12 @@ describe('agent config lifecycle', () => { const main = snapshot.agents.find((agent) => agent.id === 'main'); const coder = snapshot.agents.find((agent) => agent.id === 'coder'); - expect(snapshot.defaultModelRef).toBe('moonshot/kimi-k2.5'); + expect(snapshot.defaultModelRef).toBe('moonshot/kimi-k2.6'); expect(main).toMatchObject({ - modelRef: 'moonshot/kimi-k2.5', + modelRef: 'moonshot/kimi-k2.6', overrideModelRef: null, inheritedModel: true, - modelDisplay: 'kimi-k2.5', + modelDisplay: 'kimi-k2.6', }); expect(coder).toMatchObject({ modelRef: 'ark/ark-code-latest', @@ -142,7 +142,7 @@ describe('agent config lifecycle', () => { agents: { defaults: { model: { - primary: 'moonshot/kimi-k2.5', + primary: 'moonshot/kimi-k2.6', }, }, list: [ @@ -177,7 +177,7 @@ describe('agent config lifecycle', () => { snapshot = await listAgentsSnapshot(); snapshotCoder = snapshot.agents.find((agent) => agent.id === 'coder'); expect(snapshotCoder).toMatchObject({ - modelRef: 'moonshot/kimi-k2.5', + modelRef: 'moonshot/kimi-k2.6', overrideModelRef: null, inheritedModel: true, }); diff --git a/tests/unit/openclaw-auth.test.ts b/tests/unit/openclaw-auth.test.ts index 653e9fa..255bf7b 100644 --- a/tests/unit/openclaw-auth.test.ts +++ b/tests/unit/openclaw-auth.test.ts @@ -513,7 +513,7 @@ describe('syncProviderConfigToOpenClaw', () => { const { syncProviderConfigToOpenClaw } = await import('@electron/utils/openclaw-auth'); - await syncProviderConfigToOpenClaw('moonshot', 'kimi-k2.5', { + await syncProviderConfigToOpenClaw('moonshot', 'kimi-k2.6', { baseUrl: 'https://api.moonshot.cn/v1', api: 'openai-completions', }); @@ -538,7 +538,7 @@ describe('syncProviderConfigToOpenClaw', () => { const { syncProviderConfigToOpenClaw } = await import('@electron/utils/openclaw-auth'); - await syncProviderConfigToOpenClaw('moonshot', 'kimi-k2.5', { + await syncProviderConfigToOpenClaw('moonshot', 'kimi-k2.6', { baseUrl: 'https://api.moonshot.cn/v1', api: 'openai-completions', }); diff --git a/tests/unit/provider-model-sync.test.ts b/tests/unit/provider-model-sync.test.ts index 140c539..a8119d1 100644 --- a/tests/unit/provider-model-sync.test.ts +++ b/tests/unit/provider-model-sync.test.ts @@ -16,8 +16,8 @@ function providerConfig(overrides: Partial): ProviderConfig { describe('provider-model-sync', () => { it('extracts model ID from provider/model refs', () => { - expect(getModelIdFromRef('moonshot/kimi-k2.5', 'moonshot')).toBe('kimi-k2.5'); - expect(getModelIdFromRef('kimi-k2.5', 'moonshot')).toBe('kimi-k2.5'); + expect(getModelIdFromRef('moonshot/kimi-k2.6', 'moonshot')).toBe('kimi-k2.6'); + expect(getModelIdFromRef('kimi-k2.6', 'moonshot')).toBe('kimi-k2.6'); expect(getModelIdFromRef(undefined, 'moonshot')).toBeUndefined(); }); @@ -25,7 +25,7 @@ describe('provider-model-sync', () => { const payload = buildNonOAuthAgentProviderUpdate( providerConfig({ type: 'moonshot', id: 'moonshot' }), 'moonshot', - 'moonshot/kimi-k2.5', + 'moonshot/kimi-k2.6', ); expect(payload).toEqual({ @@ -34,7 +34,7 @@ describe('provider-model-sync', () => { baseUrl: 'https://api.moonshot.cn/v1', api: 'openai-completions', apiKey: 'MOONSHOT_API_KEY', - models: [{ id: 'kimi-k2.5', name: 'kimi-k2.5' }], + models: [{ id: 'kimi-k2.6', name: 'kimi-k2.6' }], }, }); }); diff --git a/tests/unit/provider-runtime-sync.test.ts b/tests/unit/provider-runtime-sync.test.ts index 2bed33b..6237a94 100644 --- a/tests/unit/provider-runtime-sync.test.ts +++ b/tests/unit/provider-runtime-sync.test.ts @@ -84,7 +84,7 @@ function createProvider(overrides: Partial = {}): ProviderConfig id: 'moonshot', name: 'Moonshot', type: 'moonshot', - model: 'kimi-k2.5', + model: 'kimi-k2.6', enabled: true, createdAt: '2026-03-14T00:00:00.000Z', updatedAt: '2026-03-14T00:00:00.000Z', @@ -109,7 +109,7 @@ describe('provider-runtime-sync refresh strategy', () => { mocks.getApiKey.mockResolvedValue('sk-test'); mocks.getDefaultProvider.mockResolvedValue('moonshot'); mocks.getProvider.mockResolvedValue(createProvider()); - mocks.getProviderDefaultModel.mockReturnValue('kimi-k2.5'); + mocks.getProviderDefaultModel.mockReturnValue('kimi-k2.6'); mocks.getProviderConfig.mockReturnValue({ api: 'openai-completions', baseUrl: 'https://api.moonshot.cn/v1', diff --git a/tests/unit/token-usage.test.ts b/tests/unit/token-usage.test.ts index c9d7231..b5ae0c1 100644 --- a/tests/unit/token-usage.test.ts +++ b/tests/unit/token-usage.test.ts @@ -109,7 +109,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T03:00:00.000Z', message: { role: 'assistant', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', usage: { total: 0, @@ -123,7 +123,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T03:00:00.000Z', sessionId: 'abc', agentId: 'default', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', usageStatus: 'available', inputTokens: 0, @@ -143,7 +143,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T03:10:00.000Z', message: { role: 'assistant', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', usage: { input_tokens: 12, @@ -161,7 +161,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T03:10:00.000Z', sessionId: 'abc', agentId: 'default', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', usageStatus: 'available', inputTokens: 12, @@ -254,7 +254,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T02:20:04.057Z', message: { role: 'assistant', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', content: [{ type: 'text', text: '่ฟ™ๆ˜ฏไธ€ๆกๆต‹่ฏ•ๅ›žๅคๅ†…ๅฎนใ€‚' }], usage: { @@ -269,7 +269,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T02:20:04.057Z', sessionId: 'abc', agentId: 'default', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', usageStatus: 'available', content: '่ฟ™ๆ˜ฏไธ€ๆกๆต‹่ฏ•ๅ›žๅคๅ†…ๅฎนใ€‚', @@ -328,7 +328,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T03:30:00.000Z', message: { role: 'assistant', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', usage: { notes: 'tool call' }, }, @@ -340,7 +340,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T03:30:00.000Z', sessionId: 'abc', agentId: 'default', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', usageStatus: 'missing', inputTokens: 0, @@ -360,7 +360,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T03:40:00.000Z', message: { role: 'assistant', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', usage: 'invalid', }, @@ -372,7 +372,7 @@ describe('parseUsageEntriesFromJsonl', () => { timestamp: '2026-03-10T03:40:00.000Z', sessionId: 'abc', agentId: 'default', - model: 'kimi-k2.5', + model: 'kimi-k2.6', provider: 'moonshot', usageStatus: 'error', inputTokens: 0,