import type { GroupPlatform } from '@/types' export const OPENAI_CC_SWITCH_CODEX_MODEL = 'gpt-5.4' export type CcSwitchClientType = 'claude' | 'gemini' export interface CcSwitchImportConfig { app: string endpoint: string model?: string } export interface CcSwitchImportDeeplinkInput { baseUrl: string platform?: GroupPlatform | null clientType: CcSwitchClientType providerName: string apiKey: string usageScript: string } export function resolveCcSwitchImportConfig( platform: GroupPlatform | undefined | null, clientType: CcSwitchClientType, baseUrl: string ): CcSwitchImportConfig { switch (platform || 'anthropic') { case 'antigravity': return { app: clientType === 'gemini' ? 'gemini' : 'claude', endpoint: `${baseUrl}/antigravity` } case 'openai': return { app: 'codex', endpoint: baseUrl, model: OPENAI_CC_SWITCH_CODEX_MODEL } case 'gemini': return { app: 'gemini', endpoint: baseUrl } default: return { app: 'claude', endpoint: baseUrl } } } export function buildCcSwitchImportDeeplink(input: CcSwitchImportDeeplinkInput): string { const config = resolveCcSwitchImportConfig(input.platform, input.clientType, input.baseUrl) const entries: [string, string][] = [ ['resource', 'provider'], ['app', config.app], ['name', input.providerName], ['homepage', input.baseUrl], ['endpoint', config.endpoint], ['apiKey', input.apiKey], ['configFormat', 'json'], ['usageEnabled', 'true'], ['usageScript', btoa(input.usageScript)], ['usageAutoInterval', '30'] ] if (config.model) { entries.splice(2, 0, ['model', config.model]) } return `ccswitch://v1/import?${new URLSearchParams(entries).toString()}` }