omniroute 3.0.5 → 3.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/_global-error.html +2 -2
  40. package/app/.next/server/app/_global-error.rsc +1 -1
  41. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  42. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  46. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/chunks/[root-of-the-server]__051203a6._.js +2 -2
  60. package/app/.next/server/chunks/[root-of-the-server]__0891af92._.js +1 -1
  61. package/app/.next/server/chunks/[root-of-the-server]__1f2b0d89._.js +1 -1
  62. package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
  63. package/app/.next/server/chunks/[root-of-the-server]__5dcab57b._.js +2 -2
  64. package/app/.next/server/chunks/[root-of-the-server]__61d78f9d._.js +1 -1
  65. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  66. package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
  67. package/app/.next/server/chunks/[root-of-the-server]__7fa4d14e._.js +1 -1
  68. package/app/.next/server/chunks/_05c48915._.js +1 -1
  69. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  70. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  71. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  72. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  73. package/app/.next/server/chunks/_68683848._.js +1 -1
  74. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  75. package/app/.next/server/chunks/open-sse_config_providerModels_ts_04541468._.js +1 -1
  76. package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_2f74ec2a._.js +1 -1
  77. package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_dec0f840._.js +1 -1
  78. package/app/.next/server/chunks/src_6320c728._.js +1 -1
  79. package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
  80. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  81. package/app/.next/server/chunks/ssr/_19b3d5b1._.js +1 -1
  82. package/app/.next/server/chunks/ssr/open-sse_config_providerModels_ts_4cac55e2._.js +1 -1
  83. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_playground_page_tsx_06c08266._.js +2 -2
  84. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_settings_9e20fb8d._.js +1 -1
  85. package/app/.next/server/pages/500.html +2 -2
  86. package/app/.next/server/server-reference-manifest.js +1 -1
  87. package/app/.next/server/server-reference-manifest.json +1 -1
  88. package/app/.next/static/chunks/0e39e279bf7e4cd9.js +2 -0
  89. package/app/.next/static/chunks/{25a3e05da8e1a7ec.js → 339b27cecfee41d1.js} +1 -1
  90. package/app/.next/static/chunks/{37063ea02716537b.js → 98a065e472ead1c5.js} +1 -1
  91. package/app/.next/static/chunks/{b7c366e286771d50.js → f62c550263d8bca8.js} +1 -1
  92. package/app/CHANGELOG.md +18 -0
  93. package/app/docs/openapi.yaml +1 -1
  94. package/app/open-sse/config/providerRegistry.ts +1 -4
  95. package/app/package-lock.json +2 -2
  96. package/app/package.json +1 -1
  97. package/app/src/app/(dashboard)/dashboard/playground/page.tsx +79 -4
  98. package/app/src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx +7 -7
  99. package/app/src/app/api/usage/[connectionId]/route.ts +42 -23
  100. package/app/src/lib/providers/validation.ts +1 -1
  101. package/app/tests/integration/v1-contracts-behavior.test.mjs +8 -6
  102. package/package.json +1 -1
  103. package/app/.next/static/chunks/f3640b442f6de1d4.js +0 -2
  104. /package/app/.next/static/{_Ub91T2wbB96WfkKKwhDH → 4vzx2qUM_tiJPdpx_Hiqj}/_buildManifest.js +0 -0
  105. /package/app/.next/static/{_Ub91T2wbB96WfkKKwhDH → 4vzx2qUM_tiJPdpx_Hiqj}/_clientMiddlewareManifest.json +0 -0
  106. /package/app/.next/static/{_Ub91T2wbB96WfkKKwhDH → 4vzx2qUM_tiJPdpx_Hiqj}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[383368,e=>e.a(async(r,t)=>{try{var a=e.i(828059),i=e.i(963219),n=r([i]);[i]=n.then?(await n)():n;let b=new Set(["openai","openai-responses"]),T=new Set(["gemini","gemini-cli"]);function o(e){return(e||"").trim().replace(/\/$/,"")}function s(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function l({provider:e,apiKey:r,baseUrl:t,providerSpecificData:a={},modelId:n="gpt-4o-mini",modelsUrl:l}){if(!t)return{valid:!1,error:"Missing base URL"};let d=l||function(e){let r=o(e);if(!r)return"";for(let e of["/chat/completions","/responses","/chat","/messages"])if(r.endsWith(e))return`${r.slice(0,-e.length)}/models`;return`${r}/models`}(t);if(!d)return{valid:!1,error:"Invalid models endpoint"};let u=await fetch(d,{method:"GET",headers:s(r)});if(u.ok)return{valid:!0,error:null};if(401===u.status||403===u.status)return{valid:!1,error:"Invalid API key"};let c=function(e,r,t={}){let a=o(r);return a?(0,i.isOpenAICompatibleProvider)(e)?t?.apiType==="responses"?`${a}/responses`:`${a}/chat/completions`:a.endsWith("/chat/completions")||a.endsWith("/responses")||a.endsWith("/chat")?a:a.endsWith("/v1")?`${a}/chat/completions`:a:""}(e,t,a);if(!c)return{valid:!1,error:`Validation failed: ${u.status}`};let p=a?.validationModelId||n,h=await fetch(c,{method:"POST",headers:s(r),body:JSON.stringify({model:p,messages:[{role:"user",content:"test"}],max_tokens:1})});return h.ok?{valid:!0,error:null}:401===h.status||403===h.status?{valid:!1,error:"Invalid API key"}:404===h.status||405===h.status?{valid:!1,error:"Provider validation endpoint not supported"}:h.status>=500?{valid:!1,error:`Provider unavailable (${h.status})`}:{valid:!0,error:null}}async function d({apiKey:e,baseUrl:r,modelId:t,headers:a={},providerSpecificData:i={}}){if(!r)return{valid:!1,error:"Missing base URL"};let n={"Content-Type":"application/json",...a};n["x-api-key"]||n["X-API-Key"]||(n["x-api-key"]=e),n["anthropic-version"]||n["Anthropic-Version"]||(n["anthropic-version"]="2023-06-01");let o=i?.validationModelId||t||"claude-3-5-sonnet-20241022",s=await fetch(r,{method:"POST",headers:n,body:JSON.stringify({model:o,max_tokens:1,messages:[{role:"user",content:"test"}]})});return 401===s.status||403===s.status?{valid:!1,error:"Invalid API key"}:{valid:!0,error:null}}async function u({apiKey:e,baseUrl:r}){if(!r)return{valid:!1,error:"Missing base URL"};let t=r.includes("?")?"&":"?",a=await fetch(`${r}${t}key=${encodeURIComponent(e)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return a.ok?{valid:!0,error:null}:401===a.status||403===a.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${a.status}`}}async function c({apiKey:e}){try{let r=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${e}`}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function p({apiKey:e}){try{let r=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:e,"Content-Type":"application/json"}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function h({apiKey:e}){try{let r=await fetch("https://api.nanobananaapi.ai/api/v1/nanobanana/generate",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({prompt:"test",model:"nanobanana-flash"})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function f({apiKey:e}){try{let r=await fetch("https://api.elevenlabs.io/v1/voices",{method:"GET",headers:{"xi-api-key":e,"Content-Type":"application/json"}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function v({apiKey:e}){try{let r=await fetch("https://api.inworld.ai/tts/v1/voice",{method:"POST",headers:{Authorization:`Basic ${e}`,"Content-Type":"application/json"},body:JSON.stringify({text:"test",modelId:"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function m({apiKey:e,providerSpecificData:r={}}){try{let t=o(r.baseUrl)||"https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1",a=t.endsWith("/messages")?t.slice(0,-9):t,i=`${a}/messages`,n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01"},body:JSON.stringify({model:"qwen3-coder-plus",max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===n.status||403===n.status)return{valid:!1,error:"Invalid API key"};if(n.status>=400&&n.status<500||n.ok)return{valid:!0,error:null};return{valid:!1,error:`Validation failed: ${n.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function y({apiKey:e,providerSpecificData:r={}}){let t=o(r.baseUrl);if(!t)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};let a="string"==typeof r?.validationModelId?r.validationModelId.trim():"",i=!1;try{let r=await fetch(`${t}/models`,{method:"GET",headers:s(e)});if(i=!0,r.ok)return{valid:!0,error:null,method:"models_endpoint"};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};if(429===r.status)return{valid:!0,error:null,method:"models_endpoint",warning:"Rate limited, but credentials are valid"}}catch{}if(!a)return{valid:!1,error:"Endpoint /models unavailable. Provide a Model ID to validate via /chat/completions."};let n=r.apiType||"chat",l=`${t}${"responses"===n?"/responses":"/chat/completions"}`;try{let r=await fetch(l,{method:"POST",headers:s(e),body:JSON.stringify({model:a,messages:[{role:"user",content:"test"}],max_tokens:1})});if(r.ok)return{valid:!0,error:null,method:"chat_completions"};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};if(429===r.status)return{valid:!0,error:null,method:"chat_completions",warning:"Rate limited, but credentials are valid"};if(400===r.status)return{valid:!0,error:null,method:"inference_available",warning:"Model ID may be invalid, but credentials are valid"};if(r.status>=400&&r.status<500)return{valid:!0,error:null,method:"inference_available"};if(r.status>=500)return{valid:!1,error:`Provider unavailable (${r.status})`}}catch{}if(!i)return{valid:!1,error:"Connection failed while testing /chat/completions"};try{let r=await fetch(t,{method:"GET",headers:s(e),signal:AbortSignal.timeout(5e3)});if(r.status<500)return{valid:!0,error:null};return{valid:!1,error:`Provider unavailable (${r.status})`}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function g({apiKey:e,providerSpecificData:r={}}){let t=o(r.baseUrl);if(!t)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};t.endsWith("/messages")&&(t=t.slice(0,-9));let a={"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01",Authorization:`Bearer ${e}`};try{let e=await fetch(`${t}/models`,{method:"GET",headers:a});if(e.ok)return{valid:!0,error:null};if(401===e.status||403===e.status)return{valid:!1,error:"Invalid API key"}}catch{}let i=r?.validationModelId||"claude-3-5-sonnet-20241022";try{let e=await fetch(`${t}/messages`,{method:"POST",headers:a,body:JSON.stringify({model:i,max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===e.status||403===e.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function k(e,r){try{let t=await fetch(e,r);if(t.ok)return{valid:!0,error:null,unsupported:!1};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key",unsupported:!1};if(t.status<500)return{valid:!0,error:null,unsupported:!1};return{valid:!1,error:`Validation failed: ${t.status}`,unsupported:!1}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}let x={"serper-search":e=>({url:"https://google.serper.dev/search",init:{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":e},body:JSON.stringify({q:"test",num:1})}}),"brave-search":e=>({url:"https://api.search.brave.com/res/v1/web/search?q=test&count=1",init:{method:"GET",headers:{Accept:"application/json","X-Subscription-Token":e}}}),"perplexity-search":e=>({url:"https://api.perplexity.ai/search",init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({query:"test",max_results:1})}}),"exa-search":e=>({url:"https://api.exa.ai/search",init:{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify({query:"test",numResults:1})}}),"tavily-search":e=>({url:"https://api.tavily.com/search",init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({query:"test",max_results:1})}})};async function w({provider:e,apiKey:r,providerSpecificData:t={}}){if(!e||!r)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,i.isOpenAICompatibleProvider)(e))try{return await y({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}if((0,i.isAnthropicCompatibleProvider)(e))try{return await g({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let n={deepgram:c,assemblyai:p,nanobanana:h,elevenlabs:f,inworld:v,"bailian-coding-plan":m,longcat:async({apiKey:e})=>{try{let r=await fetch("https://longcat.chat/api/v1/chat/completions",{method:"POST",headers:s(e),body:JSON.stringify({model:"longcat",messages:[{role:"user",content:"test"}],max_tokens:1})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}},...Object.fromEntries(Object.entries(x).map(([e,r])=>[e,({apiKey:e})=>{let{url:t,init:a}=r(e);return k(t,a)}]))};if(n[e])try{return await n[e]({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let w=(0,a.getRegistryEntry)(e);if(!w)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let I=w.models?.[0]?.id||null,P=w.testKeyBaseUrl?{...w,baseUrl:w.testKeyBaseUrl}:w,C=function(e,r={}){return r?.baseUrl?o(r.baseUrl):e?.baseUrl?o(e.baseUrl):""}(P,t);try{if(b.has(w.format))return await l({provider:e,apiKey:r,baseUrl:C,providerSpecificData:t,modelId:I,modelsUrl:w.modelsUrl});if("claude"===w.format){let e=`${C}${w.urlSuffix||""}`,a={...w.headers||{}};return"x-api-key"===(w.authHeader||"").toLowerCase()?a["x-api-key"]=r:a.Authorization=`Bearer ${r}`,await d({apiKey:r,baseUrl:e,modelId:I,headers:a,providerSpecificData:t})}if(T.has(w.format))return await u({apiKey:r,baseUrl:C});return{valid:!1,error:"Provider validation not supported",unsupported:!0}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}e.s(["validateProviderApiKey",()=>w]),t()}catch(e){t(e)}},!1),910660,e=>e.a(async(r,t)=>{try{var a=e.i(89171),i=e.i(677850),n=e.i(200392);e.i(245272);var o=e.i(385498),s=e.i(548941),l=e.i(250875),d=e.i(639173),u=e.i(383368),c=e.i(266240),p=e.i(928602);e.i(312125);var h=e.i(397506),f=e.i(496928),v=e.i(444675),m=r([i,n,u]);[i,n,u]=m.then?(await m)():m;let _={claude:{checkExpiry:!0,refreshable:!0},codex:{checkExpiry:!0,refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"OmniRoute",Accept:"application/vnd.github+json"}},iflow:{checkExpiry:!0,refreshable:!0},qwen:{checkExpiry:!0,refreshable:!0},cursor:{checkExpiry:!0},"kimi-coding":{checkExpiry:!0,refreshable:!0},kilocode:{checkExpiry:!0},cline:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0}},S={cline:"cline",kilocode:"kilo"},$=i.z.object({validationModelId:i.z.string().max(500).optional()});function y(e,r="Unknown error"){return"string"!=typeof e?r:e.trim()||r}function g(e,r,t,a=null){return{type:e,source:r,message:t||null,code:a??null}}function k({error:e,statusCode:r=null,refreshFailed:t=!1,unsupported:a=!1}){let i=y(e,"Connection test failed"),n=i.toLowerCase(),o=Number.isFinite(r)?Number(r):null;return a?g("unsupported","validation",i,"unsupported"):t||n.includes("refresh failed")?g("token_refresh_failed","oauth",i,"refresh_failed"):401===o||403===o?g("upstream_auth_error","upstream",i,String(o)):429===o?g("upstream_rate_limited","upstream",i,"429"):o&&o>=500?g("upstream_unavailable","upstream",i,String(o)):n.includes("token expired")||n.includes("expired")?g("token_expired","oauth",i,"token_expired"):n.includes("invalid api key")||n.includes("token invalid")||n.includes("revoked")||n.includes("access denied")||n.includes("unauthorized")||n.includes("forbidden")?g("upstream_auth_error","upstream",i,o?String(o):"auth_failed"):n.includes("rate limit")||n.includes("quota")||n.includes("too many requests")?g("upstream_rate_limited","upstream",i,o?String(o):"rate_limited"):n.includes("fetch failed")||n.includes("network")||n.includes("timeout")||n.includes("econn")||n.includes("enotfound")||n.includes("socket")?g("network_error","upstream",i,"network_error"):g("upstream_error","upstream",i,o?String(o):"upstream_error")}async function w(e){let r=S[e];if(!r)return null;try{let e=await (0,c.getCliRuntimeStatus)(r);if(e.installed&&e.runnable)return e;let t=e.installed?`Local CLI runtime is installed but not runnable (${e.reason||"healthcheck_failed"})`:"Local CLI runtime is not installed";return{...e,diagnosis:g("runtime_error","local",t,e.reason||"runtime_error"),error:t}}catch(r){let e=`Failed to check local CLI runtime: ${r?.message||"runtime_check_failed"}`;return{installed:!1,runnable:!1,reason:"runtime_check_failed",diagnosis:g("runtime_error","local",e,"runtime_check_failed"),error:e}}}async function b(e){let{provider:r,refreshToken:t}=e;if(!t)return null;try{let a={refreshToken:t,providerSpecificData:e.providerSpecificData||{}};return await (0,p.getAccessToken)(r,a,console)}catch(e){return console.log(`Error refreshing ${r} token:`,e.message),null}}function T(e){let r=e.expiresAt||e.tokenExpiresAt;return!!r&&new Date(r).getTime()<=Date.now()+3e5}async function x(){try{if(!await (0,s.isCloudEnabled)())return;let e=await (0,l.getConsistentMachineId)();await (0,d.syncToCloud)(e)}catch(e){console.log("Error syncing to cloud after token refresh:",e)}}async function I(e){let r=_[e.provider];if(!r){let e="Provider test not supported";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e,unsupported:!0})}}if(!e.accessToken){if(r.refreshable&&!e.refreshToken){let e="Refresh token expired. Please re-authenticate this account.";return{valid:!1,error:e,refreshed:!1,diagnosis:g("reauth_required","oauth",e,"reauth_required")}}let t="No access token";return{valid:!1,error:t,refreshed:!1,diagnosis:g("auth_missing","local",t,"missing_access_token")}}let t=e.accessToken,a=!1,i=null,n=T(e);if(r.refreshable&&n&&e.refreshToken){let r=await b(e);if(r)t=r.accessToken,a=!0,i=r;else{let e="Token expired and refresh failed";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e,refreshFailed:!0})}}}if(r.checkExpiry){if(a)return{valid:!0,error:null,refreshed:a,newTokens:i,diagnosis:g("ok","oauth",null,null)};if(n){let e="Token expired";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e})}}return{valid:!0,error:null,refreshed:!1,newTokens:null,diagnosis:g("ok","local",null,null)}}try{let n={[r.authHeader]:`${r.authPrefix}${t}`,...r.extraHeaders},o=await fetch(r.url,{method:r.method,headers:n});if(o.ok)return{valid:!0,error:null,refreshed:a,newTokens:i,diagnosis:g("ok","upstream",null,null)};if((401===o.status||403===o.status)&&!a&&T(e)&&e.refreshToken&&"string"==typeof e.refreshToken){let t=await b(e);if(t){let e=await fetch(r.url,{method:r.method,headers:{[r.authHeader]:`${r.authPrefix}${t.accessToken}`,...r.extraHeaders}});if(e.ok)return{valid:!0,error:null,refreshed:!0,newTokens:t,diagnosis:g("ok","upstream",null,null)};let a=`API returned ${e.status} after token refresh`;return{valid:!1,error:a,refreshed:!0,statusCode:e.status,diagnosis:k({error:a,statusCode:e.status})}}let a="Token expired and refresh failed";return{valid:!1,error:a,refreshed:!1,statusCode:401,diagnosis:k({error:a,statusCode:401,refreshFailed:!0})}}let s=401===o.status?"Token invalid or revoked":403===o.status?"Access denied":`API returned ${o.status}`;return{valid:!1,error:s,refreshed:a,statusCode:o.status,diagnosis:k({error:s,statusCode:o.status})}}catch(r){let e=y(r?.message,"Connection test failed");return{valid:!1,error:e,refreshed:a,diagnosis:k({error:e})}}}async function P(e){if(!e.apiKey){let e="Missing API key";return{valid:!1,error:e,diagnosis:g("auth_missing","local",e,"missing_api_key")}}let r=await (0,u.validateProviderApiKey)({provider:e.provider,apiKey:e.apiKey,providerSpecificData:e.providerSpecificData});if(r.unsupported){let e="Provider test not supported";return{valid:!1,error:e,diagnosis:k({error:e,unsupported:!0})}}let t=r.valid?null:r.error||"Invalid API key",a=r.valid?g("ok","upstream",null,null):k({error:t});return{valid:!!r.valid,error:t,warning:r.warning||null,diagnosis:a}}async function C(e,r){let t,a=await (0,o.getProviderConnectionById)(e);if(!a)return{valid:!1,error:"Connection not found",diagnosis:null,latencyMs:0};let i="string"==typeof a.provider?a.provider:"";if(!i)return{valid:!1,error:"Connection provider is invalid",diagnosis:g("validation_error","local","Connection provider is invalid","provider_invalid"),latencyMs:0};let n=null;try{n=await (0,s.resolveProxyForConnection)(e)}catch(r){console.log(`[ConnectionTest] Failed to resolve proxy for ${e}:`,r?.message)}let l=Date.now(),d=await w(i);if(d?.diagnosis)t={valid:!1,error:d.error,refreshed:!1,diagnosis:d.diagnosis};else if("apikey"===a.authType){let e=r?{...a,providerSpecificData:{...a.providerSpecificData||{},validationModelId:r}}:a;t=await (0,v.runWithProxyContext)(n?.proxy||null,()=>P(e))}else t=await (0,v.runWithProxyContext)(n?.proxy||null,()=>I(a));let u=Date.now()-l,c=new Date().toISOString(),p=t.diagnosis||(t.valid?g("ok","local",null,null):k({error:t.error,statusCode:t.statusCode})),m={testStatus:t.valid?"active":"error",lastError:t.valid?null:t.error,lastErrorAt:t.valid?null:c,lastTested:c,lastErrorType:t.valid?null:p.type,lastErrorSource:t.valid?null:p.source,errorCode:t.valid?null:p.code||t.statusCode||null,rateLimitedUntil:t.valid?null:a.rateLimitedUntil||null};t.valid&&(m.backoffLevel=0),t.refreshed&&t.newTokens&&(m.accessToken=t.newTokens.accessToken,t.newTokens.refreshToken&&(m.refreshToken=t.newTokens.refreshToken),t.newTokens.expiresIn&&(m.expiresAt=new Date(Date.now()+1e3*t.newTokens.expiresIn).toISOString())),await (0,o.updateProviderConnection)(e,m),t.refreshed&&await x();try{(0,h.saveCallLog)({method:"POST",path:"/api/providers/test",status:t.valid?200:t.statusCode||401,model:"connection-test",provider:i,connectionId:e,duration:u,error:t.valid?null:t.error||null,sourceFormat:"test",targetFormat:"test"}).catch(()=>{})}catch{}try{(0,f.logProxyEvent)({status:t.valid?"success":"error",proxy:n?.proxy||null,level:n?.level||"provider-test",levelId:n?.levelId||null,provider:i,targetUrl:`${i}/connection-test`,latencyMs:u,error:t.valid?null:t.error||null,connectionId:e,comboId:null,account:e?.slice(0,8)||null,tlsFingerprint:!1})}catch{}return{valid:t.valid,error:t.error,warning:t.warning||null,refreshed:t.refreshed||!1,diagnosis:p,latencyMs:u,statusCode:t.statusCode||null,runtime:d||null,testedAt:c}}async function A(e,{params:r}){try{let{id:t}=await r,i={};try{i=await e.json()}catch{}let o=(0,n.validateBody)($,i);if((0,n.isValidationFailure)(o))return a.NextResponse.json({error:o.error},{status:400});let{validationModelId:s}=o.data,l=await C(t,s);if("Connection not found"===l.error)return a.NextResponse.json({error:"Connection not found"},{status:404});return a.NextResponse.json(l)}catch(e){return console.log("Error testing connection:",e),a.NextResponse.json({error:"Test failed"},{status:500})}}e.s(["POST",()=>A,"testSingleConnection",()=>C]),t()}catch(e){t(e)}},!1)];
1
+ module.exports=[383368,e=>e.a(async(r,t)=>{try{var a=e.i(828059),i=e.i(963219),n=r([i]);[i]=n.then?(await n)():n;let b=new Set(["openai","openai-responses"]),T=new Set(["gemini","gemini-cli"]);function o(e){return(e||"").trim().replace(/\/$/,"")}function s(e){return{"Content-Type":"application/json",Authorization:`Bearer ${e}`}}async function l({provider:e,apiKey:r,baseUrl:t,providerSpecificData:a={},modelId:n="gpt-4o-mini",modelsUrl:l}){if(!t)return{valid:!1,error:"Missing base URL"};let d=l||function(e){let r=o(e);if(!r)return"";for(let e of["/chat/completions","/responses","/chat","/messages"])if(r.endsWith(e))return`${r.slice(0,-e.length)}/models`;return`${r}/models`}(t);if(!d)return{valid:!1,error:"Invalid models endpoint"};let u=await fetch(d,{method:"GET",headers:s(r)});if(u.ok)return{valid:!0,error:null};if(401===u.status||403===u.status)return{valid:!1,error:"Invalid API key"};let c=function(e,r,t={}){let a=o(r);return a?(0,i.isOpenAICompatibleProvider)(e)?t?.apiType==="responses"?`${a}/responses`:`${a}/chat/completions`:a.endsWith("/chat/completions")||a.endsWith("/responses")||a.endsWith("/chat")?a:a.endsWith("/v1")?`${a}/chat/completions`:a:""}(e,t,a);if(!c)return{valid:!1,error:`Validation failed: ${u.status}`};let p=a?.validationModelId||n,h=await fetch(c,{method:"POST",headers:s(r),body:JSON.stringify({model:p,messages:[{role:"user",content:"test"}],max_tokens:1})});return h.ok?{valid:!0,error:null}:401===h.status||403===h.status?{valid:!1,error:"Invalid API key"}:404===h.status||405===h.status?{valid:!1,error:"Provider validation endpoint not supported"}:h.status>=500?{valid:!1,error:`Provider unavailable (${h.status})`}:{valid:!0,error:null}}async function d({apiKey:e,baseUrl:r,modelId:t,headers:a={},providerSpecificData:i={}}){if(!r)return{valid:!1,error:"Missing base URL"};let n={"Content-Type":"application/json",...a};n["x-api-key"]||n["X-API-Key"]||(n["x-api-key"]=e),n["anthropic-version"]||n["Anthropic-Version"]||(n["anthropic-version"]="2023-06-01");let o=i?.validationModelId||t||"claude-3-5-sonnet-20241022",s=await fetch(r,{method:"POST",headers:n,body:JSON.stringify({model:o,max_tokens:1,messages:[{role:"user",content:"test"}]})});return 401===s.status||403===s.status?{valid:!1,error:"Invalid API key"}:{valid:!0,error:null}}async function u({apiKey:e,baseUrl:r}){if(!r)return{valid:!1,error:"Missing base URL"};let t=r.includes("?")?"&":"?",a=await fetch(`${r}${t}key=${encodeURIComponent(e)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return a.ok?{valid:!0,error:null}:401===a.status||403===a.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${a.status}`}}async function c({apiKey:e}){try{let r=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${e}`}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function p({apiKey:e}){try{let r=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:e,"Content-Type":"application/json"}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function h({apiKey:e}){try{let r=await fetch("https://api.nanobananaapi.ai/api/v1/nanobanana/generate",{method:"POST",headers:{Authorization:`Bearer ${e}`,"Content-Type":"application/json"},body:JSON.stringify({prompt:"test",model:"nanobanana-flash"})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function f({apiKey:e}){try{let r=await fetch("https://api.elevenlabs.io/v1/voices",{method:"GET",headers:{"xi-api-key":e,"Content-Type":"application/json"}});if(r.ok)return{valid:!0,error:null};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${r.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function v({apiKey:e}){try{let r=await fetch("https://api.inworld.ai/tts/v1/voice",{method:"POST",headers:{Authorization:`Basic ${e}`,"Content-Type":"application/json"},body:JSON.stringify({text:"test",modelId:"inworld-tts-1.5-mini",audioConfig:{audioEncoding:"MP3"}})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function m({apiKey:e,providerSpecificData:r={}}){try{let t=o(r.baseUrl)||"https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1",a=t.endsWith("/messages")?t.slice(0,-9):t,i=`${a}/messages`,n=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01"},body:JSON.stringify({model:"qwen3-coder-plus",max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===n.status||403===n.status)return{valid:!1,error:"Invalid API key"};if(n.status>=400&&n.status<500||n.ok)return{valid:!0,error:null};return{valid:!1,error:`Validation failed: ${n.status}`}}catch(e){return{valid:!1,error:e.message||"Validation failed"}}}async function y({apiKey:e,providerSpecificData:r={}}){let t=o(r.baseUrl);if(!t)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};let a="string"==typeof r?.validationModelId?r.validationModelId.trim():"",i=!1;try{let r=await fetch(`${t}/models`,{method:"GET",headers:s(e)});if(i=!0,r.ok)return{valid:!0,error:null,method:"models_endpoint"};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};if(429===r.status)return{valid:!0,error:null,method:"models_endpoint",warning:"Rate limited, but credentials are valid"}}catch{}if(!a)return{valid:!1,error:"Endpoint /models unavailable. Provide a Model ID to validate via /chat/completions."};let n=r.apiType||"chat",l=`${t}${"responses"===n?"/responses":"/chat/completions"}`;try{let r=await fetch(l,{method:"POST",headers:s(e),body:JSON.stringify({model:a,messages:[{role:"user",content:"test"}],max_tokens:1})});if(r.ok)return{valid:!0,error:null,method:"chat_completions"};if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};if(429===r.status)return{valid:!0,error:null,method:"chat_completions",warning:"Rate limited, but credentials are valid"};if(400===r.status)return{valid:!0,error:null,method:"inference_available",warning:"Model ID may be invalid, but credentials are valid"};if(r.status>=400&&r.status<500)return{valid:!0,error:null,method:"inference_available"};if(r.status>=500)return{valid:!1,error:`Provider unavailable (${r.status})`}}catch{}if(!i)return{valid:!1,error:"Connection failed while testing /chat/completions"};try{let r=await fetch(t,{method:"GET",headers:s(e),signal:AbortSignal.timeout(5e3)});if(r.status<500)return{valid:!0,error:null};return{valid:!1,error:`Provider unavailable (${r.status})`}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function g({apiKey:e,providerSpecificData:r={}}){let t=o(r.baseUrl);if(!t)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};t.endsWith("/messages")&&(t=t.slice(0,-9));let a={"Content-Type":"application/json","x-api-key":e,"anthropic-version":"2023-06-01",Authorization:`Bearer ${e}`};try{let e=await fetch(`${t}/models`,{method:"GET",headers:a});if(e.ok)return{valid:!0,error:null};if(401===e.status||403===e.status)return{valid:!1,error:"Invalid API key"}}catch{}let i=r?.validationModelId||"claude-3-5-sonnet-20241022";try{let e=await fetch(`${t}/messages`,{method:"POST",headers:a,body:JSON.stringify({model:i,max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===e.status||403===e.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}}async function k(e,r){try{let t=await fetch(e,r);if(t.ok)return{valid:!0,error:null,unsupported:!1};if(401===t.status||403===t.status)return{valid:!1,error:"Invalid API key",unsupported:!1};if(t.status<500)return{valid:!0,error:null,unsupported:!1};return{valid:!1,error:`Validation failed: ${t.status}`,unsupported:!1}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}let x={"serper-search":e=>({url:"https://google.serper.dev/search",init:{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":e},body:JSON.stringify({q:"test",num:1})}}),"brave-search":e=>({url:"https://api.search.brave.com/res/v1/web/search?q=test&count=1",init:{method:"GET",headers:{Accept:"application/json","X-Subscription-Token":e}}}),"perplexity-search":e=>({url:"https://api.perplexity.ai/search",init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({query:"test",max_results:1})}}),"exa-search":e=>({url:"https://api.exa.ai/search",init:{method:"POST",headers:{"Content-Type":"application/json","x-api-key":e},body:JSON.stringify({query:"test",numResults:1})}}),"tavily-search":e=>({url:"https://api.tavily.com/search",init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({query:"test",max_results:1})}})};async function w({provider:e,apiKey:r,providerSpecificData:t={}}){if(!e||!r)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,i.isOpenAICompatibleProvider)(e))try{return await y({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}if((0,i.isAnthropicCompatibleProvider)(e))try{return await g({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let n={deepgram:c,assemblyai:p,nanobanana:h,elevenlabs:f,inworld:v,"bailian-coding-plan":m,longcat:async({apiKey:e})=>{try{let r=await fetch("https://api.longcat.chat/openai/v1/chat/completions",{method:"POST",headers:s(e),body:JSON.stringify({model:"longcat",messages:[{role:"user",content:"test"}],max_tokens:1})});if(401===r.status||403===r.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(e){return{valid:!1,error:e.message||"Connection failed"}}},...Object.fromEntries(Object.entries(x).map(([e,r])=>[e,({apiKey:e})=>{let{url:t,init:a}=r(e);return k(t,a)}]))};if(n[e])try{return await n[e]({apiKey:r,providerSpecificData:t})}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}let w=(0,a.getRegistryEntry)(e);if(!w)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let I=w.models?.[0]?.id||null,P=w.testKeyBaseUrl?{...w,baseUrl:w.testKeyBaseUrl}:w,C=function(e,r={}){return r?.baseUrl?o(r.baseUrl):e?.baseUrl?o(e.baseUrl):""}(P,t);try{if(b.has(w.format))return await l({provider:e,apiKey:r,baseUrl:C,providerSpecificData:t,modelId:I,modelsUrl:w.modelsUrl});if("claude"===w.format){let e=`${C}${w.urlSuffix||""}`,a={...w.headers||{}};return"x-api-key"===(w.authHeader||"").toLowerCase()?a["x-api-key"]=r:a.Authorization=`Bearer ${r}`,await d({apiKey:r,baseUrl:e,modelId:I,headers:a,providerSpecificData:t})}if(T.has(w.format))return await u({apiKey:r,baseUrl:C});return{valid:!1,error:"Provider validation not supported",unsupported:!0}}catch(e){return{valid:!1,error:e.message||"Validation failed",unsupported:!1}}}e.s(["validateProviderApiKey",()=>w]),t()}catch(e){t(e)}},!1),910660,e=>e.a(async(r,t)=>{try{var a=e.i(89171),i=e.i(677850),n=e.i(200392);e.i(245272);var o=e.i(385498),s=e.i(548941),l=e.i(250875),d=e.i(639173),u=e.i(383368),c=e.i(266240),p=e.i(928602);e.i(312125);var h=e.i(397506),f=e.i(496928),v=e.i(444675),m=r([i,n,u]);[i,n,u]=m.then?(await m)():m;let _={claude:{checkExpiry:!0,refreshable:!0},codex:{checkExpiry:!0,refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"OmniRoute",Accept:"application/vnd.github+json"}},iflow:{checkExpiry:!0,refreshable:!0},qwen:{checkExpiry:!0,refreshable:!0},cursor:{checkExpiry:!0},"kimi-coding":{checkExpiry:!0,refreshable:!0},kilocode:{checkExpiry:!0},cline:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0}},S={cline:"cline",kilocode:"kilo"},$=i.z.object({validationModelId:i.z.string().max(500).optional()});function y(e,r="Unknown error"){return"string"!=typeof e?r:e.trim()||r}function g(e,r,t,a=null){return{type:e,source:r,message:t||null,code:a??null}}function k({error:e,statusCode:r=null,refreshFailed:t=!1,unsupported:a=!1}){let i=y(e,"Connection test failed"),n=i.toLowerCase(),o=Number.isFinite(r)?Number(r):null;return a?g("unsupported","validation",i,"unsupported"):t||n.includes("refresh failed")?g("token_refresh_failed","oauth",i,"refresh_failed"):401===o||403===o?g("upstream_auth_error","upstream",i,String(o)):429===o?g("upstream_rate_limited","upstream",i,"429"):o&&o>=500?g("upstream_unavailable","upstream",i,String(o)):n.includes("token expired")||n.includes("expired")?g("token_expired","oauth",i,"token_expired"):n.includes("invalid api key")||n.includes("token invalid")||n.includes("revoked")||n.includes("access denied")||n.includes("unauthorized")||n.includes("forbidden")?g("upstream_auth_error","upstream",i,o?String(o):"auth_failed"):n.includes("rate limit")||n.includes("quota")||n.includes("too many requests")?g("upstream_rate_limited","upstream",i,o?String(o):"rate_limited"):n.includes("fetch failed")||n.includes("network")||n.includes("timeout")||n.includes("econn")||n.includes("enotfound")||n.includes("socket")?g("network_error","upstream",i,"network_error"):g("upstream_error","upstream",i,o?String(o):"upstream_error")}async function w(e){let r=S[e];if(!r)return null;try{let e=await (0,c.getCliRuntimeStatus)(r);if(e.installed&&e.runnable)return e;let t=e.installed?`Local CLI runtime is installed but not runnable (${e.reason||"healthcheck_failed"})`:"Local CLI runtime is not installed";return{...e,diagnosis:g("runtime_error","local",t,e.reason||"runtime_error"),error:t}}catch(r){let e=`Failed to check local CLI runtime: ${r?.message||"runtime_check_failed"}`;return{installed:!1,runnable:!1,reason:"runtime_check_failed",diagnosis:g("runtime_error","local",e,"runtime_check_failed"),error:e}}}async function b(e){let{provider:r,refreshToken:t}=e;if(!t)return null;try{let a={refreshToken:t,providerSpecificData:e.providerSpecificData||{}};return await (0,p.getAccessToken)(r,a,console)}catch(e){return console.log(`Error refreshing ${r} token:`,e.message),null}}function T(e){let r=e.expiresAt||e.tokenExpiresAt;return!!r&&new Date(r).getTime()<=Date.now()+3e5}async function x(){try{if(!await (0,s.isCloudEnabled)())return;let e=await (0,l.getConsistentMachineId)();await (0,d.syncToCloud)(e)}catch(e){console.log("Error syncing to cloud after token refresh:",e)}}async function I(e){let r=_[e.provider];if(!r){let e="Provider test not supported";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e,unsupported:!0})}}if(!e.accessToken){if(r.refreshable&&!e.refreshToken){let e="Refresh token expired. Please re-authenticate this account.";return{valid:!1,error:e,refreshed:!1,diagnosis:g("reauth_required","oauth",e,"reauth_required")}}let t="No access token";return{valid:!1,error:t,refreshed:!1,diagnosis:g("auth_missing","local",t,"missing_access_token")}}let t=e.accessToken,a=!1,i=null,n=T(e);if(r.refreshable&&n&&e.refreshToken){let r=await b(e);if(r)t=r.accessToken,a=!0,i=r;else{let e="Token expired and refresh failed";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e,refreshFailed:!0})}}}if(r.checkExpiry){if(a)return{valid:!0,error:null,refreshed:a,newTokens:i,diagnosis:g("ok","oauth",null,null)};if(n){let e="Token expired";return{valid:!1,error:e,refreshed:!1,diagnosis:k({error:e})}}return{valid:!0,error:null,refreshed:!1,newTokens:null,diagnosis:g("ok","local",null,null)}}try{let n={[r.authHeader]:`${r.authPrefix}${t}`,...r.extraHeaders},o=await fetch(r.url,{method:r.method,headers:n});if(o.ok)return{valid:!0,error:null,refreshed:a,newTokens:i,diagnosis:g("ok","upstream",null,null)};if((401===o.status||403===o.status)&&!a&&T(e)&&e.refreshToken&&"string"==typeof e.refreshToken){let t=await b(e);if(t){let e=await fetch(r.url,{method:r.method,headers:{[r.authHeader]:`${r.authPrefix}${t.accessToken}`,...r.extraHeaders}});if(e.ok)return{valid:!0,error:null,refreshed:!0,newTokens:t,diagnosis:g("ok","upstream",null,null)};let a=`API returned ${e.status} after token refresh`;return{valid:!1,error:a,refreshed:!0,statusCode:e.status,diagnosis:k({error:a,statusCode:e.status})}}let a="Token expired and refresh failed";return{valid:!1,error:a,refreshed:!1,statusCode:401,diagnosis:k({error:a,statusCode:401,refreshFailed:!0})}}let s=401===o.status?"Token invalid or revoked":403===o.status?"Access denied":`API returned ${o.status}`;return{valid:!1,error:s,refreshed:a,statusCode:o.status,diagnosis:k({error:s,statusCode:o.status})}}catch(r){let e=y(r?.message,"Connection test failed");return{valid:!1,error:e,refreshed:a,diagnosis:k({error:e})}}}async function P(e){if(!e.apiKey){let e="Missing API key";return{valid:!1,error:e,diagnosis:g("auth_missing","local",e,"missing_api_key")}}let r=await (0,u.validateProviderApiKey)({provider:e.provider,apiKey:e.apiKey,providerSpecificData:e.providerSpecificData});if(r.unsupported){let e="Provider test not supported";return{valid:!1,error:e,diagnosis:k({error:e,unsupported:!0})}}let t=r.valid?null:r.error||"Invalid API key",a=r.valid?g("ok","upstream",null,null):k({error:t});return{valid:!!r.valid,error:t,warning:r.warning||null,diagnosis:a}}async function C(e,r){let t,a=await (0,o.getProviderConnectionById)(e);if(!a)return{valid:!1,error:"Connection not found",diagnosis:null,latencyMs:0};let i="string"==typeof a.provider?a.provider:"";if(!i)return{valid:!1,error:"Connection provider is invalid",diagnosis:g("validation_error","local","Connection provider is invalid","provider_invalid"),latencyMs:0};let n=null;try{n=await (0,s.resolveProxyForConnection)(e)}catch(r){console.log(`[ConnectionTest] Failed to resolve proxy for ${e}:`,r?.message)}let l=Date.now(),d=await w(i);if(d?.diagnosis)t={valid:!1,error:d.error,refreshed:!1,diagnosis:d.diagnosis};else if("apikey"===a.authType){let e=r?{...a,providerSpecificData:{...a.providerSpecificData||{},validationModelId:r}}:a;t=await (0,v.runWithProxyContext)(n?.proxy||null,()=>P(e))}else t=await (0,v.runWithProxyContext)(n?.proxy||null,()=>I(a));let u=Date.now()-l,c=new Date().toISOString(),p=t.diagnosis||(t.valid?g("ok","local",null,null):k({error:t.error,statusCode:t.statusCode})),m={testStatus:t.valid?"active":"error",lastError:t.valid?null:t.error,lastErrorAt:t.valid?null:c,lastTested:c,lastErrorType:t.valid?null:p.type,lastErrorSource:t.valid?null:p.source,errorCode:t.valid?null:p.code||t.statusCode||null,rateLimitedUntil:t.valid?null:a.rateLimitedUntil||null};t.valid&&(m.backoffLevel=0),t.refreshed&&t.newTokens&&(m.accessToken=t.newTokens.accessToken,t.newTokens.refreshToken&&(m.refreshToken=t.newTokens.refreshToken),t.newTokens.expiresIn&&(m.expiresAt=new Date(Date.now()+1e3*t.newTokens.expiresIn).toISOString())),await (0,o.updateProviderConnection)(e,m),t.refreshed&&await x();try{(0,h.saveCallLog)({method:"POST",path:"/api/providers/test",status:t.valid?200:t.statusCode||401,model:"connection-test",provider:i,connectionId:e,duration:u,error:t.valid?null:t.error||null,sourceFormat:"test",targetFormat:"test"}).catch(()=>{})}catch{}try{(0,f.logProxyEvent)({status:t.valid?"success":"error",proxy:n?.proxy||null,level:n?.level||"provider-test",levelId:n?.levelId||null,provider:i,targetUrl:`${i}/connection-test`,latencyMs:u,error:t.valid?null:t.error||null,connectionId:e,comboId:null,account:e?.slice(0,8)||null,tlsFingerprint:!1})}catch{}return{valid:t.valid,error:t.error,warning:t.warning||null,refreshed:t.refreshed||!1,diagnosis:p,latencyMs:u,statusCode:t.statusCode||null,runtime:d||null,testedAt:c}}async function A(e,{params:r}){try{let{id:t}=await r,i={};try{i=await e.json()}catch{}let o=(0,n.validateBody)($,i);if((0,n.isValidationFailure)(o))return a.NextResponse.json({error:o.error},{status:400});let{validationModelId:s}=o.data,l=await C(t,s);if("Connection not found"===l.error)return a.NextResponse.json({error:"Connection not found"},{status:404});return a.NextResponse.json(l)}catch(e){return console.log("Error testing connection:",e),a.NextResponse.json({error:"Test failed"},{status:500})}}e.s(["POST",()=>A,"testSingleConnection",()=>C]),t()}catch(e){t(e)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=src_6320c728._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},446786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),342602,(a,b,c)=>{"use strict";b.exports=a.r(918622)},187924,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactJsxRuntime},572131,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].React},804730,a=>{a.v({name:"omniroute",version:"3.0.5",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},588788,a=>{"use strict";var b=a.i(32886),c=a.i(187924);function d({locale:a,...d}){if(!a)throw Error(void 0);return(0,c.jsx)(b.IntlProvider,{locale:a,...d})}a.s(["default",()=>d])}];
1
+ module.exports=[918622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},446786,(a,b,c)=>{b.exports=a.x("os",()=>require("os"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),342602,(a,b,c)=>{"use strict";b.exports=a.r(918622)},187924,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].ReactJsxRuntime},572131,(a,b,c)=>{"use strict";b.exports=a.r(342602).vendored["react-ssr"].React},804730,a=>{a.v({name:"omniroute",version:"3.0.6",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},588788,a=>{"use strict";var b=a.i(32886),c=a.i(187924);function d({locale:a,...d}){if(!a)throw Error(void 0);return(0,c.jsx)(b.IntlProvider,{locale:a,...d})}a.s(["default",()=>d])}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__9ef96d20._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),804730,a=>{a.v({name:"omniroute",version:"3.0.5",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},569264,a=>{a.n(a.i(354832))},650645,a=>{a.n(a.i(827572))},923576,a=>{a.n(a.i(104858))},825210,a=>{a.n(a.i(402747))},517537,a=>{a.n(a.i(903363))},13718,a=>{a.n(a.i(47967))},118198,a=>{a.n(a.i(545518))},296736,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},500790,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>"))},784707,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js"))},297647,a=>{"use strict";a.i(500790);var b=a.i(784707);a.n(b)},395936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(296736),g=a.r(907997),h=f._(a.r(297647));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},330878,a=>{"use strict";var b=a.i(800717),c=a.i(118845),d=a.i(40953),e=(0,b.cache)(function(a,b){return function({_cache:a=(0,c.b)(),_formatters:b=(0,c.c)(a),getMessageFallback:e=d.d,messages:f,namespace:g,onError:h=d.b,...i}){return function({messages:a,namespace:b,...c},e){return a=a["!"],b=(0,d.r)(b,"!"),(0,d.a)({...c,messages:a,namespace:b})}({...i,onError:h,cache:a,formatters:b,getMessageFallback:e,messages:{"!":f},namespace:g?`!.${g}`:"!"},0)}({...a,namespace:b})});a.s(["default",()=>e],330878)},442979,a=>{"use strict";var b=a.i(330878),c=a.i(767228),d=a.i(800717)["use".trim()];function e(...[a]){let f=function(a){var b=(0,c.default)();try{return d(b)}catch(b){throw b instanceof TypeError&&b.message.includes("Cannot read properties of null (reading 'use')")?Error(`\`${a}\` is not callable within an async component. Please refer to https://next-intl.dev/docs/environments/server-client-components#async-components`,{cause:b}):b}}("useTranslations");return(0,b.default)(f,a)}a.s(["useTranslations",()=>e],442979)}];
1
+ module.exports=[193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},677850,a=>a.a(async(b,c)=>{try{let b=await a.y("zod");a.n(b),c()}catch(a){c(a)}},!0),804730,a=>{a.v({name:"omniroute",version:"3.0.6",description:"Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",type:"module",bin:{omniroute:"bin/omniroute.mjs","omniroute-reset-password":"bin/reset-password.mjs"},files:["bin/","app/","open-sse/mcp-server/","src/shared/contracts/","scripts/postinstall.mjs","scripts/native-binary-compat.mjs","README.md","LICENSE"],workspaces:["open-sse"],engines:{node:">=18.0.0 <24.0.0"},keywords:["ai","router","proxy","openai","claude","anthropic","gemini","fallback","cursor","cline","codex","llm","auto-fallback"],license:"MIT",author:"diegosouzapw",repository:{type:"git",url:"https://github.com/diegosouzapw/OmniRoute"},homepage:"https://omniroute.online",scripts:{dev:"node scripts/run-next.mjs dev",build:"node scripts/build-next-isolated.mjs","build:cli":"node scripts/prepublish.mjs",start:"node scripts/run-next.mjs start",lint:"eslint .","electron:dev":'concurrently "npm run dev" "wait-on http://localhost:20128 && cd electron && npm run dev"',"electron:build":"npm run build && cd electron && npm run build","electron:build:win":"npm run build && cd electron && npm run build:win","electron:build:mac":"npm run build && cd electron && npm run build:mac","electron:build:linux":"npm run build && cd electron && npm run build:linux",test:"node --import tsx/esm --test tests/unit/*.test.mjs","test:unit":"node --import tsx/esm --test tests/unit/*.test.mjs","test:plan3":"node --import tsx/esm --test tests/unit/plan3-p0.test.mjs","test:fixes":"node --import tsx/esm --test tests/unit/fixes-p1.test.mjs","test:security":"node --import tsx/esm --test tests/unit/security-fase01.test.mjs","check:cycles":"node scripts/check-cycles.mjs","check:route-validation:t06":"node scripts/check-route-validation.mjs","check:any-budget:t11":"node scripts/check-t11-any-budget.mjs","check:docs-sync":"node scripts/check-docs-sync.mjs","typecheck:core":"tsc --pretty false -p tsconfig.typecheck-core.json","typecheck:noimplicit:core":"tsc --pretty false -p tsconfig.typecheck-noimplicit-core.json","test:integration":"node --import tsx/esm --test tests/integration/*.test.mjs","test:e2e":"node scripts/run-playwright-tests.mjs test tests/e2e/*.spec.ts","test:protocols:e2e":"node scripts/run-protocol-clients-tests.mjs","test:vitest":"vitest run open-sse/mcp-server/__tests__/*.test.ts open-sse/services/autoCombo/__tests__/*.test.ts","test:ecosystem":"node scripts/run-ecosystem-tests.mjs","test:coverage":"npx c8 --exclude=open-sse --check-coverage --lines 50 --functions 50 --branches 50 node --import tsx/esm --test tests/unit/*.test.mjs","test:all":"npm run test:unit && npm run test:vitest && npm run test:ecosystem && npm run test:e2e",check:"npm run lint && npm run test",prepublishOnly:"npm run build:cli",postinstall:"node scripts/postinstall.mjs",prepare:"husky","system-info":"node scripts/system-info.mjs"},dependencies:{"@lobehub/icons":"^5.0.1","@modelcontextprotocol/sdk":"^1.27.1","@monaco-editor/react":"^4.7.0","@swc/helpers":"0.5.19",bcryptjs:"^3.0.3","better-sqlite3":"^12.6.2",bottleneck:"^2.19.5",dompurify:"^3.3.2",express:"^5.2.1","fetch-socks":"^1.3.2","http-proxy-middleware":"^3.0.5","https-proxy-agent":"^8.0.0",jose:"^6.1.3",keytar:"^7.9.0",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.0.10","next-intl":"^4.8.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0",pino:"^10.3.1","pino-pretty":"^13.1.3",react:"19.2.4","react-dom":"19.2.4",recharts:"^3.7.0",selfsigned:"^5.5.0",tsx:"^4.21.0",undici:"^7.19.2",uuid:"^13.0.0","wreq-js":"^2.0.1",zod:"^4.3.6",zustand:"^5.0.10"},devDependencies:{"@playwright/test":"^1.58.2","@tailwindcss/postcss":"^4.1.18","@types/bcryptjs":"^3.0.0","@types/better-sqlite3":"^7.6.13","@types/keytar":"^4.4.0","@types/node":"^25.2.3","@types/react":"^19.2.14","@types/react-dom":"^19.2.3",concurrently:"^9.2.1","cross-env":"^10.1.0",eslint:"^9.39.2","eslint-config-next":"^16.0.10",husky:"^9.1.7","lint-staged":"^16.2.7",prettier:"^3.8.1",tailwindcss:"^4",typescript:"^5.9.3","typescript-eslint":"^8.56.0",vitest:"^4.0.18","wait-on":"^9.0.4"},"lint-staged":{"*.{js,jsx,ts,tsx,mjs}":["prettier --write","eslint --fix --no-error-on-unmatched-pattern"],"*.{json,md,yml,yaml,css}":["prettier --write"]},pnpm:{onlyBuiltDependencies:["@parcel/watcher","@swc/core","better-sqlite3","esbuild","omniroute","sharp"]},overrides:{dompurify:"^3.3.2"}})},569264,a=>{a.n(a.i(354832))},650645,a=>{a.n(a.i(827572))},923576,a=>{a.n(a.i(104858))},825210,a=>{a.n(a.i(402747))},517537,a=>{a.n(a.i(903363))},13718,a=>{a.n(a.i(47967))},118198,a=>{a.n(a.i(545518))},296736,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},500790,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js <module evaluation>"))},784707,(a,b,c)=>{let{createClientModuleProxy:d}=a.r(211857);a.n(d("[project]/node_modules/next/dist/client/app-dir/link.js"))},297647,a=>{"use strict";a.i(500790);var b=a.i(784707);a.n(b)},395936,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={default:function(){return i},useLinkStatus:function(){return h.useLinkStatus}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(296736),g=a.r(907997),h=f._(a.r(297647));function i(a){let b=a.legacyBehavior,c="string"==typeof a.children||"number"==typeof a.children||"string"==typeof a.children?.type,d=a.children?.type?.$$typeof===Symbol.for("react.client.reference");return!b||c||d||(a.children?.type?.$$typeof===Symbol.for("react.lazy")?console.error("Using a Lazy Component as a direct child of `<Link legacyBehavior>` from a Server Component is not supported. If you need legacyBehavior, wrap your Lazy Component in a Client Component that renders the Link's `<a>` tag."):console.error("Using a Server Component as a direct child of `<Link legacyBehavior>` is not supported. If you need legacyBehavior, wrap your Server Component in a Client Component that renders the Link's `<a>` tag.")),(0,g.jsx)(h.default,{...a})}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},330878,a=>{"use strict";var b=a.i(800717),c=a.i(118845),d=a.i(40953),e=(0,b.cache)(function(a,b){return function({_cache:a=(0,c.b)(),_formatters:b=(0,c.c)(a),getMessageFallback:e=d.d,messages:f,namespace:g,onError:h=d.b,...i}){return function({messages:a,namespace:b,...c},e){return a=a["!"],b=(0,d.r)(b,"!"),(0,d.a)({...c,messages:a,namespace:b})}({...i,onError:h,cache:a,formatters:b,getMessageFallback:e,messages:{"!":f},namespace:g?`!.${g}`:"!"},0)}({...a,namespace:b})});a.s(["default",()=>e],330878)},442979,a=>{"use strict";var b=a.i(330878),c=a.i(767228),d=a.i(800717)["use".trim()];function e(...[a]){let f=function(a){var b=(0,c.default)();try{return d(b)}catch(b){throw b instanceof TypeError&&b.message.includes("Cannot read properties of null (reading 'use')")?Error(`\`${a}\` is not callable within an async component. Please refer to https://next-intl.dev/docs/environments/server-client-components#async-components`,{cause:b}):b}}("useTranslations");return(0,b.default)(f,a)}a.s(["useTranslations",()=>e],442979)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__a6942102._.js.map
@@ -1,4 +1,4 @@
1
1
  module.exports=[920226,a=>{"use strict";var b=a.i(572131);let c=a=>{let b,c=new Set,d=(a,d)=>{let e="function"==typeof a?a(b):a;if(!Object.is(e,b)){let a=b;b=(null!=d?d:"object"!=typeof e||null===e)?e:Object.assign({},b,e),c.forEach(c=>c(b,a))}},e=()=>b,f={setState:d,getState:e,getInitialState:()=>g,subscribe:a=>(c.add(a),()=>c.delete(a))},g=b=a(d,e,f);return f},d=a=>{let d=a?c(a):c,e=a=>(function(a,c=a=>a){let d=b.default.useSyncExternalStore(a.subscribe,b.default.useCallback(()=>c(a.getState()),[a,c]),b.default.useCallback(()=>c(a.getInitialState()),[a,c]));return b.default.useDebugValue(d),d})(d,a);return Object.assign(e,d),e},e=a=>a?d(a):d;a.s(["create",()=>e],920226)},862435,a=>{"use strict";let b=a=>c=>{try{let d=a(c);if(d instanceof Promise)return d;return{then:a=>b(a)(d),catch(a){return this}}}catch(a){return{then(a){return this},catch:c=>b(c)(a)}}},c=(a,c)=>(d,e,f)=>{let g,h={storage:function(a,b){let c;try{c=a()}catch(a){return}return{getItem:a=>{var b;let d=a=>null===a?null:JSON.parse(a,void 0),e=null!=(b=c.getItem(a))?b:null;return e instanceof Promise?e.then(d):d(e)},setItem:(a,b)=>c.setItem(a,JSON.stringify(b,void 0)),removeItem:a=>c.removeItem(a)}}(()=>window.localStorage),partialize:a=>a,version:0,merge:(a,b)=>({...b,...a}),...c},i=!1,j=0,k=new Set,l=new Set,m=h.storage;if(!m)return a((...a)=>{console.warn(`[zustand persist middleware] Unable to update item '${h.name}', the given storage is currently unavailable.`),d(...a)},e,f);let n=()=>{let a=h.partialize({...e()});return m.setItem(h.name,{state:a,version:h.version})},o=f.setState;f.setState=(a,b)=>(o(a,b),n());let p=a((...a)=>(d(...a),n()),e,f);f.getInitialState=()=>p;let q=()=>{var a,c;if(!m)return;let f=++j;i=!1,k.forEach(a=>{var b;return a(null!=(b=e())?b:p)});let o=(null==(c=h.onRehydrateStorage)?void 0:c.call(h,null!=(a=e())?a:p))||void 0;return b(m.getItem.bind(m))(h.name).then(a=>{if(a)if("number"!=typeof a.version||a.version===h.version)return[!1,a.state];else{if(h.migrate){let b=h.migrate(a.state,a.version);return b instanceof Promise?b.then(a=>[!0,a]):[!0,b]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(a=>{var b;if(f!==j)return;let[c,i]=a;if(d(g=h.merge(i,null!=(b=e())?b:p),!0),c)return n()}).then(()=>{f===j&&(null==o||o(e(),void 0),g=e(),i=!0,l.forEach(a=>a(g)))}).catch(a=>{f===j&&(null==o||o(void 0,a))})};return f.persist={setOptions:a=>{h={...h,...a},a.storage&&(m=a.storage)},clearStorage:()=>{null==m||m.removeItem(h.name)},getOptions:()=>h,rehydrate:()=>q(),hasHydrated:()=>i,onHydrate:a=>(k.add(a),()=>{k.delete(a)}),onFinishHydration:a=>(l.add(a),()=>{l.delete(a)})},h.skipHydration||q(),g||p};a.s(["persist",()=>c])},843314,a=>a.a(async(b,c)=>{try{var d=a.i(677850),e=b([d]);[d]=e.then?(await e)():e;let g=d.z.object({id:d.z.string().min(1),alias:d.z.string().min(1),name:d.z.string().min(1),icon:d.z.string().min(1),color:d.z.string().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:d.z.string().optional(),website:d.z.string().url().optional(),passthroughModels:d.z.boolean().optional(),deprecated:d.z.boolean().optional(),deprecationReason:d.z.string().optional(),hasFree:d.z.boolean().optional(),freeNote:d.z.string().optional(),authHint:d.z.string().optional(),apiHint:d.z.string().optional()}),h=d.z.record(d.z.string(),g);function f(a,b){let c=h.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
2
- ${a}`),Error(`Provider validation failed for ${b}`)}}a.s(["validateProviders",()=>f]),c()}catch(a){c(a)}},!1),662073,a=>a.a(async(b,c)=>{try{var d=a.i(843314),e=b([d]);[d]=e.then?(await e)():e;let j={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},k={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},l={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI (GLM-5)",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0}},m="openai-compatible-",n="anthropic-compatible-";function f(a){return"string"==typeof a&&a.startsWith(m)}function g(a){return"string"==typeof a&&a.startsWith(n)}let o={...j,...k,...l};function h(a){for(let b of Object.values(o))if(b.alias===a||b.id===a)return b;return null}function i(a){let b=o[a];return b?.alias||a}Object.values(o).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(o).reduce((a,b)=>(a[b.id]=b.alias,a),{}),(0,d.validateProviders)(j,"FREE_PROVIDERS"),(0,d.validateProviders)(k,"OAUTH_PROVIDERS"),(0,d.validateProviders)(l,"APIKEY_PROVIDERS"),a.s(["AI_PROVIDERS",0,o,"ANTHROPIC_COMPATIBLE_PREFIX",0,n,"APIKEY_PROVIDERS",0,l,"AUTH_METHODS",0,{oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}},"FREE_PROVIDERS",0,j,"OAUTH_PROVIDERS",0,k,"OPENAI_COMPATIBLE_PREFIX",0,m,"USAGE_SUPPORTED_PROVIDERS",0,["antigravity","kiro","github","codex","claude","kimi-coding"],"getProviderAlias",()=>i,"getProviderByAlias",()=>h,"isAnthropicCompatibleProvider",()=>g,"isOpenAICompatibleProvider",()=>f]),c()}catch(a){c(a)}},!1),911655,a=>{"use strict";var b=a.i(446786);let c=Object.freeze(["temperature","top_p","frequency_penalty","presence_penalty","logprobs","top_logprobs","n"]),d={format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},e={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",defaultContextLength:2e5,headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.63 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.74.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,b.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,b.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,b.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";default:return`Other::${(0,b.platform)()}`}}(),"X-Stainless-Timeout":"600"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude 4.6 Sonnet"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",defaultContextLength:1e6,oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3-1-pro",name:"Gemini 3.1 Pro (Alt ID)"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"gemini-2.0-flash-exp",name:"Gemini 2.0 Flash Exp"},{id:"gemini-1.5-pro",name:"Gemini 1.5 Pro"},{id:"gemini-1.5-flash",name:"Gemini 1.5 Flash"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",defaultContextLength:1e6,oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3-1-pro",name:"Gemini 3.1 Pro (Alt ID)"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"gemini-1.5-pro",name:"Gemini 1.5 Pro"},{id:"gemini-1.5-flash",name:"Gemini 1.5 Flash"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",defaultContextLength:4e5,headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"QwenCode/0.12.3 (linux; x64)","X-Dashscope-AuthType":"qwen-oauth","X-Dashscope-CacheControl":"enable","X-Dashscope-UserAgent":"QwenCode/0.12.3 (linux; x64)","X-Stainless-Arch":"x64","X-Stainless-Lang":"js","X-Stainless-Os":"Linux","X-Stainless-Package-Version":"5.11.0","X-Stainless-Retry-Count":"1","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":"v18.19.1",Connection:"keep-alive","Accept-Language":"*","Sec-Fetch-Mode":"cors"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"},{id:"coder-model",name:"Qwen3.5 (Coder Model)"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"iflow",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"iflow-rome-30ba3b",name:"iFlow ROME"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 Vision Plus"},{id:"kimi-k2-0905",name:"Kimi K2 0905"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek-V3.2-Exp"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3",name:"DeepSeek V3"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b",name:"Qwen3 235B"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":`antigravity/1.107.0 ${(0,b.platform)()}/${(0,b.arch)()}`},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",defaultContextLength:128e3,headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",defaultContextLength:2e5,headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",defaultContextLength:2e5,headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",defaultContextLength:128e3,models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1",unsupportedParams:c},{id:"o1-mini",name:"O1 Mini",unsupportedParams:c},{id:"o1-pro",name:"O1 Pro",unsupportedParams:c},{id:"o3",name:"O3",unsupportedParams:c},{id:"o3-mini",name:"O3 Mini",unsupportedParams:c}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",defaultContextLength:2e5,headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-sonnet-4-6-20251031",name:"Claude Sonnet 4.6 (Dated)"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-opus-4-6-20251031",name:"Claude Opus 4.6 (Dated)"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},"opencode-go":{id:"opencode-go",alias:"opencode-go",format:"openai",executor:"opencode",baseUrl:"https://opencode.ai/zen/go/v1",testKeyBaseUrl:"https://opencode.ai/zen/v1",authType:"apikey",authHeader:"Authorization",authPrefix:"Bearer",defaultContextLength:2e5,models:[{id:"glm-5",name:"GLM-5"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"minimax-m2.7",name:"MiniMax M2.7",targetFormat:"claude"},{id:"minimax-m2.5",name:"MiniMax M2.5",targetFormat:"claude"}]},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",format:"openai",executor:"opencode",baseUrl:"https://opencode.ai/zen/v1",authType:"apikey",authHeader:"Authorization",authPrefix:"Bearer",defaultContextLength:2e5,models:[{id:"minimax-m2.5-free",name:"MiniMax M2.5 Free"},{id:"big-pickle",name:"Big Pickle"},{id:"gpt-5-nano",name:"GPT 5 Nano"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",defaultContextLength:128e3,headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",defaultContextLength:2e5,urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-5",name:"GLM 5"},{id:"glm-5-turbo",name:"GLM 5 Turbo"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",format:"claude",executor:"default",baseUrl:"https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1/messages",chatPath:"/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max (2026-01-23)"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"kimi-k2.5",name:"Kimi K2.5"}]},zai:{id:"zai",alias:"zai",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-5",name:"GLM 5"},{id:"glm-5-turbo",name:"GLM 5 Turbo"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"},{id:"kimi-for-coding",name:"Kimi For Coding"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",...d,urlSuffix:"?beta=true",authType:"oauth",oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"}},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",...d,authType:"apikey"},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",modelsUrl:"https://api.kilo.ai/api/openrouter/models",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"openrouter/free",name:"Free Models Router"},{id:"qwen/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking"},{id:"qwen/qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen/qwen3-vl-30b-a3b-thinking",name:"Qwen3 VL 30B A3B Thinking"},{id:"stepfun/step-3.5-flash:free",name:"StepFun Step 3.5 Flash"},{id:"arcee-ai/trinity-large-preview:free",name:"Arcee AI Trinity Large Preview"},{id:"openai/gpt-4o-mini",name:"GPT-4o Mini"},{id:"openai/gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"openai/gpt-5-nano",name:"GPT-5 Nano"},{id:"openai/gpt-5-mini",name:"GPT-5 Mini"},{id:"anthropic/claude-3-haiku",name:"Claude 3 Haiku"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"deepseek/deepseek-chat-v3.1",name:"DeepSeek V3.1"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-scout",name:"Llama 4 Scout"},{id:"meta-llama/llama-4-maverick",name:"Llama 4 Maverick"},{id:"qwen/qwen3-8b",name:"Qwen3 8B"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B"},{id:"qwen/qwq-32b",name:"QwQ 32B"},{id:"mistralai/mistral-small-24b-instruct-2501",name:"Mistral Small 3"},{id:"mistralai/mistral-7b-instruct",name:"Mistral 7B"},{id:"x-ai/grok-code-fast-1",name:"Grok Code Fast 1"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"minimax-m2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.7",name:"MiniMax M2.7 (Legacy Alias)"},{id:"minimax-m2.7-highspeed",name:"MiniMax M2.7 Highspeed"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5 (Legacy Alias)"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"minimax-m2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.7",name:"MiniMax M2.7 (Legacy Alias)"},{id:"minimax-m2.7-highspeed",name:"MiniMax M2.7 Highspeed"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5 (Legacy Alias)"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},alicode:{id:"alicode",alias:"alicode",format:"openai",executor:"default",baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",format:"openai",executor:"default",baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},blackbox:{id:"blackbox",alias:"bb",format:"openai",executor:"default",baseUrl:"https://api.blackbox.ai/v1/chat/completions",modelsUrl:"https://api.blackbox.ai/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"deepseek-v3",name:"DeepSeek V3"},{id:"blackboxai",name:"Blackbox AI"},{id:"blackboxai-pro",name:"Blackbox AI Pro"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4-fast-non-reasoning",name:"Grok 4 Fast"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-4-1-fast-non-reasoning",name:"Grok 4.1 Fast"},{id:"grok-4-1-fast-reasoning",name:"Grok 4.1 Fast Reasoning"},{id:"grok-4-0709",name:"Grok 4 (0709)"},{id:"grok-4",name:"Grok 4"},{id:"grok-3",name:"Grok 3"},{id:"grok-3-mini",name:"Grok 3 Mini"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo-Free",name:"Llama 3.3 70B Turbo (🆓 Free)"},{id:"meta-llama/Llama-Vision-Free",name:"Llama Vision (🆓 Free)"},{id:"deepseek-ai/DeepSeek-R1-Distill-Llama-70B-Free",name:"DeepSeek R1 Distill 70B (🆓 Free)"},{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",format:"openai",executor:"default",baseUrl:"https://api.ollama.com/v1/chat/completions",modelsUrl:"https://api.ollama.com/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gemma3:27b",name:"Gemma 3 27B"},{id:"llama3.3:70b",name:"Llama 3.3 70B"},{id:"qwen3:72b",name:"Qwen3 72B"},{id:"devstral:24b",name:"Devstral 24B"},{id:"deepseek-r2:671b",name:"DeepSeek R2 671B"},{id:"phi4:14b",name:"Phi 4 14B"},{id:"mistral-small3.2:24b",name:"Mistral Small 3.2 24B"}],passthroughModels:!0},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B",toolCalling:!1},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B (OpenAI Prefix)",toolCalling:!1},{id:"meta/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B (NVIDIA Prefix)"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"},{id:"nvidia/llama-3.1-70b-instruct",name:"Llama 3.1 70B"},{id:"nvidia/llama-3.1-405b-instruct",name:"Llama 3.1 405B"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]},huggingface:{id:"huggingface",alias:"hf",format:"openai",executor:"default",baseUrl:"https://router.huggingface.co/hf-inference/models/meta-llama/Meta-Llama-3.1-70B-Instruct/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Meta-Llama-3.1-70B-Instruct",name:"Llama 3.1 70B Instruct"},{id:"meta-llama/Meta-Llama-3.1-8B-Instruct",name:"Llama 3.1 8B Instruct"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"mistralai/Mistral-7B-Instruct-v0.3",name:"Mistral 7B v0.3"},{id:"microsoft/Phi-3.5-mini-instruct",name:"Phi-3.5 Mini"}]},synthetic:{id:"synthetic",alias:"synthetic",format:"openai",executor:"default",baseUrl:"https://api.synthetic.new/openai/v1/chat/completions",modelsUrl:"https://api.synthetic.new/openai/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"hf:nvidia/Kimi-K2.5-NVFP4",name:"Kimi K2.5 (NVFP4)"},{id:"hf:MiniMaxAI/MiniMax-M2.5",name:"MiniMax M2.5"},{id:"hf:zai-org/GLM-4.7-Flash",name:"GLM 4.7 Flash"},{id:"hf:zai-org/GLM-4.7",name:"GLM 4.7"},{id:"hf:moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"hf:deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"}],passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",format:"openai",executor:"default",baseUrl:"https://api.kilo.ai/api/gateway/chat/completions",modelsUrl:"https://api.kilo.ai/api/gateway/models",authType:"apikey",authHeader:"bearer",models:[{id:"kilo-auto/frontier",name:"Kilo Auto Frontier"},{id:"kilo-auto/balanced",name:"Kilo Auto Balanced"},{id:"kilo-auto/free",name:"Kilo Auto Free"},{id:"nvidia/nemotron-3-super-120b-a12b:free",name:"Nemotron 3 Super 120B (Free)"},{id:"minimax/minimax-m2.5:free",name:"MiniMax M2.5 (Free)"},{id:"arcee-ai/trinity-large-preview:free",name:"Trinity Large Preview (Free)"}],passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",format:"gemini",executor:"vertex",baseUrl:"https://us-central1-aiplatform.googleapis.com/v1/projects",urlBuilder:(a,b,c)=>`https://generativelanguage.googleapis.com/v1beta/models/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"bearer",models:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview (Vertex)"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview (Vertex)"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview (Vertex)"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Vertex)"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash (Vertex)"},{id:"gemini-2.0-flash-thinking-exp",name:"Gemini 2.0 Flash Thinking Exp (Vertex)"},{id:"gemma-2-27b-it",name:"Gemma 2 27B (Vertex)"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 (Vertex Partner)"},{id:"qwen3-next-80b",name:"Qwen3 Next 80B (Vertex Partner)"},{id:"glm-5",name:"GLM-5 (Vertex Partner)"},{id:"claude-opus-4-5@20251101",name:"Claude Opus 4.5 (Vertex)"},{id:"claude-sonnet-4-5@20251101",name:"Claude Sonnet 4.5 (Vertex)"}]},alibaba:{id:"alibaba",alias:"ali",format:"openai",executor:"default",baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",modelsUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"qwen-max",name:"Qwen Max"},{id:"qwen-max-2025-01-25",name:"Qwen Max (2025-01-25)"},{id:"qwen-plus",name:"Qwen Plus"},{id:"qwen-plus-2025-07-14",name:"Qwen Plus (2025-07-14)"},{id:"qwen-turbo",name:"Qwen Turbo"},{id:"qwen-turbo-2025-11-01",name:"Qwen Turbo (2025-11-01)"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"qwq-plus",name:"QwQ Plus (Reasoning)"},{id:"qwq-32b",name:"QwQ 32B"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"qwen3-235b-a22b",name:"Qwen3 235B A22B"}],passthroughModels:!0},longcat:{id:"longcat",alias:"lc",format:"openai",executor:"default",baseUrl:"https://api.longcat.chat/openai",authType:"apikey",authHeader:"Authorization",authPrefix:"Bearer",models:[{id:"LongCat-Flash-Lite",name:"LongCat Flash-Lite (50M tok/day 🆓)"},{id:"LongCat-Flash-Chat",name:"LongCat Flash-Chat (500K tok/day 🆓)"},{id:"LongCat-Flash-Thinking",name:"LongCat Flash-Thinking (500K tok/day 🆓)"},{id:"LongCat-Flash-Thinking-2601",name:"LongCat Flash-Thinking-2601 (🆓)"},{id:"LongCat-Flash-Omni-2603",name:"LongCat Flash-Omni-2603 (🆓)"}]},pollinations:{id:"pollinations",alias:"pol",format:"openai",executor:"pollinations",baseUrl:"https://text.pollinations.ai/openai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"openai",name:"GPT-5 via Pollinations (🆓)"},{id:"claude",name:"Claude via Pollinations (🆓)"},{id:"gemini",name:"Gemini via Pollinations (🆓)"},{id:"deepseek",name:"DeepSeek V3 via Pollinations (🆓)"},{id:"llama",name:"Llama 4 via Pollinations (🆓)"},{id:"mistral",name:"Mistral via Pollinations (🆓)"}]},puter:{id:"puter",alias:"pu",format:"openai",executor:"puter",baseUrl:"https://api.puter.com/puterai/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o-mini",name:"GPT-4o Mini (🆓 Puter)"},{id:"gpt-4o",name:"GPT-4o (Puter)"},{id:"gpt-4.1",name:"GPT-4.1 (Puter)"},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini (Puter)"},{id:"gpt-5-nano",name:"GPT-5 Nano (Puter)"},{id:"gpt-5-mini",name:"GPT-5 Mini (Puter)"},{id:"gpt-5",name:"GPT-5 (Puter)"},{id:"o3-mini",name:"OpenAI o3-mini (Puter)"},{id:"o3",name:"OpenAI o3 (Puter)"},{id:"o4-mini",name:"OpenAI o4-mini (Puter)"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5 (Puter)"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5 (Puter)"},{id:"claude-opus-4-5",name:"Claude Opus 4.5 (Puter)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4 (Puter)"},{id:"claude-opus-4",name:"Claude Opus 4 (Puter)"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash (Puter)"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash (Puter)"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro (Puter)"},{id:"google/gemini-3-flash",name:"Gemini 3 Flash (Puter)"},{id:"google/gemini-3-pro",name:"Gemini 3 Pro (Puter)"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat (Puter)"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1 (Puter)"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2 (Puter)"},{id:"x-ai/grok-3",name:"Grok 3 (Puter)"},{id:"x-ai/grok-3-mini",name:"Grok 3 Mini (Puter)"},{id:"x-ai/grok-4",name:"Grok 4 (Puter)"},{id:"x-ai/grok-4-fast",name:"Grok 4 Fast (Puter)"},{id:"llama-4-scout",name:"Llama 4 Scout (Puter)"},{id:"llama-4-maverick",name:"Llama 4 Maverick (Puter)"},{id:"llama-3.3-70b-instruct",name:"Llama 3.3 70B (Puter)"},{id:"mistral-small-latest",name:"Mistral Small (Puter)"},{id:"mistral-medium-latest",name:"Mistral Medium (Puter)"},{id:"open-mistral-nemo",name:"Mistral Nemo (Puter)"},{id:"qwen/qwen3-235b-a22b",name:"Qwen3 235B (Puter)"},{id:"qwen/qwen3-32b",name:"Qwen3 32B (Puter)"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B (Puter)"}],passthroughModels:!0},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",format:"openai",executor:"cloudflare-ai",baseUrl:"https://api.cloudflare.com/client/v4/accounts",authType:"apikey",authHeader:"bearer",models:[{id:"@cf/meta/llama-3.3-70b-instruct",name:"Llama 3.3 70B (🆓 ~150 resp/day)"},{id:"@cf/meta/llama-3.1-8b-instruct",name:"Llama 3.1 8B (🆓)"},{id:"@cf/google/gemma-3-12b-it",name:"Gemma 3 12B (🆓)"},{id:"@cf/mistral/mistral-7b-instruct-v0.2-lora",name:"Mistral 7B (🆓)"},{id:"@cf/qwen/qwen2.5-coder-15b-instruct",name:"Qwen 2.5 Coder 15B (🆓)"},{id:"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",name:"DeepSeek R1 Distill 32B (🆓)"}]},scaleway:{id:"scaleway",alias:"scw",format:"openai",executor:"default",baseUrl:"https://api.scaleway.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"qwen3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B (1M free tok 🆓)"},{id:"llama-3.1-70b-instruct",name:"Llama 3.1 70B (🆓 EU)"},{id:"llama-3.1-8b-instruct",name:"Llama 3.1 8B (🆓 EU)"},{id:"mistral-small-3.2-24b-instruct-2506",name:"Mistral Small 3.2 (🆓 EU)"},{id:"deepseek-v3-0324",name:"DeepSeek V3 (🆓 EU)"},{id:"gpt-oss-120b",name:"GPT-OSS 120B (🆓 EU)"}]},aimlapi:{id:"aimlapi",alias:"aiml",format:"openai",executor:"default",baseUrl:"https://api.aimlapi.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o (via AI/ML API)"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet (via AI/ML API)"},{id:"gemini-1.5-pro",name:"Gemini 1.5 Pro (via AI/ML API)"},{id:"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",name:"Llama 3.1 70B (via AI/ML API)"},{id:"deepseek-chat",name:"DeepSeek Chat (via AI/ML API)"},{id:"mistral-large-latest",name:"Mistral Large (via AI/ML API)"}],passthroughModels:!0}};[..."u">typeof process&&process.env.LOCAL_HOSTNAMES?process.env.LOCAL_HOSTNAMES.split(",").map(a=>a.trim()).filter(Boolean):[]];let f=new Map;for(let a of Object.values(e))a.alias&&a.alias!==a.id&&f.set(a.alias,a);let g=new Map;for(let a of Object.values(e))for(let b of a.models)b.unsupportedParams&&!g.has(b.id)&&g.set(b.id,b.unsupportedParams);let h=function(){let a={};for(let b of Object.values(e))if(b.models&&b.models.length>0){let c=b.alias||b.id;a[c]||(a[c]=b.models)}return a}(),i=function(){let a={};for(let b of Object.values(e))a[b.id]=b.alias||b.id;return a}();function j(a){return h[i[a]||a]||[]}a.s(["PROVIDER_ID_TO_ALIAS",0,i,"PROVIDER_MODELS",0,h,"getModelsByProviderId",()=>j],911655)},867933,a=>a.a(async(b,c)=>{try{var d=a.i(911655),e=a.i(662073),f=b([e]);[e]=f.then?(await f)():f,Object.entries(e.AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(d.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),a.s([]),c()}catch(a){c(a)}},!1),817648,a=>a.a(async(b,c)=>{try{var d=a.i(804730),e=a.i(662073),f=a.i(867933),g=b([e,f]);[e,f]=g.then?(await g)():g;let h={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:d.default.version};a.s(["APP_CONFIG",0,h,"THEME_CONFIG",0,{storageKey:"theme",defaultTheme:"system"}]),c()}catch(a){c(a)}},!1),788164,a=>a.a(async(b,c)=>{try{var d=a.i(920226),e=a.i(862435),f=a.i(817648),g=b([f]);[f]=g.then?(await g)():g;let j=(0,d.create)()((0,e.persist)((a,b)=>({theme:f.THEME_CONFIG.defaultTheme,colorTheme:"coral",customColor:"#3b82f6",setTheme:b=>{a({theme:b}),h(b)},setColorTheme:c=>{a({colorTheme:c}),i(c,b().customColor)},setCustomColorTheme:b=>{let c,d,e=(d=(c=(b||"").trim()).startsWith("#")?c:`#${c}`,/^#([0-9a-fA-F]{6})$/.test(d)?d.toLowerCase():"#3b82f6");a({colorTheme:"custom",customColor:e}),i("custom",e)},toggleTheme:()=>{let c=b().theme,d="dark"===c?"light":"dark";a({theme:d}),h(d)},initTheme:()=>{let{theme:a,colorTheme:c,customColor:d}=b();h(a),i(c,d)}}),{name:f.THEME_CONFIG.storageKey}));function h(a){}function i(a,b){}a.s(["COLOR_THEMES",0,{coral:"#e54d5e",blue:"#3b82f6",red:"#ef4444",green:"#22c55e",violet:"#8b5cf6",orange:"#f97316",cyan:"#06b6d4"},"default",0,j]),c()}catch(a){c(a)}},!1),561487,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(572131),f=a.i(788164),g=b([f]);function h({children:a}){let{initTheme:b}=(0,f.default)();return(0,e.useEffect)(()=>{b()},[b]),(0,d.jsx)(d.Fragment,{children:a})}[f]=g.then?(await g)():g,a.s(["ThemeProvider",()=>h]),c()}catch(a){c(a)}},!1)];
2
+ ${a}`),Error(`Provider validation failed for ${b}`)}}a.s(["validateProviders",()=>f]),c()}catch(a){c(a)}},!1),662073,a=>a.a(async(b,c)=>{try{var d=a.i(843314),e=b([d]);[d]=e.then?(await e)():e;let j={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationReason:"Google restricts third-party OAuth usage for Gemini CLI (Mar 2026). Pro models require paid plans. Use 'gemini' (API key) provider instead."},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},k={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},l={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",name:"Alibaba Coding Plan",icon:"code",color:"#FF6A00",textIcon:"BCP",website:"https://www.alibabacloud.com/help/en/model-studio/coding-plan"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",name:"Kimi Coding (API Key)",icon:"psychology",color:"#1E40AF",textIcon:"KC",website:"https://kimi.com"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini (Google AI Studio)",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev",hasFree:!0,freeNote:"Free forever: 1,500 req/day for Gemini 2.5 Flash — no credit card, get key at aistudio.google.com"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",hasFree:!0,freeNote:"Free tier: 30 RPM / 14.4K RPD — no credit card"},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"view_in_ar",color:"#1A1A2E",textIcon:"BB",website:"https://blackbox.ai"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",hasFree:!0,freeNote:"$25 signup credits + 3 permanently free models: Llama 3.3 70B, Vision, DeepSeek-R1 distill"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://inference.cerebras.ai",hasFree:!0,freeNote:"Free: 1M tokens/day, 60K TPM — world's fastest inference"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://build.nvidia.com",hasFree:!0,freeNote:"Free dev access: ~40 RPM, 70+ models (Kimi K2.5, GLM 4.7, DeepSeek V3.2...)"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",name:"Ollama Cloud",icon:"cloud",color:"#58A6FF",textIcon:"OC",website:"https://ollama.com/settings/api-keys"},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io"},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai"},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht"},inworld:{id:"inworld",alias:"inworld",name:"Inworld",icon:"voice_chat",color:"#7B2EF2",textIcon:"IW",website:"https://inworld.ai"},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui"},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI"},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",hasFree:!0,freeNote:"Free Inference API for thousands of models (Whisper, VITS, SDXL…)"},synthetic:{id:"synthetic",alias:"synthetic",name:"Synthetic",icon:"verified_user",color:"#6366F1",textIcon:"SY",website:"https://synthetic.new",passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",name:"Kilo Gateway",icon:"hub",color:"#617A91",textIcon:"KG",website:"https://kilo.ai",passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VA",website:"https://cloud.google.com/vertex-ai",authHint:"Provide Service Account JSON or OAuth access_token"},zai:{id:"zai",alias:"zai",name:"Z.AI (GLM-5)",icon:"psychology",color:"#2563EB",textIcon:"ZA",website:"https://open.bigmodel.cn",apiHint:"API key from https://open.bigmodel.cn/usercenter/apikeys"},"perplexity-search":{id:"perplexity-search",alias:"pplx-search",name:"Perplexity Search",icon:"search",color:"#20808D",textIcon:"PS",website:"https://docs.perplexity.ai/guides/search-quickstart",authHint:"Same API key as Perplexity (pplx-...)"},"serper-search":{id:"serper-search",alias:"serper-search",name:"Serper Search",icon:"search",color:"#4285F4",textIcon:"SP",website:"https://serper.dev",authHint:"API key from serper.dev dashboard"},"brave-search":{id:"brave-search",alias:"brave-search",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",authHint:"Subscription token from Brave Search API dashboard"},"exa-search":{id:"exa-search",alias:"exa-search",name:"Exa Search",icon:"neurology",color:"#1E40AF",textIcon:"EX",website:"https://exa.ai",authHint:"API key from dashboard.exa.ai"},"tavily-search":{id:"tavily-search",alias:"tavily-search",name:"Tavily Search",icon:"manage_search",color:"#5B4FDB",textIcon:"TV",website:"https://tavily.com",authHint:"API key from app.tavily.com (format: tvly-...)"},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",name:"OpenCode Zen",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen"},"opencode-go":{id:"opencode-go",alias:"opencode-go",name:"OpenCode Go",icon:"opencode",color:"#6366f1",website:"https://opencode.ai/zen/go"},alibaba:{id:"alibaba",alias:"ali",name:"Alibaba Cloud (DashScope)",icon:"cloud_queue",color:"#FF6600",textIcon:"AL",website:"https://dashscope-intl.aliyuncs.com",hasFree:!1},longcat:{id:"longcat",alias:"lc",name:"LongCat AI",icon:"auto_awesome",color:"#FF6B9D",textIcon:"LC",website:"https://longcat.chat",hasFree:!0,freeNote:"50M tokens/day (Flash-Lite) + 500K/day (Chat/Thinking) — 100% free while public beta"},pollinations:{id:"pollinations",alias:"pol",name:"Pollinations AI",icon:"local_florist",color:"#4CAF50",textIcon:"PO",website:"https://pollinations.ai",hasFree:!0,freeNote:"No API key needed — access GPT-5, Claude, Gemini, DeepSeek V3, Llama 4 free (1 req/15s)"},puter:{id:"puter",alias:"pu",name:"Puter AI",icon:"cloud_circle",color:"#6366F1",textIcon:"PU",website:"https://puter.com",hasFree:!0,freeNote:"500+ models (GPT-5, Claude Opus 4, Gemini 3 Pro, Grok 4, DeepSeek V3...) — Users pay via free Puter account",passthroughModels:!0,authHint:"Get token at puter.com/dashboard → Copy Auth Token"},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare Workers AI",icon:"cloud",color:"#F48120",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",hasFree:!0,freeNote:"Free 10K Neurons/day: ~150 LLM responses or 500s Whisper audio — edge inference globally",authHint:"Requires API Token AND Account ID (found at dash.cloudflare.com)"},scaleway:{id:"scaleway",alias:"scw",name:"Scaleway AI",icon:"cloud",color:"#4F0599",textIcon:"SCW",website:"https://www.scaleway.com/en/ai/generative-apis/",hasFree:!0,freeNote:"1M free tokens for new accounts — EU/GDPR compliant (Paris), Qwen3 235B & Llama 70B"},aimlapi:{id:"aimlapi",alias:"aiml",name:"AI/ML API",icon:"hub",color:"#6366F1",textIcon:"AI",website:"https://aimlapi.com",hasFree:!0,freeNote:"$0.025/day free credits — 200+ models (GPT-4o, Claude, Gemini, Llama) via single endpoint",passthroughModels:!0}},m="openai-compatible-",n="anthropic-compatible-";function f(a){return"string"==typeof a&&a.startsWith(m)}function g(a){return"string"==typeof a&&a.startsWith(n)}let o={...j,...k,...l};function h(a){for(let b of Object.values(o))if(b.alias===a||b.id===a)return b;return null}function i(a){let b=o[a];return b?.alias||a}Object.values(o).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(o).reduce((a,b)=>(a[b.id]=b.alias,a),{}),(0,d.validateProviders)(j,"FREE_PROVIDERS"),(0,d.validateProviders)(k,"OAUTH_PROVIDERS"),(0,d.validateProviders)(l,"APIKEY_PROVIDERS"),a.s(["AI_PROVIDERS",0,o,"ANTHROPIC_COMPATIBLE_PREFIX",0,n,"APIKEY_PROVIDERS",0,l,"AUTH_METHODS",0,{oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}},"FREE_PROVIDERS",0,j,"OAUTH_PROVIDERS",0,k,"OPENAI_COMPATIBLE_PREFIX",0,m,"USAGE_SUPPORTED_PROVIDERS",0,["antigravity","kiro","github","codex","claude","kimi-coding"],"getProviderAlias",()=>i,"getProviderByAlias",()=>h,"isAnthropicCompatibleProvider",()=>g,"isOpenAICompatibleProvider",()=>f]),c()}catch(a){c(a)}},!1),911655,a=>{"use strict";var b=a.i(446786);let c=Object.freeze(["temperature","top_p","frequency_penalty","presence_penalty","logprobs","top_logprobs","n"]),d={format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},e={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",defaultContextLength:2e5,headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.63 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.74.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,b.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,b.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,b.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";default:return`Other::${(0,b.platform)()}`}}(),"X-Stainless-Timeout":"600"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude 4.6 Sonnet"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",defaultContextLength:1e6,oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3-1-pro",name:"Gemini 3.1 Pro (Alt ID)"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"gemini-2.0-flash-exp",name:"Gemini 2.0 Flash Exp"},{id:"gemini-1.5-pro",name:"Gemini 1.5 Pro"},{id:"gemini-1.5-flash",name:"Gemini 1.5 Flash"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",defaultContextLength:1e6,oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro"},{id:"gemini-3-1-pro",name:"Gemini 3.1 Pro (Alt ID)"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"gemini-1.5-pro",name:"Gemini 1.5 Pro"},{id:"gemini-1.5-flash",name:"Gemini 1.5 Flash"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",defaultContextLength:4e5,headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"QwenCode/0.12.3 (linux; x64)","X-Dashscope-AuthType":"qwen-oauth","X-Dashscope-CacheControl":"enable","X-Dashscope-UserAgent":"QwenCode/0.12.3 (linux; x64)","X-Stainless-Arch":"x64","X-Stainless-Lang":"js","X-Stainless-Os":"Linux","X-Stainless-Package-Version":"5.11.0","X-Stainless-Retry-Count":"1","X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":"v18.19.1",Connection:"keep-alive","Accept-Language":"*","Sec-Fetch-Mode":"cors"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"},{id:"coder-model",name:"Qwen3.5 (Coder Model)"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"iflow",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"iflow-rome-30ba3b",name:"iFlow ROME"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 Vision Plus"},{id:"kimi-k2-0905",name:"Kimi K2 0905"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek-V3.2-Exp"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3",name:"DeepSeek V3"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b",name:"Qwen3 235B"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":`antigravity/1.107.0 ${(0,b.platform)()}/${(0,b.arch)()}`},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",defaultContextLength:128e3,headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",defaultContextLength:2e5,headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",defaultContextLength:2e5,headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",defaultContextLength:128e3,models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1",unsupportedParams:c},{id:"o1-mini",name:"O1 Mini",unsupportedParams:c},{id:"o1-pro",name:"O1 Pro",unsupportedParams:c},{id:"o3",name:"O3",unsupportedParams:c},{id:"o3-mini",name:"O3 Mini",unsupportedParams:c}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",defaultContextLength:2e5,headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-sonnet-4-6-20251031",name:"Claude Sonnet 4.6 (Dated)"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-opus-4-6-20251031",name:"Claude Opus 4.6 (Dated)"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},"opencode-go":{id:"opencode-go",alias:"opencode-go",format:"openai",executor:"opencode",baseUrl:"https://opencode.ai/zen/go/v1",testKeyBaseUrl:"https://opencode.ai/zen/v1",authType:"apikey",authHeader:"Authorization",authPrefix:"Bearer",defaultContextLength:2e5,models:[{id:"glm-5",name:"GLM-5"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"minimax-m2.7",name:"MiniMax M2.7",targetFormat:"claude"},{id:"minimax-m2.5",name:"MiniMax M2.5",targetFormat:"claude"}]},"opencode-zen":{id:"opencode-zen",alias:"opencode-zen",format:"openai",executor:"opencode",baseUrl:"https://opencode.ai/zen/v1",authType:"apikey",authHeader:"Authorization",authPrefix:"Bearer",defaultContextLength:2e5,models:[{id:"minimax-m2.5-free",name:"MiniMax M2.5 Free"},{id:"big-pickle",name:"Big Pickle"},{id:"gpt-5-nano",name:"GPT 5 Nano"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",defaultContextLength:128e3,headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",defaultContextLength:2e5,urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-5",name:"GLM 5"},{id:"glm-5-turbo",name:"GLM 5 Turbo"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},"bailian-coding-plan":{id:"bailian-coding-plan",alias:"bcp",format:"claude",executor:"default",baseUrl:"https://coding-intl.dashscope.aliyuncs.com/apps/anthropic/v1/messages",chatPath:"/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max (2026-01-23)"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"kimi-k2.5",name:"Kimi K2.5"}]},zai:{id:"zai",alias:"zai",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-5",name:"GLM 5"},{id:"glm-5-turbo",name:"GLM 5 Turbo"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"},{id:"kimi-for-coding",name:"Kimi For Coding"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",...d,urlSuffix:"?beta=true",authType:"oauth",oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"}},"kimi-coding-apikey":{id:"kimi-coding-apikey",alias:"kmca",...d,authType:"apikey"},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",modelsUrl:"https://api.kilo.ai/api/openrouter/models",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"openrouter/free",name:"Free Models Router"},{id:"qwen/qwen3-vl-235b-a22b-thinking",name:"Qwen3 VL 235B A22B Thinking"},{id:"qwen/qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking 2507"},{id:"qwen/qwen3-vl-30b-a3b-thinking",name:"Qwen3 VL 30B A3B Thinking"},{id:"stepfun/step-3.5-flash:free",name:"StepFun Step 3.5 Flash"},{id:"arcee-ai/trinity-large-preview:free",name:"Arcee AI Trinity Large Preview"},{id:"openai/gpt-4o-mini",name:"GPT-4o Mini"},{id:"openai/gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"openai/gpt-5-nano",name:"GPT-5 Nano"},{id:"openai/gpt-5-mini",name:"GPT-5 Mini"},{id:"anthropic/claude-3-haiku",name:"Claude 3 Haiku"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"google/gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"deepseek/deepseek-chat-v3.1",name:"DeepSeek V3.1"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-scout",name:"Llama 4 Scout"},{id:"meta-llama/llama-4-maverick",name:"Llama 4 Maverick"},{id:"qwen/qwen3-8b",name:"Qwen3 8B"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B"},{id:"qwen/qwq-32b",name:"QwQ 32B"},{id:"mistralai/mistral-small-24b-instruct-2501",name:"Mistral Small 3"},{id:"mistralai/mistral-7b-instruct",name:"Mistral 7B"},{id:"x-ai/grok-code-fast-1",name:"Grok Code Fast 1"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"minimax-m2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.7",name:"MiniMax M2.7 (Legacy Alias)"},{id:"minimax-m2.7-highspeed",name:"MiniMax M2.7 Highspeed"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5 (Legacy Alias)"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"minimax-m2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.7",name:"MiniMax M2.7 (Legacy Alias)"},{id:"minimax-m2.7-highspeed",name:"MiniMax M2.7 Highspeed"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5 (Legacy Alias)"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},alicode:{id:"alicode",alias:"alicode",format:"openai",executor:"default",baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",format:"openai",executor:"default",baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},blackbox:{id:"blackbox",alias:"bb",format:"openai",executor:"default",baseUrl:"https://api.blackbox.ai/v1/chat/completions",modelsUrl:"https://api.blackbox.ai/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"deepseek-v3",name:"DeepSeek V3"},{id:"blackboxai",name:"Blackbox AI"},{id:"blackboxai-pro",name:"Blackbox AI Pro"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4-fast-non-reasoning",name:"Grok 4 Fast"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-4-1-fast-non-reasoning",name:"Grok 4.1 Fast"},{id:"grok-4-1-fast-reasoning",name:"Grok 4.1 Fast Reasoning"},{id:"grok-4-0709",name:"Grok 4 (0709)"},{id:"grok-4",name:"Grok 4"},{id:"grok-3",name:"Grok 3"},{id:"grok-3-mini",name:"Grok 3 Mini"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo-Free",name:"Llama 3.3 70B Turbo (🆓 Free)"},{id:"meta-llama/Llama-Vision-Free",name:"Llama Vision (🆓 Free)"},{id:"deepseek-ai/DeepSeek-R1-Distill-Llama-70B-Free",name:"DeepSeek R1 Distill 70B (🆓 Free)"},{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},"ollama-cloud":{id:"ollama-cloud",alias:"ollamacloud",format:"openai",executor:"default",baseUrl:"https://api.ollama.com/v1/chat/completions",modelsUrl:"https://api.ollama.com/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"gemma3:27b",name:"Gemma 3 27B"},{id:"llama3.3:70b",name:"Llama 3.3 70B"},{id:"qwen3:72b",name:"Qwen3 72B"},{id:"devstral:24b",name:"Devstral 24B"},{id:"deepseek-r2:671b",name:"DeepSeek R2 671B"},{id:"phi4:14b",name:"Phi 4 14B"},{id:"mistral-small3.2:24b",name:"Mistral Small 3.2 24B"}],passthroughModels:!0},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B",toolCalling:!1},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B (OpenAI Prefix)",toolCalling:!1},{id:"meta/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B (NVIDIA Prefix)"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"},{id:"nvidia/llama-3.1-70b-instruct",name:"Llama 3.1 70B"},{id:"nvidia/llama-3.1-405b-instruct",name:"Llama 3.1 405B"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]},huggingface:{id:"huggingface",alias:"hf",format:"openai",executor:"default",baseUrl:"https://router.huggingface.co/hf-inference/models/meta-llama/Meta-Llama-3.1-70B-Instruct/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Meta-Llama-3.1-70B-Instruct",name:"Llama 3.1 70B Instruct"},{id:"meta-llama/Meta-Llama-3.1-8B-Instruct",name:"Llama 3.1 8B Instruct"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"mistralai/Mistral-7B-Instruct-v0.3",name:"Mistral 7B v0.3"},{id:"microsoft/Phi-3.5-mini-instruct",name:"Phi-3.5 Mini"}]},synthetic:{id:"synthetic",alias:"synthetic",format:"openai",executor:"default",baseUrl:"https://api.synthetic.new/openai/v1/chat/completions",modelsUrl:"https://api.synthetic.new/openai/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"hf:nvidia/Kimi-K2.5-NVFP4",name:"Kimi K2.5 (NVFP4)"},{id:"hf:MiniMaxAI/MiniMax-M2.5",name:"MiniMax M2.5"},{id:"hf:zai-org/GLM-4.7-Flash",name:"GLM 4.7 Flash"},{id:"hf:zai-org/GLM-4.7",name:"GLM 4.7"},{id:"hf:moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"hf:deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"}],passthroughModels:!0},"kilo-gateway":{id:"kilo-gateway",alias:"kg",format:"openai",executor:"default",baseUrl:"https://api.kilo.ai/api/gateway/chat/completions",modelsUrl:"https://api.kilo.ai/api/gateway/models",authType:"apikey",authHeader:"bearer",models:[{id:"kilo-auto/frontier",name:"Kilo Auto Frontier"},{id:"kilo-auto/balanced",name:"Kilo Auto Balanced"},{id:"kilo-auto/free",name:"Kilo Auto Free"},{id:"nvidia/nemotron-3-super-120b-a12b:free",name:"Nemotron 3 Super 120B (Free)"},{id:"minimax/minimax-m2.5:free",name:"MiniMax M2.5 (Free)"},{id:"arcee-ai/trinity-large-preview:free",name:"Trinity Large Preview (Free)"}],passthroughModels:!0},vertex:{id:"vertex",alias:"vertex",format:"gemini",executor:"vertex",baseUrl:"https://us-central1-aiplatform.googleapis.com/v1/projects",urlBuilder:(a,b,c)=>`https://generativelanguage.googleapis.com/v1beta/models/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"bearer",models:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview (Vertex)"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview (Vertex)"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview (Vertex)"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Vertex)"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash (Vertex)"},{id:"gemini-2.0-flash-thinking-exp",name:"Gemini 2.0 Flash Thinking Exp (Vertex)"},{id:"gemma-2-27b-it",name:"Gemma 2 27B (Vertex)"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 (Vertex Partner)"},{id:"qwen3-next-80b",name:"Qwen3 Next 80B (Vertex Partner)"},{id:"glm-5",name:"GLM-5 (Vertex Partner)"},{id:"claude-opus-4-5@20251101",name:"Claude Opus 4.5 (Vertex)"},{id:"claude-sonnet-4-5@20251101",name:"Claude Sonnet 4.5 (Vertex)"}]},alibaba:{id:"alibaba",alias:"ali",format:"openai",executor:"default",baseUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions",modelsUrl:"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/models",authType:"apikey",authHeader:"bearer",models:[{id:"qwen-max",name:"Qwen Max"},{id:"qwen-max-2025-01-25",name:"Qwen Max (2025-01-25)"},{id:"qwen-plus",name:"Qwen Plus"},{id:"qwen-plus-2025-07-14",name:"Qwen Plus (2025-07-14)"},{id:"qwen-turbo",name:"Qwen Turbo"},{id:"qwen-turbo-2025-11-01",name:"Qwen Turbo (2025-11-01)"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"qwq-plus",name:"QwQ Plus (Reasoning)"},{id:"qwq-32b",name:"QwQ 32B"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"qwen3-235b-a22b",name:"Qwen3 235B A22B"}],passthroughModels:!0},longcat:{id:"longcat",alias:"lc",format:"openai",executor:"default",baseUrl:"https://api.longcat.chat/openai/v1/chat/completions",authType:"apikey",authHeader:"Authorization",authPrefix:"Bearer",models:[{id:"LongCat-Flash-Lite",name:"LongCat Flash-Lite (50M tok/day 🆓)"},{id:"LongCat-Flash-Chat",name:"LongCat Flash-Chat (500K tok/day 🆓)"},{id:"LongCat-Flash-Thinking",name:"LongCat Flash-Thinking (500K tok/day 🆓)"},{id:"LongCat-Flash-Thinking-2601",name:"LongCat Flash-Thinking-2601 (🆓)"},{id:"LongCat-Flash-Omni-2603",name:"LongCat Flash-Omni-2603 (🆓)"}]},pollinations:{id:"pollinations",alias:"pol",format:"openai",executor:"pollinations",baseUrl:"https://text.pollinations.ai/openai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"openai",name:"GPT-5 via Pollinations (🆓)"},{id:"claude",name:"Claude via Pollinations (🆓)"},{id:"gemini",name:"Gemini via Pollinations (🆓)"},{id:"deepseek",name:"DeepSeek V3 via Pollinations (🆓)"},{id:"llama",name:"Llama 4 via Pollinations (🆓)"},{id:"mistral",name:"Mistral via Pollinations (🆓)"}]},puter:{id:"puter",alias:"pu",format:"openai",executor:"puter",baseUrl:"https://api.puter.com/puterai/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o-mini",name:"GPT-4o Mini (🆓 Puter)"},{id:"gpt-4o",name:"GPT-4o (Puter)"},{id:"gpt-4.1",name:"GPT-4.1 (Puter)"},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini (Puter)"},{id:"gpt-5-nano",name:"GPT-5 Nano (Puter)"},{id:"gpt-5-mini",name:"GPT-5 Mini (Puter)"},{id:"gpt-5",name:"GPT-5 (Puter)"},{id:"o3-mini",name:"OpenAI o3-mini (Puter)"},{id:"o3",name:"OpenAI o3 (Puter)"},{id:"o4-mini",name:"OpenAI o4-mini (Puter)"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5 (Puter)"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5 (Puter)"},{id:"claude-opus-4-5",name:"Claude Opus 4.5 (Puter)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4 (Puter)"},{id:"claude-opus-4",name:"Claude Opus 4 (Puter)"},{id:"google/gemini-2.0-flash",name:"Gemini 2.0 Flash (Puter)"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash (Puter)"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro (Puter)"},{id:"google/gemini-3-flash",name:"Gemini 3 Flash (Puter)"},{id:"google/gemini-3-pro",name:"Gemini 3 Pro (Puter)"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat (Puter)"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1 (Puter)"},{id:"deepseek/deepseek-v3.2",name:"DeepSeek V3.2 (Puter)"},{id:"x-ai/grok-3",name:"Grok 3 (Puter)"},{id:"x-ai/grok-3-mini",name:"Grok 3 Mini (Puter)"},{id:"x-ai/grok-4",name:"Grok 4 (Puter)"},{id:"x-ai/grok-4-fast",name:"Grok 4 Fast (Puter)"},{id:"llama-4-scout",name:"Llama 4 Scout (Puter)"},{id:"llama-4-maverick",name:"Llama 4 Maverick (Puter)"},{id:"llama-3.3-70b-instruct",name:"Llama 3.3 70B (Puter)"},{id:"mistral-small-latest",name:"Mistral Small (Puter)"},{id:"mistral-medium-latest",name:"Mistral Medium (Puter)"},{id:"open-mistral-nemo",name:"Mistral Nemo (Puter)"},{id:"qwen/qwen3-235b-a22b",name:"Qwen3 235B (Puter)"},{id:"qwen/qwen3-32b",name:"Qwen3 32B (Puter)"},{id:"qwen/qwen3-coder",name:"Qwen3 Coder 480B (Puter)"}],passthroughModels:!0},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",format:"openai",executor:"cloudflare-ai",baseUrl:"https://api.cloudflare.com/client/v4/accounts",authType:"apikey",authHeader:"bearer",models:[{id:"@cf/meta/llama-3.3-70b-instruct",name:"Llama 3.3 70B (🆓 ~150 resp/day)"},{id:"@cf/meta/llama-3.1-8b-instruct",name:"Llama 3.1 8B (🆓)"},{id:"@cf/google/gemma-3-12b-it",name:"Gemma 3 12B (🆓)"},{id:"@cf/mistral/mistral-7b-instruct-v0.2-lora",name:"Mistral 7B (🆓)"},{id:"@cf/qwen/qwen2.5-coder-15b-instruct",name:"Qwen 2.5 Coder 15B (🆓)"},{id:"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",name:"DeepSeek R1 Distill 32B (🆓)"}]},scaleway:{id:"scaleway",alias:"scw",format:"openai",executor:"default",baseUrl:"https://api.scaleway.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"qwen3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B (1M free tok 🆓)"},{id:"llama-3.1-70b-instruct",name:"Llama 3.1 70B (🆓 EU)"},{id:"llama-3.1-8b-instruct",name:"Llama 3.1 8B (🆓 EU)"},{id:"mistral-small-3.2-24b-instruct-2506",name:"Mistral Small 3.2 (🆓 EU)"},{id:"deepseek-v3-0324",name:"DeepSeek V3 (🆓 EU)"},{id:"gpt-oss-120b",name:"GPT-OSS 120B (🆓 EU)"}]},aimlapi:{id:"aimlapi",alias:"aiml",format:"openai",executor:"default",baseUrl:"https://api.aimlapi.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o (via AI/ML API)"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet (via AI/ML API)"},{id:"gemini-1.5-pro",name:"Gemini 1.5 Pro (via AI/ML API)"},{id:"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",name:"Llama 3.1 70B (via AI/ML API)"},{id:"deepseek-chat",name:"DeepSeek Chat (via AI/ML API)"},{id:"mistral-large-latest",name:"Mistral Large (via AI/ML API)"}],passthroughModels:!0}};[..."u">typeof process&&process.env.LOCAL_HOSTNAMES?process.env.LOCAL_HOSTNAMES.split(",").map(a=>a.trim()).filter(Boolean):[]];let f=new Map;for(let a of Object.values(e))a.alias&&a.alias!==a.id&&f.set(a.alias,a);let g=new Map;for(let a of Object.values(e))for(let b of a.models)b.unsupportedParams&&!g.has(b.id)&&g.set(b.id,b.unsupportedParams);let h=function(){let a={};for(let b of Object.values(e))if(b.models&&b.models.length>0){let c=b.alias||b.id;a[c]||(a[c]=b.models)}return a}(),i=function(){let a={};for(let b of Object.values(e))a[b.id]=b.alias||b.id;return a}();function j(a){return h[i[a]||a]||[]}a.s(["PROVIDER_ID_TO_ALIAS",0,i,"PROVIDER_MODELS",0,h,"getModelsByProviderId",()=>j],911655)},867933,a=>a.a(async(b,c)=>{try{var d=a.i(911655),e=a.i(662073),f=b([e]);[e]=f.then?(await f)():f,Object.entries(e.AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(d.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),a.s([]),c()}catch(a){c(a)}},!1),817648,a=>a.a(async(b,c)=>{try{var d=a.i(804730),e=a.i(662073),f=a.i(867933),g=b([e,f]);[e,f]=g.then?(await g)():g;let h={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:d.default.version};a.s(["APP_CONFIG",0,h,"THEME_CONFIG",0,{storageKey:"theme",defaultTheme:"system"}]),c()}catch(a){c(a)}},!1),788164,a=>a.a(async(b,c)=>{try{var d=a.i(920226),e=a.i(862435),f=a.i(817648),g=b([f]);[f]=g.then?(await g)():g;let j=(0,d.create)()((0,e.persist)((a,b)=>({theme:f.THEME_CONFIG.defaultTheme,colorTheme:"coral",customColor:"#3b82f6",setTheme:b=>{a({theme:b}),h(b)},setColorTheme:c=>{a({colorTheme:c}),i(c,b().customColor)},setCustomColorTheme:b=>{let c,d,e=(d=(c=(b||"").trim()).startsWith("#")?c:`#${c}`,/^#([0-9a-fA-F]{6})$/.test(d)?d.toLowerCase():"#3b82f6");a({colorTheme:"custom",customColor:e}),i("custom",e)},toggleTheme:()=>{let c=b().theme,d="dark"===c?"light":"dark";a({theme:d}),h(d)},initTheme:()=>{let{theme:a,colorTheme:c,customColor:d}=b();h(a),i(c,d)}}),{name:f.THEME_CONFIG.storageKey}));function h(a){}function i(a,b){}a.s(["COLOR_THEMES",0,{coral:"#e54d5e",blue:"#3b82f6",red:"#ef4444",green:"#22c55e",violet:"#8b5cf6",orange:"#f97316",cyan:"#06b6d4"},"default",0,j]),c()}catch(a){c(a)}},!1),561487,a=>a.a(async(b,c)=>{try{var d=a.i(187924),e=a.i(572131),f=a.i(788164),g=b([f]);function h({children:a}){let{initTheme:b}=(0,f.default)();return(0,e.useEffect)(()=>{b()},[b]),(0,d.jsx)(d.Fragment,{children:a})}[f]=g.then?(await g)():g,a.s(["ThemeProvider",()=>h]),c()}catch(a){c(a)}},!1)];
3
3
 
4
4
  //# sourceMappingURL=_19b3d5b1._.js.map