Add FirePass provider support for Kimi K2.5 Turbo
- Add new 'firepass' provider type alongside anthropic, openai, openrouter - FirePass uses Fireworks AI's endpoint for Kimi K2.5 Turbo model - Subscription billing model ($7/week) with 256K context window - Anthropic API compatible (uses Anthropic SDK with custom baseURL) Changes: - providers.ts: Add firepass detection and base URL handling - auth.ts: Add FirePass API key management (FIREPASS_API_KEY or FIREWORKS_API_KEY) - config.ts: Add firepassApiKey and firepass auth provider - client.ts: Add firepass client creation with custom baseURL - http.ts: Add firepass auth headers - modelStrings.ts: Return Kimi K2.5 Turbo model ID for firepass - model.ts: Add Kimi display name handling and default model logic - modelOptions.ts: Simplified model picker for firepass (Kimi K2.5 Turbo only) - status.tsx: Display FirePass in status bar - login.tsx: Add FirePass option to provider selection - FirepassLoginFlow.tsx: New component for FirePass login flow Usage: 1. Run /login and select "FirePass" 2. Enter your Fireworks API key 3. Model picker shows Kimi K2.5 Turbo
This commit is contained in:
@@ -45,6 +45,7 @@ export type ModelOption = {
|
||||
export function getDefaultOptionForUser(fastMode = false): ModelOption {
|
||||
const provider = getAPIProvider()
|
||||
const isOpenAI = provider === 'openai'
|
||||
const isFirepass = provider === 'firepass'
|
||||
if (process.env.USER_TYPE === 'ant') {
|
||||
const currentModel = renderDefaultModelSetting(
|
||||
getDefaultMainLoopModelSetting(),
|
||||
@@ -68,6 +69,14 @@ export function getDefaultOptionForUser(fastMode = false): ModelOption {
|
||||
|
||||
// PAYG
|
||||
const is3P = provider !== 'firstParty'
|
||||
if (isFirepass) {
|
||||
return {
|
||||
value: null,
|
||||
label: 'Default (recommended)',
|
||||
description: 'Use Kimi K2.5 Turbo (FirePass subscription)',
|
||||
descriptionForModel: 'Kimi K2.5 Turbo - FirePass subscription with 256K context',
|
||||
}
|
||||
}
|
||||
return {
|
||||
value: null,
|
||||
label: 'Default (recommended)',
|
||||
@@ -109,6 +118,16 @@ function getSonnet46Option(): ModelOption {
|
||||
'GPT-5.4 - recommended for most coding and agentic tasks on OpenAI',
|
||||
}
|
||||
}
|
||||
if (provider === 'firepass') {
|
||||
const firepassModel = getModelStrings().sonnet46
|
||||
return {
|
||||
value: firepassModel,
|
||||
label: 'Kimi K2.5 Turbo',
|
||||
description: 'Kimi K2.5 Turbo · FirePass subscription model',
|
||||
descriptionForModel:
|
||||
'Kimi K2.5 Turbo - FirePass subscription with 256K context, no per-token charges',
|
||||
}
|
||||
}
|
||||
return {
|
||||
value: is3P ? getModelStrings().sonnet46 : 'sonnet',
|
||||
label: 'Sonnet',
|
||||
@@ -156,6 +175,16 @@ function getOpus46Option(fastMode = false): ModelOption {
|
||||
'GPT-5.4 - most capable OpenAI model for complex coding work',
|
||||
}
|
||||
}
|
||||
if (provider === 'firepass') {
|
||||
const firepassModel = getModelStrings().opus46
|
||||
return {
|
||||
value: firepassModel,
|
||||
label: 'Kimi K2.5 Turbo',
|
||||
description: 'Kimi K2.5 Turbo · FirePass subscription model',
|
||||
descriptionForModel:
|
||||
'Kimi K2.5 Turbo - FirePass subscription with 256K context, no per-token charges',
|
||||
}
|
||||
}
|
||||
return {
|
||||
value: is3P ? getModelStrings().opus46 : 'opus',
|
||||
label: 'Opus',
|
||||
@@ -176,6 +205,17 @@ export function getSonnet46_1MOption(): ModelOption {
|
||||
'GPT-5.4 for long-running OpenAI sessions and large codebases',
|
||||
}
|
||||
}
|
||||
if (provider === 'firepass') {
|
||||
// FirePass Kimi has 256K context, no need for separate 1M option
|
||||
const firepassModel = getModelStrings().sonnet46
|
||||
return {
|
||||
value: firepassModel,
|
||||
label: 'Kimi K2.5 Turbo',
|
||||
description: 'Kimi K2.5 Turbo · 256K context included',
|
||||
descriptionForModel:
|
||||
'Kimi K2.5 Turbo - 256K context window for long sessions',
|
||||
}
|
||||
}
|
||||
return {
|
||||
value: is3P ? getModelStrings().sonnet46 + '[1m]' : 'sonnet[1m]',
|
||||
label: 'Sonnet (1M context)',
|
||||
@@ -197,6 +237,17 @@ export function getOpus46_1MOption(fastMode = false): ModelOption {
|
||||
'GPT-5.4 for long-running OpenAI sessions and large codebases',
|
||||
}
|
||||
}
|
||||
if (provider === 'firepass') {
|
||||
// FirePass Kimi has 256K context, no need for separate 1M option
|
||||
const firepassModel = getModelStrings().opus46
|
||||
return {
|
||||
value: firepassModel,
|
||||
label: 'Kimi K2.5 Turbo',
|
||||
description: 'Kimi K2.5 Turbo · 256K context included',
|
||||
descriptionForModel:
|
||||
'Kimi K2.5 Turbo - 256K context window for long sessions',
|
||||
}
|
||||
}
|
||||
return {
|
||||
value: is3P ? getModelStrings().opus46 + '[1m]' : 'opus[1m]',
|
||||
label: 'Opus (1M context)',
|
||||
@@ -234,6 +285,16 @@ function getHaiku45Option(): ModelOption {
|
||||
'GPT-5.4 Mini - fastest OpenAI option for quick answers and lightweight tasks',
|
||||
}
|
||||
}
|
||||
if (provider === 'firepass') {
|
||||
const firepassModel = getModelStrings().haiku45
|
||||
return {
|
||||
value: firepassModel,
|
||||
label: 'Kimi K2.5 Turbo',
|
||||
description: 'Kimi K2.5 Turbo · FirePass subscription model',
|
||||
descriptionForModel:
|
||||
'Kimi K2.5 Turbo - FirePass subscription with 256K context, no per-token charges',
|
||||
}
|
||||
}
|
||||
return {
|
||||
value: 'haiku',
|
||||
label: 'Haiku',
|
||||
@@ -255,6 +316,16 @@ function getHaiku35Option(): ModelOption {
|
||||
'GPT-5.4 Mini - lower latency OpenAI model for simple tasks',
|
||||
}
|
||||
}
|
||||
if (provider === 'firepass') {
|
||||
const firepassModel = getModelStrings().haiku35
|
||||
return {
|
||||
value: firepassModel,
|
||||
label: 'Kimi K2.5 Turbo',
|
||||
description: 'Kimi K2.5 Turbo · FirePass subscription model',
|
||||
descriptionForModel:
|
||||
'Kimi K2.5 Turbo - FirePass subscription with 256K context, no per-token charges',
|
||||
}
|
||||
}
|
||||
return {
|
||||
value: 'haiku',
|
||||
label: 'Haiku',
|
||||
@@ -405,6 +476,19 @@ function getModelOptionsBase(fastMode = false): ModelOption[] {
|
||||
return payg1POptions
|
||||
}
|
||||
|
||||
// FirePass: Simple list with just Kimi K2.5 Turbo
|
||||
if (getAPIProvider() === 'firepass') {
|
||||
const firepassModel = getModelStrings().sonnet46
|
||||
return [
|
||||
getDefaultOptionForUser(fastMode),
|
||||
{
|
||||
value: firepassModel,
|
||||
label: 'Kimi K2.5 Turbo',
|
||||
description: 'Kimi K2.5 Turbo · 256K context, subscription billing',
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
// PAYG 3P: Default (Sonnet 4.5) + Sonnet (3P custom) or Sonnet 4.6/1M + Opus (3P custom) or Opus 4.1/Opus 4.6/Opus1M + Haiku + Opus 4.1
|
||||
const payg3pOptions = [getDefaultOptionForUser(fastMode)]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user