|
961 | 961 | VERCEL: { name:'Vercel', keyUrl:'https://vercel.com/ai-gateway', keyLabel:'Get API Key for Vercel' }, |
962 | 962 | CLOUDFLARE:{ name:'Cloudflare',keyUrl:'https://dash.cloudflare.com/', keyLabel:'Get API Key for Cloudflare' }, |
963 | 963 | KILO: { name:'Kilo', keyUrl:'https://app.kilo.ai/profile', keyLabel:'Get API Key for Kilo (optional)' }, |
| 964 | + OPENCODE: { name:'OpenCode', keyUrl:'https://opencode.ai/auth', keyLabel:'Get API Key for OpenCode Zen' }, |
964 | 965 | HUMAN_EXPERT:{ name:'Human Expert', keyUrl:'', keyLabel:'' }, |
965 | 966 | }; |
966 | 967 |
|
967 | | -const PROVIDER_ORDER = ['VERCEL','CEREBRAS','GOOGLE','MISTRAL','GROQ','CLOUDFLARE','KILO','PUTER']; |
| 968 | +const PROVIDER_ORDER = ['VERCEL','CEREBRAS','GOOGLE','MISTRAL','GROQ','CLOUDFLARE','KILO','OPENCODE','PUTER']; |
968 | 969 |
|
969 | 970 | /* ════════════════════════════════════════════════════════ |
970 | 971 | CUSTOM PROVIDERS — add a genuinely new provider/model here, entirely in |
|
1020 | 1021 | { id:'PUTER_LING_3_FLASH', displayName:'Ling 3.0 Flash (Puter)', modelName:'inclusionai/ling-3.0-flash:free', apiProvider:'PUTER', supportsScreenshot:false, supportsTopK:false, supportsThinking:true, isOffline:false, hint:'Free - Free access is only available for a short time; after that, access will be interrupted server-side. – thinking enabled', strike:false }, |
1021 | 1022 | { id:'PUTER_NEMOTRON_3_NANO_OMNI_30B', displayName:'Nemotron 3 Nano Omni 30B A3B (Puter)', modelName:'nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free', apiProvider:'PUTER', supportsScreenshot:true, supportsTopK:false, supportsThinking:true, isOffline:false, hint:'free - Can watch videos. Free models could be deactivated server-side at any time – thinking enabled', strike:false }, |
1022 | 1023 | { id:'KILO_NEMOTRON_3_ULTRA_550B', displayName:'Nemotron 3 Ultra 550B A55B (Kilo)', modelName:'nvidia/nemotron-3-ultra-550b-a55b:free', apiProvider:'KILO', supportsScreenshot:false, supportsTopK:false, supportsThinking:false, isOffline:false, hint:'200 requests/hour per IP address are free', strike:false }, |
| 1024 | + { id:'OPENCODE_BIG_PICKLE', displayName:'Big Pickle (OpenCode)', modelName:'big-pickle', apiProvider:'OPENCODE', supportsScreenshot:false, supportsTopK:false, supportsThinking:false, isOffline:false, hint:'free', strike:false }, |
1023 | 1025 | { id:'GROQ_QWEN3_6_27B', displayName:'Qwen3.6 27B (Groq)', modelName:'qwen/qwen3.6-27b', apiProvider:'GROQ', supportsScreenshot:false, supportsTopK:true, supportsThinking:true, isOffline:false, hint:'30 free requests per min – thinking enabled', strike:false }, |
1024 | 1026 | { id:'GROQ_GPT_OSS_120B', displayName:'GPT-OSS 120B (Groq)', modelName:'openai/gpt-oss-120b', apiProvider:'GROQ', supportsScreenshot:false, supportsTopK:true, supportsThinking:true, isOffline:false, hint:'30 free requests per min – thinking enabled', strike:false }, |
1025 | 1027 | { id:'MISTRAL_LARGE_3', displayName:'Mistral Large 3', modelName:'mistral-large-latest', apiProvider:'MISTRAL', supportsScreenshot:true, supportsTopK:false, supportsThinking:false, isOffline:false, hint:'', strike:false }, |
|
2090 | 2092 | // Free tier: no API key required (200 req/hour per IP); key is optional for paid use. |
2091 | 2093 | keyOptional: true, |
2092 | 2094 | }, |
| 2095 | + OPENCODE: { |
| 2096 | + endpoint: () => 'https://opencode.ai/zen/v1/chat/completions', |
| 2097 | + keyHeader: 'Authorization', |
| 2098 | + keyPrefix: 'Bearer ', |
| 2099 | + }, |
2093 | 2100 | }; |
2094 | 2101 |
|
2095 | 2102 | /* ── KILO PROXY DEBUG: call window.debugKiloProxy() from console or Bridge ── */ |
|
5559 | 5566 | document.getElementById('new-key-input').placeholder = |
5560 | 5567 | currentProviderId==='PUTER' ? 'Enter Puter Auth Token' : |
5561 | 5568 | currentProviderId==='KILO' ? 'Enter Kilo API Key (optional – free without key)' : |
| 5569 | + currentProviderId==='OPENCODE' ? 'Enter OpenCode Zen API Key' : |
5562 | 5570 | 'Enter '+PROVIDERS[currentProviderId]?.name+' API Key'; |
5563 | 5571 | } |
5564 | 5572 | function renderKeyList() { |
|
6158 | 6166 |
|
6159 | 6167 |
|
6160 | 6168 |
|
| 6169 | + |
6161 | 6170 |
|
6162 | 6171 |
|
0 commit comments