@yina-npm/openrouterx 0.4.18 → 0.4.20

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 (210) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +1 -1
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js.nft.json +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js +2 -2
  8. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +17 -17
  26. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  35. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  59. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/user/page.js +2 -2
  71. package/app/.next/server/app/(dashboard)/dashboard/user/page.js.nft.json +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/user/page_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/_global-error.html +1 -1
  75. package/app/.next/server/app/_global-error.rsc +1 -1
  76. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  77. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  78. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  79. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  80. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  81. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  82. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/_not-found.html +1 -1
  84. package/app/.next/server/app/_not-found.rsc +4 -4
  85. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  86. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  87. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  88. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  89. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  90. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  91. package/app/.next/server/app/api/auth/login/route.js +1 -1
  92. package/app/.next/server/app/api/auth/me/route.js +1 -1
  93. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  94. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  95. package/app/.next/server/app/api/models/route.js +1 -1
  96. package/app/.next/server/app/api/models/test/route.js +1 -1
  97. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  98. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  99. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  101. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  102. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  103. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  104. package/app/.next/server/app/api/providers/client/route.js +1 -1
  105. package/app/.next/server/app/api/providers/route.js +1 -1
  106. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  107. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  108. package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
  109. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  110. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  111. package/app/.next/server/app/api/users/[id]/route.js +1 -1
  112. package/app/.next/server/app/api/users/route.js +1 -1
  113. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  114. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  115. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  116. package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
  117. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  118. package/app/.next/server/app/api/version/route.js +1 -1
  119. package/app/.next/server/app/api/version/update/route.js +1 -1
  120. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/callback.html +1 -1
  122. package/app/.next/server/app/callback.rsc +4 -4
  123. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  124. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  125. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  126. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  127. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  128. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  129. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  131. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  132. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  133. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  134. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  135. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  136. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  137. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  138. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  139. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  140. package/app/.next/server/app/index.html +1 -1
  141. package/app/.next/server/app/index.rsc +4 -4
  142. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  143. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  144. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  145. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  146. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  147. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/landing.html +1 -1
  149. package/app/.next/server/app/landing.rsc +4 -4
  150. package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  151. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  152. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  153. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  154. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  155. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  156. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/login.html +1 -1
  158. package/app/.next/server/app/login.rsc +5 -5
  159. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  160. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  161. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  162. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  163. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  164. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  165. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app-paths-manifest.json +1 -1
  167. package/app/.next/server/chunks/212.js +1 -0
  168. package/app/.next/server/chunks/2238.js +6 -6
  169. package/app/.next/server/chunks/2343.js +1 -1
  170. package/app/.next/server/chunks/412.js +2 -2
  171. package/app/.next/server/chunks/4122.js +1 -1
  172. package/app/.next/server/chunks/5627.js +1 -1
  173. package/app/.next/server/chunks/5681.js +1 -1
  174. package/app/.next/server/chunks/7595.js +1 -1
  175. package/app/.next/server/chunks/7937.js +2 -2
  176. package/app/.next/server/chunks/9489.js +1 -1
  177. package/app/.next/server/chunks/9718.js +1 -1
  178. package/app/.next/server/middleware-build-manifest.js +1 -1
  179. package/app/.next/server/middleware.js +1 -1
  180. package/app/.next/server/pages/404.html +1 -1
  181. package/app/.next/server/pages/500.html +1 -1
  182. package/app/.next/static/chunks/1321-764b2073673fc333.js +1 -0
  183. package/app/.next/static/chunks/{4295-a6fa5532d32ad57b.js → 4295-99e90be71bb8d50c.js} +6 -6
  184. package/app/.next/static/chunks/5497-27af7f632895d68e.js +7 -0
  185. package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/users/page-15091159f6d63fb7.js +1 -0
  186. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-eb5193b550d3e8de.js +59 -0
  187. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-7cf63e1a3a8adecd.js +1 -0
  188. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-eefae72167c9579c.js → page-1862080d556d8e9e.js} +1 -1
  189. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-0dc79ccb25aab919.js +1 -0
  190. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-a0419a964a084f76.js +1 -0
  191. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-e03634044afafb6e.js +1 -0
  192. package/app/.next/static/chunks/app/(dashboard)/dashboard/user/{page-e9ab0043e9b15204.js → page-cb9bce72dd4d0df2.js} +2 -2
  193. package/app/.next/static/chunks/app/(dashboard)/layout-edd266e7233eb314.js +1 -0
  194. package/app/.next/static/css/76d369cc5468e708.css +1 -0
  195. package/app/package.json +1 -1
  196. package/app/src/shared/constants/mitmToolHosts.js +1 -0
  197. package/package.json +1 -1
  198. package/app/.next/server/chunks/1256.js +0 -1
  199. package/app/.next/static/chunks/1321-e38d25b213a61af7.js +0 -1
  200. package/app/.next/static/chunks/5497-ca14fd2ec8ec4965.js +0 -7
  201. package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/users/page-c8e5a4b31bc18425.js +0 -1
  202. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-fe66b224c0368b52.js +0 -59
  203. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-9ff3dee6ea964428.js +0 -1
  204. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-ffb5f2c63ae94906.js +0 -1
  205. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-7dac10f6360f52df.js +0 -1
  206. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-52fbe722ba5c5393.js +0 -1
  207. package/app/.next/static/chunks/app/(dashboard)/layout-d368218e0e87c124.js +0 -1
  208. package/app/.next/static/css/326fa3d6432d4810.css +0 -1
  209. /package/app/.next/static/{qn5ddCosq_qTH6CJRFJIB → V2uXdl1SgLstSOcrQU5I9}/_buildManifest.js +0 -0
  210. /package/app/.next/static/{qn5ddCosq_qTH6CJRFJIB → V2uXdl1SgLstSOcrQU5I9}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=9489,exports.ids=[9489],exports.modules={9132:(a,b,c)=>{c.d(b,{Mv:()=>j,RG:()=>h,iI:()=>i});var d=c(68658),e=c(89718),f=c(54200);function g(a,b){return a&&"sub_user"===a.role?{role:"sub_user",userId:a.id,username:a.username||null,permissions:Array.isArray(a.permissions)?a.permissions:[],allowedProviders:(0,f.cc)(a),source:b}:null}async function h(a,b=null){let c=b||function(a){let b=a?.headers?.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a?.headers?.get("x-api-key");return c||null}(a);if(c){let a=await (0,e.y7)(c);if(a?.userId){let b=g(await (0,e.kl)(a.userId),"api_key");if(b)return b}}let f=await (0,d.f1)(a);if(!f||"sub_user"!==f.role||!f.userId)return null;let i=await (0,e.kl)(f.userId);return i?g(i,"cookie"):g({id:f.userId,username:f.username||null,role:f.role,permissions:f.permissions||[],allowedProviders:f.allowedProviders},"cookie")}function i(a,b){return!a||"sub_user"!==a.role||a.allowedProviders.includes(b)}function j(a,b){return b&&"sub_user"===b.role?a.filter(a=>i(b,a.provider)):a}},18910:(a,b,c)=>{c.d(b,{Pr:()=>i,UP:()=>g,Vu:()=>h});var d=c(12557),e=c(43659);let f=new Map;function g(a){a?f.delete(a):f.clear()}function h(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}async function i({body:a,models:b,handleSingleModel:c,log:g,comboName:h,comboStrategy:j,comboStickyLimit:k=1}){let l=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let g=b||"__default__",h=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,i=f.get(g),j="number"==typeof i?{index:i,consecutiveUseCount:0}:i||{index:0,consecutiveUseCount:0},k=j.index%a.length,l=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,k),m=j.consecutiveUseCount+1;return m>=h?f.set(g,{index:(k+1)%a.length,consecutiveUseCount:0}):f.set(g,{index:k,consecutiveUseCount:m}),l}(b,h,j,k),m=null,n=null,o=null;for(let b=0;b<l.length;b++){let e=l[b];g.info("COMBO",`Trying model ${b+1}/${l.length}: ${e}`);try{let b=await c(a,e);if(b.ok)return g.info("COMBO",`Model ${e} succeeded`),b;let f=b.statusText||"",h=null;try{let a=await b.clone().json();f=a?.error?.message||a?.error||a?.message||f,h=a?.retryAfter||null}catch{}if(h&&(!n||new Date(h)<new Date(n))&&(n=h),"string"!=typeof f)try{f=JSON.stringify(f)}catch{f=String(f)}let{shouldFallback:i,cooldownMs:j}=(0,d.hk)(b.status,f);if(!i)return g.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;j&&j>0&&j<=5e3&&(503===b.status||502===b.status||504===b.status)&&(g.info("COMBO",`Model ${e} transient ${b.status}, waiting ${j}ms before next`),await new Promise(a=>setTimeout(a,j))),m=f||String(b.status),o||(o=b.status),g.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){m=a.message||String(a),o||(o=500),g.warn("COMBO",`Model ${e} threw error, trying next`,{error:m})}}let p=m&&m.toLowerCase().includes("no credentials")?503:o||503,q=m||"All combo models unavailable";if(n){let a=(0,d.Qo)(n);return g.warn("COMBO",`All models failed | ${q} (${a})`),(0,e.wO)(p,q,n,a)}return g.warn("COMBO",`All models failed | ${q}`),new Response(JSON.stringify({error:{message:q}}),{status:p,headers:{"Content-Type":"application/json"}})}},38775:(a,b,c)=>{c.d(b,{d_:()=>g,mA:()=>f});var d=c(89718),e=c(40669);async function f(a){let b=(0,e.Xh)(a);if(!b.isAlias){let a=(await (0,d.getProviderNodes)({type:"openai-compatible"})).find(a=>a.prefix===b.providerAlias);if(a)return{provider:a.id,model:b.model};let c=(await (0,d.getProviderNodes)({type:"anthropic-compatible"})).find(a=>a.prefix===b.providerAlias);if(c)return{provider:c.id,model:b.model};let e=(await (0,d.getProviderNodes)({type:"custom-embedding"})).find(a=>a.prefix===b.providerAlias);return e?{provider:e.id,model:b.model}:{provider:b.provider,model:b.model}}return await (0,d.Dj)(b.model)?{provider:null,model:b.model}:(0,e.js)(a,d.OM)}async function g(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},54200:(a,b,c)=>{c.d(b,{cc:()=>f,vJ:()=>e});let d=["codex","alicode"];function e(a){return Array.isArray(a)?Array.from(new Set(a.map(a=>"string"==typeof a?a.trim():"").filter(Boolean))):[]}function f(a,b=d){return a&&"object"==typeof a&&Object.prototype.hasOwnProperty.call(a,"allowedProviders")?e(a.allowedProviders):e(b)}},68658:(a,b,c)=>{c.d(b,{f1:()=>f}),c(23211);var d=c(69614);c(89718),c(54603);let e=new TextEncoder().encode(process.env.JWT_SECRET||"9router-default-secret-change-me");async function f(a){let b=a.cookies.get("auth_token")?.value;if(!b)return null;try{let{payload:a}=await (0,d.V)(b,e);return a}catch{return null}}},69614:(a,b,c)=>{c.d(b,{V:()=>p});var d=c(88888),e=c(91356),f=c(99129),g=c(73575),h=c(41570),i=c(19035),j=c(24762),k=c(80308),l=c(55956);async function m(a,b,c){if(!(0,i.Gv)(a))throw new f.Ye("Flattened JWS must be an object");if(void 0===a.protected&&void 0===a.header)throw new f.Ye('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==a.protected&&"string"!=typeof a.protected)throw new f.Ye("JWS Protected Header incorrect type");if(void 0===a.payload)throw new f.Ye("JWS Payload missing");if("string"!=typeof a.signature)throw new f.Ye("JWS Signature missing or incorrect type");if(void 0!==a.header&&!(0,i.Gv)(a.header))throw new f.Ye("JWS Unprotected Header incorrect type");let m={};if(a.protected)try{let b=(0,d.D)(a.protected);m=JSON.parse(g.D0.decode(b))}catch{throw new f.Ye("JWS Protected Header is invalid")}if(!(0,i.fz)(m,a.header))throw new f.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...m,...a.header},o=(0,k.n)(f.Ye,new Map([["b64",!0]]),c?.crit,m,n),p=!0;if(o.has("b64")&&"boolean"!=typeof(p=m.b64))throw new f.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:q}=n;if("string"!=typeof q||!q)throw new f.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');let r=c&&function(a,b){if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a)))throw TypeError(`"${a}" option must be an array of strings`);if(b)return new Set(b)}("algorithms",c.algorithms);if(r&&!r.has(q))throw new f.Rb('"alg" (Algorithm) Header Parameter value not allowed');if(p){if("string"!=typeof a.payload)throw new f.Ye("JWS Payload must be a string")}else if("string"!=typeof a.payload&&!(a.payload instanceof Uint8Array))throw new f.Ye("JWS Payload must be a string or an Uint8Array instance");let s=!1;"function"==typeof b&&(b=await b(m,a),s=!0),(0,j.y)(q,b,"verify");let t=(0,g.xW)(void 0!==a.protected?(0,g.lF)(a.protected):new Uint8Array,(0,g.lF)("."),"string"==typeof a.payload?p?(0,g.lF)(a.payload):g.Rd.encode(a.payload):a.payload),u=(0,h.h2)(a.signature,"signature",f.Ye),v=await (0,l.l)(b,q);if(!await (0,e.MX)(q,v,u,t))throw new f.h2;let w={payload:p?(0,h.h2)(a.payload,"payload",f.Ye):"string"==typeof a.payload?g.Rd.encode(a.payload):a.payload};return(void 0!==a.protected&&(w.protectedHeader=m),void 0!==a.header&&(w.unprotectedHeader=a.header),s)?{...w,key:v}:w}async function n(a,b,c){if(a instanceof Uint8Array&&(a=g.D0.decode(a)),"string"!=typeof a)throw new f.Ye("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:h,length:i}=a.split(".");if(3!==i)throw new f.Ye("Invalid Compact JWS");let j=await m({payload:e,protected:d,signature:h},b,c),k={payload:j.payload,protectedHeader:j.protectedHeader};return"function"==typeof b?{...k,key:j.key}:k}var o=c(17347);async function p(a,b,c){let d=await n(a,b,c);if(d.protectedHeader.crit?.includes("b64")&&!1===d.protectedHeader.b64)throw new f.Dp("JWTs MUST NOT use unencoded payload");let e={payload:(0,o.k6)(d.protectedHeader,d.payload,c),protectedHeader:d.protectedHeader};return"function"==typeof b?{...e,key:d.key}:e}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>u});var e=c(48895),f=c(80238),g=c(71750),h=c(89718),i=c(38775),j=c(92500),k=c(43659),l=c(18910),m=c(27349),n=c(41004),o=c(14170),p=c(7803),q=c(67828),r=c(38160),s=c(9132),t=a([e,j]);async function u(a,b=null){let c;try{c=await a.json()}catch{return p.warn("CHAT","Invalid JSON body"),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())}),(0,g.n)(b.headers);let d=new URL(a.url),e=c.model,j=c.messages?.length||c.input?.length||0,o=c.tools?.length||0,q=c.reasoning_effort||c.reasoning?.effort||null;p.request("POST",`${d.pathname} | ${e} | ${j} msgs${o?` | ${o} tools`:""}${q?` | effort=${q}`:""}`);let r=a.headers.get("Authorization"),t=(0,f.Tr)(a);if(r&&t){let a=p.maskKey(t);p.debug("AUTH",`API Key: ${a}`)}else p.debug("AUTH","No API key provided (local mode)");let w=await (0,h.getSettings)(),x=await (0,s.RG)(a,t);if(w.requireApiKey){if(!t)return p.warn("AUTH","Missing API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(t))return p.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Invalid API key")}if(!e)return p.warn("CHAT","Missing model"),(0,k.yj)(n.gx.BAD_REQUEST,"Missing model");let y=a?.headers?.get("user-agent")||"",z=(0,m.c)(c,e,y,!!w.ccFilterNaming);if(z)return z.response||z;let A=await (0,i.d_)(e);if(A){if(x)for(let a of A){let b=await (0,i.mA)(a);if(!b?.provider||!(0,s.iI)(x,b.provider))return(0,k.yj)(n.gx.FORBIDDEN,"This combo includes providers that are not enabled for the current sub-user")}let d=w.comboStrategies||{},f=d[e]?.fallbackStrategy||w.comboStrategy||"fallback",g=w.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${e}" with ${A.length} models (strategy: ${f}, sticky: ${g})`),(0,l.Pr)({body:c,models:A,handleSingleModel:(c,d)=>v(c,d,b,a,t,x),log:p,comboName:e,comboStrategy:f,comboStickyLimit:g})}return v(c,e,b,a,t,x)}async function v(a,b,c=null,d=null,e=null,g=null){let m=await (0,i.mA)(b);if(!m.provider){let f=await (0,i.d_)(b);if(f){let i=await (0,h.getSettings)(),j=i.comboStrategies||{},k=j[b]?.fallbackStrategy||i.comboStrategy||"fallback",m=i.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: ${k}, sticky: ${m})`),(0,l.Pr)({body:a,models:f,handleSingleModel:(a,b)=>v(a,b,c,d,e,g),log:p,comboName:b,comboStrategy:k,comboStickyLimit:m})}return p.warn("CHAT","Invalid model format",{model:b}),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid model format")}let{provider:t,model:u}=m;if(!(0,s.iI)(g,t))return p.warn("AUTH",`Sub-user attempted to access disabled provider: ${t}`),(0,k.yj)(n.gx.FORBIDDEN,"This provider is not enabled for the current sub-user");b!==`${t}/${u}`?p.info("ROUTING",`${b} → ${t}/${u}`):p.info("ROUTING",`Provider: ${t}, Model: ${u}`);let w=d?.headers?.get("user-agent")||"",x=new Set,y=null,z=null;for(;;){let b=await (0,f.c1)(t,x,u);if(!b||b.allRateLimited){if(b?.allRateLimited){let a=y||b.lastError||"Unavailable",c=z||Number(b.lastErrorCode)||n.gx.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${t}/${u}] ${a} (${b.retryAfterHuman})`),(0,k.wO)(c,`[${t}/${u}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===x.size)return p.warn("AUTH",`No active credentials for provider: ${t}`),(0,k.yj)(n.gx.NOT_FOUND,`No active credentials for provider: ${t}`);return p.warn("CHAT","No more accounts available",{provider:t}),(0,k.yj)(z||n.gx.SERVICE_UNAVAILABLE,y||"All accounts unavailable")}p.info("AUTH",`\x1b[32mUsing ${t} account: ${b.connectionName}\x1b[0m`);let g=await (0,q.eU)(t,b);if(("antigravity"===t||"gemini-cli"===t)&&!g.projectId){let a=await (0,r.eG)(b.connectionId,g.accessToken);a&&(g.projectId=a,(0,q.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let i=await (0,h.getSettings)(),l=(i.providerThinking||{})[t]||null,m=await (0,j.w)({body:{...a,model:`${t}/${u}`},modelInfo:{provider:t,model:u},credentials:g,log:p,clientRawRequest:c,connectionId:b.connectionId,userAgent:w,apiKey:e,ccFilterNaming:!!i.ccFilterNaming,rtkEnabled:!!i.rtkEnabled,cavemanEnabled:!!i.cavemanEnabled,cavemanLevel:i.cavemanLevel||"full",providerThinking:l,sourceFormatOverride:d?.url?(0,o.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,q.vN)(b.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(b.connectionId,b,u)}});if(m.success)return m.response;let{shouldFallback:s}=await (0,f.vk)(b.connectionId,m.status,m.error,t,u,m.resetsAtMs);if(s){p.warn("AUTH",`Account ${b.connectionName} unavailable (${m.status}), trying fallback`),x.add(b.connectionId),y=m.error,z=m.status;continue}return m.response}}[e,j]=t.then?(await t)():t,d()}catch(a){d(a)}})}};
