n9router 0.3.93 → 0.3.94

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 (259) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  4. package/.next/standalone/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  5. package/.next/standalone/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  15. package/.next/standalone/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  17. package/.next/standalone/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  18. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  19. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  23. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  24. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  25. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  26. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  27. package/.next/standalone/.next/server/app/_not-found.rsc +10 -10
  28. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +10 -10
  29. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
  30. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +5 -5
  31. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  32. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  33. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  34. package/.next/standalone/.next/server/app/api/internal/request-detail/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/internal/usage/route.js.nft.json +1 -1
  36. package/.next/standalone/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  40. package/.next/standalone/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  42. package/.next/standalone/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  43. package/.next/standalone/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
  44. package/.next/standalone/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
  46. package/.next/standalone/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
  47. package/.next/standalone/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  48. package/.next/standalone/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  49. package/.next/standalone/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  50. package/.next/standalone/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  52. package/.next/standalone/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/callback.html +1 -1
  55. package/.next/standalone/.next/server/app/callback.rsc +12 -12
  56. package/.next/standalone/.next/server/app/callback.segments/_full.segment.rsc +12 -12
  57. package/.next/standalone/.next/server/app/callback.segments/_head.segment.rsc +4 -4
  58. package/.next/standalone/.next/server/app/callback.segments/_index.segment.rsc +5 -5
  59. package/.next/standalone/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
  60. package/.next/standalone/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  61. package/.next/standalone/.next/server/app/callback.segments/callback.segment.rsc +3 -3
  62. package/.next/standalone/.next/server/app/dashboard/basic-chat.html +1 -1
  63. package/.next/standalone/.next/server/app/dashboard/basic-chat.rsc +12 -12
  64. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +3 -3
  65. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +3 -3
  66. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  67. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  68. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +12 -12
  69. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +4 -4
  70. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +5 -5
  71. package/.next/standalone/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  72. package/.next/standalone/.next/server/app/dashboard/cli-tools.html +1 -1
  73. package/.next/standalone/.next/server/app/dashboard/cli-tools.rsc +12 -12
  74. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +3 -3
  75. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +3 -3
  76. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  77. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  78. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +12 -12
  79. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +4 -4
  80. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -5
  81. package/.next/standalone/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  82. package/.next/standalone/.next/server/app/dashboard/combos.html +1 -1
  83. package/.next/standalone/.next/server/app/dashboard/combos.rsc +13 -13
  84. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +4 -4
  85. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +3 -3
  86. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  87. package/.next/standalone/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  88. package/.next/standalone/.next/server/app/dashboard/combos.segments/_full.segment.rsc +13 -13
  89. package/.next/standalone/.next/server/app/dashboard/combos.segments/_head.segment.rsc +4 -4
  90. package/.next/standalone/.next/server/app/dashboard/combos.segments/_index.segment.rsc +5 -5
  91. package/.next/standalone/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  92. package/.next/standalone/.next/server/app/dashboard/endpoint.html +1 -1
  93. package/.next/standalone/.next/server/app/dashboard/endpoint.rsc +12 -12
  94. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +3 -3
  95. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +3 -3
  96. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  97. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  98. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +12 -12
  99. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +4 -4
  100. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -5
  101. package/.next/standalone/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  102. package/.next/standalone/.next/server/app/dashboard/mitm.html +1 -1
  103. package/.next/standalone/.next/server/app/dashboard/mitm.rsc +12 -12
  104. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +3 -3
  105. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +3 -3
  106. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  107. package/.next/standalone/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  108. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +12 -12
  109. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +4 -4
  110. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +5 -5
  111. package/.next/standalone/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  112. package/.next/standalone/.next/server/app/dashboard/profile.html +1 -1
  113. package/.next/standalone/.next/server/app/dashboard/profile.rsc +13 -13
  114. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +4 -4
  115. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +3 -3
  116. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  117. package/.next/standalone/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  118. package/.next/standalone/.next/server/app/dashboard/profile.segments/_full.segment.rsc +13 -13
  119. package/.next/standalone/.next/server/app/dashboard/profile.segments/_head.segment.rsc +4 -4
  120. package/.next/standalone/.next/server/app/dashboard/profile.segments/_index.segment.rsc +5 -5
  121. package/.next/standalone/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  122. package/.next/standalone/.next/server/app/dashboard/providers/new.html +1 -1
  123. package/.next/standalone/.next/server/app/dashboard/providers/new.rsc +13 -13
  124. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +4 -4
  125. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +3 -3
  126. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  127. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  128. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  129. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +13 -13
  130. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +4 -4
  131. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -5
  132. package/.next/standalone/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  133. package/.next/standalone/.next/server/app/dashboard/providers.html +1 -1
  134. package/.next/standalone/.next/server/app/dashboard/providers.rsc +13 -13
  135. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +4 -4
  136. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +3 -3
  137. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  138. package/.next/standalone/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  139. package/.next/standalone/.next/server/app/dashboard/providers.segments/_full.segment.rsc +13 -13
  140. package/.next/standalone/.next/server/app/dashboard/providers.segments/_head.segment.rsc +4 -4
  141. package/.next/standalone/.next/server/app/dashboard/providers.segments/_index.segment.rsc +5 -5
  142. package/.next/standalone/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  143. package/.next/standalone/.next/server/app/dashboard/proxy-pools.html +1 -1
  144. package/.next/standalone/.next/server/app/dashboard/proxy-pools.rsc +13 -13
  145. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +4 -4
  146. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +3 -3
  147. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  148. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  149. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +13 -13
  150. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +4 -4
  151. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -5
  152. package/.next/standalone/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  153. package/.next/standalone/.next/server/app/dashboard/quota.html +2 -2
  154. package/.next/standalone/.next/server/app/dashboard/quota.rsc +13 -13
  155. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +4 -4
  156. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +3 -3
  157. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  158. package/.next/standalone/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  159. package/.next/standalone/.next/server/app/dashboard/quota.segments/_full.segment.rsc +13 -13
  160. package/.next/standalone/.next/server/app/dashboard/quota.segments/_head.segment.rsc +4 -4
  161. package/.next/standalone/.next/server/app/dashboard/quota.segments/_index.segment.rsc +5 -5
  162. package/.next/standalone/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  163. package/.next/standalone/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  164. package/.next/standalone/.next/server/app/dashboard/settings/pricing.html +1 -1
  165. package/.next/standalone/.next/server/app/dashboard/settings/pricing.rsc +12 -12
  166. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +12 -12
  167. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +4 -4
  168. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -5
  169. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  170. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
  171. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +3 -3
  172. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +3 -3
  173. package/.next/standalone/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +3 -3
  174. package/.next/standalone/.next/server/app/dashboard/translator.html +1 -1
  175. package/.next/standalone/.next/server/app/dashboard/translator.rsc +13 -13
  176. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +4 -4
  177. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +3 -3
  178. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  179. package/.next/standalone/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  180. package/.next/standalone/.next/server/app/dashboard/translator.segments/_full.segment.rsc +13 -13
  181. package/.next/standalone/.next/server/app/dashboard/translator.segments/_head.segment.rsc +4 -4
  182. package/.next/standalone/.next/server/app/dashboard/translator.segments/_index.segment.rsc +5 -5
  183. package/.next/standalone/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  184. package/.next/standalone/.next/server/app/dashboard/usage.html +1 -1
  185. package/.next/standalone/.next/server/app/dashboard/usage.rsc +13 -13
  186. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +4 -4
  187. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +3 -3
  188. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  189. package/.next/standalone/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  190. package/.next/standalone/.next/server/app/dashboard/usage.segments/_full.segment.rsc +13 -13
  191. package/.next/standalone/.next/server/app/dashboard/usage.segments/_head.segment.rsc +4 -4
  192. package/.next/standalone/.next/server/app/dashboard/usage.segments/_index.segment.rsc +5 -5
  193. package/.next/standalone/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  194. package/.next/standalone/.next/server/app/dashboard.html +1 -1
  195. package/.next/standalone/.next/server/app/dashboard.rsc +12 -12
  196. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +3 -3
  197. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +3 -3
  198. package/.next/standalone/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +4 -4
  199. package/.next/standalone/.next/server/app/dashboard.segments/_full.segment.rsc +12 -12
  200. package/.next/standalone/.next/server/app/dashboard.segments/_head.segment.rsc +4 -4
  201. package/.next/standalone/.next/server/app/dashboard.segments/_index.segment.rsc +5 -5
  202. package/.next/standalone/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  203. package/.next/standalone/.next/server/app/index.html +1 -1
  204. package/.next/standalone/.next/server/app/index.rsc +10 -10
  205. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  206. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +10 -10
  207. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +4 -4
  208. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +5 -5
  209. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  210. package/.next/standalone/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  211. package/.next/standalone/.next/server/app/landing.html +1 -1
  212. package/.next/standalone/.next/server/app/landing.rsc +12 -12
  213. package/.next/standalone/.next/server/app/landing.segments/_full.segment.rsc +12 -12
  214. package/.next/standalone/.next/server/app/landing.segments/_head.segment.rsc +4 -4
  215. package/.next/standalone/.next/server/app/landing.segments/_index.segment.rsc +5 -5
  216. package/.next/standalone/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
  217. package/.next/standalone/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
  218. package/.next/standalone/.next/server/app/landing.segments/landing.segment.rsc +3 -3
  219. package/.next/standalone/.next/server/app/login/page_client-reference-manifest.js +1 -1
  220. package/.next/standalone/.next/server/app/login.html +1 -1
  221. package/.next/standalone/.next/server/app/login.rsc +12 -12
  222. package/.next/standalone/.next/server/app/login.segments/_full.segment.rsc +12 -12
  223. package/.next/standalone/.next/server/app/login.segments/_head.segment.rsc +4 -4
  224. package/.next/standalone/.next/server/app/login.segments/_index.segment.rsc +5 -5
  225. package/.next/standalone/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  226. package/.next/standalone/.next/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  227. package/.next/standalone/.next/server/app/login.segments/login.segment.rsc +3 -3
  228. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  229. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.yvcis._.js +1 -1
  230. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0148t9m._.js +1 -1
  231. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0b802lh._.js +1 -1
  232. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kpc-o6._.js +1 -1
  233. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lc~.sk._.js +1 -1
  234. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0lp_pm5._.js +1 -1
  235. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0pwrfp1._.js +1 -1
  236. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0uw3x8s._.js +1 -1
  237. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0y.reft._.js +1 -1
  238. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0y5ae.7._.js +1 -1
  239. package/.next/standalone/.next/server/chunks/_0__-aqg._.js +1 -1
  240. package/.next/standalone/.next/server/chunks/_0_ovl1h._.js +1 -1
  241. package/.next/standalone/.next/server/chunks/ssr/src_0_xhepz._.js +1 -1
  242. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  243. package/.next/standalone/.next/server/pages/404.html +1 -1
  244. package/.next/standalone/.next/server/pages/500.html +1 -1
  245. package/.next/{static/chunks/0deg-_syv13xx.js → standalone/.next/static/chunks/02suuzz60dp3d.js} +1 -1
  246. package/.next/standalone/mitm/server.js +165 -111
  247. package/.next/standalone/mitm/tokenPool.js +61 -13
  248. package/.next/standalone/package-lock.json +2 -2
  249. package/.next/standalone/package.json +1 -1
  250. package/.next/standalone/src/mitm/server.js +165 -111
  251. package/.next/standalone/src/mitm/tokenPool.js +61 -13
  252. package/.next/{standalone/.next/static/chunks/0deg-_syv13xx.js → static/chunks/02suuzz60dp3d.js} +1 -1
  253. package/package.json +1 -1
  254. /package/.next/standalone/.next/static/{b_Drjo0YdAiFCInKT62q9 → SBId4_Ewcg0cJ2p2zlKeg}/_buildManifest.js +0 -0
  255. /package/.next/standalone/.next/static/{b_Drjo0YdAiFCInKT62q9 → SBId4_Ewcg0cJ2p2zlKeg}/_clientMiddlewareManifest.js +0 -0
  256. /package/.next/standalone/.next/static/{b_Drjo0YdAiFCInKT62q9 → SBId4_Ewcg0cJ2p2zlKeg}/_ssgManifest.js +0 -0
  257. /package/.next/static/{b_Drjo0YdAiFCInKT62q9 → SBId4_Ewcg0cJ2p2zlKeg}/_buildManifest.js +0 -0
  258. /package/.next/static/{b_Drjo0YdAiFCInKT62q9 → SBId4_Ewcg0cJ2p2zlKeg}/_clientMiddlewareManifest.js +0 -0
  259. /package/.next/static/{b_Drjo0YdAiFCInKT62q9 → SBId4_Ewcg0cJ2p2zlKeg}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[46786,(e,t,o)=>{t.exports=e.x("os",()=>require("os"))},18622,(e,t,o)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,o)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,o)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},70406,(e,t,o)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,o)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},27699,(e,t,o)=>{t.exports=e.x("events",()=>require("events"))},88077,e=>{"use strict";let t={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},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,deprecationNotice:"Google has tightened Gemini CLI abuse detection and restricted Pro models to paid accounts (Mar 25, 2026). Using this provider may violate ToS and risk account bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"}},o={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo · Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}}},i={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",deprecated:!0,deprecationNotice:"Antigravity has tightened abuse detection and restricted model access. Using this provider may violate ToS and risk account bans."},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"},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"}},a={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},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"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},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",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},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"},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"},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://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},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"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},n="openai-compatible-",r="anthropic-compatible-",s={...t,...o,...i,...a};function l(e){for(let t of Object.values(s))if(t.alias===e||t.id===e)return t;return null}Object.values(s).reduce((e,t)=>(e[t.alias]=t.id,e),{}),Object.values(s).reduce((e,t)=>(e[t.id]=t.alias,e),{}),e.s(["AI_PROVIDERS",0,s,"ANTHROPIC_COMPATIBLE_PREFIX",0,r,"APIKEY_PROVIDERS",0,a,"FREE_PROVIDERS",0,t,"FREE_TIER_PROVIDERS",0,o,"OAUTH_PROVIDERS",0,i,"OPENAI_COMPATIBLE_PREFIX",0,n,"getProviderAlias",0,function(e){let t=s[e];return t?.alias||e},"getProviderByAlias",0,l,"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(r)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(n)},"resolveProviderId",0,function(e){let t=l(e);return t?.id||e}])},12943,e=>{"use strict";e.s(["default",0,{name:"n9router",version:"0.3.93",description:"Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",keywords:["ai","llm","proxy","router","claude","openai","gemini","cursor"],homepage:"https://github.com/nightwalker89/n9router",repository:{type:"git",url:"https://github.com/nightwalker89/n9router.git"},config:{appName:"n9router"},license:"MIT",bin:{n9router:"./bin/n9router.js"},files:["bin/",".next/standalone/",".next/static/","public/"],scripts:{dev:"next dev --webpack --port 20128",build:"cross-env NODE_ENV=production next build",start:"cross-env NODE_ENV=production next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"NODE_ENV=production bun --bun next build --webpack","start:bun":"NODE_ENV=production bun ./.next/standalone/server.js","publish:npm":"./scripts/publish-npm.sh","publish:npm:dry":"./scripts/publish-npm.sh --dry-run"},dependencies:{"@monaco-editor/react":"^4.7.0","@xyflow/react":"^12.10.1",bcryptjs:"^3.0.3",confbox:"^0.2.4",express:"^5.2.1",fs:"^0.0.1-security","http-proxy-middleware":"^3.0.5",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","node-forge":"^1.3.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1",recharts:"^3.7.0",selfsigned:"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1",undici:"^7.19.2",uuid:"^13.0.0",zustand:"^5.0.10"},optionalDependencies:{"better-sqlite3":"^12.6.2"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","cross-env":"^10.1.0",eslint:"^9","eslint-config-next":"16.1.6",postcss:"^8.5.6",tailwindcss:"^4"}}])},53526,e=>{"use strict";var t=e.i(20491);Object.entries(e.i(88077).AI_PROVIDERS).filter(([,e])=>e.passthroughModels).map(([e])=>e);let o=Object.entries(t.PROVIDER_MODELS).flatMap(([e,t])=>t.map(t=>({provider:e,model:t.id,name:t.name})));e.s(["AI_MODELS",0,o])},55870,e=>{"use strict";var t=e.i(12943);e.i(88077),e.i(53526),t.default.version,e.s(["CONSOLE_LOG_CONFIG",0,{maxLines:200,pollIntervalMs:1e3}])},39838,e=>{"use strict";var t=e.i(27699),o=e.i(55870);let i=["log","info","warn","error","debug"];e.g._consoleLogBufferState||(e.g._consoleLogBufferState={logs:[],patched:!1,originals:{},emitter:new t.EventEmitter},e.g._consoleLogBufferState.emitter.setMaxListeners(50));let a=e.g._consoleLogBufferState;a.emitter||(a.emitter=new t.EventEmitter,a.emitter.setMaxListeners(50));let n=/\x1b\[[0-9;]*m/g;function r(e){return e.replace(n,"")}function s(e){if("string"==typeof e)return r(e);if(e instanceof Error)return r(e.stack||e.message||String(e));try{return r(JSON.stringify(e))}catch{return r(String(e))}}e.s(["clearConsoleLogs",0,function(){a.logs=[],a.emitter.emit("clear")},"getConsoleEmitter",0,function(){return a.emitter},"getConsoleLogs",0,function(){return a.logs},"initConsoleLogCapture",0,function(){if(!a.patched){for(let e of i)a.originals[e]=console[e],console[e]=(...t)=>{!function(e){a.logs.push(e);let t=o.CONSOLE_LOG_CONFIG.maxLines;a.logs.length>t&&(a.logs=a.logs.slice(-t)),a.emitter.emit("line",e)}(t.map(s).join(" ")),a.originals[e](...t)};a.patched=!0}}])},99280,e=>{"use strict";var t=e.i(47909),o=e.i(74017),i=e.i(96250),a=e.i(59756),n=e.i(61916),r=e.i(74677),s=e.i(69741),l=e.i(16795),c=e.i(87718),d=e.i(95169),p=e.i(47587),u=e.i(66012),m=e.i(70101),h=e.i(26937),g=e.i(10372),x=e.i(93695);e.i(20232);var f=e.i(220),b=e.i(39838);async function v(){let e=new TextEncoder,t=(0,b.getConsoleEmitter)(),o={closed:!1,send:null,keepalive:null};return new Response(new ReadableStream({start(i){let a=(0,b.getConsoleLogs)();a.length>0&&i.enqueue(e.encode(`data: ${JSON.stringify({type:"init",logs:a})}
1
+ module.exports=[46786,(e,t,o)=>{t.exports=e.x("os",()=>require("os"))},18622,(e,t,o)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,o)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,o)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},70406,(e,t,o)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,o)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},27699,(e,t,o)=>{t.exports=e.x("events",()=>require("events"))},88077,e=>{"use strict";let t={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},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,deprecationNotice:"Google has tightened Gemini CLI abuse detection and restricted Pro models to paid accounts (Mar 25, 2026). Using this provider may violate ToS and risk account bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"}},o={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo · Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}}},i={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",deprecated:!0,deprecationNotice:"Antigravity has tightened abuse detection and restricted model access. Using this provider may violate ToS and risk account bans."},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"},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"}},a={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},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"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},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",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},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"},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"},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://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},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"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},n="openai-compatible-",r="anthropic-compatible-",s={...t,...o,...i,...a};function l(e){for(let t of Object.values(s))if(t.alias===e||t.id===e)return t;return null}Object.values(s).reduce((e,t)=>(e[t.alias]=t.id,e),{}),Object.values(s).reduce((e,t)=>(e[t.id]=t.alias,e),{}),e.s(["AI_PROVIDERS",0,s,"ANTHROPIC_COMPATIBLE_PREFIX",0,r,"APIKEY_PROVIDERS",0,a,"FREE_PROVIDERS",0,t,"FREE_TIER_PROVIDERS",0,o,"OAUTH_PROVIDERS",0,i,"OPENAI_COMPATIBLE_PREFIX",0,n,"getProviderAlias",0,function(e){let t=s[e];return t?.alias||e},"getProviderByAlias",0,l,"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(r)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(n)},"resolveProviderId",0,function(e){let t=l(e);return t?.id||e}])},12943,e=>{"use strict";e.s(["default",0,{name:"n9router",version:"0.3.94",description:"Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",keywords:["ai","llm","proxy","router","claude","openai","gemini","cursor"],homepage:"https://github.com/nightwalker89/n9router",repository:{type:"git",url:"https://github.com/nightwalker89/n9router.git"},config:{appName:"n9router"},license:"MIT",bin:{n9router:"./bin/n9router.js"},files:["bin/",".next/standalone/",".next/static/","public/"],scripts:{dev:"next dev --webpack --port 20128",build:"cross-env NODE_ENV=production next build",start:"cross-env NODE_ENV=production next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"NODE_ENV=production bun --bun next build --webpack","start:bun":"NODE_ENV=production bun ./.next/standalone/server.js","publish:npm":"./scripts/publish-npm.sh","publish:npm:dry":"./scripts/publish-npm.sh --dry-run"},dependencies:{"@monaco-editor/react":"^4.7.0","@xyflow/react":"^12.10.1",bcryptjs:"^3.0.3",confbox:"^0.2.4",express:"^5.2.1",fs:"^0.0.1-security","http-proxy-middleware":"^3.0.5",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","node-forge":"^1.3.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1",recharts:"^3.7.0",selfsigned:"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1",undici:"^7.19.2",uuid:"^13.0.0",zustand:"^5.0.10"},optionalDependencies:{"better-sqlite3":"^12.6.2"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","cross-env":"^10.1.0",eslint:"^9","eslint-config-next":"16.1.6",postcss:"^8.5.6",tailwindcss:"^4"}}])},53526,e=>{"use strict";var t=e.i(20491);Object.entries(e.i(88077).AI_PROVIDERS).filter(([,e])=>e.passthroughModels).map(([e])=>e);let o=Object.entries(t.PROVIDER_MODELS).flatMap(([e,t])=>t.map(t=>({provider:e,model:t.id,name:t.name})));e.s(["AI_MODELS",0,o])},55870,e=>{"use strict";var t=e.i(12943);e.i(88077),e.i(53526),t.default.version,e.s(["CONSOLE_LOG_CONFIG",0,{maxLines:200,pollIntervalMs:1e3}])},39838,e=>{"use strict";var t=e.i(27699),o=e.i(55870);let i=["log","info","warn","error","debug"];e.g._consoleLogBufferState||(e.g._consoleLogBufferState={logs:[],patched:!1,originals:{},emitter:new t.EventEmitter},e.g._consoleLogBufferState.emitter.setMaxListeners(50));let a=e.g._consoleLogBufferState;a.emitter||(a.emitter=new t.EventEmitter,a.emitter.setMaxListeners(50));let n=/\x1b\[[0-9;]*m/g;function r(e){return e.replace(n,"")}function s(e){if("string"==typeof e)return r(e);if(e instanceof Error)return r(e.stack||e.message||String(e));try{return r(JSON.stringify(e))}catch{return r(String(e))}}e.s(["clearConsoleLogs",0,function(){a.logs=[],a.emitter.emit("clear")},"getConsoleEmitter",0,function(){return a.emitter},"getConsoleLogs",0,function(){return a.logs},"initConsoleLogCapture",0,function(){if(!a.patched){for(let e of i)a.originals[e]=console[e],console[e]=(...t)=>{!function(e){a.logs.push(e);let t=o.CONSOLE_LOG_CONFIG.maxLines;a.logs.length>t&&(a.logs=a.logs.slice(-t)),a.emitter.emit("line",e)}(t.map(s).join(" ")),a.originals[e](...t)};a.patched=!0}}])},99280,e=>{"use strict";var t=e.i(47909),o=e.i(74017),i=e.i(96250),a=e.i(59756),n=e.i(61916),r=e.i(74677),s=e.i(69741),l=e.i(16795),c=e.i(87718),d=e.i(95169),p=e.i(47587),u=e.i(66012),m=e.i(70101),h=e.i(26937),g=e.i(10372),x=e.i(93695);e.i(20232);var f=e.i(220),b=e.i(39838);async function v(){let e=new TextEncoder,t=(0,b.getConsoleEmitter)(),o={closed:!1,send:null,keepalive:null};return new Response(new ReadableStream({start(i){let a=(0,b.getConsoleLogs)();a.length>0&&i.enqueue(e.encode(`data: ${JSON.stringify({type:"init",logs:a})}
2
2
 
3
3
  `)),o.send=t=>{if(!o.closed)try{i.enqueue(e.encode(`data: ${JSON.stringify({type:"line",line:t})}
4
4
 
@@ -1,3 +1,3 @@
1
- module.exports=[46786,(e,t,i)=>{t.exports=e.x("os",()=>require("os"))},24361,(e,t,i)=>{t.exports=e.x("util",()=>require("util"))},18622,(e,t,i)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,i)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,i)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,i)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},14747,(e,t,i)=>{t.exports=e.x("path",()=>require("path"))},70406,(e,t,i)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,i)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},22734,(e,t,i)=>{t.exports=e.x("fs",()=>require("fs"))},12714,(e,t,i)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,t,i)=>{t.exports=e.x("node:path",()=>require("node:path"))},57764,(e,t,i)=>{t.exports=e.x("node:url",()=>require("node:url"))},27699,(e,t,i)=>{t.exports=e.x("events",()=>require("events"))},2157,(e,t,i)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},60526,(e,t,i)=>{t.exports=e.x("node:os",()=>require("node:os"))},22593,67059,21023,e=>{"use strict";e.s(["Low",0,class{adapter;data;constructor(e,t){!function(e,t){if(void 0===e)throw Error("lowdb: missing adapter");if(void 0===t)throw Error("lowdb: missing default data")}(e,t),this.adapter=e,this.data=t}async read(){let e=await this.adapter.read();e&&(this.data=e)}async write(){this.data&&await this.adapter.write(this.data)}async update(e){e(this.data),await this.write()}}],22593),e.i(2157);var t=e.i(12714),i=e.i(50227),r=e.i(57764);async function a(e,t,i){for(let r=0;r<t;r++)try{return await e()}catch(e){if(r<t-1)await new Promise(e=>setTimeout(e,i));else throw e}}class o{#e;#t;#i=!1;#r=null;#a=null;#o=null;#n=null;#s(e){return this.#n=e,this.#o||=new Promise((e,t)=>{this.#a=[e,t]}),new Promise((e,t)=>{this.#o?.then(e).catch(t)})}async #l(e){this.#i=!0;try{await (0,t.writeFile)(this.#t,e,"utf-8"),await a(async()=>{await (0,t.rename)(this.#t,this.#e)},10,100),this.#r?.[0]()}catch(e){throw e instanceof Error&&this.#r?.[1](e),e}finally{if(this.#i=!1,this.#r=this.#a,this.#a=this.#o=null,null!==this.#n){let e=this.#n;this.#n=null,await this.write(e)}}}constructor(e){this.#e=e,this.#t=function(e){let t=e instanceof URL?(0,r.fileURLToPath)(e):e.toString();return(0,i.join)((0,i.dirname)(t),`.${(0,i.basename)(t)}.tmp`)}(e)}async write(e){return this.#i?this.#s(e):this.#l(e)}}class n{#e;#c;constructor(e){this.#e=e,this.#c=new o(e)}async read(){let e;try{e=await (0,t.readFile)(this.#e,"utf-8")}catch(e){if("ENOENT"===e.code)return null;throw e}return e}write(e){return this.#c.write(e)}}class s{#d;#p;#u;constructor(e,{parse:t,stringify:i}){this.#d=new n(e),this.#p=t,this.#u=i}async read(){let e=await this.#d.read();return null===e?null:this.#p(e)}write(e){return this.#d.write(this.#u(e))}}e.s(["JSONFile",0,class extends s{constructor(e){super(e,{parse:JSON.parse,stringify:e=>JSON.stringify(e,null,2)})}}],67059),e.s([],21023)},66680,(e,t,i)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},88947,(e,t,i)=>{t.exports=e.x("stream",()=>require("stream"))},12249,(e,t,i)=>{t.exports=e.x("constants",()=>require("constants"))},49719,(e,t,i)=>{t.exports=e.x("assert",()=>require("assert"))},69789,e=>{"use strict";e.i(26753),e.s([])},88077,e=>{"use strict";let t={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},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,deprecationNotice:"Google has tightened Gemini CLI abuse detection and restricted Pro models to paid accounts (Mar 25, 2026). Using this provider may violate ToS and risk account bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"}},i={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo · Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}}},r={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",deprecated:!0,deprecationNotice:"Antigravity has tightened abuse detection and restricted model access. Using this provider may violate ToS and risk account bans."},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"},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"}},a={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},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"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},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",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},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"},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"},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://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},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"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},o="openai-compatible-",n="anthropic-compatible-",s={...t,...i,...r,...a};function l(e){for(let t of Object.values(s))if(t.alias===e||t.id===e)return t;return null}Object.values(s).reduce((e,t)=>(e[t.alias]=t.id,e),{}),Object.values(s).reduce((e,t)=>(e[t.id]=t.alias,e),{}),e.s(["AI_PROVIDERS",0,s,"ANTHROPIC_COMPATIBLE_PREFIX",0,n,"APIKEY_PROVIDERS",0,a,"FREE_PROVIDERS",0,t,"FREE_TIER_PROVIDERS",0,i,"OAUTH_PROVIDERS",0,r,"OPENAI_COMPATIBLE_PREFIX",0,o,"getProviderAlias",0,function(e){let t=s[e];return t?.alias||e},"getProviderByAlias",0,l,"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(n)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(o)},"resolveProviderId",0,function(e){let t=l(e);return t?.id||e}])},12943,e=>{"use strict";e.s(["default",0,{name:"n9router",version:"0.3.93",description:"Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",keywords:["ai","llm","proxy","router","claude","openai","gemini","cursor"],homepage:"https://github.com/nightwalker89/n9router",repository:{type:"git",url:"https://github.com/nightwalker89/n9router.git"},config:{appName:"n9router"},license:"MIT",bin:{n9router:"./bin/n9router.js"},files:["bin/",".next/standalone/",".next/static/","public/"],scripts:{dev:"next dev --webpack --port 20128",build:"cross-env NODE_ENV=production next build",start:"cross-env NODE_ENV=production next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"NODE_ENV=production bun --bun next build --webpack","start:bun":"NODE_ENV=production bun ./.next/standalone/server.js","publish:npm":"./scripts/publish-npm.sh","publish:npm:dry":"./scripts/publish-npm.sh --dry-run"},dependencies:{"@monaco-editor/react":"^4.7.0","@xyflow/react":"^12.10.1",bcryptjs:"^3.0.3",confbox:"^0.2.4",express:"^5.2.1",fs:"^0.0.1-security","http-proxy-middleware":"^3.0.5",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","node-forge":"^1.3.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1",recharts:"^3.7.0",selfsigned:"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1",undici:"^7.19.2",uuid:"^13.0.0",zustand:"^5.0.10"},optionalDependencies:{"better-sqlite3":"^12.6.2"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","cross-env":"^10.1.0",eslint:"^9","eslint-config-next":"16.1.6",postcss:"^8.5.6",tailwindcss:"^4"}}])},53526,e=>{"use strict";var t=e.i(20491);Object.entries(e.i(88077).AI_PROVIDERS).filter(([,e])=>e.passthroughModels).map(([e])=>e);let i=Object.entries(t.PROVIDER_MODELS).flatMap(([e,t])=>t.map(t=>({provider:e,model:t.id,name:t.name})));e.s(["AI_MODELS",0,i])},55870,e=>{"use strict";var t=e.i(12943);e.i(88077),e.i(53526),t.default.version,e.s(["CONSOLE_LOG_CONFIG",0,{maxLines:200,pollIntervalMs:1e3}])},37828,e=>{"use strict";var t=e.i(47909),i=e.i(74017),r=e.i(96250),a=e.i(59756),o=e.i(61916),n=e.i(74677),s=e.i(69741),l=e.i(16795),c=e.i(87718),d=e.i(95169),p=e.i(47587),u=e.i(66012),m=e.i(70101),h=e.i(26937),x=e.i(10372),w=e.i(93695);e.i(20232);var f=e.i(220),g=e.i(89171);e.i(69789);var b=e.i(26753);e.i(55870);var v=e.i(53526);async function y(){try{let e=await (0,b.getModelAliases)(),t=v.AI_MODELS.map(t=>{let i=`${t.provider}/${t.model}`;return{...t,fullModel:i,alias:e[i]||t.model}});return g.NextResponse.json({models:t})}catch(e){return console.log("Error fetching models:",e),g.NextResponse.json({error:"Failed to fetch models"},{status:500})}}async function I(e){try{let{model:t,alias:i}=await e.json();if(!t||!i)return g.NextResponse.json({error:"Model and alias required"},{status:400});let r=await (0,b.getModelAliases)();if(Object.entries(r).find(([e,r])=>r===i&&e!==t))return g.NextResponse.json({error:"Alias already in use"},{status:400});return await (0,b.setModelAlias)(t,i),g.NextResponse.json({success:!0,model:t,alias:i})}catch(e){return console.log("Error updating alias:",e),g.NextResponse.json({error:"Failed to update alias"},{status:500})}}e.s(["GET",0,y,"PUT",0,I],86625);var A=e.i(86625);let E=new t.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/models/route",pathname:"/api/models",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/models/route.js",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:R,workUnitAsyncStorage:C,serverHooks:F}=E;async function _(e,t,r){r.requestMeta&&(0,a.setRequestMeta)(e,r.requestMeta),E.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/models/route";g=g.replace(/\/index$/,"")||"/";let b=await E.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:v,params:y,nextConfig:I,parsedUrl:A,isDraftMode:R,prerenderManifest:C,routerServerContext:F,isOnDemandRevalidate:_,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:k,serverActionsManifest:N}=b,D=(0,s.normalizeAppPath)(g),q=!!(C.dynamicRoutes[D]||C.routes[P]),S=async()=>((null==F?void 0:F.render404)?await F.render404(e,t,A,!1):t.end("This page could not be found"),null);if(q&&!R){let e=!!C.routes[P],t=C.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await S();throw new w.NoFallbackError}}let M=null;!q||E.isDev||R||(M="/index"===(M=P)?"/":M);let j=!0===E.isDev||!q,T=q&&!j;N&&k&&(0,n.setManifestsSingleton)({page:g,clientReferenceManifest:k,serverActionsManifest:N});let L=e.method||"GET",U=(0,o.getTracer)(),B=U.getActiveScopeSpan(),G=!!(null==F?void 0:F.isWrappedByNextServer),H=!!(0,a.getRequestMeta)(e,"minimalMode"),V=(0,a.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,I,C,H);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let K={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:j,incrementalCache:V,cacheLifeProfiles:I.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,i,r,a)=>E.onRequestError(e,t,r,a,F)},sharedContext:{buildId:v}},$=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),W=c.NextRequestAdapter.fromNodeNextRequest($,(0,c.signalFromNodeResponse)(t));try{let a,n=async e=>E.handle(W,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let i=U.getRootSpanAttributes();if(!i)return;if(i.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${i.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=i.get("next.route");if(r){let t=`${L} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",r),a.updateName(t))}else e.updateName(`${L} ${g}`)}),s=async a=>{var o,s;let l=async({previousCacheEntry:i})=>{try{if(!H&&_&&O&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await n(a);e.fetchMetrics=K.renderOpts.fetchMetrics;let s=K.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let l=K.renderOpts.collectedTags;if(!q)return await (0,u.sendResponse)($,X,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[x.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let i=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,r=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:i,expire:r}}}}catch(t){throw(null==i?void 0:i.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:T,isOnDemandRevalidate:_})},!1,F),t}},c=await E.handleResponse({req:e,nextConfig:I,cacheKey:M,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:H});if(!q)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(s=c.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});H||t.setHeader("x-nextjs-cache",_?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return H&&q||d.delete(x.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,u.sendResponse)($,X,new Response(c.value.body,{headers:d,status:c.value.status||200})),null};G&&B?await s(B):(a=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(d.BaseServerSpan.handleRequest,{spanName:`${L} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},s),void 0,!G))}catch(t){if(t instanceof w.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:T,isOnDemandRevalidate:_})},!1,F),q)throw t;return await (0,u.sendResponse)($,X,new Response(null,{status:500})),null}}e.s(["handler",0,_,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:C})},"routeModule",0,E,"serverHooks",0,F,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,C],37828)},36498,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0kaoh2i._.js"].map(t=>e.l(t))).then(()=>t(21297)))},66510,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_0oa_fz9.js"].map(t=>e.l(t))).then(()=>t(28628)))}];
1
+ module.exports=[46786,(e,t,i)=>{t.exports=e.x("os",()=>require("os"))},24361,(e,t,i)=>{t.exports=e.x("util",()=>require("util"))},18622,(e,t,i)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(e,t,i)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(e,t,i)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(e,t,i)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},14747,(e,t,i)=>{t.exports=e.x("path",()=>require("path"))},70406,(e,t,i)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,i)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},22734,(e,t,i)=>{t.exports=e.x("fs",()=>require("fs"))},12714,(e,t,i)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},50227,(e,t,i)=>{t.exports=e.x("node:path",()=>require("node:path"))},57764,(e,t,i)=>{t.exports=e.x("node:url",()=>require("node:url"))},27699,(e,t,i)=>{t.exports=e.x("events",()=>require("events"))},2157,(e,t,i)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},60526,(e,t,i)=>{t.exports=e.x("node:os",()=>require("node:os"))},22593,67059,21023,e=>{"use strict";e.s(["Low",0,class{adapter;data;constructor(e,t){!function(e,t){if(void 0===e)throw Error("lowdb: missing adapter");if(void 0===t)throw Error("lowdb: missing default data")}(e,t),this.adapter=e,this.data=t}async read(){let e=await this.adapter.read();e&&(this.data=e)}async write(){this.data&&await this.adapter.write(this.data)}async update(e){e(this.data),await this.write()}}],22593),e.i(2157);var t=e.i(12714),i=e.i(50227),r=e.i(57764);async function a(e,t,i){for(let r=0;r<t;r++)try{return await e()}catch(e){if(r<t-1)await new Promise(e=>setTimeout(e,i));else throw e}}class o{#e;#t;#i=!1;#r=null;#a=null;#o=null;#n=null;#s(e){return this.#n=e,this.#o||=new Promise((e,t)=>{this.#a=[e,t]}),new Promise((e,t)=>{this.#o?.then(e).catch(t)})}async #l(e){this.#i=!0;try{await (0,t.writeFile)(this.#t,e,"utf-8"),await a(async()=>{await (0,t.rename)(this.#t,this.#e)},10,100),this.#r?.[0]()}catch(e){throw e instanceof Error&&this.#r?.[1](e),e}finally{if(this.#i=!1,this.#r=this.#a,this.#a=this.#o=null,null!==this.#n){let e=this.#n;this.#n=null,await this.write(e)}}}constructor(e){this.#e=e,this.#t=function(e){let t=e instanceof URL?(0,r.fileURLToPath)(e):e.toString();return(0,i.join)((0,i.dirname)(t),`.${(0,i.basename)(t)}.tmp`)}(e)}async write(e){return this.#i?this.#s(e):this.#l(e)}}class n{#e;#c;constructor(e){this.#e=e,this.#c=new o(e)}async read(){let e;try{e=await (0,t.readFile)(this.#e,"utf-8")}catch(e){if("ENOENT"===e.code)return null;throw e}return e}write(e){return this.#c.write(e)}}class s{#d;#p;#u;constructor(e,{parse:t,stringify:i}){this.#d=new n(e),this.#p=t,this.#u=i}async read(){let e=await this.#d.read();return null===e?null:this.#p(e)}write(e){return this.#d.write(this.#u(e))}}e.s(["JSONFile",0,class extends s{constructor(e){super(e,{parse:JSON.parse,stringify:e=>JSON.stringify(e,null,2)})}}],67059),e.s([],21023)},66680,(e,t,i)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},88947,(e,t,i)=>{t.exports=e.x("stream",()=>require("stream"))},12249,(e,t,i)=>{t.exports=e.x("constants",()=>require("constants"))},49719,(e,t,i)=>{t.exports=e.x("assert",()=>require("assert"))},69789,e=>{"use strict";e.i(26753),e.s([])},88077,e=>{"use strict";let t={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},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,deprecationNotice:"Google has tightened Gemini CLI abuse detection and restricted Pro models to paid accounts (Mar 25, 2026). Using this provider may violate ToS and risk account bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"}},i={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo · Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}}},r={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",deprecated:!0,deprecationNotice:"Antigravity has tightened abuse detection and restricted model access. Using this provider may violate ToS and risk account bans."},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"},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"}},a={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},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"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},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",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},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"},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"},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://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},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"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},o="openai-compatible-",n="anthropic-compatible-",s={...t,...i,...r,...a};function l(e){for(let t of Object.values(s))if(t.alias===e||t.id===e)return t;return null}Object.values(s).reduce((e,t)=>(e[t.alias]=t.id,e),{}),Object.values(s).reduce((e,t)=>(e[t.id]=t.alias,e),{}),e.s(["AI_PROVIDERS",0,s,"ANTHROPIC_COMPATIBLE_PREFIX",0,n,"APIKEY_PROVIDERS",0,a,"FREE_PROVIDERS",0,t,"FREE_TIER_PROVIDERS",0,i,"OAUTH_PROVIDERS",0,r,"OPENAI_COMPATIBLE_PREFIX",0,o,"getProviderAlias",0,function(e){let t=s[e];return t?.alias||e},"getProviderByAlias",0,l,"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(n)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(o)},"resolveProviderId",0,function(e){let t=l(e);return t?.id||e}])},12943,e=>{"use strict";e.s(["default",0,{name:"n9router",version:"0.3.94",description:"Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",keywords:["ai","llm","proxy","router","claude","openai","gemini","cursor"],homepage:"https://github.com/nightwalker89/n9router",repository:{type:"git",url:"https://github.com/nightwalker89/n9router.git"},config:{appName:"n9router"},license:"MIT",bin:{n9router:"./bin/n9router.js"},files:["bin/",".next/standalone/",".next/static/","public/"],scripts:{dev:"next dev --webpack --port 20128",build:"cross-env NODE_ENV=production next build",start:"cross-env NODE_ENV=production next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"NODE_ENV=production bun --bun next build --webpack","start:bun":"NODE_ENV=production bun ./.next/standalone/server.js","publish:npm":"./scripts/publish-npm.sh","publish:npm:dry":"./scripts/publish-npm.sh --dry-run"},dependencies:{"@monaco-editor/react":"^4.7.0","@xyflow/react":"^12.10.1",bcryptjs:"^3.0.3",confbox:"^0.2.4",express:"^5.2.1",fs:"^0.0.1-security","http-proxy-middleware":"^3.0.5",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","node-forge":"^1.3.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1",recharts:"^3.7.0",selfsigned:"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1",undici:"^7.19.2",uuid:"^13.0.0",zustand:"^5.0.10"},optionalDependencies:{"better-sqlite3":"^12.6.2"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","cross-env":"^10.1.0",eslint:"^9","eslint-config-next":"16.1.6",postcss:"^8.5.6",tailwindcss:"^4"}}])},53526,e=>{"use strict";var t=e.i(20491);Object.entries(e.i(88077).AI_PROVIDERS).filter(([,e])=>e.passthroughModels).map(([e])=>e);let i=Object.entries(t.PROVIDER_MODELS).flatMap(([e,t])=>t.map(t=>({provider:e,model:t.id,name:t.name})));e.s(["AI_MODELS",0,i])},55870,e=>{"use strict";var t=e.i(12943);e.i(88077),e.i(53526),t.default.version,e.s(["CONSOLE_LOG_CONFIG",0,{maxLines:200,pollIntervalMs:1e3}])},37828,e=>{"use strict";var t=e.i(47909),i=e.i(74017),r=e.i(96250),a=e.i(59756),o=e.i(61916),n=e.i(74677),s=e.i(69741),l=e.i(16795),c=e.i(87718),d=e.i(95169),p=e.i(47587),u=e.i(66012),m=e.i(70101),h=e.i(26937),x=e.i(10372),w=e.i(93695);e.i(20232);var f=e.i(220),g=e.i(89171);e.i(69789);var b=e.i(26753);e.i(55870);var v=e.i(53526);async function y(){try{let e=await (0,b.getModelAliases)(),t=v.AI_MODELS.map(t=>{let i=`${t.provider}/${t.model}`;return{...t,fullModel:i,alias:e[i]||t.model}});return g.NextResponse.json({models:t})}catch(e){return console.log("Error fetching models:",e),g.NextResponse.json({error:"Failed to fetch models"},{status:500})}}async function I(e){try{let{model:t,alias:i}=await e.json();if(!t||!i)return g.NextResponse.json({error:"Model and alias required"},{status:400});let r=await (0,b.getModelAliases)();if(Object.entries(r).find(([e,r])=>r===i&&e!==t))return g.NextResponse.json({error:"Alias already in use"},{status:400});return await (0,b.setModelAlias)(t,i),g.NextResponse.json({success:!0,model:t,alias:i})}catch(e){return console.log("Error updating alias:",e),g.NextResponse.json({error:"Failed to update alias"},{status:500})}}e.s(["GET",0,y,"PUT",0,I],86625);var A=e.i(86625);let E=new t.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/models/route",pathname:"/api/models",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/models/route.js",nextConfigOutput:"standalone",userland:A,...{}}),{workAsyncStorage:R,workUnitAsyncStorage:C,serverHooks:F}=E;async function _(e,t,r){r.requestMeta&&(0,a.setRequestMeta)(e,r.requestMeta),E.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/models/route";g=g.replace(/\/index$/,"")||"/";let b=await E.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!b)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:v,params:y,nextConfig:I,parsedUrl:A,isDraftMode:R,prerenderManifest:C,routerServerContext:F,isOnDemandRevalidate:_,revalidateOnlyGenerated:O,resolvedPathname:P,clientReferenceManifest:k,serverActionsManifest:N}=b,D=(0,s.normalizeAppPath)(g),q=!!(C.dynamicRoutes[D]||C.routes[P]),S=async()=>((null==F?void 0:F.render404)?await F.render404(e,t,A,!1):t.end("This page could not be found"),null);if(q&&!R){let e=!!C.routes[P],t=C.dynamicRoutes[D];if(t&&!1===t.fallback&&!e){if(I.adapterPath)return await S();throw new w.NoFallbackError}}let M=null;!q||E.isDev||R||(M="/index"===(M=P)?"/":M);let j=!0===E.isDev||!q,T=q&&!j;N&&k&&(0,n.setManifestsSingleton)({page:g,clientReferenceManifest:k,serverActionsManifest:N});let L=e.method||"GET",U=(0,o.getTracer)(),B=U.getActiveScopeSpan(),G=!!(null==F?void 0:F.isWrappedByNextServer),H=!!(0,a.getRequestMeta)(e,"minimalMode"),V=(0,a.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,I,C,H);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let K={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!I.experimental.authInterrupts},cacheComponents:!!I.cacheComponents,supportsDynamicResponse:j,incrementalCache:V,cacheLifeProfiles:I.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,i,r,a)=>E.onRequestError(e,t,r,a,F)},sharedContext:{buildId:v}},$=new l.NodeNextRequest(e),X=new l.NodeNextResponse(t),W=c.NextRequestAdapter.fromNodeNextRequest($,(0,c.signalFromNodeResponse)(t));try{let a,n=async e=>E.handle(W,K).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let i=U.getRootSpanAttributes();if(!i)return;if(i.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${i.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let r=i.get("next.route");if(r){let t=`${L} ${r}`;e.setAttributes({"next.route":r,"http.route":r,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",r),a.updateName(t))}else e.updateName(`${L} ${g}`)}),s=async a=>{var o,s;let l=async({previousCacheEntry:i})=>{try{if(!H&&_&&O&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await n(a);e.fetchMetrics=K.renderOpts.fetchMetrics;let s=K.renderOpts.pendingWaitUntil;s&&r.waitUntil&&(r.waitUntil(s),s=void 0);let l=K.renderOpts.collectedTags;if(!q)return await (0,u.sendResponse)($,X,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(o.headers);l&&(t[x.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let i=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,r=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:f.CachedRouteKind.APP_ROUTE,status:o.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:i,expire:r}}}}catch(t){throw(null==i?void 0:i.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:T,isOnDemandRevalidate:_})},!1,F),t}},c=await E.handleResponse({req:e,nextConfig:I,cacheKey:M,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:_,revalidateOnlyGenerated:O,responseGenerator:l,waitUntil:r.waitUntil,isMinimalMode:H});if(!q)return null;if((null==c||null==(o=c.value)?void 0:o.kind)!==f.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==c||null==(s=c.value)?void 0:s.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});H||t.setHeader("x-nextjs-cache",_?"REVALIDATED":c.isMiss?"MISS":c.isStale?"STALE":"HIT"),R&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let d=(0,m.fromNodeOutgoingHttpHeaders)(c.value.headers);return H&&q||d.delete(x.NEXT_CACHE_TAGS_HEADER),!c.cacheControl||t.getHeader("Cache-Control")||d.get("Cache-Control")||d.set("Cache-Control",(0,h.getCacheControlHeader)(c.cacheControl)),await (0,u.sendResponse)($,X,new Response(c.value.body,{headers:d,status:c.value.status||200})),null};G&&B?await s(B):(a=U.getActiveScopeSpan(),await U.withPropagatedContext(e.headers,()=>U.trace(d.BaseServerSpan.handleRequest,{spanName:`${L} ${g}`,kind:o.SpanKind.SERVER,attributes:{"http.method":L,"http.target":e.url}},s),void 0,!G))}catch(t){if(t instanceof w.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:T,isOnDemandRevalidate:_})},!1,F),q)throw t;return await (0,u.sendResponse)($,X,new Response(null,{status:500})),null}}e.s(["handler",0,_,"patchFetch",0,function(){return(0,r.patchFetch)({workAsyncStorage:R,workUnitAsyncStorage:C})},"routeModule",0,E,"serverHooks",0,F,"workAsyncStorage",0,R,"workUnitAsyncStorage",0,C],37828)},36498,e=>{e.v(t=>Promise.all(["server/chunks/[root-of-the-server]__0kaoh2i._.js"].map(t=>e.l(t))).then(()=>t(21297)))},66510,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_0oa_fz9.js"].map(t=>e.l(t))).then(()=>t(28628)))}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0y5ae.7._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[88077,e=>{"use strict";let o={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},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,deprecationNotice:"Google has tightened Gemini CLI abuse detection and restricted Pro models to paid accounts (Mar 25, 2026). Using this provider may violate ToS and risk account bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"}},t={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo · Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}}},i={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",deprecated:!0,deprecationNotice:"Antigravity has tightened abuse detection and restricted model access. Using this provider may violate ToS and risk account bans."},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"},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"}},r={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},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"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},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",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},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"},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"},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://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},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"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},n="openai-compatible-",a="anthropic-compatible-",c={...o,...t,...i,...r};function l(e){for(let o of Object.values(c))if(o.alias===e||o.id===e)return o;return null}Object.values(c).reduce((e,o)=>(e[o.alias]=o.id,e),{}),Object.values(c).reduce((e,o)=>(e[o.id]=o.alias,e),{}),e.s(["AI_PROVIDERS",0,c,"ANTHROPIC_COMPATIBLE_PREFIX",0,a,"APIKEY_PROVIDERS",0,r,"FREE_PROVIDERS",0,o,"FREE_TIER_PROVIDERS",0,t,"OAUTH_PROVIDERS",0,i,"OPENAI_COMPATIBLE_PREFIX",0,n,"getProviderAlias",0,function(e){let o=c[e];return o?.alias||e},"getProviderByAlias",0,l,"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(a)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(n)},"resolveProviderId",0,function(e){let o=l(e);return o?.id||e}])},12943,e=>{"use strict";e.s(["default",0,{name:"n9router",version:"0.3.93",description:"Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",keywords:["ai","llm","proxy","router","claude","openai","gemini","cursor"],homepage:"https://github.com/nightwalker89/n9router",repository:{type:"git",url:"https://github.com/nightwalker89/n9router.git"},config:{appName:"n9router"},license:"MIT",bin:{n9router:"./bin/n9router.js"},files:["bin/",".next/standalone/",".next/static/","public/"],scripts:{dev:"next dev --webpack --port 20128",build:"cross-env NODE_ENV=production next build",start:"cross-env NODE_ENV=production next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"NODE_ENV=production bun --bun next build --webpack","start:bun":"NODE_ENV=production bun ./.next/standalone/server.js","publish:npm":"./scripts/publish-npm.sh","publish:npm:dry":"./scripts/publish-npm.sh --dry-run"},dependencies:{"@monaco-editor/react":"^4.7.0","@xyflow/react":"^12.10.1",bcryptjs:"^3.0.3",confbox:"^0.2.4",express:"^5.2.1",fs:"^0.0.1-security","http-proxy-middleware":"^3.0.5",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","node-forge":"^1.3.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1",recharts:"^3.7.0",selfsigned:"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1",undici:"^7.19.2",uuid:"^13.0.0",zustand:"^5.0.10"},optionalDependencies:{"better-sqlite3":"^12.6.2"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","cross-env":"^10.1.0",eslint:"^9","eslint-config-next":"16.1.6",postcss:"^8.5.6",tailwindcss:"^4"}}])},26406,e=>{"use strict";let o=e.i(12943).default.version||"0.0.0";e.s(["buildClineHeaders",0,function(e,t={}){let i,r=(i=function(e){if("string"!=typeof e)return"";let o=e.trim();return o?o.startsWith("workos:")?o:`workos:${o}`:""}(e))?`Bearer ${i}`:"",n={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`9Router/${o}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"9router","X-CLIENT-VERSION":o,"X-CORE-VERSION":o,"X-IS-MULTIROOT":"false",...t};return r&&(n.Authorization=r),n}])},1102,e=>{"use strict";e.i(69789);var o=e.i(26753);function t(e){return null==e?"":String(e).trim()}async function i(e={}){let r=t(e?.proxyPoolId),n="__none__"===r?"":r,a=function(e={}){let o=e?.connectionProxyEnabled===!0;return{connectionProxyEnabled:o,connectionProxyUrl:t(e?.connectionProxyUrl),connectionNoProxy:t(e?.connectionNoProxy)}}(e);if(n){let e=await (0,o.getProxyPoolById)(n),i=t(e?.proxyUrl),r=t(e?.noProxy);if(e&&!0===e.isActive&&i)return{source:"pool",proxyPoolId:n,proxyPool:e,connectionProxyEnabled:!0,connectionProxyUrl:i,connectionNoProxy:r,strictProxy:!0===e.strictProxy}}return a.connectionProxyEnabled&&a.connectionProxyUrl?{source:"legacy",proxyPoolId:n||null,proxyPool:null,...a}:{source:"none",proxyPoolId:n||null,proxyPool:null,...a}}e.s(["resolveConnectionProxyConfig",0,i])},9161,e=>{"use strict";var o=e.i(77090);let t=new Map,i=new Map,r=null;async function n(e,o){if(!e||!o)return null;let r=t.get(e);if(r&&Date.now()-r.fetchedAt<36e5)return r.projectId;if(i.has(e))return i.get(e).promise;let n=new AbortController,c=(async()=>{try{let i=await a(o,n.signal);if(i)return t.set(e,{projectId:i,fetchedAt:Date.now()}),i;return console.warn("[ProjectId] could not fetch projectId for connection",e.slice(0,8)),null}catch(e){return console.warn(`[ProjectId] Error fetching project ID: ${e.message}`),null}finally{i.delete(e)}})();return i.set(e,{promise:c,controller:n,startedAt:Date.now()}),c}async function a(e,t){let i=await fetch(o.CLOUD_CODE_API.loadCodeAssist,{method:"POST",headers:{...o.LOAD_CODE_ASSIST_HEADERS,Authorization:`Bearer ${e}`},body:JSON.stringify({metadata:o.LOAD_CODE_ASSIST_METADATA}),signal:t});if(!i.ok){let e=await i.text().catch(()=>"");throw Error(`loadCodeAssist failed: HTTP ${i.status} ${e.slice(0,200)}`)}let r=await i.json(),n=function(e){if(!e)return null;if("string"==typeof e.cloudaicompanionProject){let o=e.cloudaicompanionProject.trim();if(o)return o}if(e.cloudaicompanionProject&&"object"==typeof e.cloudaicompanionProject){let o=e.cloudaicompanionProject.id;if("string"==typeof o&&o.trim())return o.trim()}return null}(r);if(n)return n;let a="legacy-tier";if(Array.isArray(r.allowedTiers)){for(let e of r.allowedTiers)if(e&&"object"==typeof e&&!0===e.isDefault&&e.id&&"string"==typeof e.id&&e.id.trim()){a=e.id.trim();break}}return c(e,a,t)}async function c(e,t,i){console.log(`[ProjectId] Onboarding user with tier: ${t}`);let r={tierId:t,metadata:o.LOAD_CODE_ASSIST_METADATA};for(let t=1;t<=5&&!i?.aborted;t++){let n=new AbortController,a=setTimeout(()=>n.abort(),3e4),c=()=>n.abort();i?.addEventListener("abort",c);try{let i=await fetch(o.CLOUD_CODE_API.onboardUser,{method:"POST",headers:{...o.LOAD_CODE_ASSIST_HEADERS,Authorization:`Bearer ${e}`},body:JSON.stringify(r),signal:n.signal});if(clearTimeout(a),!i.ok){let e=await i.text().catch(()=>"");throw Error(`onboardUser HTTP ${i.status}: ${e.slice(0,200)}`)}let c=await i.json();if(!0===c.done){let e=function(e){if(!e?.response)return null;let o=e.response.cloudaicompanionProject;if("string"==typeof o){let e=o.trim();if(e)return e}if(o&&"object"==typeof o){let e=o.id;if("string"==typeof e&&e.trim())return e.trim()}return null}(c);if(e)return console.log(`[ProjectId] Successfully onboarded, project ID: ${e}`),e;throw Error("onboardUser done but no project_id in response")}console.log(`[ProjectId] Onboard attempt ${t}/5: not done yet, waiting...`),await new Promise(e=>setTimeout(e,2e3))}catch(e){if(clearTimeout(a),"AbortError"===e.name){if(console.warn(`[ProjectId] onboardUser attempt ${t} aborted (timeout or connection removed)`),i?.aborted)return null;continue}if(5===t)return console.warn(`[ProjectId] onboardUser failed after 5 attempts: ${e.message}`),null;console.warn(`[ProjectId] onboardUser attempt ${t} failed: ${e.message}, retrying...`),await new Promise(e=>setTimeout(e,2e3))}finally{clearTimeout(a),i?.removeEventListener("abort",c)}}return null}r=setInterval(()=>{try{let e=Date.now();for(let[o,i]of t)(!i||e-i.fetchedAt>=36e5)&&t.delete(o);for(let[o,t]of i){if(!t||"number"!=typeof t.startedAt){i.delete(o);continue}if(e-t.startedAt>12e4){try{t.controller.abort()}catch(e){}i.delete(o)}}}catch(e){console.warn("[ProjectId] cleanup sweep error:",e?.message??e)}},6e5),r?.unref?.(),e.s(["getProjectIdForConnection",0,n,"invalidateProjectId",0,function(e){t.delete(e)}])}];
1
+ module.exports=[88077,e=>{"use strict";let o={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},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,deprecationNotice:"Google has tightened Gemini CLI abuse detection and restricted Pro models to paid accounts (Mar 25, 2026). Using this provider may violate ToS and risk account bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"}},t={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo · Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}}},i={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",deprecated:!0,deprecationNotice:"Antigravity has tightened abuse detection and restricted model access. Using this provider may violate ToS and risk account bans."},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"},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"}},r={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},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"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},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",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},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"},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"},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://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},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"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},n="openai-compatible-",a="anthropic-compatible-",c={...o,...t,...i,...r};function l(e){for(let o of Object.values(c))if(o.alias===e||o.id===e)return o;return null}Object.values(c).reduce((e,o)=>(e[o.alias]=o.id,e),{}),Object.values(c).reduce((e,o)=>(e[o.id]=o.alias,e),{}),e.s(["AI_PROVIDERS",0,c,"ANTHROPIC_COMPATIBLE_PREFIX",0,a,"APIKEY_PROVIDERS",0,r,"FREE_PROVIDERS",0,o,"FREE_TIER_PROVIDERS",0,t,"OAUTH_PROVIDERS",0,i,"OPENAI_COMPATIBLE_PREFIX",0,n,"getProviderAlias",0,function(e){let o=c[e];return o?.alias||e},"getProviderByAlias",0,l,"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(a)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(n)},"resolveProviderId",0,function(e){let o=l(e);return o?.id||e}])},12943,e=>{"use strict";e.s(["default",0,{name:"n9router",version:"0.3.94",description:"Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",keywords:["ai","llm","proxy","router","claude","openai","gemini","cursor"],homepage:"https://github.com/nightwalker89/n9router",repository:{type:"git",url:"https://github.com/nightwalker89/n9router.git"},config:{appName:"n9router"},license:"MIT",bin:{n9router:"./bin/n9router.js"},files:["bin/",".next/standalone/",".next/static/","public/"],scripts:{dev:"next dev --webpack --port 20128",build:"cross-env NODE_ENV=production next build",start:"cross-env NODE_ENV=production next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"NODE_ENV=production bun --bun next build --webpack","start:bun":"NODE_ENV=production bun ./.next/standalone/server.js","publish:npm":"./scripts/publish-npm.sh","publish:npm:dry":"./scripts/publish-npm.sh --dry-run"},dependencies:{"@monaco-editor/react":"^4.7.0","@xyflow/react":"^12.10.1",bcryptjs:"^3.0.3",confbox:"^0.2.4",express:"^5.2.1",fs:"^0.0.1-security","http-proxy-middleware":"^3.0.5",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","node-forge":"^1.3.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1",recharts:"^3.7.0",selfsigned:"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1",undici:"^7.19.2",uuid:"^13.0.0",zustand:"^5.0.10"},optionalDependencies:{"better-sqlite3":"^12.6.2"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","cross-env":"^10.1.0",eslint:"^9","eslint-config-next":"16.1.6",postcss:"^8.5.6",tailwindcss:"^4"}}])},26406,e=>{"use strict";let o=e.i(12943).default.version||"0.0.0";e.s(["buildClineHeaders",0,function(e,t={}){let i,r=(i=function(e){if("string"!=typeof e)return"";let o=e.trim();return o?o.startsWith("workos:")?o:`workos:${o}`:""}(e))?`Bearer ${i}`:"",n={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`9Router/${o}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"9router","X-CLIENT-VERSION":o,"X-CORE-VERSION":o,"X-IS-MULTIROOT":"false",...t};return r&&(n.Authorization=r),n}])},1102,e=>{"use strict";e.i(69789);var o=e.i(26753);function t(e){return null==e?"":String(e).trim()}async function i(e={}){let r=t(e?.proxyPoolId),n="__none__"===r?"":r,a=function(e={}){let o=e?.connectionProxyEnabled===!0;return{connectionProxyEnabled:o,connectionProxyUrl:t(e?.connectionProxyUrl),connectionNoProxy:t(e?.connectionNoProxy)}}(e);if(n){let e=await (0,o.getProxyPoolById)(n),i=t(e?.proxyUrl),r=t(e?.noProxy);if(e&&!0===e.isActive&&i)return{source:"pool",proxyPoolId:n,proxyPool:e,connectionProxyEnabled:!0,connectionProxyUrl:i,connectionNoProxy:r,strictProxy:!0===e.strictProxy}}return a.connectionProxyEnabled&&a.connectionProxyUrl?{source:"legacy",proxyPoolId:n||null,proxyPool:null,...a}:{source:"none",proxyPoolId:n||null,proxyPool:null,...a}}e.s(["resolveConnectionProxyConfig",0,i])},9161,e=>{"use strict";var o=e.i(77090);let t=new Map,i=new Map,r=null;async function n(e,o){if(!e||!o)return null;let r=t.get(e);if(r&&Date.now()-r.fetchedAt<36e5)return r.projectId;if(i.has(e))return i.get(e).promise;let n=new AbortController,c=(async()=>{try{let i=await a(o,n.signal);if(i)return t.set(e,{projectId:i,fetchedAt:Date.now()}),i;return console.warn("[ProjectId] could not fetch projectId for connection",e.slice(0,8)),null}catch(e){return console.warn(`[ProjectId] Error fetching project ID: ${e.message}`),null}finally{i.delete(e)}})();return i.set(e,{promise:c,controller:n,startedAt:Date.now()}),c}async function a(e,t){let i=await fetch(o.CLOUD_CODE_API.loadCodeAssist,{method:"POST",headers:{...o.LOAD_CODE_ASSIST_HEADERS,Authorization:`Bearer ${e}`},body:JSON.stringify({metadata:o.LOAD_CODE_ASSIST_METADATA}),signal:t});if(!i.ok){let e=await i.text().catch(()=>"");throw Error(`loadCodeAssist failed: HTTP ${i.status} ${e.slice(0,200)}`)}let r=await i.json(),n=function(e){if(!e)return null;if("string"==typeof e.cloudaicompanionProject){let o=e.cloudaicompanionProject.trim();if(o)return o}if(e.cloudaicompanionProject&&"object"==typeof e.cloudaicompanionProject){let o=e.cloudaicompanionProject.id;if("string"==typeof o&&o.trim())return o.trim()}return null}(r);if(n)return n;let a="legacy-tier";if(Array.isArray(r.allowedTiers)){for(let e of r.allowedTiers)if(e&&"object"==typeof e&&!0===e.isDefault&&e.id&&"string"==typeof e.id&&e.id.trim()){a=e.id.trim();break}}return c(e,a,t)}async function c(e,t,i){console.log(`[ProjectId] Onboarding user with tier: ${t}`);let r={tierId:t,metadata:o.LOAD_CODE_ASSIST_METADATA};for(let t=1;t<=5&&!i?.aborted;t++){let n=new AbortController,a=setTimeout(()=>n.abort(),3e4),c=()=>n.abort();i?.addEventListener("abort",c);try{let i=await fetch(o.CLOUD_CODE_API.onboardUser,{method:"POST",headers:{...o.LOAD_CODE_ASSIST_HEADERS,Authorization:`Bearer ${e}`},body:JSON.stringify(r),signal:n.signal});if(clearTimeout(a),!i.ok){let e=await i.text().catch(()=>"");throw Error(`onboardUser HTTP ${i.status}: ${e.slice(0,200)}`)}let c=await i.json();if(!0===c.done){let e=function(e){if(!e?.response)return null;let o=e.response.cloudaicompanionProject;if("string"==typeof o){let e=o.trim();if(e)return e}if(o&&"object"==typeof o){let e=o.id;if("string"==typeof e&&e.trim())return e.trim()}return null}(c);if(e)return console.log(`[ProjectId] Successfully onboarded, project ID: ${e}`),e;throw Error("onboardUser done but no project_id in response")}console.log(`[ProjectId] Onboard attempt ${t}/5: not done yet, waiting...`),await new Promise(e=>setTimeout(e,2e3))}catch(e){if(clearTimeout(a),"AbortError"===e.name){if(console.warn(`[ProjectId] onboardUser attempt ${t} aborted (timeout or connection removed)`),i?.aborted)return null;continue}if(5===t)return console.warn(`[ProjectId] onboardUser failed after 5 attempts: ${e.message}`),null;console.warn(`[ProjectId] onboardUser attempt ${t} failed: ${e.message}, retrying...`),await new Promise(e=>setTimeout(e,2e3))}finally{clearTimeout(a),i?.removeEventListener("abort",c)}}return null}r=setInterval(()=>{try{let e=Date.now();for(let[o,i]of t)(!i||e-i.fetchedAt>=36e5)&&t.delete(o);for(let[o,t]of i){if(!t||"number"!=typeof t.startedAt){i.delete(o);continue}if(e-t.startedAt>12e4){try{t.controller.abort()}catch(e){}i.delete(o)}}}catch(e){console.warn("[ProjectId] cleanup sweep error:",e?.message??e)}},6e5),r?.unref?.(),e.s(["getProjectIdForConnection",0,n,"invalidateProjectId",0,function(e){t.delete(e)}])}];
2
2
 
3
3
  //# sourceMappingURL=_0__-aqg._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[88077,e=>{"use strict";let t={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},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,deprecationNotice:"Google has tightened Gemini CLI abuse detection and restricted Pro models to paid accounts (Mar 25, 2026). Using this provider may violate ToS and risk account bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"}},o={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo · Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}}},i={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",deprecated:!0,deprecationNotice:"Antigravity has tightened abuse detection and restricted model access. Using this provider may violate ToS and risk account bans."},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"},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"}},r={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},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"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},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",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},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"},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"},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://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},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"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},n="openai-compatible-",a="anthropic-compatible-",l={...t,...o,...i,...r};function c(e){for(let t of Object.values(l))if(t.alias===e||t.id===e)return t;return null}Object.values(l).reduce((e,t)=>(e[t.alias]=t.id,e),{}),Object.values(l).reduce((e,t)=>(e[t.id]=t.alias,e),{}),e.s(["AI_PROVIDERS",0,l,"ANTHROPIC_COMPATIBLE_PREFIX",0,a,"APIKEY_PROVIDERS",0,r,"FREE_PROVIDERS",0,t,"FREE_TIER_PROVIDERS",0,o,"OAUTH_PROVIDERS",0,i,"OPENAI_COMPATIBLE_PREFIX",0,n,"getProviderAlias",0,function(e){let t=l[e];return t?.alias||e},"getProviderByAlias",0,c,"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(a)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(n)},"resolveProviderId",0,function(e){let t=c(e);return t?.id||e}])},12943,e=>{"use strict";e.s(["default",0,{name:"n9router",version:"0.3.93",description:"Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",keywords:["ai","llm","proxy","router","claude","openai","gemini","cursor"],homepage:"https://github.com/nightwalker89/n9router",repository:{type:"git",url:"https://github.com/nightwalker89/n9router.git"},config:{appName:"n9router"},license:"MIT",bin:{n9router:"./bin/n9router.js"},files:["bin/",".next/standalone/",".next/static/","public/"],scripts:{dev:"next dev --webpack --port 20128",build:"cross-env NODE_ENV=production next build",start:"cross-env NODE_ENV=production next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"NODE_ENV=production bun --bun next build --webpack","start:bun":"NODE_ENV=production bun ./.next/standalone/server.js","publish:npm":"./scripts/publish-npm.sh","publish:npm:dry":"./scripts/publish-npm.sh --dry-run"},dependencies:{"@monaco-editor/react":"^4.7.0","@xyflow/react":"^12.10.1",bcryptjs:"^3.0.3",confbox:"^0.2.4",express:"^5.2.1",fs:"^0.0.1-security","http-proxy-middleware":"^3.0.5",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","node-forge":"^1.3.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1",recharts:"^3.7.0",selfsigned:"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1",undici:"^7.19.2",uuid:"^13.0.0",zustand:"^5.0.10"},optionalDependencies:{"better-sqlite3":"^12.6.2"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","cross-env":"^10.1.0",eslint:"^9","eslint-config-next":"16.1.6",postcss:"^8.5.6",tailwindcss:"^4"}}])},26406,e=>{"use strict";let t=e.i(12943).default.version||"0.0.0";e.s(["buildClineHeaders",0,function(e,o={}){let i,r=(i=function(e){if("string"!=typeof e)return"";let t=e.trim();return t?t.startsWith("workos:")?t:`workos:${t}`:""}(e))?`Bearer ${i}`:"",n={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`9Router/${t}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"9router","X-CLIENT-VERSION":t,"X-CORE-VERSION":t,"X-IS-MULTIROOT":"false",...o};return r&&(n.Authorization=r),n}])},1102,e=>{"use strict";e.i(69789);var t=e.i(26753);function o(e){return null==e?"":String(e).trim()}async function i(e={}){let r=o(e?.proxyPoolId),n="__none__"===r?"":r,a=function(e={}){let t=e?.connectionProxyEnabled===!0;return{connectionProxyEnabled:t,connectionProxyUrl:o(e?.connectionProxyUrl),connectionNoProxy:o(e?.connectionNoProxy)}}(e);if(n){let e=await (0,t.getProxyPoolById)(n),i=o(e?.proxyUrl),r=o(e?.noProxy);if(e&&!0===e.isActive&&i)return{source:"pool",proxyPoolId:n,proxyPool:e,connectionProxyEnabled:!0,connectionProxyUrl:i,connectionNoProxy:r,strictProxy:!0===e.strictProxy}}return a.connectionProxyEnabled&&a.connectionProxyUrl?{source:"legacy",proxyPoolId:n||null,proxyPool:null,...a}:{source:"none",proxyPoolId:n||null,proxyPool:null,...a}}e.s(["resolveConnectionProxyConfig",0,i])},9161,e=>{"use strict";var t=e.i(77090);let o=new Map,i=new Map,r=null;async function n(e,t){if(!e||!t)return null;let r=o.get(e);if(r&&Date.now()-r.fetchedAt<36e5)return r.projectId;if(i.has(e))return i.get(e).promise;let n=new AbortController,l=(async()=>{try{let i=await a(t,n.signal);if(i)return o.set(e,{projectId:i,fetchedAt:Date.now()}),i;return console.warn("[ProjectId] could not fetch projectId for connection",e.slice(0,8)),null}catch(e){return console.warn(`[ProjectId] Error fetching project ID: ${e.message}`),null}finally{i.delete(e)}})();return i.set(e,{promise:l,controller:n,startedAt:Date.now()}),l}async function a(e,o){let i=await fetch(t.CLOUD_CODE_API.loadCodeAssist,{method:"POST",headers:{...t.LOAD_CODE_ASSIST_HEADERS,Authorization:`Bearer ${e}`},body:JSON.stringify({metadata:t.LOAD_CODE_ASSIST_METADATA}),signal:o});if(!i.ok){let e=await i.text().catch(()=>"");throw Error(`loadCodeAssist failed: HTTP ${i.status} ${e.slice(0,200)}`)}let r=await i.json(),n=function(e){if(!e)return null;if("string"==typeof e.cloudaicompanionProject){let t=e.cloudaicompanionProject.trim();if(t)return t}if(e.cloudaicompanionProject&&"object"==typeof e.cloudaicompanionProject){let t=e.cloudaicompanionProject.id;if("string"==typeof t&&t.trim())return t.trim()}return null}(r);if(n)return n;let a="legacy-tier";if(Array.isArray(r.allowedTiers)){for(let e of r.allowedTiers)if(e&&"object"==typeof e&&!0===e.isDefault&&e.id&&"string"==typeof e.id&&e.id.trim()){a=e.id.trim();break}}return l(e,a,o)}async function l(e,o,i){console.log(`[ProjectId] Onboarding user with tier: ${o}`);let r={tierId:o,metadata:t.LOAD_CODE_ASSIST_METADATA};for(let o=1;o<=5&&!i?.aborted;o++){let n=new AbortController,a=setTimeout(()=>n.abort(),3e4),l=()=>n.abort();i?.addEventListener("abort",l);try{let i=await fetch(t.CLOUD_CODE_API.onboardUser,{method:"POST",headers:{...t.LOAD_CODE_ASSIST_HEADERS,Authorization:`Bearer ${e}`},body:JSON.stringify(r),signal:n.signal});if(clearTimeout(a),!i.ok){let e=await i.text().catch(()=>"");throw Error(`onboardUser HTTP ${i.status}: ${e.slice(0,200)}`)}let l=await i.json();if(!0===l.done){let e=function(e){if(!e?.response)return null;let t=e.response.cloudaicompanionProject;if("string"==typeof t){let e=t.trim();if(e)return e}if(t&&"object"==typeof t){let e=t.id;if("string"==typeof e&&e.trim())return e.trim()}return null}(l);if(e)return console.log(`[ProjectId] Successfully onboarded, project ID: ${e}`),e;throw Error("onboardUser done but no project_id in response")}console.log(`[ProjectId] Onboard attempt ${o}/5: not done yet, waiting...`),await new Promise(e=>setTimeout(e,2e3))}catch(e){if(clearTimeout(a),"AbortError"===e.name){if(console.warn(`[ProjectId] onboardUser attempt ${o} aborted (timeout or connection removed)`),i?.aborted)return null;continue}if(5===o)return console.warn(`[ProjectId] onboardUser failed after 5 attempts: ${e.message}`),null;console.warn(`[ProjectId] onboardUser attempt ${o} failed: ${e.message}, retrying...`),await new Promise(e=>setTimeout(e,2e3))}finally{clearTimeout(a),i?.removeEventListener("abort",l)}}return null}r=setInterval(()=>{try{let e=Date.now();for(let[t,i]of o)(!i||e-i.fetchedAt>=36e5)&&o.delete(t);for(let[t,o]of i){if(!o||"number"!=typeof o.startedAt){i.delete(t);continue}if(e-o.startedAt>12e4){try{o.controller.abort()}catch(e){}i.delete(t)}}}catch(e){console.warn("[ProjectId] cleanup sweep error:",e?.message??e)}},6e5),r?.unref?.(),e.s(["getProjectIdForConnection",0,n,"invalidateProjectId",0,function(e){o.delete(e)}])},46160,e=>{"use strict";function t(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}function o(e){if(!e)return"";if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}e.s(["debug",0,function(e,i,r){!0;{let n=r?` ${o(r)}`:"";console.log(`[${t()}] 🔍 [${e}] ${i}${n}`)}},"error",0,function(e,i,r){!0;{let n=r?` ${o(r)}`:"";console.log(`[${t()}] ❌ [${e}] ${i}${n}`)}},"info",0,function(e,i,r){!0;{let n=r?` ${o(r)}`:"";console.log(`[${t()}] ℹ️ [${e}] ${i}${n}`)}},"maskKey",0,function(e){return!e||e.length<8?"***":`${e.slice(0,4)}...${e.slice(-4)}`},"request",0,function(e,i,r){let n=r?` ${o(r)}`:"";console.log(`\x1b[36m[${t()}] 📥 ${e} ${i}${n}\x1b[0m`)},"response",0,function(e,i,r){let n=r?` ${o(r)}`:"";console.log(`[${t()}] ${e<400?"📤":"💥"} ${e} (${i}ms)${n}`)},"stream",0,function(e,i){let r=i?` ${o(i)}`:"";console.log(`[${t()}] 🌊 [STREAM] ${e}${r}`)},"warn",0,function(e,t,i){i&&o(i)}])},4400,e=>{"use strict";var t=e.i(46160),o=e.i(26753),i=e.i(9161),r=e.i(92314);let n=r.TOKEN_EXPIRY_BUFFER_MS;function a(e){return new Date(Date.now()+1e3*e).toISOString()}async function l(e,i){try{let r={};i.accessToken&&(r.accessToken=i.accessToken),i.refreshToken&&(r.refreshToken=i.refreshToken),i.expiresIn&&(r.expiresAt=a(i.expiresIn),r.expiresIn=i.expiresIn),i.providerSpecificData&&(r.providerSpecificData={...i.existingProviderSpecificData||{},...i.providerSpecificData}),i.projectId&&(r.projectId=i.projectId);let n=await (0,o.updateProviderConnection)(e,r);return t.info("TOKEN_REFRESH","Credentials updated in localDb",{connectionId:e,success:!!n}),!!n}catch(o){return t.error("TOKEN_REFRESH","Error updating credentials in localDb",{connectionId:e,error:o.message}),!1}}async function c(e,o){let c={...o};if(c.expiresAt){let o=new Date(c.expiresAt).getTime()-Date.now();if(o<n){let n;t.info("TOKEN_REFRESH","Token expiring soon, refreshing proactively",{provider:e,expiresIn:Math.round(o/1e3)});let s=await (n=c,(0,r.getAccessToken)(e,n,t));if(s?.accessToken){let o={...s,existingProviderSpecificData:c.providerSpecificData};await l(c.connectionId,o),function(e,o,r){("antigravity"===e||"gemini-cli"===e)&&o&&r&&((0,i.invalidateProjectId)(o),(0,i.getProjectIdForConnection)(o,r).then(e=>{e&&l(o,{projectId:e}).catch(e=>{t.debug("TOKEN_REFRESH","Failed to persist refreshed projectId",{connectionId:o,error:e?.message??e})})}).catch(e=>{t.debug("TOKEN_REFRESH","Failed to fetch projectId after token refresh",{connectionId:o,error:e?.message??e})}))}(e,(c={...c,accessToken:s.accessToken,refreshToken:s.refreshToken??c.refreshToken,providerSpecificData:s.providerSpecificData?{...c.providerSpecificData,...s.providerSpecificData}:c.providerSpecificData,expiresAt:s.expiresIn?a(s.expiresIn):c.expiresAt}).connectionId,c.accessToken)}}}if("github"===e&&c.providerSpecificData?.copilotTokenExpiresAt){let o=1e3*c.providerSpecificData.copilotTokenExpiresAt-Date.now();if(o<n){let i;t.info("TOKEN_REFRESH","Copilot token expiring soon, refreshing proactively",{provider:e,expiresIn:Math.round(o/1e3)});let n=await (i=c.accessToken,(0,r.refreshCopilotToken)(i,t));if(n){let e={...c.providerSpecificData,copilotToken:n.token,copilotTokenExpiresAt:n.expiresAt};await l(c.connectionId,{providerSpecificData:e}),c.providerSpecificData=e}}}return c}e.s(["checkAndRefreshToken",0,c,"refreshGoogleToken",0,(e,o,i)=>(0,r.refreshGoogleToken)(e,o,i,t),"refreshKiroToken",0,(e,o)=>(0,r.refreshKiroToken)(e,o,t),"updateProviderCredentials",0,l])},84180,e=>{"use strict";let t={cc:"claude",cx:"codex",gc:"gemini-cli",qw:"qwen",if:"iflow",ag:"antigravity",gh:"github",kr:"kiro",cu:"cursor",kc:"kilocode",kmc:"kimi-coding",cl:"cline",oc:"opencode",openai:"openai",anthropic:"anthropic",gemini:"gemini",openrouter:"openrouter",glm:"glm",kimi:"kimi",minimax:"minimax","minimax-cn":"minimax-cn",ds:"deepseek",deepseek:"deepseek",groq:"groq",xai:"xai",mistral:"mistral",pplx:"perplexity",perplexity:"perplexity",together:"together",fireworks:"fireworks",cerebras:"cerebras",cohere:"cohere",nvidia:"nvidia",nebius:"nebius",siliconflow:"siliconflow",hyp:"hyperbolic",hyperbolic:"hyperbolic",dg:"deepgram",deepgram:"deepgram",aai:"assemblyai",assemblyai:"assemblyai",nb:"nanobanana",nanobanana:"nanobanana",ch:"chutes",chutes:"chutes",cursor:"cursor",vx:"vertex",vertex:"vertex",vxp:"vertex-partner","vertex-partner":"vertex-partner"};function o(e){if(!e)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(e.includes("/")){let o=e.indexOf("/"),i=e.slice(0,o),r=e.slice(o+1);return{provider:t[i]||i,model:r,isAlias:!1,providerAlias:i}}return{provider:null,model:e,isAlias:!0,providerAlias:null}}async function i(e,i){let r=o(e);if(!r.isAlias)return{provider:r.provider,model:r.model};let n="function"==typeof i?await i():i,a=function(e,o){var i,r;if(!o)return null;let n=o[e];if(!n)return null;if("string"==typeof n&&n.includes("/")){let e=n.indexOf("/");return{provider:t[i=n.slice(0,e)]||i,model:n.slice(e+1)}}return"object"==typeof n&&n.provider&&n.model?{provider:t[r=n.provider]||r,model:n.model}:null}(r.model,n);return a||{provider:function(e){if(!e)return"openai";let t=e.toLowerCase();return t.startsWith("claude-")?"anthropic":t.startsWith("gemini-")?"gemini":t.startsWith("gpt-")||t.startsWith("o1")||t.startsWith("o3")||t.startsWith("o4")?"openai":t.startsWith("deepseek-")?"openrouter":"openai"}(r.model),model:r.model}}e.s(["getModelInfoCore",0,i,"parseModel",0,o])},27075,e=>{"use strict";var t=e.i(86345);function o(e=0){return Math.min(t.BACKOFF_CONFIG.base*Math.pow(2,e),t.BACKOFF_CONFIG.max)}let i="modelLock_",r=`${i}__all`;function n(e){return e?`${i}${e}`:r}e.s(["buildModelLockUpdate",0,function(e,t){return{[n(e)]:new Date(Date.now()+t).toISOString()}},"checkFallbackError",0,function(e,i,r=0){if(i){let e=("string"==typeof i?i:JSON.stringify(i)).toLowerCase();if(e.includes("no credentials"))return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.notFound};if(e.includes("request not allowed"))return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.requestNotAllowed};if(e.includes("improperly formed request"))return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.paymentRequired};if(e.includes("rate limit")||e.includes("too many requests")||e.includes("quota exceeded")||e.includes("capacity")||e.includes("overloaded")){let e=Math.min(r+1,t.BACKOFF_CONFIG.maxLevel);return{shouldFallback:!0,cooldownMs:o(r),newBackoffLevel:e}}}if(e===t.HTTP_STATUS.UNAUTHORIZED)return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.unauthorized};if(e===t.HTTP_STATUS.PAYMENT_REQUIRED||e===t.HTTP_STATUS.FORBIDDEN)return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.paymentRequired};if(e===t.HTTP_STATUS.NOT_FOUND)return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.notFound};if(e===t.HTTP_STATUS.RATE_LIMITED){let e=Math.min(r+1,t.BACKOFF_CONFIG.maxLevel);return{shouldFallback:!0,cooldownMs:o(r),newBackoffLevel:e}}return[t.HTTP_STATUS.NOT_ACCEPTABLE,t.HTTP_STATUS.REQUEST_TIMEOUT,t.HTTP_STATUS.SERVER_ERROR,t.HTTP_STATUS.BAD_GATEWAY,t.HTTP_STATUS.SERVICE_UNAVAILABLE,t.HTTP_STATUS.GATEWAY_TIMEOUT].includes(e),{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.transient}},"formatRetryAfter",0,function(e){if(!e)return"";let t=new Date(e).getTime()-Date.now();if(t<=0)return"reset after 0s";let o=Math.ceil(t/1e3),i=Math.floor(o/3600),r=Math.floor(o%3600/60),n=o%60,a=[];return i>0&&a.push(`${i}h`),r>0&&a.push(`${r}m`),(n>0||0===a.length)&&a.push(`${n}s`),`reset after ${a.join(" ")}`},"getEarliestModelLockUntil",0,function(e){if(!e)return null;let t=null,o=Date.now();for(let[r,n]of Object.entries(e)){if(!r.startsWith(i)||!n)continue;let e=new Date(n).getTime();e<=o||(!t||e<t)&&(t=e)}return t?new Date(t).toISOString():null},"isModelLockActive",0,function(e,t){let o=e[n(t)]||e[r];return!!o&&new Date(o).getTime()>Date.now()}])},23136,e=>{"use strict";var t=e.i(26753),o=e.i(1102),i=e.i(27075),r=e.i(88077),n=e.i(46160);let a=Promise.resolve();async function l(e,c=null,s=null){let d,u=c instanceof Set?c:c?new Set([c]):new Set,p=a;a=new Promise(e=>{d=e});try{let a;await p;let l=(0,r.resolveProviderId)(e),c=await (0,t.getProviderConnections)({provider:l,isActive:!0});if(n.debug("AUTH",`${e} | total connections: ${c.length}, excludeIds: ${u.size>0?[...u].join(","):"none"}, model: ${s||"any"}`),0===c.length)return n.warn("AUTH",`No credentials for ${e}`),null;let d=c.filter(e=>!(u.has(e.id)||(0,i.isModelLockActive)(e,s)));if(n.debug("AUTH",`${e} | available: ${d.length}/${c.length}`),c.forEach(e=>{let t=u.has(e.id),o=(0,i.isModelLockActive)(e,s);if(t||o){let r=(0,i.getEarliestModelLockUntil)(e);n.debug("AUTH",` → ${e.id?.slice(0,8)} | ${t?"excluded":""} ${o?`modelLocked(${s}) until ${r}`:""}`)}}),0===d.length){let t=c.filter(e=>(0,i.isModelLockActive)(e,s)),o=t.map(e=>(0,i.getEarliestModelLockUntil)(e)).filter(Boolean).sort()[0]||null;if(o){let r=t[0];return n.warn("AUTH",`${e} | all ${c.length} accounts locked for ${s||"all"} (${(0,i.formatRetryAfter)(o)}) | lastError=${r?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:o,retryAfterHuman:(0,i.formatRetryAfter)(o),lastError:r?.lastError||null,lastErrorCode:r?.errorCode||null}}return n.warn("AUTH",`${e} | all ${c.length} accounts unavailable`),null}let m=await (0,t.getSettings)(),f=(m.providerStrategies||{})[l]||{},h=f.fallbackStrategy||m.fallbackStrategy||"fill-first";if("round-robin"===h){let e=f.stickyRoundRobinLimit||m.stickyRoundRobinLimit||3,o=[...d].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(t.lastUsedAt)-new Date(e.lastUsedAt):-1:1:(e.priority||999)-(t.priority||999))[0],i=o?.consecutiveUseCount||0;o&&o.lastUsedAt&&i<e?(a=o,await (0,t.updateProviderConnection)(a.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(a.consecutiveUseCount||0)+1})):(a=[...d].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(e.lastUsedAt)-new Date(t.lastUsedAt):1:-1:(e.priority||999)-(t.priority||999))[0],await (0,t.updateProviderConnection)(a.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else a=d[0];let g=await (0,o.resolveConnectionProxyConfig)(a.providerSpecificData||{});return{apiKey:a.apiKey,accessToken:a.accessToken,refreshToken:a.refreshToken,projectId:a.projectId,connectionName:a.displayName||a.name||a.email||a.id,copilotToken:a.providerSpecificData?.copilotToken,providerSpecificData:{...a.providerSpecificData||{},connectionProxyEnabled:g.connectionProxyEnabled,connectionProxyUrl:g.connectionProxyUrl,connectionNoProxy:g.connectionNoProxy,connectionProxyPoolId:g.proxyPoolId||null},connectionId:a.id,testStatus:a.testStatus,lastError:a.lastError,_connection:a}}finally{d&&d()}}async function c(e,o,r,a=null,l=null){let s=(await (0,t.getProviderConnections)({provider:a})).find(t=>t.id===e),d=s?.backoffLevel||0,{shouldFallback:u,cooldownMs:p,newBackoffLevel:m}=(0,i.checkFallbackError)(o,r,d);if(!u)return{shouldFallback:!1,cooldownMs:0};let f="string"==typeof r?r.slice(0,100):"Provider error",h=(0,i.buildModelLockUpdate)(l,p);await (0,t.updateProviderConnection)(e,{...h,testStatus:"unavailable",lastError:f,errorCode:o,lastErrorAt:new Date().toISOString(),backoffLevel:m??d});let g=Object.keys(h)[0],b=s?.displayName||s?.name||s?.email||e.slice(0,8);return n.warn("AUTH",`${b} locked ${g} for ${Math.round(p/1e3)}s [${o}]`),a&&o&&f&&console.error(`❌ ${a} [${o}]: ${f}`),{shouldFallback:!0,cooldownMs:p}}async function s(e,o,i=null){let r=o._connection||o,a=Date.now(),l=Object.keys(r).filter(e=>e.startsWith("modelLock_"));if(!r.testStatus&&!r.lastError&&0===l.length)return;let c=l.filter(e=>{if(i&&e===`modelLock_${i}`||i&&"modelLock___all"===e)return!0;let t=r[e];return t&&new Date(t).getTime()<=a});if(0===c.length&&"unavailable"!==r.testStatus&&!r.lastError)return;let d=l.filter(e=>{if(c.includes(e))return!1;let t=r[e];return t&&new Date(t).getTime()>a}),u=Object.fromEntries(c.map(e=>[e,null]));0===d.length&&Object.assign(u,{testStatus:"active",lastError:null,lastErrorAt:null,backoffLevel:0}),await (0,t.updateProviderConnection)(e,u);let p=r?.displayName||r?.name||r?.email||e.slice(0,8);n.info("AUTH",`Account ${p} cleared lock for model=${i||"__all"}`)}async function d(e){return!!e&&await (0,t.validateApiKey)(e)}e.s(["clearAccountError",0,s,"extractApiKey",0,function(e){let t=e.headers.get("Authorization");if(t?.startsWith("Bearer "))return t.slice(7);let o=e.headers.get("x-api-key");return o||null},"getProviderCredentials",0,l,"isValidApiKey",0,d,"markAccountUnavailable",0,c])},84650,e=>{"use strict";var t=e.i(26753),o=e.i(84180);async function i(e){let i=(0,o.parseModel)(e);if(!i.isAlias){if(i.provider===i.providerAlias){let e=(await (0,t.getProviderNodes)({type:"openai-compatible"})).find(e=>e.prefix===i.providerAlias);if(e)return{provider:e.id,model:i.model};let o=(await (0,t.getProviderNodes)({type:"anthropic-compatible"})).find(e=>e.prefix===i.providerAlias);if(o)return{provider:o.id,model:i.model}}return{provider:i.provider,model:i.model}}return await (0,t.getComboByName)(i.model)?{provider:null,model:i.model}:(0,o.getModelInfoCore)(e,t.getModelAliases)}async function r(e){if(e.includes("/"))return null;let o=await (0,t.getComboByName)(e);return o&&o.models&&o.models.length>0?o.models:null}e.s(["getComboModels",0,r,"getModelInfo",0,i])}];
1
+ module.exports=[88077,e=>{"use strict";let t={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},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,deprecationNotice:"Google has tightened Gemini CLI abuse detection and restricted Pro models to paid accounts (Mar 25, 2026). Using this provider may violate ToS and risk account bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"}},o={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo · Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}}},i={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",deprecated:!0,deprecationNotice:"Antigravity has tightened abuse detection and restricted model access. Using this provider may violate ToS and risk account bans."},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"},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"}},r={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},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"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},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",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},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"},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"},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://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},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"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}},n="openai-compatible-",a="anthropic-compatible-",l={...t,...o,...i,...r};function c(e){for(let t of Object.values(l))if(t.alias===e||t.id===e)return t;return null}Object.values(l).reduce((e,t)=>(e[t.alias]=t.id,e),{}),Object.values(l).reduce((e,t)=>(e[t.id]=t.alias,e),{}),e.s(["AI_PROVIDERS",0,l,"ANTHROPIC_COMPATIBLE_PREFIX",0,a,"APIKEY_PROVIDERS",0,r,"FREE_PROVIDERS",0,t,"FREE_TIER_PROVIDERS",0,o,"OAUTH_PROVIDERS",0,i,"OPENAI_COMPATIBLE_PREFIX",0,n,"getProviderAlias",0,function(e){let t=l[e];return t?.alias||e},"getProviderByAlias",0,c,"isAnthropicCompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(a)},"isOpenAICompatibleProvider",0,function(e){return"string"==typeof e&&e.startsWith(n)},"resolveProviderId",0,function(e){let t=c(e);return t?.id||e}])},12943,e=>{"use strict";e.s(["default",0,{name:"n9router",version:"0.3.94",description:"Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",keywords:["ai","llm","proxy","router","claude","openai","gemini","cursor"],homepage:"https://github.com/nightwalker89/n9router",repository:{type:"git",url:"https://github.com/nightwalker89/n9router.git"},config:{appName:"n9router"},license:"MIT",bin:{n9router:"./bin/n9router.js"},files:["bin/",".next/standalone/",".next/static/","public/"],scripts:{dev:"next dev --webpack --port 20128",build:"cross-env NODE_ENV=production next build",start:"cross-env NODE_ENV=production next start","dev:bun":"bun --bun next dev --webpack --port 20128","build:bun":"NODE_ENV=production bun --bun next build --webpack","start:bun":"NODE_ENV=production bun ./.next/standalone/server.js","publish:npm":"./scripts/publish-npm.sh","publish:npm:dry":"./scripts/publish-npm.sh --dry-run"},dependencies:{"@monaco-editor/react":"^4.7.0","@xyflow/react":"^12.10.1",bcryptjs:"^3.0.3",confbox:"^0.2.4",express:"^5.2.1",fs:"^0.0.1-security","http-proxy-middleware":"^3.0.5",jose:"^6.1.3",lowdb:"^7.0.1","monaco-editor":"^0.55.1",next:"^16.1.6","node-forge":"^1.3.3","node-machine-id":"^1.1.12",open:"^11.0.0",ora:"^9.1.0","proper-lockfile":"^4.1.2",react:"19.2.4","react-dom":"19.2.4","react-is":"^16.13.1",recharts:"^3.7.0",selfsigned:"^5.5.0","socks-proxy-agent":"^8.0.5","sql.js":"^1.14.1",undici:"^7.19.2",uuid:"^13.0.0",zustand:"^5.0.10"},optionalDependencies:{"better-sqlite3":"^12.6.2"},devDependencies:{"@tailwindcss/postcss":"^4.1.18","cross-env":"^10.1.0",eslint:"^9","eslint-config-next":"16.1.6",postcss:"^8.5.6",tailwindcss:"^4"}}])},26406,e=>{"use strict";let t=e.i(12943).default.version||"0.0.0";e.s(["buildClineHeaders",0,function(e,o={}){let i,r=(i=function(e){if("string"!=typeof e)return"";let t=e.trim();return t?t.startsWith("workos:")?t:`workos:${t}`:""}(e))?`Bearer ${i}`:"",n={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`9Router/${t}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"9router","X-CLIENT-VERSION":t,"X-CORE-VERSION":t,"X-IS-MULTIROOT":"false",...o};return r&&(n.Authorization=r),n}])},1102,e=>{"use strict";e.i(69789);var t=e.i(26753);function o(e){return null==e?"":String(e).trim()}async function i(e={}){let r=o(e?.proxyPoolId),n="__none__"===r?"":r,a=function(e={}){let t=e?.connectionProxyEnabled===!0;return{connectionProxyEnabled:t,connectionProxyUrl:o(e?.connectionProxyUrl),connectionNoProxy:o(e?.connectionNoProxy)}}(e);if(n){let e=await (0,t.getProxyPoolById)(n),i=o(e?.proxyUrl),r=o(e?.noProxy);if(e&&!0===e.isActive&&i)return{source:"pool",proxyPoolId:n,proxyPool:e,connectionProxyEnabled:!0,connectionProxyUrl:i,connectionNoProxy:r,strictProxy:!0===e.strictProxy}}return a.connectionProxyEnabled&&a.connectionProxyUrl?{source:"legacy",proxyPoolId:n||null,proxyPool:null,...a}:{source:"none",proxyPoolId:n||null,proxyPool:null,...a}}e.s(["resolveConnectionProxyConfig",0,i])},9161,e=>{"use strict";var t=e.i(77090);let o=new Map,i=new Map,r=null;async function n(e,t){if(!e||!t)return null;let r=o.get(e);if(r&&Date.now()-r.fetchedAt<36e5)return r.projectId;if(i.has(e))return i.get(e).promise;let n=new AbortController,l=(async()=>{try{let i=await a(t,n.signal);if(i)return o.set(e,{projectId:i,fetchedAt:Date.now()}),i;return console.warn("[ProjectId] could not fetch projectId for connection",e.slice(0,8)),null}catch(e){return console.warn(`[ProjectId] Error fetching project ID: ${e.message}`),null}finally{i.delete(e)}})();return i.set(e,{promise:l,controller:n,startedAt:Date.now()}),l}async function a(e,o){let i=await fetch(t.CLOUD_CODE_API.loadCodeAssist,{method:"POST",headers:{...t.LOAD_CODE_ASSIST_HEADERS,Authorization:`Bearer ${e}`},body:JSON.stringify({metadata:t.LOAD_CODE_ASSIST_METADATA}),signal:o});if(!i.ok){let e=await i.text().catch(()=>"");throw Error(`loadCodeAssist failed: HTTP ${i.status} ${e.slice(0,200)}`)}let r=await i.json(),n=function(e){if(!e)return null;if("string"==typeof e.cloudaicompanionProject){let t=e.cloudaicompanionProject.trim();if(t)return t}if(e.cloudaicompanionProject&&"object"==typeof e.cloudaicompanionProject){let t=e.cloudaicompanionProject.id;if("string"==typeof t&&t.trim())return t.trim()}return null}(r);if(n)return n;let a="legacy-tier";if(Array.isArray(r.allowedTiers)){for(let e of r.allowedTiers)if(e&&"object"==typeof e&&!0===e.isDefault&&e.id&&"string"==typeof e.id&&e.id.trim()){a=e.id.trim();break}}return l(e,a,o)}async function l(e,o,i){console.log(`[ProjectId] Onboarding user with tier: ${o}`);let r={tierId:o,metadata:t.LOAD_CODE_ASSIST_METADATA};for(let o=1;o<=5&&!i?.aborted;o++){let n=new AbortController,a=setTimeout(()=>n.abort(),3e4),l=()=>n.abort();i?.addEventListener("abort",l);try{let i=await fetch(t.CLOUD_CODE_API.onboardUser,{method:"POST",headers:{...t.LOAD_CODE_ASSIST_HEADERS,Authorization:`Bearer ${e}`},body:JSON.stringify(r),signal:n.signal});if(clearTimeout(a),!i.ok){let e=await i.text().catch(()=>"");throw Error(`onboardUser HTTP ${i.status}: ${e.slice(0,200)}`)}let l=await i.json();if(!0===l.done){let e=function(e){if(!e?.response)return null;let t=e.response.cloudaicompanionProject;if("string"==typeof t){let e=t.trim();if(e)return e}if(t&&"object"==typeof t){let e=t.id;if("string"==typeof e&&e.trim())return e.trim()}return null}(l);if(e)return console.log(`[ProjectId] Successfully onboarded, project ID: ${e}`),e;throw Error("onboardUser done but no project_id in response")}console.log(`[ProjectId] Onboard attempt ${o}/5: not done yet, waiting...`),await new Promise(e=>setTimeout(e,2e3))}catch(e){if(clearTimeout(a),"AbortError"===e.name){if(console.warn(`[ProjectId] onboardUser attempt ${o} aborted (timeout or connection removed)`),i?.aborted)return null;continue}if(5===o)return console.warn(`[ProjectId] onboardUser failed after 5 attempts: ${e.message}`),null;console.warn(`[ProjectId] onboardUser attempt ${o} failed: ${e.message}, retrying...`),await new Promise(e=>setTimeout(e,2e3))}finally{clearTimeout(a),i?.removeEventListener("abort",l)}}return null}r=setInterval(()=>{try{let e=Date.now();for(let[t,i]of o)(!i||e-i.fetchedAt>=36e5)&&o.delete(t);for(let[t,o]of i){if(!o||"number"!=typeof o.startedAt){i.delete(t);continue}if(e-o.startedAt>12e4){try{o.controller.abort()}catch(e){}i.delete(t)}}}catch(e){console.warn("[ProjectId] cleanup sweep error:",e?.message??e)}},6e5),r?.unref?.(),e.s(["getProjectIdForConnection",0,n,"invalidateProjectId",0,function(e){o.delete(e)}])},46160,e=>{"use strict";function t(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}function o(e){if(!e)return"";if("string"==typeof e)return e;try{return JSON.stringify(e)}catch{return String(e)}}e.s(["debug",0,function(e,i,r){!0;{let n=r?` ${o(r)}`:"";console.log(`[${t()}] 🔍 [${e}] ${i}${n}`)}},"error",0,function(e,i,r){!0;{let n=r?` ${o(r)}`:"";console.log(`[${t()}] ❌ [${e}] ${i}${n}`)}},"info",0,function(e,i,r){!0;{let n=r?` ${o(r)}`:"";console.log(`[${t()}] ℹ️ [${e}] ${i}${n}`)}},"maskKey",0,function(e){return!e||e.length<8?"***":`${e.slice(0,4)}...${e.slice(-4)}`},"request",0,function(e,i,r){let n=r?` ${o(r)}`:"";console.log(`\x1b[36m[${t()}] 📥 ${e} ${i}${n}\x1b[0m`)},"response",0,function(e,i,r){let n=r?` ${o(r)}`:"";console.log(`[${t()}] ${e<400?"📤":"💥"} ${e} (${i}ms)${n}`)},"stream",0,function(e,i){let r=i?` ${o(i)}`:"";console.log(`[${t()}] 🌊 [STREAM] ${e}${r}`)},"warn",0,function(e,t,i){i&&o(i)}])},4400,e=>{"use strict";var t=e.i(46160),o=e.i(26753),i=e.i(9161),r=e.i(92314);let n=r.TOKEN_EXPIRY_BUFFER_MS;function a(e){return new Date(Date.now()+1e3*e).toISOString()}async function l(e,i){try{let r={};i.accessToken&&(r.accessToken=i.accessToken),i.refreshToken&&(r.refreshToken=i.refreshToken),i.expiresIn&&(r.expiresAt=a(i.expiresIn),r.expiresIn=i.expiresIn),i.providerSpecificData&&(r.providerSpecificData={...i.existingProviderSpecificData||{},...i.providerSpecificData}),i.projectId&&(r.projectId=i.projectId);let n=await (0,o.updateProviderConnection)(e,r);return t.info("TOKEN_REFRESH","Credentials updated in localDb",{connectionId:e,success:!!n}),!!n}catch(o){return t.error("TOKEN_REFRESH","Error updating credentials in localDb",{connectionId:e,error:o.message}),!1}}async function c(e,o){let c={...o};if(c.expiresAt){let o=new Date(c.expiresAt).getTime()-Date.now();if(o<n){let n;t.info("TOKEN_REFRESH","Token expiring soon, refreshing proactively",{provider:e,expiresIn:Math.round(o/1e3)});let s=await (n=c,(0,r.getAccessToken)(e,n,t));if(s?.accessToken){let o={...s,existingProviderSpecificData:c.providerSpecificData};await l(c.connectionId,o),function(e,o,r){("antigravity"===e||"gemini-cli"===e)&&o&&r&&((0,i.invalidateProjectId)(o),(0,i.getProjectIdForConnection)(o,r).then(e=>{e&&l(o,{projectId:e}).catch(e=>{t.debug("TOKEN_REFRESH","Failed to persist refreshed projectId",{connectionId:o,error:e?.message??e})})}).catch(e=>{t.debug("TOKEN_REFRESH","Failed to fetch projectId after token refresh",{connectionId:o,error:e?.message??e})}))}(e,(c={...c,accessToken:s.accessToken,refreshToken:s.refreshToken??c.refreshToken,providerSpecificData:s.providerSpecificData?{...c.providerSpecificData,...s.providerSpecificData}:c.providerSpecificData,expiresAt:s.expiresIn?a(s.expiresIn):c.expiresAt}).connectionId,c.accessToken)}}}if("github"===e&&c.providerSpecificData?.copilotTokenExpiresAt){let o=1e3*c.providerSpecificData.copilotTokenExpiresAt-Date.now();if(o<n){let i;t.info("TOKEN_REFRESH","Copilot token expiring soon, refreshing proactively",{provider:e,expiresIn:Math.round(o/1e3)});let n=await (i=c.accessToken,(0,r.refreshCopilotToken)(i,t));if(n){let e={...c.providerSpecificData,copilotToken:n.token,copilotTokenExpiresAt:n.expiresAt};await l(c.connectionId,{providerSpecificData:e}),c.providerSpecificData=e}}}return c}e.s(["checkAndRefreshToken",0,c,"refreshGoogleToken",0,(e,o,i)=>(0,r.refreshGoogleToken)(e,o,i,t),"refreshKiroToken",0,(e,o)=>(0,r.refreshKiroToken)(e,o,t),"updateProviderCredentials",0,l])},84180,e=>{"use strict";let t={cc:"claude",cx:"codex",gc:"gemini-cli",qw:"qwen",if:"iflow",ag:"antigravity",gh:"github",kr:"kiro",cu:"cursor",kc:"kilocode",kmc:"kimi-coding",cl:"cline",oc:"opencode",openai:"openai",anthropic:"anthropic",gemini:"gemini",openrouter:"openrouter",glm:"glm",kimi:"kimi",minimax:"minimax","minimax-cn":"minimax-cn",ds:"deepseek",deepseek:"deepseek",groq:"groq",xai:"xai",mistral:"mistral",pplx:"perplexity",perplexity:"perplexity",together:"together",fireworks:"fireworks",cerebras:"cerebras",cohere:"cohere",nvidia:"nvidia",nebius:"nebius",siliconflow:"siliconflow",hyp:"hyperbolic",hyperbolic:"hyperbolic",dg:"deepgram",deepgram:"deepgram",aai:"assemblyai",assemblyai:"assemblyai",nb:"nanobanana",nanobanana:"nanobanana",ch:"chutes",chutes:"chutes",cursor:"cursor",vx:"vertex",vertex:"vertex",vxp:"vertex-partner","vertex-partner":"vertex-partner"};function o(e){if(!e)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(e.includes("/")){let o=e.indexOf("/"),i=e.slice(0,o),r=e.slice(o+1);return{provider:t[i]||i,model:r,isAlias:!1,providerAlias:i}}return{provider:null,model:e,isAlias:!0,providerAlias:null}}async function i(e,i){let r=o(e);if(!r.isAlias)return{provider:r.provider,model:r.model};let n="function"==typeof i?await i():i,a=function(e,o){var i,r;if(!o)return null;let n=o[e];if(!n)return null;if("string"==typeof n&&n.includes("/")){let e=n.indexOf("/");return{provider:t[i=n.slice(0,e)]||i,model:n.slice(e+1)}}return"object"==typeof n&&n.provider&&n.model?{provider:t[r=n.provider]||r,model:n.model}:null}(r.model,n);return a||{provider:function(e){if(!e)return"openai";let t=e.toLowerCase();return t.startsWith("claude-")?"anthropic":t.startsWith("gemini-")?"gemini":t.startsWith("gpt-")||t.startsWith("o1")||t.startsWith("o3")||t.startsWith("o4")?"openai":t.startsWith("deepseek-")?"openrouter":"openai"}(r.model),model:r.model}}e.s(["getModelInfoCore",0,i,"parseModel",0,o])},27075,e=>{"use strict";var t=e.i(86345);function o(e=0){return Math.min(t.BACKOFF_CONFIG.base*Math.pow(2,e),t.BACKOFF_CONFIG.max)}let i="modelLock_",r=`${i}__all`;function n(e){return e?`${i}${e}`:r}e.s(["buildModelLockUpdate",0,function(e,t){return{[n(e)]:new Date(Date.now()+t).toISOString()}},"checkFallbackError",0,function(e,i,r=0){if(i){let e=("string"==typeof i?i:JSON.stringify(i)).toLowerCase();if(e.includes("no credentials"))return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.notFound};if(e.includes("request not allowed"))return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.requestNotAllowed};if(e.includes("improperly formed request"))return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.paymentRequired};if(e.includes("rate limit")||e.includes("too many requests")||e.includes("quota exceeded")||e.includes("capacity")||e.includes("overloaded")){let e=Math.min(r+1,t.BACKOFF_CONFIG.maxLevel);return{shouldFallback:!0,cooldownMs:o(r),newBackoffLevel:e}}}if(e===t.HTTP_STATUS.UNAUTHORIZED)return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.unauthorized};if(e===t.HTTP_STATUS.PAYMENT_REQUIRED||e===t.HTTP_STATUS.FORBIDDEN)return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.paymentRequired};if(e===t.HTTP_STATUS.NOT_FOUND)return{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.notFound};if(e===t.HTTP_STATUS.RATE_LIMITED){let e=Math.min(r+1,t.BACKOFF_CONFIG.maxLevel);return{shouldFallback:!0,cooldownMs:o(r),newBackoffLevel:e}}return[t.HTTP_STATUS.NOT_ACCEPTABLE,t.HTTP_STATUS.REQUEST_TIMEOUT,t.HTTP_STATUS.SERVER_ERROR,t.HTTP_STATUS.BAD_GATEWAY,t.HTTP_STATUS.SERVICE_UNAVAILABLE,t.HTTP_STATUS.GATEWAY_TIMEOUT].includes(e),{shouldFallback:!0,cooldownMs:t.COOLDOWN_MS.transient}},"formatRetryAfter",0,function(e){if(!e)return"";let t=new Date(e).getTime()-Date.now();if(t<=0)return"reset after 0s";let o=Math.ceil(t/1e3),i=Math.floor(o/3600),r=Math.floor(o%3600/60),n=o%60,a=[];return i>0&&a.push(`${i}h`),r>0&&a.push(`${r}m`),(n>0||0===a.length)&&a.push(`${n}s`),`reset after ${a.join(" ")}`},"getEarliestModelLockUntil",0,function(e){if(!e)return null;let t=null,o=Date.now();for(let[r,n]of Object.entries(e)){if(!r.startsWith(i)||!n)continue;let e=new Date(n).getTime();e<=o||(!t||e<t)&&(t=e)}return t?new Date(t).toISOString():null},"isModelLockActive",0,function(e,t){let o=e[n(t)]||e[r];return!!o&&new Date(o).getTime()>Date.now()}])},23136,e=>{"use strict";var t=e.i(26753),o=e.i(1102),i=e.i(27075),r=e.i(88077),n=e.i(46160);let a=Promise.resolve();async function l(e,c=null,s=null){let d,u=c instanceof Set?c:c?new Set([c]):new Set,p=a;a=new Promise(e=>{d=e});try{let a;await p;let l=(0,r.resolveProviderId)(e),c=await (0,t.getProviderConnections)({provider:l,isActive:!0});if(n.debug("AUTH",`${e} | total connections: ${c.length}, excludeIds: ${u.size>0?[...u].join(","):"none"}, model: ${s||"any"}`),0===c.length)return n.warn("AUTH",`No credentials for ${e}`),null;let d=c.filter(e=>!(u.has(e.id)||(0,i.isModelLockActive)(e,s)));if(n.debug("AUTH",`${e} | available: ${d.length}/${c.length}`),c.forEach(e=>{let t=u.has(e.id),o=(0,i.isModelLockActive)(e,s);if(t||o){let r=(0,i.getEarliestModelLockUntil)(e);n.debug("AUTH",` → ${e.id?.slice(0,8)} | ${t?"excluded":""} ${o?`modelLocked(${s}) until ${r}`:""}`)}}),0===d.length){let t=c.filter(e=>(0,i.isModelLockActive)(e,s)),o=t.map(e=>(0,i.getEarliestModelLockUntil)(e)).filter(Boolean).sort()[0]||null;if(o){let r=t[0];return n.warn("AUTH",`${e} | all ${c.length} accounts locked for ${s||"all"} (${(0,i.formatRetryAfter)(o)}) | lastError=${r?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:o,retryAfterHuman:(0,i.formatRetryAfter)(o),lastError:r?.lastError||null,lastErrorCode:r?.errorCode||null}}return n.warn("AUTH",`${e} | all ${c.length} accounts unavailable`),null}let m=await (0,t.getSettings)(),f=(m.providerStrategies||{})[l]||{},h=f.fallbackStrategy||m.fallbackStrategy||"fill-first";if("round-robin"===h){let e=f.stickyRoundRobinLimit||m.stickyRoundRobinLimit||3,o=[...d].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(t.lastUsedAt)-new Date(e.lastUsedAt):-1:1:(e.priority||999)-(t.priority||999))[0],i=o?.consecutiveUseCount||0;o&&o.lastUsedAt&&i<e?(a=o,await (0,t.updateProviderConnection)(a.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(a.consecutiveUseCount||0)+1})):(a=[...d].sort((e,t)=>e.lastUsedAt||t.lastUsedAt?e.lastUsedAt?t.lastUsedAt?new Date(e.lastUsedAt)-new Date(t.lastUsedAt):1:-1:(e.priority||999)-(t.priority||999))[0],await (0,t.updateProviderConnection)(a.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else a=d[0];let g=await (0,o.resolveConnectionProxyConfig)(a.providerSpecificData||{});return{apiKey:a.apiKey,accessToken:a.accessToken,refreshToken:a.refreshToken,projectId:a.projectId,connectionName:a.displayName||a.name||a.email||a.id,copilotToken:a.providerSpecificData?.copilotToken,providerSpecificData:{...a.providerSpecificData||{},connectionProxyEnabled:g.connectionProxyEnabled,connectionProxyUrl:g.connectionProxyUrl,connectionNoProxy:g.connectionNoProxy,connectionProxyPoolId:g.proxyPoolId||null},connectionId:a.id,testStatus:a.testStatus,lastError:a.lastError,_connection:a}}finally{d&&d()}}async function c(e,o,r,a=null,l=null){let s=(await (0,t.getProviderConnections)({provider:a})).find(t=>t.id===e),d=s?.backoffLevel||0,{shouldFallback:u,cooldownMs:p,newBackoffLevel:m}=(0,i.checkFallbackError)(o,r,d);if(!u)return{shouldFallback:!1,cooldownMs:0};let f="string"==typeof r?r.slice(0,100):"Provider error",h=(0,i.buildModelLockUpdate)(l,p);await (0,t.updateProviderConnection)(e,{...h,testStatus:"unavailable",lastError:f,errorCode:o,lastErrorAt:new Date().toISOString(),backoffLevel:m??d});let g=Object.keys(h)[0],b=s?.displayName||s?.name||s?.email||e.slice(0,8);return n.warn("AUTH",`${b} locked ${g} for ${Math.round(p/1e3)}s [${o}]`),a&&o&&f&&console.error(`❌ ${a} [${o}]: ${f}`),{shouldFallback:!0,cooldownMs:p}}async function s(e,o,i=null){let r=o._connection||o,a=Date.now(),l=Object.keys(r).filter(e=>e.startsWith("modelLock_"));if(!r.testStatus&&!r.lastError&&0===l.length)return;let c=l.filter(e=>{if(i&&e===`modelLock_${i}`||i&&"modelLock___all"===e)return!0;let t=r[e];return t&&new Date(t).getTime()<=a});if(0===c.length&&"unavailable"!==r.testStatus&&!r.lastError)return;let d=l.filter(e=>{if(c.includes(e))return!1;let t=r[e];return t&&new Date(t).getTime()>a}),u=Object.fromEntries(c.map(e=>[e,null]));0===d.length&&Object.assign(u,{testStatus:"active",lastError:null,lastErrorAt:null,backoffLevel:0}),await (0,t.updateProviderConnection)(e,u);let p=r?.displayName||r?.name||r?.email||e.slice(0,8);n.info("AUTH",`Account ${p} cleared lock for model=${i||"__all"}`)}async function d(e){return!!e&&await (0,t.validateApiKey)(e)}e.s(["clearAccountError",0,s,"extractApiKey",0,function(e){let t=e.headers.get("Authorization");if(t?.startsWith("Bearer "))return t.slice(7);let o=e.headers.get("x-api-key");return o||null},"getProviderCredentials",0,l,"isValidApiKey",0,d,"markAccountUnavailable",0,c])},84650,e=>{"use strict";var t=e.i(26753),o=e.i(84180);async function i(e){let i=(0,o.parseModel)(e);if(!i.isAlias){if(i.provider===i.providerAlias){let e=(await (0,t.getProviderNodes)({type:"openai-compatible"})).find(e=>e.prefix===i.providerAlias);if(e)return{provider:e.id,model:i.model};let o=(await (0,t.getProviderNodes)({type:"anthropic-compatible"})).find(e=>e.prefix===i.providerAlias);if(o)return{provider:o.id,model:i.model}}return{provider:i.provider,model:i.model}}return await (0,t.getComboByName)(i.model)?{provider:null,model:i.model}:(0,o.getModelInfoCore)(e,t.getModelAliases)}async function r(e){if(e.includes("/"))return null;let o=await (0,t.getComboByName)(e);return o&&o.models&&o.models.length>0?o.models:null}e.s(["getComboModels",0,r,"getModelInfo",0,i])}];
2
2
 
3
3
  //# sourceMappingURL=_0_ovl1h._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[67434,a=>{"use strict";var b=a.i(87945);Object.entries(a.i(13364).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(b.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),a.s([])},83945,a=>{"use strict";a.i(13364),a.i(67434),a.s(["APP_CONFIG",0,{name:"Endpoint Proxy",description:"AI Infrastructure Management",version:"0.3.93"},"CONSOLE_LOG_CONFIG",0,{maxLines:200,pollIntervalMs:1e3},"THEME_CONFIG",0,{storageKey:"theme",defaultTheme:"system"}],83945)},22259,20226,a=>{"use strict";let b,c;var d=a.i(72131);let e=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},f=a=>{let b=a?e(a):e,c=a=>(function(a,b=a=>a){let c=d.default.useSyncExternalStore(a.subscribe,d.default.useCallback(()=>b(a.getState()),[a,b]),d.default.useCallback(()=>b(a.getInitialState()),[a,b]));return d.default.useDebugValue(c),c})(b,a);return Object.assign(c,b),c},g=a=>a?f(a):f;a.s(["create",0,g],20226);let h=a=>b=>{try{let c=a(b);if(c instanceof Promise)return c;return{then:a=>h(a)(c),catch(a){return this}}}catch(a){return{then(a){return this},catch:b=>h(b)(a)}}};var i=a.i(83945);let j=g((b=(a,b)=>({theme:i.THEME_CONFIG.defaultTheme,setTheme:b=>{a({theme:b}),k(b)},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c}),k(c)},initTheme:()=>{k(b().theme)}}),c={name:i.THEME_CONFIG.storageKey},(a,d,e)=>{let f,g={storage:function(a){let b;try{b=a()}catch(a){return}return{getItem:a=>{var c;let d=a=>null===a?null:JSON.parse(a,void 0),e=null!=(c=b.getItem(a))?c:null;return e instanceof Promise?e.then(d):d(e)},setItem:(a,c)=>b.setItem(a,JSON.stringify(c,void 0)),removeItem:a=>b.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=g.storage;if(!m)return b((...b)=>{console.warn(`[zustand persist middleware] Unable to update item '${g.name}', the given storage is currently unavailable.`),a(...b)},d,e);let n=()=>{let a=g.partialize({...d()});return m.setItem(g.name,{state:a,version:g.version})},o=e.setState;e.setState=(a,b)=>(o(a,b),n());let p=b((...b)=>(a(...b),n()),d,e);e.getInitialState=()=>p;let q=()=>{var b,c;if(!m)return;let e=++j;i=!1,k.forEach(a=>{var b;return a(null!=(b=d())?b:p)});let o=(null==(c=g.onRehydrateStorage)?void 0:c.call(g,null!=(b=d())?b:p))||void 0;return h(m.getItem.bind(m))(g.name).then(a=>{if(a)if("number"!=typeof a.version||a.version===g.version)return[!1,a.state];else{if(g.migrate){let b=g.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(b=>{var c;if(e!==j)return;let[h,i]=b;if(a(f=g.merge(i,null!=(c=d())?c:p),!0),h)return n()}).then(()=>{e===j&&(null==o||o(d(),void 0),f=d(),i=!0,l.forEach(a=>a(f)))}).catch(a=>{e===j&&(null==o||o(void 0,a))})};return e.persist={setOptions:a=>{g={...g,...a},a.storage&&(m=a.storage)},clearStorage:()=>{null==m||m.removeItem(g.name)},getOptions:()=>g,rehydrate:()=>q(),hasHydrated:()=>i,onHydrate:a=>(k.add(a),()=>{k.delete(a)}),onFinishHydration:a=>(l.add(a),()=>{l.delete(a)})},g.skipHydration||q(),f||p}));function k(a){}a.s(["default",0,j],22259)},14931,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(22259);a.s(["ThemeProvider",0,function({children:a}){let{initTheme:e}=(0,d.default)();return(0,c.useEffect)(()=>{e()},[e]),(0,b.jsx)(b.Fragment,{children:a})}])},50979,87724,a=>{"use strict";let b="locale";function c(a){return"zh"===a||"zh-CN"===a?"zh-CN":"en"===a?"en":"vi"===a?"vi":"zh-TW"===a?"zh-TW":"ja"===a?"ja":"pt-BR"===a?"pt-BR":"pt-PT"===a?"pt-PT":"ko"===a?"ko":"es"===a?"es":"de"===a?"de":"fr"===a?"fr":"he"===a?"he":"ar"===a?"ar":"ru"===a?"ru":"pl"===a?"pl":"cs"===a?"cs":"nl"===a?"nl":"tr"===a?"tr":"uk"===a?"uk":"tl"===a?"tl":"id"===a?"id":"th"===a?"th":"hi"===a?"hi":"bn"===a?"bn":"ur"===a?"ur":"ro"===a?"ro":"sv"===a?"sv":"it"===a?"it":"el"===a?"el":"hu"===a?"hu":"fi"===a?"fi":"da"===a?"da":"no"===a?"no":"en"}a.s(["DEFAULT_LOCALE",0,"en","LOCALES",0,["en","vi","zh-CN","zh-TW","ja","pt-BR","pt-PT","ko","es","de","fr","he","ar","ru","pl","cs","nl","tr","uk","tl","id","th","hi","bn","ur","ro","sv","it","el","hu","fi","da","no"],"LOCALE_COOKIE",0,b,"normalizeLocale",0,c],87724);let d={},e="en",f=[];async function g(a){if("en"===a){d={};return}try{let b=await fetch(`/i18n/literals/${a}.json`);d=await b.json()}catch(a){console.error("Failed to load translations:",a),d={}}}function h(a){if(!a||"string"!=typeof a)return a;let b=a.trim();return b&&"en"!==e&&d[b]||a}function i(a){if(!a.nodeValue||!a.nodeValue.trim())return;let b=a.parentElement;if(!b)return;let c=b;for(;c;){if(c.hasAttribute&&c.hasAttribute("data-i18n-skip"))return;c=c.parentElement}if(["script","style","code","pre","colgroup","table","thead","tbody","tfoot","tr","select","datalist","optgroup"].includes(b.tagName?.toLowerCase()))return;a._originalText||(a._originalText=a.nodeValue);let d=h(a._originalText);d!==a.nodeValue&&(a.nodeValue=d)}async function j(){}async function k(){e=function(){if("u"<typeof document)return"en";let a=document.cookie.split(";").find(a=>a.trim().startsWith(`${b}=`));return c(a?decodeURIComponent(a.split("=")[1]):"en")}(),await g(e),f.forEach(a=>a()),function(a){let b;if(!a)return;let c=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1),d=[];for(;b=c.nextNode();)d.push(b);d.forEach(i)}(document.body)}a.s(["initRuntimeI18n",0,j,"reloadTranslations",0,k,"translate",0,h],50979)}];
1
+ module.exports=[67434,a=>{"use strict";var b=a.i(87945);Object.entries(a.i(13364).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(b.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),a.s([])},83945,a=>{"use strict";a.i(13364),a.i(67434),a.s(["APP_CONFIG",0,{name:"Endpoint Proxy",description:"AI Infrastructure Management",version:"0.3.94"},"CONSOLE_LOG_CONFIG",0,{maxLines:200,pollIntervalMs:1e3},"THEME_CONFIG",0,{storageKey:"theme",defaultTheme:"system"}],83945)},22259,20226,a=>{"use strict";let b,c;var d=a.i(72131);let e=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},f=a=>{let b=a?e(a):e,c=a=>(function(a,b=a=>a){let c=d.default.useSyncExternalStore(a.subscribe,d.default.useCallback(()=>b(a.getState()),[a,b]),d.default.useCallback(()=>b(a.getInitialState()),[a,b]));return d.default.useDebugValue(c),c})(b,a);return Object.assign(c,b),c},g=a=>a?f(a):f;a.s(["create",0,g],20226);let h=a=>b=>{try{let c=a(b);if(c instanceof Promise)return c;return{then:a=>h(a)(c),catch(a){return this}}}catch(a){return{then(a){return this},catch:b=>h(b)(a)}}};var i=a.i(83945);let j=g((b=(a,b)=>({theme:i.THEME_CONFIG.defaultTheme,setTheme:b=>{a({theme:b}),k(b)},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c}),k(c)},initTheme:()=>{k(b().theme)}}),c={name:i.THEME_CONFIG.storageKey},(a,d,e)=>{let f,g={storage:function(a){let b;try{b=a()}catch(a){return}return{getItem:a=>{var c;let d=a=>null===a?null:JSON.parse(a,void 0),e=null!=(c=b.getItem(a))?c:null;return e instanceof Promise?e.then(d):d(e)},setItem:(a,c)=>b.setItem(a,JSON.stringify(c,void 0)),removeItem:a=>b.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=g.storage;if(!m)return b((...b)=>{console.warn(`[zustand persist middleware] Unable to update item '${g.name}', the given storage is currently unavailable.`),a(...b)},d,e);let n=()=>{let a=g.partialize({...d()});return m.setItem(g.name,{state:a,version:g.version})},o=e.setState;e.setState=(a,b)=>(o(a,b),n());let p=b((...b)=>(a(...b),n()),d,e);e.getInitialState=()=>p;let q=()=>{var b,c;if(!m)return;let e=++j;i=!1,k.forEach(a=>{var b;return a(null!=(b=d())?b:p)});let o=(null==(c=g.onRehydrateStorage)?void 0:c.call(g,null!=(b=d())?b:p))||void 0;return h(m.getItem.bind(m))(g.name).then(a=>{if(a)if("number"!=typeof a.version||a.version===g.version)return[!1,a.state];else{if(g.migrate){let b=g.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(b=>{var c;if(e!==j)return;let[h,i]=b;if(a(f=g.merge(i,null!=(c=d())?c:p),!0),h)return n()}).then(()=>{e===j&&(null==o||o(d(),void 0),f=d(),i=!0,l.forEach(a=>a(f)))}).catch(a=>{e===j&&(null==o||o(void 0,a))})};return e.persist={setOptions:a=>{g={...g,...a},a.storage&&(m=a.storage)},clearStorage:()=>{null==m||m.removeItem(g.name)},getOptions:()=>g,rehydrate:()=>q(),hasHydrated:()=>i,onHydrate:a=>(k.add(a),()=>{k.delete(a)}),onFinishHydration:a=>(l.add(a),()=>{l.delete(a)})},g.skipHydration||q(),f||p}));function k(a){}a.s(["default",0,j],22259)},14931,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(22259);a.s(["ThemeProvider",0,function({children:a}){let{initTheme:e}=(0,d.default)();return(0,c.useEffect)(()=>{e()},[e]),(0,b.jsx)(b.Fragment,{children:a})}])},50979,87724,a=>{"use strict";let b="locale";function c(a){return"zh"===a||"zh-CN"===a?"zh-CN":"en"===a?"en":"vi"===a?"vi":"zh-TW"===a?"zh-TW":"ja"===a?"ja":"pt-BR"===a?"pt-BR":"pt-PT"===a?"pt-PT":"ko"===a?"ko":"es"===a?"es":"de"===a?"de":"fr"===a?"fr":"he"===a?"he":"ar"===a?"ar":"ru"===a?"ru":"pl"===a?"pl":"cs"===a?"cs":"nl"===a?"nl":"tr"===a?"tr":"uk"===a?"uk":"tl"===a?"tl":"id"===a?"id":"th"===a?"th":"hi"===a?"hi":"bn"===a?"bn":"ur"===a?"ur":"ro"===a?"ro":"sv"===a?"sv":"it"===a?"it":"el"===a?"el":"hu"===a?"hu":"fi"===a?"fi":"da"===a?"da":"no"===a?"no":"en"}a.s(["DEFAULT_LOCALE",0,"en","LOCALES",0,["en","vi","zh-CN","zh-TW","ja","pt-BR","pt-PT","ko","es","de","fr","he","ar","ru","pl","cs","nl","tr","uk","tl","id","th","hi","bn","ur","ro","sv","it","el","hu","fi","da","no"],"LOCALE_COOKIE",0,b,"normalizeLocale",0,c],87724);let d={},e="en",f=[];async function g(a){if("en"===a){d={};return}try{let b=await fetch(`/i18n/literals/${a}.json`);d=await b.json()}catch(a){console.error("Failed to load translations:",a),d={}}}function h(a){if(!a||"string"!=typeof a)return a;let b=a.trim();return b&&"en"!==e&&d[b]||a}function i(a){if(!a.nodeValue||!a.nodeValue.trim())return;let b=a.parentElement;if(!b)return;let c=b;for(;c;){if(c.hasAttribute&&c.hasAttribute("data-i18n-skip"))return;c=c.parentElement}if(["script","style","code","pre","colgroup","table","thead","tbody","tfoot","tr","select","datalist","optgroup"].includes(b.tagName?.toLowerCase()))return;a._originalText||(a._originalText=a.nodeValue);let d=h(a._originalText);d!==a.nodeValue&&(a.nodeValue=d)}async function j(){}async function k(){e=function(){if("u"<typeof document)return"en";let a=document.cookie.split(";").find(a=>a.trim().startsWith(`${b}=`));return c(a?decodeURIComponent(a.split("=")[1]):"en")}(),await g(e),f.forEach(a=>a()),function(a){let b;if(!a)return;let c=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1),d=[];for(;b=c.nextNode();)d.push(b);d.forEach(i)}(document.body)}a.s(["initRuntimeI18n",0,j,"reloadTranslations",0,k,"translate",0,h],50979)}];
2
2
 
3
3
  //# sourceMappingURL=src_0_xhepz._.js.map
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/03~yq9q893hmn.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/b_Drjo0YdAiFCInKT62q9/_buildManifest.js",
11
- "static/b_Drjo0YdAiFCInKT62q9/_ssgManifest.js",
12
- "static/b_Drjo0YdAiFCInKT62q9/_clientMiddlewareManifest.js"
10
+ "static/SBId4_Ewcg0cJ2p2zlKeg/_buildManifest.js",
11
+ "static/SBId4_Ewcg0cJ2p2zlKeg/_ssgManifest.js",
12
+ "static/SBId4_Ewcg0cJ2p2zlKeg/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/0vn3aevizo-in.js",