1
+ "use strict";exports.id=9489,exports.ids=[9489],exports.modules={9132:(a,b,c)=>{c.d(b,{Mv:()=>j,RG:()=>h,iI:()=>i});var d=c(68658),e=c(89718),f=c(54200);function g(a,b){return a&&"sub_user"===a.role?{role:"sub_user",userId:a.id,username:a.username||null,permissions:Array.isArray(a.permissions)?a.permissions:[],allowedProviders:(0,f.cc)(a),source:b}:null}async function h(a,b=null){let c=b||function(a){let b=a?.headers?.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a?.headers?.get("x-api-key");return c||null}(a);if(c){let a=await (0,e.y7)(c);if(a?.userId){let b=g(await (0,e.kl)(a.userId),"api_key");if(b)return b}}let f=await (0,d.f1)(a);if(!f||"sub_user"!==f.role||!f.userId)return null;let i=await (0,e.kl)(f.userId);return i?g(i,"cookie"):g({id:f.userId,username:f.username||null,role:f.role,permissions:f.permissions||[],allowedProviders:f.allowedProviders},"cookie")}function i(a,b){return!a||"sub_user"!==a.role||a.allowedProviders.includes(b)}function j(a,b){return b&&"sub_user"===b.role?a.filter(a=>i(b,a.provider)):a}},18910:(a,b,c)=>{c.d(b,{Pr:()=>i,UP:()=>g,Vu:()=>h});var d=c(12557),e=c(43659);let f=new Map;function g(a){a?f.delete(a):f.clear()}function h(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}async function i({body:a,models:b,handleSingleModel:c,log:g,comboName:h,comboStrategy:j,comboStickyLimit:k=1}){let l=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let g=b||"__default__",h=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,i=f.get(g),j="number"==typeof i?{index:i,consecutiveUseCount:0}:i||{index:0,consecutiveUseCount:0},k=j.index%a.length,l=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,k),m=j.consecutiveUseCount+1;return m>=h?f.set(g,{index:(k+1)%a.length,consecutiveUseCount:0}):f.set(g,{index:k,consecutiveUseCount:m}),l}(b,h,j,k),m=null,n=null,o=null;for(let b=0;b<l.length;b++){let e=l[b];g.info("COMBO",`Trying model ${b+1}/${l.length}: ${e}`);try{let b=await c(a,e);if(b.ok)return g.info("COMBO",`Model ${e} succeeded`),b;let f=b.statusText||"",h=null;try{let a=await b.clone().json();f=a?.error?.message||a?.error||a?.message||f,h=a?.retryAfter||null}catch{}if(h&&(!n||new Date(h)<new Date(n))&&(n=h),"string"!=typeof f)try{f=JSON.stringify(f)}catch{f=String(f)}let{shouldFallback:i,cooldownMs:j}=(0,d.hk)(b.status,f);if(!i)return g.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;j&&j>0&&j<=5e3&&(503===b.status||502===b.status||504===b.status)&&(g.info("COMBO",`Model ${e} transient ${b.status}, waiting ${j}ms before next`),await new Promise(a=>setTimeout(a,j))),m=f||String(b.status),o||(o=b.status),g.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){m=a.message||String(a),o||(o=500),g.warn("COMBO",`Model ${e} threw error, trying next`,{error:m})}}let p=m&&m.toLowerCase().includes("no credentials")?503:o||503,q=m||"All combo models unavailable";if(n){let a=(0,d.Qo)(n);return g.warn("COMBO",`All models failed | ${q} (${a})`),(0,e.wO)(p,q,n,a)}return g.warn("COMBO",`All models failed | ${q}`),new Response(JSON.stringify({error:{message:q}}),{status:p,headers:{"Content-Type":"application/json"}})}},38775:(a,b,c)=>{c.d(b,{d_:()=>g,mA:()=>f});var d=c(89718),e=c(40669);async function f(a){let b=(0,e.Xh)(a);if(!b.isAlias){let a=(await (0,d.getProviderNodes)({type:"openai-compatible"})).find(a=>a.prefix===b.providerAlias);if(a)return{provider:a.id,model:b.model};let c=(await (0,d.getProviderNodes)({type:"anthropic-compatible"})).find(a=>a.prefix===b.providerAlias);if(c)return{provider:c.id,model:b.model};let e=(await (0,d.getProviderNodes)({type:"custom-embedding"})).find(a=>a.prefix===b.providerAlias);if(e)return{provider:e.id,model:b.model};let f=(await (0,d.getProviderNodes)({type:"custom-image"})).find(a=>a.prefix===b.providerAlias);return f?{provider:f.id,model:b.model}:{provider:b.provider,model:b.model}}return await (0,d.Dj)(b.model)?{provider:null,model:b.model}:(0,e.js)(a,d.OM)}async function g(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},54200:(a,b,c)=>{c.d(b,{cc:()=>f,vJ:()=>e});let d=["codex","alicode"];function e(a){return Array.isArray(a)?Array.from(new Set(a.map(a=>"string"==typeof a?a.trim():"").filter(Boolean))):[]}function f(a,b=d){return a&&"object"==typeof a&&Object.prototype.hasOwnProperty.call(a,"allowedProviders")?e(a.allowedProviders):e(b)}},68658:(a,b,c)=>{c.d(b,{f1:()=>f}),c(23211);var d=c(69614);c(89718),c(54603);let e=new TextEncoder().encode(process.env.JWT_SECRET||"9router-default-secret-change-me");async function f(a){let b=a.cookies.get("auth_token")?.value;if(!b)return null;try{let{payload:a}=await (0,d.V)(b,e);return a}catch{return null}}},69614:(a,b,c)=>{c.d(b,{V:()=>p});var d=c(88888),e=c(91356),f=c(99129),g=c(73575),h=c(41570),i=c(19035),j=c(24762),k=c(80308),l=c(55956);async function m(a,b,c){if(!(0,i.Gv)(a))throw new f.Ye("Flattened JWS must be an object");if(void 0===a.protected&&void 0===a.header)throw new f.Ye('Flattened JWS must have either of the "protected" or "header" members');if(void 0!==a.protected&&"string"!=typeof a.protected)throw new f.Ye("JWS Protected Header incorrect type");if(void 0===a.payload)throw new f.Ye("JWS Payload missing");if("string"!=typeof a.signature)throw new f.Ye("JWS Signature missing or incorrect type");if(void 0!==a.header&&!(0,i.Gv)(a.header))throw new f.Ye("JWS Unprotected Header incorrect type");let m={};if(a.protected)try{let b=(0,d.D)(a.protected);m=JSON.parse(g.D0.decode(b))}catch{throw new f.Ye("JWS Protected Header is invalid")}if(!(0,i.fz)(m,a.header))throw new f.Ye("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...m,...a.header},o=(0,k.n)(f.Ye,new Map([["b64",!0]]),c?.crit,m,n),p=!0;if(o.has("b64")&&"boolean"!=typeof(p=m.b64))throw new f.Ye('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:q}=n;if("string"!=typeof q||!q)throw new f.Ye('JWS "alg" (Algorithm) Header Parameter missing or invalid');let r=c&&function(a,b){if(void 0!==b&&(!Array.isArray(b)||b.some(a=>"string"!=typeof a)))throw TypeError(`"${a}" option must be an array of strings`);if(b)return new Set(b)}("algorithms",c.algorithms);if(r&&!r.has(q))throw new f.Rb('"alg" (Algorithm) Header Parameter value not allowed');if(p){if("string"!=typeof a.payload)throw new f.Ye("JWS Payload must be a string")}else if("string"!=typeof a.payload&&!(a.payload instanceof Uint8Array))throw new f.Ye("JWS Payload must be a string or an Uint8Array instance");let s=!1;"function"==typeof b&&(b=await b(m,a),s=!0),(0,j.y)(q,b,"verify");let t=(0,g.xW)(void 0!==a.protected?(0,g.lF)(a.protected):new Uint8Array,(0,g.lF)("."),"string"==typeof a.payload?p?(0,g.lF)(a.payload):g.Rd.encode(a.payload):a.payload),u=(0,h.h2)(a.signature,"signature",f.Ye),v=await (0,l.l)(b,q);if(!await (0,e.MX)(q,v,u,t))throw new f.h2;let w={payload:p?(0,h.h2)(a.payload,"payload",f.Ye):"string"==typeof a.payload?g.Rd.encode(a.payload):a.payload};return(void 0!==a.protected&&(w.protectedHeader=m),void 0!==a.header&&(w.unprotectedHeader=a.header),s)?{...w,key:v}:w}async function n(a,b,c){if(a instanceof Uint8Array&&(a=g.D0.decode(a)),"string"!=typeof a)throw new f.Ye("Compact JWS must be a string or Uint8Array");let{0:d,1:e,2:h,length:i}=a.split(".");if(3!==i)throw new f.Ye("Invalid Compact JWS");let j=await m({payload:e,protected:d,signature:h},b,c),k={payload:j.payload,protectedHeader:j.protectedHeader};return"function"==typeof b?{...k,key:j.key}:k}var o=c(17347);async function p(a,b,c){let d=await n(a,b,c);if(d.protectedHeader.crit?.includes("b64")&&!1===d.protectedHeader.b64)throw new f.Dp("JWTs MUST NOT use unencoded payload");let e={payload:(0,o.k6)(d.protectedHeader,d.payload,c),protectedHeader:d.protectedHeader};return"function"==typeof b?{...e,key:d.key}:e}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>u});var e=c(48895),f=c(80238),g=c(71750),h=c(89718),i=c(38775),j=c(92500),k=c(43659),l=c(18910),m=c(27349),n=c(41004),o=c(14170),p=c(7803),q=c(67828),r=c(38160),s=c(9132),t=a([e,j]);async function u(a,b=null){let c;try{c=await a.json()}catch{return p.warn("CHAT","Invalid JSON body"),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())}),(0,g.n)(b.headers);let d=new URL(a.url),e=c.model,j=c.messages?.length||c.input?.length||0,o=c.tools?.length||0,q=c.reasoning_effort||c.reasoning?.effort||null;p.request("POST",`${d.pathname} | ${e} | ${j} msgs${o?` | ${o} tools`:""}${q?` | effort=${q}`:""}`);let r=a.headers.get("Authorization"),t=(0,f.Tr)(a);if(r&&t){let a=p.maskKey(t);p.debug("AUTH",`API Key: ${a}`)}else p.debug("AUTH","No API key provided (local mode)");let w=await (0,h.getSettings)(),x=await (0,s.RG)(a,t);if(w.requireApiKey){if(!t)return p.warn("AUTH","Missing API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(t))return p.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,k.yj)(n.gx.UNAUTHORIZED,"Invalid API key")}if(!e)return p.warn("CHAT","Missing model"),(0,k.yj)(n.gx.BAD_REQUEST,"Missing model");let y=a?.headers?.get("user-agent")||"",z=(0,m.c)(c,e,y,!!w.ccFilterNaming);if(z)return z.response||z;let A=await (0,i.d_)(e);if(A){if(x)for(let a of A){let b=await (0,i.mA)(a);if(!b?.provider||!(0,s.iI)(x,b.provider))return(0,k.yj)(n.gx.FORBIDDEN,"This combo includes providers that are not enabled for the current sub-user")}let d=w.comboStrategies||{},f=d[e]?.fallbackStrategy||w.comboStrategy||"fallback",g=w.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${e}" with ${A.length} models (strategy: ${f}, sticky: ${g})`),(0,l.Pr)({body:c,models:A,handleSingleModel:(c,d)=>v(c,d,b,a,t,x),log:p,comboName:e,comboStrategy:f,comboStickyLimit:g})}return v(c,e,b,a,t,x)}async function v(a,b,c=null,d=null,e=null,g=null){let m=await (0,i.mA)(b);if(!m.provider){let f=await (0,i.d_)(b);if(f){let i=await (0,h.getSettings)(),j=i.comboStrategies||{},k=j[b]?.fallbackStrategy||i.comboStrategy||"fallback",m=i.comboStickyRoundRobinLimit;return p.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: ${k}, sticky: ${m})`),(0,l.Pr)({body:a,models:f,handleSingleModel:(a,b)=>v(a,b,c,d,e,g),log:p,comboName:b,comboStrategy:k,comboStickyLimit:m})}return p.warn("CHAT","Invalid model format",{model:b}),(0,k.yj)(n.gx.BAD_REQUEST,"Invalid model format")}let{provider:t,model:u}=m;if(!(0,s.iI)(g,t))return p.warn("AUTH",`Sub-user attempted to access disabled provider: ${t}`),(0,k.yj)(n.gx.FORBIDDEN,"This provider is not enabled for the current sub-user");b!==`${t}/${u}`?p.info("ROUTING",`${b} → ${t}/${u}`):p.info("ROUTING",`Provider: ${t}, Model: ${u}`);let w=d?.headers?.get("user-agent")||"",x=new Set,y=null,z=null;for(;;){let b=await (0,f.c1)(t,x,u);if(!b||b.allRateLimited){if(b?.allRateLimited){let a=y||b.lastError||"Unavailable",c=z||Number(b.lastErrorCode)||n.gx.SERVICE_UNAVAILABLE;return p.warn("CHAT",`[${t}/${u}] ${a} (${b.retryAfterHuman})`),(0,k.wO)(c,`[${t}/${u}] ${a}`,b.retryAfter,b.retryAfterHuman)}if(0===x.size)return p.warn("AUTH",`No active credentials for provider: ${t}`),(0,k.yj)(n.gx.NOT_FOUND,`No active credentials for provider: ${t}`);return p.warn("CHAT","No more accounts available",{provider:t}),(0,k.yj)(z||n.gx.SERVICE_UNAVAILABLE,y||"All accounts unavailable")}p.info("AUTH",`\x1b[32mUsing ${t} account: ${b.connectionName}\x1b[0m`);let g=await (0,q.eU)(t,b);if(("antigravity"===t||"gemini-cli"===t)&&!g.projectId){let a=await (0,r.eG)(b.connectionId,g.accessToken);a&&(g.projectId=a,(0,q.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let i=await (0,h.getSettings)(),l=(i.providerThinking||{})[t]||null,m=await (0,j.w)({body:{...a,model:`${t}/${u}`},modelInfo:{provider:t,model:u},credentials:g,log:p,clientRawRequest:c,connectionId:b.connectionId,userAgent:w,apiKey:e,ccFilterNaming:!!i.ccFilterNaming,rtkEnabled:!!i.rtkEnabled,cavemanEnabled:!!i.cavemanEnabled,cavemanLevel:i.cavemanLevel||"full",providerThinking:l,sourceFormatOverride:d?.url?(0,o.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,q.vN)(b.connectionId,{accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(b.connectionId,b,u)}});if(m.success)return m.response;let{shouldFallback:s}=await (0,f.vk)(b.connectionId,m.status,m.error,t,u,m.resetsAtMs);if(s){p.warn("AUTH",`Account ${b.connectionName} unavailable (${m.status}), trying fallback`),x.add(b.connectionId),y=m.error,z=m.status;continue}return m.response}}[e,j]=t.then?(await t)():t,d()}catch(a){d(a)}})}};
@@ -1 +1 @@
1
- "use strict";exports.id=9718,exports.ids=[9718],exports.modules={89718:(a,b,c)=>{c.d(b,{$L:()=>ah,CG:()=>ad,Dj:()=>aa,Iq:()=>ap,JE:()=>al,K1:()=>aw,KJ:()=>az,L:()=>_,L9:()=>Z,Mc:()=>N,OM:()=>S,Pc:()=>G,Q_:()=>K,Qf:()=>ai,Qu:()=>D,S8:()=>W,TK:()=>an,Uv:()=>$,VT:()=>aB,XW:()=>aq,Xx:()=>au,Yd:()=>L,ZO:()=>J,bI:()=>as,c:()=>Y,ek:()=>ar,fK:()=>Q,fv:()=>U,getApiKeys:()=>ae,getPricingForModel:()=>ay,getProviderConnections:()=>B,getProviderNodes:()=>C,getSettings:()=>at,hG:()=>ao,ho:()=>F,hr:()=>I,i0:()=>E,iE:()=>O,jd:()=>ab,kg:()=>am,kl:()=>ak,lo:()=>aj,o5:()=>T,oG:()=>ac,op:()=>M,r4:()=>ax,uL:()=>X,ui:()=>H,updateProviderConnection:()=>P,uv:()=>V,y7:()=>ag,yF:()=>aA,yg:()=>af,zP:()=>av});var d=c(82996),e=c(11259),f=c(94755),g=c(76760),h=c.n(g),i=c(73024),j=c.n(i),k=c(80974),l=c.n(k),m=c(49120);let n="u">typeof caches||"object"==typeof caches,o=n?null:h().join(m.n,"db.json"),p=n?null:h().join(process.cwd(),"src","mitm","models.json");j().existsSync(m.n)||j().mkdirSync(m.n,{recursive:!0});let q={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireLogin:!0,tunnelDashboardAccess:!0,observabilityEnabled:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:1024,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,cavemanEnabled:!1,cavemanLevel:"full"};function r(){return{providerConnections:[],providerNodes:[],proxyPools:[],modelAliases:{},customModels:[],mitmAlias:{},combos:[],apiKeys:[],users:[],settings:{...q},pricing:{}}}function s(a){let b=r(),c=a&&"object"==typeof a?a:{},d=!1;for(let[a,e]of Object.entries(b)){if(void 0===c[a]||null===c[a]){c[a]=e,d=!0;continue}if("settings"===a&&("object"!=typeof c.settings||Array.isArray(c.settings))){c.settings={...e},d=!0;continue}if("settings"===a&&"object"==typeof c.settings&&!Array.isArray(c.settings))for(let[a,b]of Object.entries(e))void 0===c.settings[a]&&("outboundProxyEnabled"===a&&"string"==typeof c.settings.outboundProxyUrl&&c.settings.outboundProxyUrl.trim()?c.settings.outboundProxyEnabled=!0:c.settings[a]=b,d=!0);if("apiKeys"===a&&Array.isArray(c.apiKeys))for(let a of c.apiKeys)(void 0===a.isActive||null===a.isActive)&&(a.isActive=!0,d=!0),void 0===a.userId&&(a.userId=null,d=!0)}return{data:c,changed:d}}j().existsSync(o)||j().writeFileSync(o,JSON.stringify(r(),null,2));let t=null,u={retries:{retries:15,minTimeout:50,maxTimeout:3e3},stale:1e4};class v{constructor(){this._queue=[],this._locked=!1}async acquire(){return this._locked?new Promise(a=>{this._queue.push(()=>a(()=>this._release()))}):(this._locked=!0,()=>this._release())}_release(){let a=this._queue.shift();a?a():this._locked=!1}}let w=new v;async function x(a,b){let c=await w.acquire(),d=null;try{d=await l().lock(o,u),await b()}catch(a){throw"ELOCKED"===a.code&&console.warn("[DB] File is locked, retrying..."),a}finally{if(d)try{await d()}catch(a){}c()}}async function y(a){await x(a,()=>a.read())}async function z(a){await x(a,()=>a.write())}async function A(){t||(t=new d.t(new e.Pv(o),r()));try{await y(t)}catch(a){if(a instanceof SyntaxError)console.warn("[DB] Corrupt JSON detected, resetting to defaults..."),t.data=r(),await z(t);else throw a}if(t.data){let{data:a,changed:b}=s(t.data);t.data=a,b&&await z(t)}else t.data=r(),await z(t);return t}async function B(a={}){let b=(await A()).data.providerConnections||[];return a.provider&&(b=b.filter(b=>b.provider===a.provider)),void 0!==a.isActive&&(b=b.filter(b=>b.isActive===a.isActive)),b.sort((a,b)=>(a.priority||999)-(b.priority||999)),b}async function C(a={}){let b=(await A()).data.providerNodes||[];return a.type&&(b=b.filter(b=>b.type===a.type)),b}async function D(a){return(await A()).data.providerNodes.find(b=>b.id===a)||null}async function E(a){let b=await A();b.data.providerNodes||(b.data.providerNodes=[]);let c=new Date().toISOString(),d={id:a.id||(0,f.A)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,createdAt:c,updatedAt:c};return b.data.providerNodes.push(d),await z(b),d}async function F(a,b){let c=await A();c.data.providerNodes||(c.data.providerNodes=[]);let d=c.data.providerNodes.findIndex(b=>b.id===a);return -1===d?null:(c.data.providerNodes[d]={...c.data.providerNodes[d],...b,updatedAt:new Date().toISOString()},await z(c),c.data.providerNodes[d])}async function G(a){let b=await A();b.data.providerNodes||(b.data.providerNodes=[]);let c=b.data.providerNodes.findIndex(b=>b.id===a);if(-1===c)return null;let[d]=b.data.providerNodes.splice(c,1);return await z(b),d}async function H(a={}){let b=(await A()).data.proxyPools||[];return void 0!==a.isActive&&(b=b.filter(b=>b.isActive===a.isActive)),a.testStatus&&(b=b.filter(b=>b.testStatus===a.testStatus)),b.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0))}async function I(a){return((await A()).data.proxyPools||[]).find(b=>b.id===a)||null}async function J(a){let b=await A();b.data.proxyPools||(b.data.proxyPools=[]);let c=new Date().toISOString(),d={id:a.id||(0,f.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return b.data.proxyPools.push(d),await z(b),d}async function K(a,b){let c=await A();c.data.proxyPools||(c.data.proxyPools=[]);let d=c.data.proxyPools.findIndex(b=>b.id===a);return -1===d?null:(c.data.proxyPools[d]={...c.data.proxyPools[d],...b,updatedAt:new Date().toISOString()},await z(c),c.data.proxyPools[d])}async function L(a){let b=await A();b.data.proxyPools||(b.data.proxyPools=[]);let c=b.data.proxyPools.findIndex(b=>b.id===a);if(-1===c)return null;let[d]=b.data.proxyPools.splice(c,1);return await z(b),d}async function M(a){let b=await A(),c=b.data.providerConnections.length;b.data.providerConnections=b.data.providerConnections.filter(b=>b.provider!==a);let d=c-b.data.providerConnections.length;return await z(b),d}async function N(a){return(await A()).data.providerConnections.find(b=>b.id===a)||null}async function O(a){let b=await A(),c=new Date().toISOString(),d=-1;if("oauth"===a.authType&&a.email?d=b.data.providerConnections.findIndex(b=>b.provider===a.provider&&"oauth"===b.authType&&b.email===a.email):"apikey"===a.authType&&a.name&&(d=b.data.providerConnections.findIndex(b=>b.provider===a.provider&&"apikey"===b.authType&&b.name===a.name)),-1!==d)return b.data.providerConnections[d]={...b.data.providerConnections[d],...a,updatedAt:c},await z(b),b.data.providerConnections[d];let e=a.name||null;if(!e&&"oauth"===a.authType)if(a.email)e=a.email;else{let c=b.data.providerConnections.filter(b=>b.provider===a.provider).length;e=`Account ${c+1}`}let g=a.priority;g||(g=b.data.providerConnections.filter(b=>b.provider===a.provider).reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let h={id:(0,f.A)(),provider:a.provider,authType:a.authType||"oauth",name:e,priority:g,isActive:void 0===a.isActive||a.isActive,createdAt:c,updatedAt:c};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount"])void 0!==a[b]&&null!==a[b]&&(h[b]=a[b]);return a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(h.providerSpecificData=a.providerSpecificData),b.data.providerConnections.push(h),await z(b),await R(a.provider),h}async function P(a,b){let c=await A(),d=c.data.providerConnections.findIndex(b=>b.id===a);if(-1===d)return null;let e=c.data.providerConnections[d].provider;return c.data.providerConnections[d]={...c.data.providerConnections[d],...b,updatedAt:new Date().toISOString()},await z(c),void 0!==b.priority&&await R(e),c.data.providerConnections[d]}async function Q(a){let b=await A(),c=b.data.providerConnections.findIndex(b=>b.id===a);if(-1===c)return!1;let d=b.data.providerConnections[c].provider;return b.data.providerConnections.splice(c,1),await z(b),await R(d),!0}async function R(a){let b=await A();b.data.providerConnections&&(b.data.providerConnections.filter(b=>b.provider===a).sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}).forEach((a,b)=>{a.priority=b+1}),await z(b))}async function S(){return(await A()).data.modelAliases||{}}async function T(a,b){let c=await A();c.data.modelAliases[a]=b,await z(c)}async function U(a){let b=await A();delete b.data.modelAliases[a],await z(b)}async function V(){return(await A()).data.customModels||[]}async function W({providerAlias:a,id:b,type:c="llm",name:d}){let e=await A();return e.data.customModels||(e.data.customModels=[]),!e.data.customModels.some(d=>d.providerAlias===a&&d.id===b&&(d.type||"llm")===c)&&(e.data.customModels.push({providerAlias:a,id:b,type:c,name:d||b}),await z(e),!0)}async function X({providerAlias:a,id:b,type:c="llm"}){let d=await A();d.data.customModels&&(d.data.customModels=d.data.customModels.filter(d=>d.providerAlias!==a||d.id!==b||(d.type||"llm")!==c),await z(d))}async function Y(a){let b=(await A()).data.mitmAlias||{};return a?b[a]||{}:b}async function Z(a,b){let c=await A();c.data.mitmAlias||(c.data.mitmAlias={}),c.data.mitmAlias[a]=b||{},await z(c)}async function $(){return(await A()).data.combos||[]}async function _(a){return((await A()).data.combos||[]).find(b=>b.id===a)||null}async function aa(a){return((await A()).data.combos||[]).find(b=>b.name===a)||null}async function ab(a){let b=await A();b.data.combos||(b.data.combos=[]);let c=new Date().toISOString(),d={id:(0,f.A)(),name:a.name,models:a.models||[],kind:a.kind||null,createdAt:c,updatedAt:c};return b.data.combos.push(d),await z(b),d}async function ac(a,b){let c=await A();c.data.combos||(c.data.combos=[]);let d=c.data.combos.findIndex(b=>b.id===a);return -1===d?null:(c.data.combos[d]={...c.data.combos[d],...b,updatedAt:new Date().toISOString()},await z(c),c.data.combos[d])}async function ad(a){let b=await A();if(!b.data.combos)return!1;let c=b.data.combos.findIndex(b=>b.id===a);return -1!==c&&(b.data.combos.splice(c,1),await z(b),!0)}async function ae(a={}){let b=(await A()).data.apiKeys||[];return void 0!==a.userId&&(b=b.filter(b=>b.userId===a.userId)),a.includeUnassigned||a.forCurrentUser&&(b=b.filter(b=>b.userId===a.forCurrentUser)),b}async function af(a){return(await A()).data.apiKeys.find(b=>b.id===a)||null}async function ag(a){return(await A()).data.apiKeys.find(b=>b.key===a)||null}async function ah(a,b){let c=await A(),d=c.data.apiKeys.find(b=>b.id===a);return d?(d.userId=b,d.assignedAt=new Date().toISOString(),await z(c),d):null}async function ai(a){let b=await A(),c=b.data.apiKeys.find(b=>b.id===a);return!!c&&(c.userId=null,c.assignedAt=null,await z(b),!0)}async function aj(){return((await A()).data.users||[]).map(a=>({...a,passwordHash:void 0}))}async function ak(a){let b=((await A()).data.users||[]).find(b=>b.id===a);return b?{...b,passwordHash:void 0}:null}async function al(a){return((await A()).data.users||[]).find(b=>b.username===a)||null}async function am({username:a,passwordHash:b,role:c="sub_user",permissions:d=[],displayName:e="",allowedProviders:g}){let h=await A();if(h.data.users||(h.data.users=[]),h.data.users.some(b=>b.username===a))throw Error("Username already exists");let i=new Date().toISOString(),j={id:(0,f.A)(),username:a,passwordHash:b,role:c,permissions:d,displayName:e||a,createdAt:i,updatedAt:i};return void 0!==g&&(j.allowedProviders=g),h.data.users.push(j),await z(h),{...j,passwordHash:void 0}}async function an(a,b){let c=await A();if(!c.data.users)return null;let d=c.data.users.findIndex(b=>b.id===a);if(-1===d)return null;let{passwordHash:e,...f}=b;return c.data.users[d]={...c.data.users[d],...f,updatedAt:new Date().toISOString()},e&&(c.data.users[d].passwordHash=e),await z(c),{...c.data.users[d],passwordHash:void 0}}async function ao(a){let b=await A();if(!b.data.users)return!1;let c=b.data.users.findIndex(b=>b.id===a);if(-1===c)return!1;for(let d of(b.data.users.splice(c,1),b.data.apiKeys||[]))d.userId===a&&(d.userId=null,d.assignedAt=null);return await z(b),!0}async function ap(a,b){if(!b)throw Error("machineId is required");let d=await A(),e=new Date().toISOString(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,f.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:e};return d.data.apiKeys.push(i),await z(d),i}async function aq(a,b){let c=await A(),d=c.data.apiKeys.findIndex(b=>b.id===a);return -1===d?null:(c.data.apiKeys[d]={...c.data.apiKeys[d],...b},await z(c),c.data.apiKeys[d])}async function ar(a){let b=(await A()).data.apiKeys.find(b=>b.key===a);return b&&!1!==b.isActive}async function as(){let a=await A(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;for(let d of a.data.providerConnections){for(let a of b)(null===d[a]||void 0===d[a])&&(delete d[a],c++);d.providerSpecificData&&0===Object.keys(d.providerSpecificData).length&&(delete d.providerSpecificData,c++)}return c>0&&await z(a),c}async function at(){return(await A()).data.settings||{cloudEnabled:!1}}async function au(a){let b=await A();return b.data.settings={...b.data.settings,...a},await z(b),b.data.settings}async function av(){return(await A()).data||r()}async function aw(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let{data:b}=s({...r(),...a,settings:{...r().settings,...a.settings&&"object"==typeof a.settings&&!Array.isArray(a.settings)?a.settings:{}}}),c=await A();return c.data=b,await z(c),c.data}async function ax(){let a=(await A()).data.pricing||{},{PROVIDER_PRICING:b}=await c.e(7341).then(c.bind(c,57341)),d={};for(let[c,e]of Object.entries(b))if(d[c]={...e},a[c])for(let[b,e]of Object.entries(a[c]))d[c][b]=d[c][b]?{...d[c][b],...e}:e;for(let[b,c]of Object.entries(a))if(d[b])for(let[a,e]of Object.entries(c))d[b][a]||(d[b][a]=e);else d[b]={...c};return d}async function ay(a,b){if(!b)return null;let d=(await A()).data.pricing||{};if(a&&d[a]?.[b])return d[a][b];if(!n&&p&&j().existsSync(p))try{let a=JSON.parse(j().readFileSync(p,"utf-8")),c=Array.isArray(a?.data)?a.data:[],d=new Set([b,b.includes("/")?b.split("/").pop():b].filter(Boolean)),e=c.find(a=>{let b=String(a?.id||""),c=String(a?.canonical_slug||"");return[...d].some(a=>b===a||c===a||b.endsWith(`/${a}`)||c.endsWith(`/${a}`))});if(e?.pricing){let a=Number(e.pricing.prompt),b=Number(e.pricing.completion),c=Number(e.pricing.input_cache_read),d=Number(e.pricing.internal_reasoning),f=Number(e.pricing.input_cache_write);if(!Number.isNaN(a)&&!Number.isNaN(b))return{input:1e6*a,output:1e6*b,cached:Number.isNaN(c)?1e6*a:1e6*c,reasoning:Number.isNaN(d)?1e6*b:1e6*d,cache_creation:Number.isNaN(f)?1e6*a:1e6*f}}}catch{}let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function az(a){let b=await A();for(let[c,d]of(b.data.pricing||(b.data.pricing={}),Object.entries(a)))for(let[a,e]of(b.data.pricing[c]||(b.data.pricing[c]={}),Object.entries(d)))b.data.pricing[c][a]=e;return await z(b),b.data.pricing}async function aA(a,b){let c=await A();return c.data.pricing||(c.data.pricing={}),b?c.data.pricing[a]&&(delete c.data.pricing[a][b],0===Object.keys(c.data.pricing[a]).length&&delete c.data.pricing[a]):delete c.data.pricing[a],await z(c),c.data.pricing}async function aB(){let a=await A();return a.data.pricing={},await z(a),a.data.pricing}}};
1
+ "use strict";exports.id=9718,exports.ids=[9718],exports.modules={89718:(a,b,c)=>{c.d(b,{$L:()=>ah,CG:()=>ad,Dj:()=>aa,Iq:()=>ap,JE:()=>al,K1:()=>aw,KJ:()=>az,L:()=>_,L9:()=>Z,Mc:()=>N,OM:()=>S,Pc:()=>G,Q_:()=>K,Qf:()=>ai,Qu:()=>D,S8:()=>W,TK:()=>an,Uv:()=>$,VT:()=>aB,XW:()=>aq,Xx:()=>au,Yd:()=>L,ZO:()=>J,bI:()=>as,c:()=>Y,ek:()=>ar,fK:()=>Q,fv:()=>U,getApiKeys:()=>ae,getPricingForModel:()=>ay,getProviderConnections:()=>B,getProviderNodes:()=>C,getSettings:()=>at,hG:()=>ao,ho:()=>F,hr:()=>I,i0:()=>E,iE:()=>O,jd:()=>ab,kg:()=>am,kl:()=>ak,lo:()=>aj,o5:()=>T,oG:()=>ac,op:()=>M,r4:()=>ax,uL:()=>X,ui:()=>H,updateProviderConnection:()=>P,uv:()=>V,y7:()=>ag,yF:()=>aA,yg:()=>af,zP:()=>av});var d=c(82996),e=c(11259),f=c(94755),g=c(76760),h=c.n(g),i=c(73024),j=c.n(i),k=c(80974),l=c.n(k),m=c(49120);let n="u">typeof caches||"object"==typeof caches,o=n?null:h().join(m.n,"db.json"),p=n?null:h().join(process.cwd(),"src","mitm","models.json");j().existsSync(m.n)||j().mkdirSync(m.n,{recursive:!0});let q={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireLogin:!0,tunnelDashboardAccess:!0,observabilityEnabled:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:1024,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,cavemanEnabled:!1,cavemanLevel:"full"};function r(){return{providerConnections:[],providerNodes:[],proxyPools:[],modelAliases:{},customModels:[],mitmAlias:{},combos:[],apiKeys:[],users:[],settings:{...q},pricing:{}}}function s(a){let b=r(),c=a&&"object"==typeof a?a:{},d=!1;for(let[a,e]of Object.entries(b)){if(void 0===c[a]||null===c[a]){c[a]=e,d=!0;continue}if("settings"===a&&("object"!=typeof c.settings||Array.isArray(c.settings))){c.settings={...e},d=!0;continue}if("settings"===a&&"object"==typeof c.settings&&!Array.isArray(c.settings))for(let[a,b]of Object.entries(e))void 0===c.settings[a]&&("outboundProxyEnabled"===a&&"string"==typeof c.settings.outboundProxyUrl&&c.settings.outboundProxyUrl.trim()?c.settings.outboundProxyEnabled=!0:c.settings[a]=b,d=!0);if("apiKeys"===a&&Array.isArray(c.apiKeys))for(let a of c.apiKeys)(void 0===a.isActive||null===a.isActive)&&(a.isActive=!0,d=!0),void 0===a.userId&&(a.userId=null,d=!0)}return{data:c,changed:d}}j().existsSync(o)||j().writeFileSync(o,JSON.stringify(r(),null,2));let t=null,u={retries:{retries:15,minTimeout:50,maxTimeout:3e3},stale:1e4};class v{constructor(){this._queue=[],this._locked=!1}async acquire(){return this._locked?new Promise(a=>{this._queue.push(()=>a(()=>this._release()))}):(this._locked=!0,()=>this._release())}_release(){let a=this._queue.shift();a?a():this._locked=!1}}let w=new v;async function x(a,b){let c=await w.acquire(),d=null;try{d=await l().lock(o,u),await b()}catch(a){throw"ELOCKED"===a.code&&console.warn("[DB] File is locked, retrying..."),a}finally{if(d)try{await d()}catch(a){}c()}}async function y(a){await x(a,()=>a.read())}async function z(a){await x(a,()=>a.write())}async function A(){t||(t=new d.t(new e.Pv(o),r()));try{await y(t)}catch(a){if(a instanceof SyntaxError)console.warn("[DB] Corrupt JSON detected, resetting to defaults..."),t.data=r(),await z(t);else throw a}if(t.data){let{data:a,changed:b}=s(t.data);t.data=a,b&&await z(t)}else t.data=r(),await z(t);return t}async function B(a={}){let b=(await A()).data.providerConnections||[];return a.provider&&(b=b.filter(b=>b.provider===a.provider)),void 0!==a.isActive&&(b=b.filter(b=>b.isActive===a.isActive)),b.sort((a,b)=>(a.priority||999)-(b.priority||999)),b}async function C(a={}){let b=(await A()).data.providerNodes||[];return a.type&&(b=b.filter(b=>b.type===a.type)),b}async function D(a){return(await A()).data.providerNodes.find(b=>b.id===a)||null}async function E(a){let b=await A();b.data.providerNodes||(b.data.providerNodes=[]);let c=new Date().toISOString(),d={id:a.id||(0,f.A)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,defaultSize:a.defaultSize,createdAt:c,updatedAt:c};return b.data.providerNodes.push(d),await z(b),d}async function F(a,b){let c=await A();c.data.providerNodes||(c.data.providerNodes=[]);let d=c.data.providerNodes.findIndex(b=>b.id===a);return -1===d?null:(c.data.providerNodes[d]={...c.data.providerNodes[d],...b,updatedAt:new Date().toISOString()},await z(c),c.data.providerNodes[d])}async function G(a){let b=await A();b.data.providerNodes||(b.data.providerNodes=[]);let c=b.data.providerNodes.findIndex(b=>b.id===a);if(-1===c)return null;let[d]=b.data.providerNodes.splice(c,1);return await z(b),d}async function H(a={}){let b=(await A()).data.proxyPools||[];return void 0!==a.isActive&&(b=b.filter(b=>b.isActive===a.isActive)),a.testStatus&&(b=b.filter(b=>b.testStatus===a.testStatus)),b.sort((a,b)=>new Date(b.updatedAt||0)-new Date(a.updatedAt||0))}async function I(a){return((await A()).data.proxyPools||[]).find(b=>b.id===a)||null}async function J(a){let b=await A();b.data.proxyPools||(b.data.proxyPools=[]);let c=new Date().toISOString(),d={id:a.id||(0,f.A)(),name:a.name,proxyUrl:a.proxyUrl,noProxy:a.noProxy||"",type:a.type||"http",isActive:void 0===a.isActive||a.isActive,strictProxy:!0===a.strictProxy,testStatus:a.testStatus||"unknown",lastTestedAt:a.lastTestedAt||null,lastError:a.lastError||null,createdAt:c,updatedAt:c};return b.data.proxyPools.push(d),await z(b),d}async function K(a,b){let c=await A();c.data.proxyPools||(c.data.proxyPools=[]);let d=c.data.proxyPools.findIndex(b=>b.id===a);return -1===d?null:(c.data.proxyPools[d]={...c.data.proxyPools[d],...b,updatedAt:new Date().toISOString()},await z(c),c.data.proxyPools[d])}async function L(a){let b=await A();b.data.proxyPools||(b.data.proxyPools=[]);let c=b.data.proxyPools.findIndex(b=>b.id===a);if(-1===c)return null;let[d]=b.data.proxyPools.splice(c,1);return await z(b),d}async function M(a){let b=await A(),c=b.data.providerConnections.length;b.data.providerConnections=b.data.providerConnections.filter(b=>b.provider!==a);let d=c-b.data.providerConnections.length;return await z(b),d}async function N(a){return(await A()).data.providerConnections.find(b=>b.id===a)||null}async function O(a){let b=await A(),c=new Date().toISOString(),d=-1;if("oauth"===a.authType&&a.email?d=b.data.providerConnections.findIndex(b=>b.provider===a.provider&&"oauth"===b.authType&&b.email===a.email):"apikey"===a.authType&&a.name&&(d=b.data.providerConnections.findIndex(b=>b.provider===a.provider&&"apikey"===b.authType&&b.name===a.name)),-1!==d)return b.data.providerConnections[d]={...b.data.providerConnections[d],...a,updatedAt:c},await z(b),b.data.providerConnections[d];let e=a.name||null;if(!e&&"oauth"===a.authType)if(a.email)e=a.email;else{let c=b.data.providerConnections.filter(b=>b.provider===a.provider).length;e=`Account ${c+1}`}let g=a.priority;g||(g=b.data.providerConnections.filter(b=>b.provider===a.provider).reduce((a,b)=>Math.max(a,b.priority||0),0)+1);let h={id:(0,f.A)(),provider:a.provider,authType:a.authType||"oauth",name:e,priority:g,isActive:void 0===a.isActive||a.isActive,createdAt:c,updatedAt:c};for(let b of["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","errorCode","consecutiveUseCount"])void 0!==a[b]&&null!==a[b]&&(h[b]=a[b]);return a.providerSpecificData&&Object.keys(a.providerSpecificData).length>0&&(h.providerSpecificData=a.providerSpecificData),b.data.providerConnections.push(h),await z(b),await R(a.provider),h}async function P(a,b){let c=await A(),d=c.data.providerConnections.findIndex(b=>b.id===a);if(-1===d)return null;let e=c.data.providerConnections[d].provider;return c.data.providerConnections[d]={...c.data.providerConnections[d],...b,updatedAt:new Date().toISOString()},await z(c),void 0!==b.priority&&await R(e),c.data.providerConnections[d]}async function Q(a){let b=await A(),c=b.data.providerConnections.findIndex(b=>b.id===a);if(-1===c)return!1;let d=b.data.providerConnections[c].provider;return b.data.providerConnections.splice(c,1),await z(b),await R(d),!0}async function R(a){let b=await A();b.data.providerConnections&&(b.data.providerConnections.filter(b=>b.provider===a).sort((a,b)=>{let c=(a.priority||0)-(b.priority||0);return 0!==c?c:new Date(b.updatedAt||0)-new Date(a.updatedAt||0)}).forEach((a,b)=>{a.priority=b+1}),await z(b))}async function S(){return(await A()).data.modelAliases||{}}async function T(a,b){let c=await A();c.data.modelAliases[a]=b,await z(c)}async function U(a){let b=await A();delete b.data.modelAliases[a],await z(b)}async function V(){return(await A()).data.customModels||[]}async function W({providerAlias:a,id:b,type:c="llm",name:d}){let e=await A();return e.data.customModels||(e.data.customModels=[]),!e.data.customModels.some(d=>d.providerAlias===a&&d.id===b&&(d.type||"llm")===c)&&(e.data.customModels.push({providerAlias:a,id:b,type:c,name:d||b}),await z(e),!0)}async function X({providerAlias:a,id:b,type:c="llm"}){let d=await A();d.data.customModels&&(d.data.customModels=d.data.customModels.filter(d=>d.providerAlias!==a||d.id!==b||(d.type||"llm")!==c),await z(d))}async function Y(a){let b=(await A()).data.mitmAlias||{};return a?b[a]||{}:b}async function Z(a,b){let c=await A();c.data.mitmAlias||(c.data.mitmAlias={}),c.data.mitmAlias[a]=b||{},await z(c)}async function $(){return(await A()).data.combos||[]}async function _(a){return((await A()).data.combos||[]).find(b=>b.id===a)||null}async function aa(a){return((await A()).data.combos||[]).find(b=>b.name===a)||null}async function ab(a){let b=await A();b.data.combos||(b.data.combos=[]);let c=new Date().toISOString(),d={id:(0,f.A)(),name:a.name,models:a.models||[],kind:a.kind||null,createdAt:c,updatedAt:c};return b.data.combos.push(d),await z(b),d}async function ac(a,b){let c=await A();c.data.combos||(c.data.combos=[]);let d=c.data.combos.findIndex(b=>b.id===a);return -1===d?null:(c.data.combos[d]={...c.data.combos[d],...b,updatedAt:new Date().toISOString()},await z(c),c.data.combos[d])}async function ad(a){let b=await A();if(!b.data.combos)return!1;let c=b.data.combos.findIndex(b=>b.id===a);return -1!==c&&(b.data.combos.splice(c,1),await z(b),!0)}async function ae(a={}){let b=(await A()).data.apiKeys||[];return void 0!==a.userId&&(b=b.filter(b=>b.userId===a.userId)),a.includeUnassigned||a.forCurrentUser&&(b=b.filter(b=>b.userId===a.forCurrentUser)),b}async function af(a){return(await A()).data.apiKeys.find(b=>b.id===a)||null}async function ag(a){return(await A()).data.apiKeys.find(b=>b.key===a)||null}async function ah(a,b){let c=await A(),d=c.data.apiKeys.find(b=>b.id===a);return d?(d.userId=b,d.assignedAt=new Date().toISOString(),await z(c),d):null}async function ai(a){let b=await A(),c=b.data.apiKeys.find(b=>b.id===a);return!!c&&(c.userId=null,c.assignedAt=null,await z(b),!0)}async function aj(){return((await A()).data.users||[]).map(a=>({...a,passwordHash:void 0}))}async function ak(a){let b=((await A()).data.users||[]).find(b=>b.id===a);return b?{...b,passwordHash:void 0}:null}async function al(a){return((await A()).data.users||[]).find(b=>b.username===a)||null}async function am({username:a,passwordHash:b,role:c="sub_user",permissions:d=[],displayName:e="",allowedProviders:g,showQuotaTracker:h=!0}){let i=await A();if(i.data.users||(i.data.users=[]),i.data.users.some(b=>b.username===a))throw Error("Username already exists");let j=new Date().toISOString(),k={id:(0,f.A)(),username:a,passwordHash:b,role:c,permissions:d,displayName:e||a,showQuotaTracker:h,createdAt:j,updatedAt:j};return void 0!==g&&(k.allowedProviders=g),i.data.users.push(k),await z(i),{...k,passwordHash:void 0}}async function an(a,b){let c=await A();if(!c.data.users)return null;let d=c.data.users.findIndex(b=>b.id===a);if(-1===d)return null;let{passwordHash:e,...f}=b;return c.data.users[d]={...c.data.users[d],...f,updatedAt:new Date().toISOString()},e&&(c.data.users[d].passwordHash=e),await z(c),{...c.data.users[d],passwordHash:void 0}}async function ao(a){let b=await A();if(!b.data.users)return!1;let c=b.data.users.findIndex(b=>b.id===a);if(-1===c)return!1;for(let d of(b.data.users.splice(c,1),b.data.apiKeys||[]))d.userId===a&&(d.userId=null,d.assignedAt=null);return await z(b),!0}async function ap(a,b){if(!b)throw Error("machineId is required");let d=await A(),e=new Date().toISOString(),{generateApiKeyWithMachine:g}=await c.e(6844).then(c.bind(c,86844)),h=g(b),i={id:(0,f.A)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:e};return d.data.apiKeys.push(i),await z(d),i}async function aq(a,b){let c=await A(),d=c.data.apiKeys.findIndex(b=>b.id===a);return -1===d?null:(c.data.apiKeys[d]={...c.data.apiKeys[d],...b},await z(c),c.data.apiKeys[d])}async function ar(a){let b=(await A()).data.apiKeys.find(b=>b.key===a);return b&&!1!==b.isActive}async function as(){let a=await A(),b=["displayName","email","globalPriority","defaultModel","accessToken","refreshToken","expiresAt","tokenType","scope","projectId","apiKey","testStatus","lastTested","lastError","lastErrorAt","rateLimitedUntil","expiresIn","consecutiveUseCount"],c=0;for(let d of a.data.providerConnections){for(let a of b)(null===d[a]||void 0===d[a])&&(delete d[a],c++);d.providerSpecificData&&0===Object.keys(d.providerSpecificData).length&&(delete d.providerSpecificData,c++)}return c>0&&await z(a),c}async function at(){return(await A()).data.settings||{cloudEnabled:!1}}async function au(a){let b=await A();return b.data.settings={...b.data.settings,...a},await z(b),b.data.settings}async function av(){return(await A()).data||r()}async function aw(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let{data:b}=s({...r(),...a,settings:{...r().settings,...a.settings&&"object"==typeof a.settings&&!Array.isArray(a.settings)?a.settings:{}}}),c=await A();return c.data=b,await z(c),c.data}async function ax(){let a=(await A()).data.pricing||{},{PROVIDER_PRICING:b}=await c.e(7341).then(c.bind(c,57341)),d={};for(let[c,e]of Object.entries(b))if(d[c]={...e},a[c])for(let[b,e]of Object.entries(a[c]))d[c][b]=d[c][b]?{...d[c][b],...e}:e;for(let[b,c]of Object.entries(a))if(d[b])for(let[a,e]of Object.entries(c))d[b][a]||(d[b][a]=e);else d[b]={...c};return d}async function ay(a,b){if(!b)return null;let d=(await A()).data.pricing||{};if(a&&d[a]?.[b])return d[a][b];if(!n&&p&&j().existsSync(p))try{let a=JSON.parse(j().readFileSync(p,"utf-8")),c=Array.isArray(a?.data)?a.data:[],d=new Set([b,b.includes("/")?b.split("/").pop():b].filter(Boolean)),e=c.find(a=>{let b=String(a?.id||""),c=String(a?.canonical_slug||"");return[...d].some(a=>b===a||c===a||b.endsWith(`/${a}`)||c.endsWith(`/${a}`))});if(e?.pricing){let a=Number(e.pricing.prompt),b=Number(e.pricing.completion),c=Number(e.pricing.input_cache_read),d=Number(e.pricing.internal_reasoning),f=Number(e.pricing.input_cache_write);if(!Number.isNaN(a)&&!Number.isNaN(b))return{input:1e6*a,output:1e6*b,cached:Number.isNaN(c)?1e6*a:1e6*c,reasoning:Number.isNaN(d)?1e6*b:1e6*d,cache_creation:Number.isNaN(f)?1e6*a:1e6*f}}}catch{}let{getPricingForModel:e}=await c.e(7341).then(c.bind(c,57341));return e(a,b)}async function az(a){let b=await A();for(let[c,d]of(b.data.pricing||(b.data.pricing={}),Object.entries(a)))for(let[a,e]of(b.data.pricing[c]||(b.data.pricing[c]={}),Object.entries(d)))b.data.pricing[c][a]=e;return await z(b),b.data.pricing}async function aA(a,b){let c=await A();return c.data.pricing||(c.data.pricing={}),b?c.data.pricing[a]&&(delete c.data.pricing[a][b],0===Object.keys(c.data.pricing[a]).length&&delete c.data.pricing[a]):delete c.data.pricing[a],await z(c),c.data.pricing}async function aB(){let a=await A();return a.data.pricing={},await z(a),a.data.pricing}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/qn5ddCosq_qTH6CJRFJIB/_buildManifest.js","static/qn5ddCosq_qTH6CJRFJIB/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-d1740476c6ab968a.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-3fb4e6ee851037bb.js","static/chunks/main-app-92b26c94bc214d97.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/V2uXdl1SgLstSOcrQU5I9/_buildManifest.js","static/V2uXdl1SgLstSOcrQU5I9/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-d1740476c6ab968a.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-3fb4e6ee851037bb.js","static/chunks/main-app-92b26c94bc214d97.js"],rootMainFilesTree:{},pages:{"/_app":[]}};