zevairouter 1.1.13 → 1.1.15

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 (351) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +6 -6
  4. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  5. package/cli/app/.next-cli-build/prerender-manifest.json +3 -3
  6. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  34. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  35. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  36. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  37. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  38. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  39. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  40. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  41. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  42. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  43. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  44. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  45. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  46. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  47. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  48. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  49. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  50. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  51. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  52. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  53. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  54. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  55. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  56. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  57. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  58. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  59. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  60. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  61. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  62. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  63. package/cli/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +1 -1
  64. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  66. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  67. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  68. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  69. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  70. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  72. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  73. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +3 -3
  75. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  76. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  77. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  78. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  79. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  81. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  82. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  83. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  84. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  85. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  86. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  87. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  88. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  89. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  90. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  91. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  92. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  93. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  94. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  95. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  96. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  97. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  99. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  100. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  101. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  102. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  103. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  104. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  105. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  106. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  107. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  108. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  109. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  110. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  111. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  112. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  113. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  114. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  115. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  116. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  117. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  118. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  119. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  120. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  121. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  122. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  123. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  124. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  125. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  126. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  127. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  128. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  129. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  130. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  131. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  132. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  133. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  134. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  135. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  136. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  137. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  138. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  139. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  140. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  141. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  142. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  143. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  144. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  145. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  146. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  147. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  148. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  149. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  150. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  151. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  152. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  153. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  154. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  155. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  156. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  157. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  158. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  159. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  160. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  161. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  162. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  163. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  164. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  165. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  166. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  167. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  168. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  169. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  170. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  171. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  172. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  173. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  174. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  175. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  176. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  177. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  178. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  179. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  180. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  181. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  182. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  183. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  184. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  185. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  186. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  187. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  188. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  189. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  190. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  191. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  192. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  193. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  194. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  195. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  196. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  197. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  198. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  199. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  200. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  201. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  202. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  203. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  204. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  205. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  206. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  207. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  208. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  209. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  210. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  211. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  212. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  213. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  214. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  215. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  216. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  217. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  218. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  219. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  220. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  221. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  222. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  223. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  224. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  225. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  226. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  227. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  228. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  229. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  230. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  231. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  232. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  233. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  234. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  235. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  236. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  237. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  238. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  239. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  240. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  241. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  242. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  243. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  244. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  245. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  246. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  247. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  248. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  249. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  250. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  251. package/cli/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  252. package/cli/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  253. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  254. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  255. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  256. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  257. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  258. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  259. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  260. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  261. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  262. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  263. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  264. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  265. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  266. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  267. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  268. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  269. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  270. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  271. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  272. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  273. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  274. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  275. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  276. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  277. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  278. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  279. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  280. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  281. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  282. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  283. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  284. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  285. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  286. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  287. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  288. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  289. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  290. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  291. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  292. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  293. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  294. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  295. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  296. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  297. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  298. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  299. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  300. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  301. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  302. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  303. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  304. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  305. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  306. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  307. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  308. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  309. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  310. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  311. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  312. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  313. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  314. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  315. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  316. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  317. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  318. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  319. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  320. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  321. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  322. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  323. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  324. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  325. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  326. package/cli/app/.next-cli-build/server/app-paths-manifest.json +6 -6
  327. package/cli/app/.next-cli-build/server/chunks/1131.js +1 -1
  328. package/cli/app/.next-cli-build/server/chunks/1350.js +1 -1
  329. package/cli/app/.next-cli-build/server/chunks/220.js +1 -1
  330. package/cli/app/.next-cli-build/server/chunks/2760.js +1 -1
  331. package/cli/app/.next-cli-build/server/chunks/3949.js +1 -1
  332. package/cli/app/.next-cli-build/server/chunks/4827.js +1 -1
  333. package/cli/app/.next-cli-build/server/chunks/5295.js +3 -3
  334. package/cli/app/.next-cli-build/server/chunks/6651.js +14 -10
  335. package/cli/app/.next-cli-build/server/chunks/7319.js +23 -19
  336. package/cli/app/.next-cli-build/server/chunks/7634.js +1 -1
  337. package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
  338. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  339. package/cli/app/.next-cli-build/server/chunks/8491.js +1 -1
  340. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  341. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  342. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  343. package/cli/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  344. package/cli/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  345. package/cli/app/.next-cli-build/static/chunks/{620-92e97ab01cb4c25a.js → 620-2e6639e4ca9afb1d.js} +1 -1
  346. package/cli/app/CHANGELOG.md +10 -0
  347. package/cli/app/package.json +1 -1
  348. package/cli/package.json +1 -1
  349. package/package.json +1 -1
  350. /package/cli/app/.next-cli-build/static/{JzhJR_QLUCS172Am3eS9H → S4Ni0EVNQQgndbz1Kanxu}/_buildManifest.js +0 -0
  351. /package/cli/app/.next-cli-build/static/{JzhJR_QLUCS172Am3eS9H → S4Ni0EVNQQgndbz1Kanxu}/_ssgManifest.js +0 -0
@@ -3,7 +3,7 @@ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA8iMH5c02LilrsERw9t6Pv5Nc
3
3
  4k6Pz1EaDicBMpdpxKduSZu5OANqUq8er4GM95omAGIOPOh+Nx0spthYA2BqGz+l
4
4
  6HRkPJ7S236FZz73In/KVuLnwI8JJ2CbuJap8kvheCCZpmAWpb/cPx/3Vr/J6I17
5
5
  XcW+ML9FoCI6AOvOzwIDAQAB
6
- -----END PUBLIC KEY-----`},39006:a=>{a.exports=JSON.parse('{"name":"zevairouter","version":"1.1.13","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"cli/cli.js"},"files":["cli/cli.js","cli/app/","cli/hooks/","cli/src/","cli/package.json","cli/README.md","cli/LICENSE","scripts/start-standalone.mjs","README.md","README.zh-CN.md","DOCKER.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"node scripts/build-app.mjs","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","lint":"eslint .","test":"vitest run --config tests/vitest.config.js","build:cli":"node cli/scripts/build-cli.js","audit:package":"node cli/scripts/audit-package.mjs","smoke:package":"node cli/scripts/smoke-package.mjs","verify:mobile-scroll":"node cli/scripts/verify-dashboard-mobile-scroll.mjs","candidate:build":"node cli/scripts/local-candidate.mjs build","candidate:install":"node cli/scripts/local-candidate.mjs install","candidate:status":"node cli/scripts/local-candidate.mjs status","candidate:rollback":"node cli/scripts/local-candidate.mjs rollback","release":"node cli/scripts/release.js","prepack":"npm run build:cli && npm run audit:package","postinstall":"node cli/hooks/postinstall.js"},"dependencies":{"@node-saml/node-saml":"5.1.0","next":"16.2.12","node-machine-id":"1.1.12","react":"19.2.4","react-dom":"19.2.4","sql.js":"1.14.1","yaml":"2.9.0"},"comment_optional_runtime":"Optional packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses CloakBrowser with playwright-core; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3, node-pty, and systray2.","overrides":{"body-parser":"^2.3.0","brace-expansion":"5.0.9","dompurify":"^3.4.12","ip-address":"^10.4.0","nanoid":"^3.3.18","postcss":"^8.5.10","sharp":"^0.35.0"},"comment_overrides":"Security floors for transitive dependencies. ESLint\'s legacy minimatch is a private, source-pinned 3.1.5 compatibility package backed by brace-expansion 5.0.9; modern minimatch and nanoid use fixed floors directly. Monaco still pins an old DOMPurify; Express and Next may resolve vulnerable body-parser/sharp releases. Recheck and remove overrides once parent packages require fixed versions.","devDependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.1.18","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","better-sqlite3":"^12.6.2","chalk":"^4.1.2","confbox":"^0.2.4","dompurify":"^3.4.12","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.2.9","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","minimatch":"file:vendor/minimatch3-secure","monaco-editor":"^0.55.1","node-forge":"^1.3.3","open":"^11.0.0","ora":"^9.1.0","postcss":"^8.5.10","prop-types":"^15.8.1","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","tailwindcss":"^4","undici":"^8.10.0","uuid":"^14.0.1","vitest":"^4.1.10","zustand":"^5.0.10"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Verifiedlabs/zevairouter.git"},"bugs":{"url":"https://github.com/Verifiedlabs/zevairouter/issues"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},53225:(a,b,c)=>{c.d(b,{EV:()=>m,X5:()=>l});var d=c(55511),e=c(39609),f=c(78085),g=c(21031),h=c(30022);let i=new Map,j=new Map;async function k(a,b,c=null){let d,g,i={userId:(g=a?.providerSpecificData||{}).userId,authToken:a.accessToken,name:a.displayName||"",email:a.email||"",machineId:g.machineId||""};if(!i.userId||!i.authToken)return null;let j=String(i.authToken).startsWith("jt-")?`${h.j9}/algo/api/v2/model/list`:h.t6,l={Accept:"application/json","Accept-Encoding":"identity",...(0,f.d)(Buffer.alloc(0),j,i)},m=new AbortController,n=null,o=null;try{n=setTimeout(()=>m.abort("timeout"),15e3),b&&"function"==typeof b.addEventListener&&(b.aborted?m.abort(b.reason):(o=()=>m.abort(b.reason),b.addEventListener("abort",o))),d=await (0,e.proxyAwareFetch)(j,{method:"GET",headers:l,signal:m.signal},c)}finally{n&&clearTimeout(n),b&&o&&b.removeEventListener("abort",o)}if(!d.ok)return null;let p=await d.json().catch(()=>null);if(!p||!Array.isArray(p.chat))return null;let q=[],r=new Map;for(let a of p.chat){if(!a||"object"!=typeof a)continue;let b=a.key;if(!b||(r.set(b,a),!1===a.enable))continue;let c=a.display_name||b,d=Number(a.max_input_tokens)||131072;q.push({id:b,name:`${c}`,contextLength:d,isVL:!!a.is_vl,isReasoning:!!a.is_reasoning,maxOutputTokens:Number(a.max_output_tokens)||0,description:a.description||""})}return{models:q,rawConfigs:r}}async function l(a,b,c={}){let d=await m(a,c);if(!d)return null;let e=d.rawConfigs.get(b);return e?{...e,key:b}:null}async function m(a,b={}){var c;let e,f;try{e=await (0,g.iC)(a,b)}catch(a){return b.log?.warn?.("QODER","PAT exchange failed",{code:a?.code||null,status:a?.status||null}),null}if(!e?.accessToken||!(e.providerSpecificData||{}).userId)return null;let h=(c=e,f=(c?.providerSpecificData||{}).userId||c?.refreshToken||c?.accessToken||"anonymous",(0,d.createHash)("sha256").update(`qoder:${f}`).digest("hex")),l=Date.now();if(!b.forceRefresh){let a=i.get(h);if(a&&a.expiresAt>l)return a}let n=j.get(h);if(n&&!b.forceRefresh)return n;let o=(async()=>{let a=await k(e,b.signal,b.proxyOptions);if(!a)return null;let c={expiresAt:Date.now()+36e5,models:a.models,rawConfigs:a.rawConfigs,fetched:!0};return i.set(h,c),c})();j.set(h,o);try{return await o}finally{j.get(h)===o&&j.delete(h)}}},78085:(a,b,c)=>{c.d(b,{d:()=>i});var d=c(55511),e=c.n(d),f=c(47293),g=c(30022);function h(a){return e().createHash("md5").update(a).digest("hex")}function i(a,b,c){var d;let i,j;if(!c?.userId)throw Error("cosy: user id is empty");if(!c?.authToken)throw Error("cosy: auth token is empty");let k=Buffer.isBuffer(a)?a:"string"==typeof a?Buffer.from(a,"latin1"):Buffer.from(a||[]),{cosyKey:l,info:m}=(d={uid:c.userId,security_oauth_token:c.authToken,name:c.name||"",aid:"",email:c.email||""},i=(0,f.A)().slice(0,16),j=function(a,b){var c;let d,f,g=Buffer.from(b,"utf8");if(16!==g.length)throw Error(`aes key must be 16 bytes, got ${g.length}`);let h=g.subarray(0,16),i=e().createCipheriv("aes-128-cbc",g,h);i.setAutoPadding(!1);let j=(d=16-(c=Buffer.from(a,"utf8")).length%16,f=Buffer.alloc(c.length+d,d),c.copy(f,0),f);return Buffer.concat([i.update(j),i.final()]).toString("base64")}(JSON.stringify(d),i),{cosyKey:e().publicEncrypt({key:g.pr,padding:e().constants.RSA_PKCS1_PADDING},Buffer.from(i,"utf8")).toString("base64"),info:j}),n=String(Math.floor(Date.now()/1e3)),o=JSON.stringify({version:"v1",requestId:(0,f.A)(),info:m,cosyVersion:g.cT,ideVersion:""}),p=Buffer.from(o,"utf8").toString("base64"),q=function(a){let b;try{b=new URL(a).pathname||""}catch{return""}return b.startsWith("/algo")?b.slice(5):b}(b),r=`${p}
6
+ -----END PUBLIC KEY-----`},39006:a=>{a.exports=JSON.parse('{"name":"zevairouter","version":"1.1.15","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"cli/cli.js"},"files":["cli/cli.js","cli/app/","cli/hooks/","cli/src/","cli/package.json","cli/README.md","cli/LICENSE","scripts/start-standalone.mjs","README.md","README.zh-CN.md","DOCKER.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"node scripts/build-app.mjs","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","lint":"eslint .","test":"vitest run --config tests/vitest.config.js","build:cli":"node cli/scripts/build-cli.js","audit:package":"node cli/scripts/audit-package.mjs","smoke:package":"node cli/scripts/smoke-package.mjs","verify:mobile-scroll":"node cli/scripts/verify-dashboard-mobile-scroll.mjs","candidate:build":"node cli/scripts/local-candidate.mjs build","candidate:install":"node cli/scripts/local-candidate.mjs install","candidate:status":"node cli/scripts/local-candidate.mjs status","candidate:rollback":"node cli/scripts/local-candidate.mjs rollback","release":"node cli/scripts/release.js","prepack":"npm run build:cli && npm run audit:package","postinstall":"node cli/hooks/postinstall.js"},"dependencies":{"@node-saml/node-saml":"5.1.0","next":"16.2.12","node-machine-id":"1.1.12","react":"19.2.4","react-dom":"19.2.4","sql.js":"1.14.1","yaml":"2.9.0"},"comment_optional_runtime":"Optional packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses CloakBrowser with playwright-core; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3, node-pty, and systray2.","overrides":{"body-parser":"^2.3.0","brace-expansion":"5.0.9","dompurify":"^3.4.12","ip-address":"^10.4.0","nanoid":"^3.3.18","postcss":"^8.5.10","sharp":"^0.35.0"},"comment_overrides":"Security floors for transitive dependencies. ESLint\'s legacy minimatch is a private, source-pinned 3.1.5 compatibility package backed by brace-expansion 5.0.9; modern minimatch and nanoid use fixed floors directly. Monaco still pins an old DOMPurify; Express and Next may resolve vulnerable body-parser/sharp releases. Recheck and remove overrides once parent packages require fixed versions.","devDependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.1.18","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","better-sqlite3":"^12.6.2","chalk":"^4.1.2","confbox":"^0.2.4","dompurify":"^3.4.12","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.2.9","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","minimatch":"file:vendor/minimatch3-secure","monaco-editor":"^0.55.1","node-forge":"^1.3.3","open":"^11.0.0","ora":"^9.1.0","postcss":"^8.5.10","prop-types":"^15.8.1","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","tailwindcss":"^4","undici":"^8.10.0","uuid":"^14.0.1","vitest":"^4.1.10","zustand":"^5.0.10"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Verifiedlabs/zevairouter.git"},"bugs":{"url":"https://github.com/Verifiedlabs/zevairouter/issues"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},53225:(a,b,c)=>{c.d(b,{EV:()=>m,X5:()=>l});var d=c(55511),e=c(39609),f=c(78085),g=c(21031),h=c(30022);let i=new Map,j=new Map;async function k(a,b,c=null){let d,g,i={userId:(g=a?.providerSpecificData||{}).userId,authToken:a.accessToken,name:a.displayName||"",email:a.email||"",machineId:g.machineId||""};if(!i.userId||!i.authToken)return null;let j=String(i.authToken).startsWith("jt-")?`${h.j9}/algo/api/v2/model/list`:h.t6,l={Accept:"application/json","Accept-Encoding":"identity",...(0,f.d)(Buffer.alloc(0),j,i)},m=new AbortController,n=null,o=null;try{n=setTimeout(()=>m.abort("timeout"),15e3),b&&"function"==typeof b.addEventListener&&(b.aborted?m.abort(b.reason):(o=()=>m.abort(b.reason),b.addEventListener("abort",o))),d=await (0,e.proxyAwareFetch)(j,{method:"GET",headers:l,signal:m.signal},c)}finally{n&&clearTimeout(n),b&&o&&b.removeEventListener("abort",o)}if(!d.ok)return null;let p=await d.json().catch(()=>null);if(!p||!Array.isArray(p.chat))return null;let q=[],r=new Map;for(let a of p.chat){if(!a||"object"!=typeof a)continue;let b=a.key;if(!b||(r.set(b,a),!1===a.enable))continue;let c=a.display_name||b,d=Number(a.max_input_tokens)||131072;q.push({id:b,name:`${c}`,contextLength:d,isVL:!!a.is_vl,isReasoning:!!a.is_reasoning,maxOutputTokens:Number(a.max_output_tokens)||0,description:a.description||""})}return{models:q,rawConfigs:r}}async function l(a,b,c={}){let d=await m(a,c);if(!d)return null;let e=d.rawConfigs.get(b);return e?{...e,key:b}:null}async function m(a,b={}){var c;let e,f;try{e=await (0,g.iC)(a,b)}catch(a){return b.log?.warn?.("QODER","PAT exchange failed",{code:a?.code||null,status:a?.status||null}),null}if(!e?.accessToken||!(e.providerSpecificData||{}).userId)return null;let h=(c=e,f=(c?.providerSpecificData||{}).userId||c?.refreshToken||c?.accessToken||"anonymous",(0,d.createHash)("sha256").update(`qoder:${f}`).digest("hex")),l=Date.now();if(!b.forceRefresh){let a=i.get(h);if(a&&a.expiresAt>l)return a}let n=j.get(h);if(n&&!b.forceRefresh)return n;let o=(async()=>{let a=await k(e,b.signal,b.proxyOptions);if(!a)return null;let c={expiresAt:Date.now()+36e5,models:a.models,rawConfigs:a.rawConfigs,fetched:!0};return i.set(h,c),c})();j.set(h,o);try{return await o}finally{j.get(h)===o&&j.delete(h)}}},78085:(a,b,c)=>{c.d(b,{d:()=>i});var d=c(55511),e=c.n(d),f=c(47293),g=c(30022);function h(a){return e().createHash("md5").update(a).digest("hex")}function i(a,b,c){var d;let i,j;if(!c?.userId)throw Error("cosy: user id is empty");if(!c?.authToken)throw Error("cosy: auth token is empty");let k=Buffer.isBuffer(a)?a:"string"==typeof a?Buffer.from(a,"latin1"):Buffer.from(a||[]),{cosyKey:l,info:m}=(d={uid:c.userId,security_oauth_token:c.authToken,name:c.name||"",aid:"",email:c.email||""},i=(0,f.A)().slice(0,16),j=function(a,b){var c;let d,f,g=Buffer.from(b,"utf8");if(16!==g.length)throw Error(`aes key must be 16 bytes, got ${g.length}`);let h=g.subarray(0,16),i=e().createCipheriv("aes-128-cbc",g,h);i.setAutoPadding(!1);let j=(d=16-(c=Buffer.from(a,"utf8")).length%16,f=Buffer.alloc(c.length+d,d),c.copy(f,0),f);return Buffer.concat([i.update(j),i.final()]).toString("base64")}(JSON.stringify(d),i),{cosyKey:e().publicEncrypt({key:g.pr,padding:e().constants.RSA_PKCS1_PADDING},Buffer.from(i,"utf8")).toString("base64"),info:j}),n=String(Math.floor(Date.now()/1e3)),o=JSON.stringify({version:"v1",requestId:(0,f.A)(),info:m,cosyVersion:g.cT,ideVersion:""}),p=Buffer.from(o,"utf8").toString("base64"),q=function(a){let b;try{b=new URL(a).pathname||""}catch{return""}return b.startsWith("/algo")?b.slice(5):b}(b),r=`${p}
7
7
  ${l}
8
8
  ${n}
9
9
  ${k.toString("latin1")}
@@ -1 +1 @@
1
- "use strict";exports.id=8255,exports.ids=[8255],exports.modules={2574:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>E,OPTIONS:()=>D,buildModelsList:()=>C});var d=c(81329),e=c(75681),f=c(89718),g=c(16655),h=c(84917),i=c(53225),j=c(52007),k=c(28948),l=c(84534),m=c(15929),n=c(9760),o=c(3359),p=c(39326),q=c(66306),r=c(29240);let s={kiro:async(a,b={})=>{let c=await (0,h.cW)({connectionId:a.id,accessToken:a.accessToken,refreshToken:a.refreshToken,isActive:a.isActive,quarantinedAt:a.quarantinedAt,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal,onCredentialsRefreshed:async b=>{if(!b?.accessToken)return;let c={accessToken:b.accessToken,lastRefreshAt:new Date().toISOString()};b.refreshToken&&(c.refreshToken=b.refreshToken);let d=Number(b.expiresIn);if(Number.isFinite(d)&&d>0&&(c.expiresIn=d,c.expiresAt=new Date(Date.now()+1e3*d).toISOString()),!await (0,f.updateProviderConnection)(a.id,c))throw Error("Kiro connection disappeared during token refresh");Object.assign(a,c)}});return c?{models:Array.isArray(c.models)?c.models:[]}:null},qoder:async a=>{let b=await (0,p.B)(a.providerSpecificData),c=await (0,i.EV)({apiKey:a.apiKey,accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}},{proxyOptions:b});return c?.models?.length?{models:c.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async a=>{let b=await (0,j.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await (0,k.P)({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null},cline:async a=>{let b=a.apiKey||a.accessToken;if(!b)return null;try{let{buildClineHeaders:a}=await Promise.resolve().then(c.bind(c,15626)),d=await fetch("https://api.cline.bot/api/v1/models",{headers:a(b,{Accept:"application/json"})});if(!d.ok)return null;let e=await d.json(),f=Array.isArray(e)?e:e?.data;if(!Array.isArray(f)||0===f.length)return null;let g=f.filter(a=>"string"==typeof a?.id).map(a=>({id:a.id,name:a.name||a.id}));return g.length?{models:g}:null}catch{return null}},github:async a=>{let b=await (0,l.v)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},blackbox:async a=>(0,n.x0)({apiKey:a.apiKey,accessToken:a.accessToken}),codebuddy:async()=>(0,m.A3)("codebuddy",{log:console}),"codebuddy-cn":async()=>(0,m.A3)("codebuddy-cn",{log:console})},t=/[-_][0-9a-f]{8,}$/i,u=0,v={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video",music:"music"};function w(a){return a?.type&&v[a.type]||"llm"}async function x(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:d,cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}function y(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}function z(a,b,c,d,e){if("string"!=typeof a)return"";let f=a.trim();for(let a of new Set([b?.providerSpecificData?.prefix,c,d,e].filter(a=>"string"==typeof a&&""!==a.trim()))){let b=`${a.trim()}/`;if(f.startsWith(b))return f.slice(b.length)}return f}function A(a,b,c,d){if("string"!=typeof a)return"";let e=a.trim();for(let a of new Set([b?.providerSpecificData?.prefix,c,d,"kiro"].filter(a=>"string"==typeof a&&""!==a.trim()))){let b=`${a.trim()}/`;if(e.startsWith(b))return e.slice(b.length)}return e}async function B(a,b,c){let d=new Set,e=[],f=0;for(let g of a){let a=function(a){let b=a?.providerSpecificData?.enabledModels;return Array.isArray(b)?b.filter(a=>"string"==typeof a&&""!==a.trim()):[]}(g);if(a.length>0)for(let e of a){let a=A(e,g,b,c);a&&d.add(a)}else(g?.providerSpecificData||{}).profileArn||(f+=1),e.push(g)}let g=new Map([...e.filter(a=>(0,h.G9)(a.id)),...function(a){if(0===a.length)return[];let b=[],c=0,d=u%a.length;for(;c<a.length&&b.length<4;){let e=a[d];(0,h.G9)(e.id)||b.push(e),d=(d+1)%a.length,c+=1}return u=d,b}(e)].map(a=>[a.id,a]));if(0===g.size)return{modelIds:[...d],unreadableCount:f};let i=new AbortController,j=setTimeout(()=>i.abort("Kiro catalog discovery timed out"),5e3);j.unref?.();try{for(let a of(await Promise.all([...g.values()].map(async a=>{try{return await s.kiro(a,{signal:i.signal})}catch(a){return console.log(`Live model fetch failed for kiro: ${a?.message||a}`),null}}))))for(let e of Array.isArray(a?.models)?a.models:[]){let a=A(e?.id,null,b,c);a&&d.add(a)}}finally{clearTimeout(j)}return{modelIds:[...d],unreadableCount:f}}async function C(a,{apiKey:b=null,policy:c}={}){let h=void 0===c&&b?await (0,f.uH)(b):c||null;if(h&&!0!==h.active)return[];let i=[],j=!1;try{if(i=await (0,f.getProviderConnections)(),j=!0,i=i.filter(a=>!1!==a.isActive&&!a.quarantinedAt),h?.allowedConnectionIds?.length){let a=new Set(h.allowedConnectionIds);i=i.filter(b=>a.has(b.id))}}catch(a){console.log("Could not fetch providers, returning all models")}let k=[];try{k=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let l=[];try{l=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let m={};try{m=await (0,f.getModelAliases)()}catch(a){console.log("Could not fetch model aliases")}let n={};try{n=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let p=(a,b)=>Array.isArray(n[a])&&n[a].includes(b),u=new Map;for(let a of i){let b=u.get(a.provider)||[];b.push(a),u.set(a.provider,b)}let v=[];for(let b of k){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),v.push(c)}if(0===i.length){let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,f]of Object.entries(d.vq)){let d=b[c]||c;if("kiro"!==d&&(!j||e.AI_PROVIDERS[d]?.noAuth===!0)&&y(d,a))for(let b of f)a.includes(w(b))&&(p(c,b.id)||v.push({id:`${c}/${b.id}`,object:"model",owned_by:c}))}for(let b of j?[]:l){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&v.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[b,c]of u.entries()){let f;if(!y(b,a))continue;let g=c[0],h=d.Xg[b]||b,i=(g?.providerSpecificData?.prefix||(0,e.wG)(b)||h).trim(),j=d.vq[h]||[],k=g?.providerSpecificData?.enabledModels,n=Array.isArray(k)&&k.length>0,o=(0,e.mq)(b)||(0,e.gb)(b),r=new Map(j.map(a=>[a.id,w(a)]));if("kiro"===b){let a=await B(c,i,h);0===(f=a.modelIds).length&&a.unreadableCount>0&&(f=j.map(a=>a.id))}else f=n?Array.from(new Set(k.filter(a=>"string"==typeof a&&""!==a.trim()))):j.map(a=>a.id);o&&0===f.length&&!t.test(b)&&(f=await x(g));let u=s[b];if(u&&"kiro"!==b&&!n)try{let a=await u(g);a?.models?.length&&(f=a.models.map(a=>a.id))}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}for(let d of Array.from(new Set([...f.map(a=>z(a,g,i,h,b)).filter(a=>"string"==typeof a&&""!==a.trim()),..."kiro"===b?[]:c.map(a=>z(a.defaultModel,a,i,h,b)).filter(a=>""!==a),..."kiro"===b?[]:l.filter(a=>{if(!a?.id||a.type&&"llm"!==a.type)return!1;let c=a.providerAlias;return c===h||c===i||c===b}).map(a=>String(a.id).trim()).filter(a=>""!==a),..."kiro"===b?[]:Object.values(m||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${i}/`)||a.startsWith(`${h}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${i}/`)?a.slice(i.length+1):a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let c=r.get(d)||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/video|sora|veo|kling/.test(b)?"video":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(d);if(!a.includes(c)||p(i,d)||p(h,d))continue;let e={id:`${i}/${d}`,object:"model",owned_by:i},f=(0,q.a0)(c)||("llm"===c?(0,q.nl)(b,d):null);if(f&&(e.capabilities=f),"llm"===c){let a=f?.contextWindow,c=f?.maxOutput;if(!Number.isFinite(a)||!Number.isFinite(c)){let e=(0,q.nl)(b,d);Number.isFinite(a)||(a=e.contextWindow),Number.isFinite(c)||(c=e.maxOutput)}Number.isFinite(a)&&(e.context_length=a),Number.isFinite(c)&&(e.max_completion_tokens=c)}v.push(e)}let A=e.AI_PROVIDERS[b],C=[];if(a.includes("tts")&&Array.isArray(A?.ttsConfig?.models))for(let a of A.ttsConfig.models)a?.id&&C.push(a.id);if(a.includes("embedding")&&Array.isArray(A?.embeddingConfig?.models))for(let a of A.embeddingConfig.models)a?.id&&C.push(a.id);for(let a of C)p(i,a)||p(h,a)||v.push({id:`${i}/${a}`,object:"model",owned_by:i});a.includes("webSearch")&&A?.searchConfig&&v.push({id:`${i}/search`,object:"model",kind:"webSearch",owned_by:i}),a.includes("webFetch")&&A?.fetchConfig&&v.push({id:`${i}/fetch`,object:"model",kind:"webFetch",owned_by:i})}a.includes("llm")&&v.push(...(0,o.lL)(i));let A=[],D=new Set;for(let a of v)!a?.id||D.has(a.id)||(D.add(a.id),A.push(a));return(0,r.Dw)(A,h?{...h,allowedConnectionIds:[]}:null)}async function D(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function E(a){try{let b=await C(["llm"],{apiKey:(0,r.MZ)(a)});return Response.json({object:"list",data:b},{headers:{"Access-Control-Allow-Origin":"*"}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},3359:(a,b,c)=>{c.d(b,{K0:()=>j,Oh:()=>n,c9:()=>q,lL:()=>r,s9:()=>i});var d=c(89718),e=c(83477);let f="gpt-5.6";function g(a){return String(a||"").trim().replace(/^\/+|\/+$/g,"")}function h(a){let b;return`cx/${(b=g(a)).startsWith("cx/")?b.slice(3):b.startsWith("codex/")?b.slice(6):b||f}`}function i(a){let b=g(a);if(!b)return null;if("auto-codex"===b)return{mode:"router",modelString:`cx/${f}`,strictAccount:!1,label:"Auto Codex"};if(b.startsWith("router/")){let a;return{mode:"router",modelString:(a=g(b.slice(7))||f).includes("/")?a:`cx/${a}`,strictAccount:!1,label:"Router Pool"}}if(b.startsWith("original/"))return{mode:"original",modelString:h(b.slice(9)),strictAccount:!0,label:"Original Codex"};if("original"===b)return{mode:"original",modelString:`cx/${f}`,strictAccount:!0,label:"Original Codex"};let c=b.startsWith("account/")?"account/":b.startsWith("codex-account/")?"codex-account/":null;if(c){let a=b.slice(c.length),d=a.indexOf("/"),e=-1===d?a:a.slice(0,d),g=-1===d?f:a.slice(d+1);return e?{mode:"account",accountRef:e,modelString:h(g),strictAccount:!0,label:"Pinned Codex Account"}:null}return null}function j(a){return a?.displayName||a?.name||a?.email||a?.id||"Codex account"}function k(a){let b=String(j(a)).toLowerCase().replace(/@/g,"-").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"account";return`${b}-${String(a?.id||"").slice(0,8)}`}function l(a){return String(a||"").trim().toLowerCase()}function m(a){let b=a?.providerSpecificData||{};return"GPTJson"===b.importedFrom||String(b.tokenSource||"").startsWith("ChatGPT_team")}async function n(a=5e3){let b=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),c=b.slice(0,a).map(a=>({id:a.id,slug:k(a),label:j(a),email:a.email||null,imported:m(a),priority:a.priority||null})),e=o(b);return{accounts:c,original:e?{id:e.id,slug:k(e),label:j(e),email:e.email||null,imported:m(e),priority:e.priority||null}:null}}function o(a){return Array.isArray(a)&&0!==a.length?a.find(a=>!m(a))||a[0]:null}async function p(a){let b=l(a);if(!b)return null;let c=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),e=c.find(a=>l(a.id)===b||k(a)===b||l(a.email)===b||l(a.name)===b||l(a.displayName)===b);if(e)return e;let f=c.filter(a=>l(a.id).startsWith(b)||k(a).startsWith(b));return 1===f.length?f[0]:null}async function q(a){if(!a||"original"!==a.mode&&"account"!==a.mode)return null;if("account"===a.mode)return p(a.accountRef);let b=await (0,d.mt)(),c=b.codexGatewayOriginalConnectionId||b.codexOriginalConnectionId||"";if(c){let a=await p(c);if(a)return a}return o(await (0,d.getProviderConnections)({provider:"codex",isActive:!0}))}function r(a=[]){if(!a.some(a=>"codex"===a.provider&&!1!==a.isActive))return[];let b=[{id:"auto-codex",object:"model",owned_by:"zevai-codex-gateway"},...(e.vq.cx||[]).filter(a=>!a.type||"llm"===a.type).map(a=>a.id).flatMap(a=>[{id:`router/${a}`,object:"model",owned_by:"zevai-codex-gateway"},{id:`original/${a}`,object:"model",owned_by:"zevai-codex-gateway"}])];for(let c of a.filter(a=>"codex"===a.provider&&!1!==a.isActive))b.push({id:`account/${k(c)}`,object:"model",owned_by:"zevai-codex-account"});return b}},16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(93999)},19225:(a,b,c)=>{a.exports=c(44870)},29240:(a,b,c)=>{function d(a){let b="string"==typeof a?a.trim():"";return b.startsWith("models/")?b.slice(7):b}function e(a){let b=a?.headers?.get?.("Authorization");return b?.startsWith("Bearer ")?b.slice(7):a?.headers?.get?.("x-api-key")||null}function f(a,b){if(!b)return!0;if(!0!==b.active)return!1;let c=Array.isArray(b.allowedModels)?b.allowedModels:[];if(0===c.length)return!0;let e=d(a);return c.some(a=>d(a)===e)}function g(a,b,c=new Map){if(!b)return[...a];let e=new Set(Array.isArray(b.allowedConnectionIds)?b.allowedConnectionIds:[]);return a.filter(a=>!!f(a?.id,b)&&(0===e.size||(c.get(d(a?.id))||c.get(a?.id)||[]).some(a=>e.has(a))))}c.d(b,{Dw:()=>g,GJ:()=>f,MZ:()=>e})},52007:(a,b,c)=>{c.d(b,{av:()=>o,gK:()=>m});var d=c(55511),e=c(39609);let f="https://llm.kimchi.dev",g=new Set([429,500,502,503,504]),h=new Map,i=new Map;function j(a){return(("string"==typeof a?a.trim():"")||f).replace(/\/+$/,"")}function k(a){return a?.accessToken||a?.apiKey||a?.providerSpecificData?.apiKey||null}function l(a){if(!a||"object"!=typeof a)return null;let b=a.slug||a.id||a.model||a.name;if("string"!=typeof b||""===b.trim())return null;let c=Array.isArray(a.input_modalities)?a.input_modalities.filter(a=>"text"===a||"image"===a):[],d=a.limits&&"object"==typeof a.limits?a.limits:{},e=Number(d.context_window||a.contextLength||a.context_length)||void 0,f=Number(d.max_output_tokens||a.maxOutputTokens||a.max_output_tokens)||void 0,g="string"==typeof a.provider?a.provider:"",h=!0===a.reasoning,i=Array.isArray(c)&&c.includes("image")?"imageToText":"llm",j={...a,id:b.trim(),name:String(a.display_name||a.displayName||a.name||b).trim(),provider:g,upstreamProvider:g,reasoning:h,inputModalities:c,kind:i,type:i,capabilities:{vision:c.includes("image"),reasoning:h,...e?{contextWindow:e}:{},...f?{maxOutput:f}:{},...g?{upstreamProvider:g}:{}},...e?{contextLength:e}:{},...f?{maxOutputTokens:f}:{}};return"anthropic"===g&&(j.compat={supportsReasoningEffort:!1,cacheControlFormat:"anthropic"}),j}function m(a){if("string"!=typeof a||""===a.trim())return null;let b=a.includes("/")?a.split("/").pop():a;return i.get(b)||i.get(b.toLowerCase())||null}async function n(a,b,c={}){let d=`${j(b)}/v1/models/metadata?include_in_cli=true`,f=new AbortController,h=setTimeout(()=>f.abort(Error("Kimchi models fetch timeout")),2e4),i=c.signal?AbortSignal.any([c.signal,f.signal]):f.signal;try{let b=await (0,e.proxyAwareFetch)(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${a}`,"User-Agent":"kimchi/0.1.40"},cache:"no-store",signal:i},c.proxyOptions||null);if(!b.ok){let a=Error(`Kimchi models ${b.status}: ${b.statusText}`);throw a.status=b.status,a.retryable=g.has(b.status),a}let f=await b.json();return Array.isArray(f?.models)?f.models:[]}finally{clearTimeout(h)}}async function o(a,b={}){let c,e,g,m=k(a);if(!m)return null;let p=a?.providerSpecificData?.kimchiEndpoint||b.endpoint||f,q=(g=(e=a?.providerSpecificData||{}).userId||e.username||a?.refreshToken||k(a)||"anonymous",(0,d.createHash)("sha256").update(`kimchi:${j(p)}:${g}`).digest("hex")),r=Date.now();if(!b.forceRefresh){let a=h.get(q);if(a&&a.expiresAt>r)return a}try{c=await n(m,p,b)}catch(a){return b.log?.warn?.("KIMCHI_MODELS",a.message),null}let s=c.map(l).filter(Boolean);if(0===s.length)return null;for(let a of s||[])a?.id&&(i.set(a.id,a),i.set(a.id.toLowerCase(),a));let t={expiresAt:Date.now()+3e5,models:s,rawModels:c};return h.set(q,t),t}},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
1
+ "use strict";exports.id=8255,exports.ids=[8255],exports.modules={2574:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>E,OPTIONS:()=>D,buildModelsList:()=>C});var d=c(81329),e=c(75681),f=c(89718),g=c(16655),h=c(29679),i=c(53225),j=c(52007),k=c(28948),l=c(84534),m=c(15929),n=c(9760),o=c(3359),p=c(39326),q=c(66306),r=c(29240);let s={kiro:async(a,b={})=>{let c=await (0,h.cW)({connectionId:a.id,accessToken:a.accessToken,refreshToken:a.refreshToken,isActive:a.isActive,quarantinedAt:a.quarantinedAt,providerSpecificData:a.providerSpecificData||{}},{log:console,signal:b.signal,onCredentialsRefreshed:async b=>{if(!b?.accessToken)return;let c={accessToken:b.accessToken,lastRefreshAt:new Date().toISOString()};b.refreshToken&&(c.refreshToken=b.refreshToken);let d=Number(b.expiresIn);if(Number.isFinite(d)&&d>0&&(c.expiresIn=d,c.expiresAt=new Date(Date.now()+1e3*d).toISOString()),!await (0,f.updateProviderConnection)(a.id,c))throw Error("Kiro connection disappeared during token refresh");Object.assign(a,c)}});return c?{models:Array.isArray(c.models)?c.models:[]}:null},qoder:async a=>{let b=await (0,p.B)(a.providerSpecificData),c=await (0,i.EV)({apiKey:a.apiKey,accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}},{proxyOptions:b});return c?.models?.length?{models:c.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async a=>{let b=await (0,j.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await (0,k.P)({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null},cline:async a=>{let b=a.apiKey||a.accessToken;if(!b)return null;try{let{buildClineHeaders:a}=await Promise.resolve().then(c.bind(c,15626)),d=await fetch("https://api.cline.bot/api/v1/models",{headers:a(b,{Accept:"application/json"})});if(!d.ok)return null;let e=await d.json(),f=Array.isArray(e)?e:e?.data;if(!Array.isArray(f)||0===f.length)return null;let g=f.filter(a=>"string"==typeof a?.id).map(a=>({id:a.id,name:a.name||a.id}));return g.length?{models:g}:null}catch{return null}},github:async a=>{let b=await (0,l.v)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},blackbox:async a=>(0,n.x0)({apiKey:a.apiKey,accessToken:a.accessToken}),codebuddy:async()=>(0,m.A3)("codebuddy",{log:console}),"codebuddy-cn":async()=>(0,m.A3)("codebuddy-cn",{log:console})},t=/[-_][0-9a-f]{8,}$/i,u=0,v={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText",video:"video",music:"music"};function w(a){return a?.type&&v[a.type]||"llm"}async function x(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:d,cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}function y(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}function z(a,b,c,d,e){if("string"!=typeof a)return"";let f=a.trim();for(let a of new Set([b?.providerSpecificData?.prefix,c,d,e].filter(a=>"string"==typeof a&&""!==a.trim()))){let b=`${a.trim()}/`;if(f.startsWith(b))return f.slice(b.length)}return f}function A(a,b,c,d){if("string"!=typeof a)return"";let e=a.trim();for(let a of new Set([b?.providerSpecificData?.prefix,c,d,"kiro"].filter(a=>"string"==typeof a&&""!==a.trim()))){let b=`${a.trim()}/`;if(e.startsWith(b))return e.slice(b.length)}return e}async function B(a,b,c){let d=new Set,e=[],f=0;for(let g of a){let a=function(a){let b=a?.providerSpecificData?.enabledModels;return Array.isArray(b)?b.filter(a=>"string"==typeof a&&""!==a.trim()):[]}(g);if(a.length>0)for(let e of a){let a=A(e,g,b,c);a&&d.add(a)}else(g?.providerSpecificData||{}).profileArn||(f+=1),e.push(g)}let g=new Map([...e.filter(a=>(0,h.G9)(a.id)),...function(a){if(0===a.length)return[];let b=[],c=0,d=u%a.length;for(;c<a.length&&b.length<4;){let e=a[d];(0,h.G9)(e.id)||b.push(e),d=(d+1)%a.length,c+=1}return u=d,b}(e)].map(a=>[a.id,a]));if(0===g.size)return{modelIds:[...d],unreadableCount:f};let i=new AbortController,j=setTimeout(()=>i.abort("Kiro catalog discovery timed out"),5e3);j.unref?.();try{for(let a of(await Promise.all([...g.values()].map(async a=>{try{return await s.kiro(a,{signal:i.signal})}catch(a){return console.log(`Live model fetch failed for kiro: ${a?.message||a}`),null}}))))for(let e of Array.isArray(a?.models)?a.models:[]){let a=A(e?.id,null,b,c);a&&d.add(a)}}finally{clearTimeout(j)}return{modelIds:[...d],unreadableCount:f}}async function C(a,{apiKey:b=null,policy:c}={}){let h=void 0===c&&b?await (0,f.uH)(b):c||null;if(h&&!0!==h.active)return[];let i=[],j=!1;try{if(i=await (0,f.getProviderConnections)(),j=!0,i=i.filter(a=>!1!==a.isActive&&!a.quarantinedAt),h?.allowedConnectionIds?.length){let a=new Set(h.allowedConnectionIds);i=i.filter(b=>a.has(b.id))}}catch(a){console.log("Could not fetch providers, returning all models")}let k=[];try{k=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let l=[];try{l=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let m={};try{m=await (0,f.getModelAliases)()}catch(a){console.log("Could not fetch model aliases")}let n={};try{n=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let p=(a,b)=>Array.isArray(n[a])&&n[a].includes(b),u=new Map;for(let a of i){let b=u.get(a.provider)||[];b.push(a),u.set(a.provider,b)}let v=[];for(let b of k){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),v.push(c)}if(0===i.length){let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,f]of Object.entries(d.vq)){let d=b[c]||c;if("kiro"!==d&&(!j||e.AI_PROVIDERS[d]?.noAuth===!0)&&y(d,a))for(let b of f)a.includes(w(b))&&(p(c,b.id)||v.push({id:`${c}/${b.id}`,object:"model",owned_by:c}))}for(let b of j?[]:l){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&v.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[b,c]of u.entries()){let f;if(!y(b,a))continue;let g=c[0],h=d.Xg[b]||b,i=(g?.providerSpecificData?.prefix||(0,e.wG)(b)||h).trim(),j=d.vq[h]||[],k=g?.providerSpecificData?.enabledModels,n=Array.isArray(k)&&k.length>0,o=(0,e.mq)(b)||(0,e.gb)(b),r=new Map(j.map(a=>[a.id,w(a)]));if("kiro"===b){let a=await B(c,i,h);0===(f=a.modelIds).length&&a.unreadableCount>0&&(f=j.map(a=>a.id))}else f=n?Array.from(new Set(k.filter(a=>"string"==typeof a&&""!==a.trim()))):j.map(a=>a.id);o&&0===f.length&&!t.test(b)&&(f=await x(g));let u=s[b];if(u&&"kiro"!==b&&!n)try{let a=await u(g);a?.models?.length&&(f=a.models.map(a=>a.id))}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}for(let d of Array.from(new Set([...f.map(a=>z(a,g,i,h,b)).filter(a=>"string"==typeof a&&""!==a.trim()),..."kiro"===b?[]:c.map(a=>z(a.defaultModel,a,i,h,b)).filter(a=>""!==a),..."kiro"===b?[]:l.filter(a=>{if(!a?.id||a.type&&"llm"!==a.type)return!1;let c=a.providerAlias;return c===h||c===i||c===b}).map(a=>String(a.id).trim()).filter(a=>""!==a),..."kiro"===b?[]:Object.values(m||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${i}/`)||a.startsWith(`${h}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${i}/`)?a.slice(i.length+1):a.startsWith(`${h}/`)?a.slice(h.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let c=r.get(d)||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/video|sora|veo|kling/.test(b)?"video":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(d);if(!a.includes(c)||p(i,d)||p(h,d))continue;let e={id:`${i}/${d}`,object:"model",owned_by:i},f=(0,q.a0)(c)||("llm"===c?(0,q.nl)(b,d):null);if(f&&(e.capabilities=f),"llm"===c){let a=f?.contextWindow,c=f?.maxOutput;if(!Number.isFinite(a)||!Number.isFinite(c)){let e=(0,q.nl)(b,d);Number.isFinite(a)||(a=e.contextWindow),Number.isFinite(c)||(c=e.maxOutput)}Number.isFinite(a)&&(e.context_length=a),Number.isFinite(c)&&(e.max_completion_tokens=c)}v.push(e)}let A=e.AI_PROVIDERS[b],C=[];if(a.includes("tts")&&Array.isArray(A?.ttsConfig?.models))for(let a of A.ttsConfig.models)a?.id&&C.push(a.id);if(a.includes("embedding")&&Array.isArray(A?.embeddingConfig?.models))for(let a of A.embeddingConfig.models)a?.id&&C.push(a.id);for(let a of C)p(i,a)||p(h,a)||v.push({id:`${i}/${a}`,object:"model",owned_by:i});a.includes("webSearch")&&A?.searchConfig&&v.push({id:`${i}/search`,object:"model",kind:"webSearch",owned_by:i}),a.includes("webFetch")&&A?.fetchConfig&&v.push({id:`${i}/fetch`,object:"model",kind:"webFetch",owned_by:i})}a.includes("llm")&&v.push(...(0,o.lL)(i));let A=[],D=new Set;for(let a of v)!a?.id||D.has(a.id)||(D.add(a.id),A.push(a));return(0,r.Dw)(A,h?{...h,allowedConnectionIds:[]}:null)}async function D(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function E(a){try{let b=await C(["llm"],{apiKey:(0,r.MZ)(a)});return Response.json({object:"list",data:b},{headers:{"Access-Control-Allow-Origin":"*"}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},3359:(a,b,c)=>{c.d(b,{K0:()=>j,Oh:()=>n,c9:()=>q,lL:()=>r,s9:()=>i});var d=c(89718),e=c(83477);let f="gpt-5.6";function g(a){return String(a||"").trim().replace(/^\/+|\/+$/g,"")}function h(a){let b;return`cx/${(b=g(a)).startsWith("cx/")?b.slice(3):b.startsWith("codex/")?b.slice(6):b||f}`}function i(a){let b=g(a);if(!b)return null;if("auto-codex"===b)return{mode:"router",modelString:`cx/${f}`,strictAccount:!1,label:"Auto Codex"};if(b.startsWith("router/")){let a;return{mode:"router",modelString:(a=g(b.slice(7))||f).includes("/")?a:`cx/${a}`,strictAccount:!1,label:"Router Pool"}}if(b.startsWith("original/"))return{mode:"original",modelString:h(b.slice(9)),strictAccount:!0,label:"Original Codex"};if("original"===b)return{mode:"original",modelString:`cx/${f}`,strictAccount:!0,label:"Original Codex"};let c=b.startsWith("account/")?"account/":b.startsWith("codex-account/")?"codex-account/":null;if(c){let a=b.slice(c.length),d=a.indexOf("/"),e=-1===d?a:a.slice(0,d),g=-1===d?f:a.slice(d+1);return e?{mode:"account",accountRef:e,modelString:h(g),strictAccount:!0,label:"Pinned Codex Account"}:null}return null}function j(a){return a?.displayName||a?.name||a?.email||a?.id||"Codex account"}function k(a){let b=String(j(a)).toLowerCase().replace(/@/g,"-").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"account";return`${b}-${String(a?.id||"").slice(0,8)}`}function l(a){return String(a||"").trim().toLowerCase()}function m(a){let b=a?.providerSpecificData||{};return"GPTJson"===b.importedFrom||String(b.tokenSource||"").startsWith("ChatGPT_team")}async function n(a=5e3){let b=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),c=b.slice(0,a).map(a=>({id:a.id,slug:k(a),label:j(a),email:a.email||null,imported:m(a),priority:a.priority||null})),e=o(b);return{accounts:c,original:e?{id:e.id,slug:k(e),label:j(e),email:e.email||null,imported:m(e),priority:e.priority||null}:null}}function o(a){return Array.isArray(a)&&0!==a.length?a.find(a=>!m(a))||a[0]:null}async function p(a){let b=l(a);if(!b)return null;let c=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),e=c.find(a=>l(a.id)===b||k(a)===b||l(a.email)===b||l(a.name)===b||l(a.displayName)===b);if(e)return e;let f=c.filter(a=>l(a.id).startsWith(b)||k(a).startsWith(b));return 1===f.length?f[0]:null}async function q(a){if(!a||"original"!==a.mode&&"account"!==a.mode)return null;if("account"===a.mode)return p(a.accountRef);let b=await (0,d.mt)(),c=b.codexGatewayOriginalConnectionId||b.codexOriginalConnectionId||"";if(c){let a=await p(c);if(a)return a}return o(await (0,d.getProviderConnections)({provider:"codex",isActive:!0}))}function r(a=[]){if(!a.some(a=>"codex"===a.provider&&!1!==a.isActive))return[];let b=[{id:"auto-codex",object:"model",owned_by:"zevai-codex-gateway"},...(e.vq.cx||[]).filter(a=>!a.type||"llm"===a.type).map(a=>a.id).flatMap(a=>[{id:`router/${a}`,object:"model",owned_by:"zevai-codex-gateway"},{id:`original/${a}`,object:"model",owned_by:"zevai-codex-gateway"}])];for(let c of a.filter(a=>"codex"===a.provider&&!1!==a.isActive))b.push({id:`account/${k(c)}`,object:"model",owned_by:"zevai-codex-account"});return b}},16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(93999)},19225:(a,b,c)=>{a.exports=c(44870)},29240:(a,b,c)=>{function d(a){let b="string"==typeof a?a.trim():"";return b.startsWith("models/")?b.slice(7):b}function e(a){let b=a?.headers?.get?.("Authorization");return b?.startsWith("Bearer ")?b.slice(7):a?.headers?.get?.("x-api-key")||null}function f(a,b){if(!b)return!0;if(!0!==b.active)return!1;let c=Array.isArray(b.allowedModels)?b.allowedModels:[];if(0===c.length)return!0;let e=d(a);return c.some(a=>d(a)===e)}function g(a,b,c=new Map){if(!b)return[...a];let e=new Set(Array.isArray(b.allowedConnectionIds)?b.allowedConnectionIds:[]);return a.filter(a=>!!f(a?.id,b)&&(0===e.size||(c.get(d(a?.id))||c.get(a?.id)||[]).some(a=>e.has(a))))}c.d(b,{Dw:()=>g,GJ:()=>f,MZ:()=>e})},52007:(a,b,c)=>{c.d(b,{av:()=>o,gK:()=>m});var d=c(55511),e=c(39609);let f="https://llm.kimchi.dev",g=new Set([429,500,502,503,504]),h=new Map,i=new Map;function j(a){return(("string"==typeof a?a.trim():"")||f).replace(/\/+$/,"")}function k(a){return a?.accessToken||a?.apiKey||a?.providerSpecificData?.apiKey||null}function l(a){if(!a||"object"!=typeof a)return null;let b=a.slug||a.id||a.model||a.name;if("string"!=typeof b||""===b.trim())return null;let c=Array.isArray(a.input_modalities)?a.input_modalities.filter(a=>"text"===a||"image"===a):[],d=a.limits&&"object"==typeof a.limits?a.limits:{},e=Number(d.context_window||a.contextLength||a.context_length)||void 0,f=Number(d.max_output_tokens||a.maxOutputTokens||a.max_output_tokens)||void 0,g="string"==typeof a.provider?a.provider:"",h=!0===a.reasoning,i=Array.isArray(c)&&c.includes("image")?"imageToText":"llm",j={...a,id:b.trim(),name:String(a.display_name||a.displayName||a.name||b).trim(),provider:g,upstreamProvider:g,reasoning:h,inputModalities:c,kind:i,type:i,capabilities:{vision:c.includes("image"),reasoning:h,...e?{contextWindow:e}:{},...f?{maxOutput:f}:{},...g?{upstreamProvider:g}:{}},...e?{contextLength:e}:{},...f?{maxOutputTokens:f}:{}};return"anthropic"===g&&(j.compat={supportsReasoningEffort:!1,cacheControlFormat:"anthropic"}),j}function m(a){if("string"!=typeof a||""===a.trim())return null;let b=a.includes("/")?a.split("/").pop():a;return i.get(b)||i.get(b.toLowerCase())||null}async function n(a,b,c={}){let d=`${j(b)}/v1/models/metadata?include_in_cli=true`,f=new AbortController,h=setTimeout(()=>f.abort(Error("Kimchi models fetch timeout")),2e4),i=c.signal?AbortSignal.any([c.signal,f.signal]):f.signal;try{let b=await (0,e.proxyAwareFetch)(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${a}`,"User-Agent":"kimchi/0.1.40"},cache:"no-store",signal:i},c.proxyOptions||null);if(!b.ok){let a=Error(`Kimchi models ${b.status}: ${b.statusText}`);throw a.status=b.status,a.retryable=g.has(b.status),a}let f=await b.json();return Array.isArray(f?.models)?f.models:[]}finally{clearTimeout(h)}}async function o(a,b={}){let c,e,g,m=k(a);if(!m)return null;let p=a?.providerSpecificData?.kimchiEndpoint||b.endpoint||f,q=(g=(e=a?.providerSpecificData||{}).userId||e.username||a?.refreshToken||k(a)||"anonymous",(0,d.createHash)("sha256").update(`kimchi:${j(p)}:${g}`).digest("hex")),r=Date.now();if(!b.forceRefresh){let a=h.get(q);if(a&&a.expiresAt>r)return a}try{c=await n(m,p,b)}catch(a){return b.log?.warn?.("KIMCHI_MODELS",a.message),null}let s=c.map(l).filter(Boolean);if(0===s.length)return null;for(let a of s||[])a?.id&&(i.set(a.id,a),i.set(a.id.toLowerCase(),a));let t={expiresAt:Date.now()+3e5,models:s,rawModels:c};return h.set(q,t),t}},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
@@ -1 +1 @@
1
- exports.id=8306,exports.ids=[8306],exports.modules={30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>i,X3:()=>k,eh:()=>f.eh,fg:()=>e.fg,h0:()=>h,oc:()=>j,vQ:()=>g});var d=c(39006),e=c(75681),f=c(81329);let g={name:"ZevaiRouter",description:"AI Infrastructure Management",version:d.version},h={npmPackageName:"zevairouter",installCmd:"npm i -g zevairouter",installCmdLatest:"npm i -g zevairouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:1997},i={maxLines:200,pollIntervalMs:1e3},j={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}},k={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat","notion-ai":"https://app.notion.com/api/v3/runInferenceTranscript"}},38238:(a,b,c)=>{"use strict";c.d(b,{P:()=>h});var d=c(89718),e=c(30869),f=c(54603);async function g(a=null){let b=null;try{let a=await (0,d.PX)(!0);b=a.find(a=>!1!==a.isActive)?.key||null}catch{}let c={"Content-Type":"application/json"};return b&&(c.Authorization=`Bearer ${b}`),c["x-zevai-cli-token"]=await (0,f.Xj)("zevai-cli-auth"),a&&(c["x-zevai-connection-id"]=a),c}async function h(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`,d={}){let f=await g(d.connectionId),i=Date.now();if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:f,body:JSON.stringify({model:a,input:"test"}),signal:AbortSignal.timeout(15e3)}),d=Date.now()-i,e=await b.text().catch(()=>""),g=null;try{g=e?JSON.parse(e):null}catch{}if(!b.ok){let a=g?.error?.message||g?.error||e;return{ok:!1,latencyMs:d,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(g?.data)&&g.data.length>0&&Array.isArray(g.data[0]?.embedding)?{ok:!0,latencyMs:d,error:null,status:b.status}:{ok:!1,latencyMs:d,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:f,body:JSON.stringify({model:a,prompt:"test"}),signal:AbortSignal.timeout(15e3)}),d=Date.now()-i,e=await b.text().catch(()=>""),g=null;try{g=e?JSON.parse(e):null}catch{}if(!b.ok){let a=g?.error?.message||g?.msg||g?.message||g?.error||e;return{ok:!1,latencyMs:d,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(g?.data)&&g.data.length>0?{ok:!0,latencyMs:d,error:null,status:b.status}:{ok:!1,latencyMs:d,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,d,e,g,h=new FormData,j=(e=new DataView(d=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(g=(a,b)=>{for(let c=0;c<b.length;c+=1)e.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),e.setUint32(4,36+b,!0),g(8,"WAVE"),g(12,"fmt "),e.setUint32(16,16,!0),e.setUint16(20,1,!0),e.setUint16(22,1,!0),e.setUint32(24,16e3,!0),e.setUint32(28,32e3,!0),e.setUint16(32,2,!0),e.setUint16(34,16,!0),g(36,"data"),e.setUint32(40,b,!0),new Blob([d],{type:"audio/wav"}));h.append("file",j,"test.wav"),h.append("model",a);let k=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(f).filter(([a])=>"content-type"!==a.toLowerCase())),body:h,signal:AbortSignal.timeout(15e3)}),l=Date.now()-i,m=await k.text().catch(()=>""),n=null;try{n=m?JSON.parse(m):null}catch{}if(!k.ok){let a=n?.error?.message||n?.msg||n?.message||n?.error||m;return{ok:!1,latencyMs:l,error:`HTTP ${k.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:k.status}}return("string"==typeof n?.text?n.text:"").trim()?{ok:!0,latencyMs:l,error:null,status:k.status}:{ok:!1,latencyMs:l,status:k.status,error:"Provider returned no transcription text for this model"}}let j=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:f,body:JSON.stringify({model:a,max_tokens:1,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:AbortSignal.timeout(15e3)}),k=Date.now()-i,l=await j.text().catch(()=>""),m=null;try{m=l?JSON.parse(l):null}catch{}if(!j.ok){let a=m?.error?.message||m?.msg||m?.message||m?.error||l;return{ok:!1,latencyMs:k,error:`HTTP ${j.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:j.status}}let n=m?.status,o=m?.msg||m?.message;if(null!=n&&"200"!==String(n)&&"0"!==String(n)&&o)return{ok:!1,latencyMs:k,status:j.status,error:`Provider status ${n}: ${String(o).slice(0,240)}`};if(m?.error){let a=m?.error?.message||m?.error||"Provider returned an error";return{ok:!1,latencyMs:k,status:j.status,error:String(a).slice(0,240)}}return Array.isArray(m?.choices)&&m.choices.length>0?{ok:!0,latencyMs:k,error:null,status:j.status}:{ok:!1,latencyMs:k,status:j.status,error:"Provider returned no completion choices for this model"}}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"zevairouter","version":"1.1.13","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"cli/cli.js"},"files":["cli/cli.js","cli/app/","cli/hooks/","cli/src/","cli/package.json","cli/README.md","cli/LICENSE","scripts/start-standalone.mjs","README.md","README.zh-CN.md","DOCKER.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"node scripts/build-app.mjs","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","lint":"eslint .","test":"vitest run --config tests/vitest.config.js","build:cli":"node cli/scripts/build-cli.js","audit:package":"node cli/scripts/audit-package.mjs","smoke:package":"node cli/scripts/smoke-package.mjs","verify:mobile-scroll":"node cli/scripts/verify-dashboard-mobile-scroll.mjs","candidate:build":"node cli/scripts/local-candidate.mjs build","candidate:install":"node cli/scripts/local-candidate.mjs install","candidate:status":"node cli/scripts/local-candidate.mjs status","candidate:rollback":"node cli/scripts/local-candidate.mjs rollback","release":"node cli/scripts/release.js","prepack":"npm run build:cli && npm run audit:package","postinstall":"node cli/hooks/postinstall.js"},"dependencies":{"@node-saml/node-saml":"5.1.0","next":"16.2.12","node-machine-id":"1.1.12","react":"19.2.4","react-dom":"19.2.4","sql.js":"1.14.1","yaml":"2.9.0"},"comment_optional_runtime":"Optional packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses CloakBrowser with playwright-core; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3, node-pty, and systray2.","overrides":{"body-parser":"^2.3.0","brace-expansion":"5.0.9","dompurify":"^3.4.12","ip-address":"^10.4.0","nanoid":"^3.3.18","postcss":"^8.5.10","sharp":"^0.35.0"},"comment_overrides":"Security floors for transitive dependencies. ESLint\'s legacy minimatch is a private, source-pinned 3.1.5 compatibility package backed by brace-expansion 5.0.9; modern minimatch and nanoid use fixed floors directly. Monaco still pins an old DOMPurify; Express and Next may resolve vulnerable body-parser/sharp releases. Recheck and remove overrides once parent packages require fixed versions.","devDependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.1.18","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","better-sqlite3":"^12.6.2","chalk":"^4.1.2","confbox":"^0.2.4","dompurify":"^3.4.12","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.2.9","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","minimatch":"file:vendor/minimatch3-secure","monaco-editor":"^0.55.1","node-forge":"^1.3.3","open":"^11.0.0","ora":"^9.1.0","postcss":"^8.5.10","prop-types":"^15.8.1","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","tailwindcss":"^4","undici":"^8.10.0","uuid":"^14.0.1","vitest":"^4.1.10","zustand":"^5.0.10"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Verifiedlabs/zevairouter.git"},"bugs":{"url":"https://github.com/Verifiedlabs/zevairouter/issues"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.DATA_DIR,"machine-id"),m=h().join(k.DATA_DIR,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.DATA_DIR,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="zevai-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(83477);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},89718:(a,b,c)=>{"use strict";c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,Iu:()=>d.Iu,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,Kg:()=>d.Kg,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,ME:()=>d.ME,Mc:()=>d.Mc,NR:()=>d.NR,Op:()=>d.Op,PX:()=>d.PX,Pb:()=>d.Pb,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,dK:()=>d.dK,deleteModelAlias:()=>d.fv,ek:()=>d.ek,fK:()=>d.fK,getModelAliases:()=>d.OM,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,tV:()=>d.tV,uH:()=>d.uH,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(93999)},96487:()=>{}};
1
+ exports.id=8306,exports.ids=[8306],exports.modules={30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>i,X3:()=>k,eh:()=>f.eh,fg:()=>e.fg,h0:()=>h,oc:()=>j,vQ:()=>g});var d=c(39006),e=c(75681),f=c(81329);let g={name:"ZevaiRouter",description:"AI Infrastructure Management",version:d.version},h={npmPackageName:"zevairouter",installCmd:"npm i -g zevairouter",installCmdLatest:"npm i -g zevairouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:1997},i={maxLines:200,pollIntervalMs:1e3},j={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}},k={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat","notion-ai":"https://app.notion.com/api/v3/runInferenceTranscript"}},38238:(a,b,c)=>{"use strict";c.d(b,{P:()=>h});var d=c(89718),e=c(30869),f=c(54603);async function g(a=null){let b=null;try{let a=await (0,d.PX)(!0);b=a.find(a=>!1!==a.isActive)?.key||null}catch{}let c={"Content-Type":"application/json"};return b&&(c.Authorization=`Bearer ${b}`),c["x-zevai-cli-token"]=await (0,f.Xj)("zevai-cli-auth"),a&&(c["x-zevai-connection-id"]=a),c}async function h(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`,d={}){let f=await g(d.connectionId),i=Date.now();if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:f,body:JSON.stringify({model:a,input:"test"}),signal:AbortSignal.timeout(15e3)}),d=Date.now()-i,e=await b.text().catch(()=>""),g=null;try{g=e?JSON.parse(e):null}catch{}if(!b.ok){let a=g?.error?.message||g?.error||e;return{ok:!1,latencyMs:d,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(g?.data)&&g.data.length>0&&Array.isArray(g.data[0]?.embedding)?{ok:!0,latencyMs:d,error:null,status:b.status}:{ok:!1,latencyMs:d,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:f,body:JSON.stringify({model:a,prompt:"test"}),signal:AbortSignal.timeout(15e3)}),d=Date.now()-i,e=await b.text().catch(()=>""),g=null;try{g=e?JSON.parse(e):null}catch{}if(!b.ok){let a=g?.error?.message||g?.msg||g?.message||g?.error||e;return{ok:!1,latencyMs:d,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(g?.data)&&g.data.length>0?{ok:!0,latencyMs:d,error:null,status:b.status}:{ok:!1,latencyMs:d,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,d,e,g,h=new FormData,j=(e=new DataView(d=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(g=(a,b)=>{for(let c=0;c<b.length;c+=1)e.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),e.setUint32(4,36+b,!0),g(8,"WAVE"),g(12,"fmt "),e.setUint32(16,16,!0),e.setUint16(20,1,!0),e.setUint16(22,1,!0),e.setUint32(24,16e3,!0),e.setUint32(28,32e3,!0),e.setUint16(32,2,!0),e.setUint16(34,16,!0),g(36,"data"),e.setUint32(40,b,!0),new Blob([d],{type:"audio/wav"}));h.append("file",j,"test.wav"),h.append("model",a);let k=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(f).filter(([a])=>"content-type"!==a.toLowerCase())),body:h,signal:AbortSignal.timeout(15e3)}),l=Date.now()-i,m=await k.text().catch(()=>""),n=null;try{n=m?JSON.parse(m):null}catch{}if(!k.ok){let a=n?.error?.message||n?.msg||n?.message||n?.error||m;return{ok:!1,latencyMs:l,error:`HTTP ${k.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:k.status}}return("string"==typeof n?.text?n.text:"").trim()?{ok:!0,latencyMs:l,error:null,status:k.status}:{ok:!1,latencyMs:l,status:k.status,error:"Provider returned no transcription text for this model"}}let j=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:f,body:JSON.stringify({model:a,max_tokens:1,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:AbortSignal.timeout(15e3)}),k=Date.now()-i,l=await j.text().catch(()=>""),m=null;try{m=l?JSON.parse(l):null}catch{}if(!j.ok){let a=m?.error?.message||m?.msg||m?.message||m?.error||l;return{ok:!1,latencyMs:k,error:`HTTP ${j.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:j.status}}let n=m?.status,o=m?.msg||m?.message;if(null!=n&&"200"!==String(n)&&"0"!==String(n)&&o)return{ok:!1,latencyMs:k,status:j.status,error:`Provider status ${n}: ${String(o).slice(0,240)}`};if(m?.error){let a=m?.error?.message||m?.error||"Provider returned an error";return{ok:!1,latencyMs:k,status:j.status,error:String(a).slice(0,240)}}return Array.isArray(m?.choices)&&m.choices.length>0?{ok:!0,latencyMs:k,error:null,status:j.status}:{ok:!1,latencyMs:k,status:j.status,error:"Provider returned no completion choices for this model"}}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"zevairouter","version":"1.1.15","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"cli/cli.js"},"files":["cli/cli.js","cli/app/","cli/hooks/","cli/src/","cli/package.json","cli/README.md","cli/LICENSE","scripts/start-standalone.mjs","README.md","README.zh-CN.md","DOCKER.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"node scripts/build-app.mjs","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","lint":"eslint .","test":"vitest run --config tests/vitest.config.js","build:cli":"node cli/scripts/build-cli.js","audit:package":"node cli/scripts/audit-package.mjs","smoke:package":"node cli/scripts/smoke-package.mjs","verify:mobile-scroll":"node cli/scripts/verify-dashboard-mobile-scroll.mjs","candidate:build":"node cli/scripts/local-candidate.mjs build","candidate:install":"node cli/scripts/local-candidate.mjs install","candidate:status":"node cli/scripts/local-candidate.mjs status","candidate:rollback":"node cli/scripts/local-candidate.mjs rollback","release":"node cli/scripts/release.js","prepack":"npm run build:cli && npm run audit:package","postinstall":"node cli/hooks/postinstall.js"},"dependencies":{"@node-saml/node-saml":"5.1.0","next":"16.2.12","node-machine-id":"1.1.12","react":"19.2.4","react-dom":"19.2.4","sql.js":"1.14.1","yaml":"2.9.0"},"comment_optional_runtime":"Optional packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses CloakBrowser with playwright-core; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3, node-pty, and systray2.","overrides":{"body-parser":"^2.3.0","brace-expansion":"5.0.9","dompurify":"^3.4.12","ip-address":"^10.4.0","nanoid":"^3.3.18","postcss":"^8.5.10","sharp":"^0.35.0"},"comment_overrides":"Security floors for transitive dependencies. ESLint\'s legacy minimatch is a private, source-pinned 3.1.5 compatibility package backed by brace-expansion 5.0.9; modern minimatch and nanoid use fixed floors directly. Monaco still pins an old DOMPurify; Express and Next may resolve vulnerable body-parser/sharp releases. Recheck and remove overrides once parent packages require fixed versions.","devDependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.1.18","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","better-sqlite3":"^12.6.2","chalk":"^4.1.2","confbox":"^0.2.4","dompurify":"^3.4.12","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.2.9","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","minimatch":"file:vendor/minimatch3-secure","monaco-editor":"^0.55.1","node-forge":"^1.3.3","open":"^11.0.0","ora":"^9.1.0","postcss":"^8.5.10","prop-types":"^15.8.1","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","tailwindcss":"^4","undici":"^8.10.0","uuid":"^14.0.1","vitest":"^4.1.10","zustand":"^5.0.10"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/Verifiedlabs/zevairouter.git"},"bugs":{"url":"https://github.com/Verifiedlabs/zevairouter/issues"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.DATA_DIR,"machine-id"),m=h().join(k.DATA_DIR,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.DATA_DIR,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="zevai-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(83477);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},89718:(a,b,c)=>{"use strict";c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,Iu:()=>d.Iu,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,Kg:()=>d.Kg,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,ME:()=>d.ME,Mc:()=>d.Mc,NR:()=>d.NR,Op:()=>d.Op,PX:()=>d.PX,Pb:()=>d.Pb,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,dK:()=>d.dK,deleteModelAlias:()=>d.fv,ek:()=>d.ek,fK:()=>d.fK,getModelAliases:()=>d.OM,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,tV:()=>d.tV,uH:()=>d.uH,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(93999)},96487:()=>{}};
@@ -1 +1 @@
1
- "use strict";exports.id=8491,exports.ids=[1998,8491],exports.modules={7803:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>o,error:()=>r,errorLine:()=>l,fmtThink:()=>m,info:()=>p,line:()=>k,maskKey:()=>v,nextTag:()=>i,request:()=>s,response:()=>t,stream:()=>u,tagForSession:()=>j,warn:()=>q});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let g=["\uD83D\uDFE2","\uD83D\uDD35","\uD83D\uDFE3","\uD83D\uDFE1","\uD83D\uDFE0","\uD83D\uDD34","⚪","\uD83D\uDFE4"],h=0;function i(){let a=g[h%g.length];return h+=1,a}function j(a){if(!a)return i();let b=0,c=String(a);for(let a=0;a<c.length;a+=1)b=31*b+c.charCodeAt(a)|0;return g[Math.abs(b)%g.length]}function k(a,b,c){e>d.INFO||console.log(`[${f()}] ${a||"⚪"} ${b} ${c}`)}function l(a,b,c){console.log(`[${f()}] ${a||"⚪"} ${b} ${c}`)}function m(a){return a&&a.mode?"none"===a.mode?"off":"auto"===a.mode?"auto":"budget"===a.mode?a.budget>=1e3?`${Math.round(a.budget/1e3)}k`:`${a.budget}`:"level"===a.mode?a.level:null:null}function n(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function o(a,b,c){if(e<=d.DEBUG){let d=c?` ${n(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function p(a,b,c){if(e<=d.INFO){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function q(a,b,c){if(e<=d.WARN){let d=c?` ${n(c)}`:"";console.warn(`[${f()}] ⚠️ [${a}] ${b}${d}`)}}function r(a,b,c){if(e<=d.ERROR){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function s(a,b,c){let d=c?` ${n(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function t(a,b,c){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function u(a,b){let c=b?` ${n(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function v(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},19225:(a,b,c)=>{a.exports=c(44870)},39326:(a,b,c)=>{c.d(b,{B:()=>h,p:()=>g});var d=c(71998);function e(a){return null==a?"":String(a).trim()}let f=new Map;function g(a,b,c){if(!a||0===a.length)return null;if(1===a.length)return a[0];if("round-robin"===b){let b=f.get(c)||{index:-1};return b.index=(b.index+1)%a.length,f.set(c,b),a[b.index]}return"random"===b?a[Math.floor(Math.random()*a.length)]:a[0]}async function h(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},43659:(a,b,c)=>{c.d(b,{A1:()=>g,lR:()=>i,wO:()=>h,yj:()=>e,zL:()=>f});var d=c(3662);function e(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}async function f(a,b=null){let c="";try{c=await a.text()}catch{c=""}if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`,{status:c,message:f,...g}=e;return{statusCode:c||a.status,message:b,...g}}}catch{}let e="";try{let a=JSON.parse(c);e=a.error?.message||a.message||a.error||c}catch{e=c}let g=("string"==typeof e?e:JSON.stringify(e))||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:g}}function g(a,b,c,d=null){return{success:!1,status:a,error:b,resetsAtMs:c,...d&&"object"==typeof d?{failureMetadata:d}:{},response:e(a,b)}}function h(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function i(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,Iu:()=>d.Iu,Kg:()=>d.Kg,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.getModelAliases,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.deleteModelAlias,getProviderConnections:()=>d.getProviderConnections,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},79761:(a,b,c)=>{c.d(b,{BU:()=>l,hb:()=>k,tH:()=>j});var d=c(40669),e=c(35989),f=c(75434);let g=new Set(["account","provider","egress","integrity"]);function h(a,b="unknown",c=160){return String(a||"").trim().toLowerCase().replace(/[^a-z0-9._:-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,c)||b}function i(a={}){let b=g.has(a.scope)?a.scope:null;if(!b)return null;let c=h((0,d.g2)(h(a.provider)),"unknown-provider",80),f=h(a.accountId||a.connectionId,"unknown-account"),j=h(a.egressId,"direct"),k=(0,e.Nm)(a.modelFamily||a.model);return Object.freeze("account"===b?{scope:b,provider:c,accountId:f}:"provider"===b?{scope:b,provider:c}:"egress"===b?{scope:b,egressId:j}:{scope:b,provider:c,modelFamily:k,egressId:j})}let j=function(a={}){let b="function"==typeof a.now?a.now:Date.now,c="function"==typeof a.onTransition?a.onTransition:()=>{},e=new Map,f=0;function g(a,b,d){c(Object.freeze({type:"circuit",provider:a.dimensions.provider,phase:b,reason:a.dimensions.scope,deadlineMs:a.openUntilMs?Math.max(0,a.openUntilMs-d):0,...a.dimensions.modelFamily?{modelFamily:a.dimensions.modelFamily}:{}}))}function j(a){for(let[b,c]of e)c.failures=c.failures.filter(b=>a-b.atMs<=6e4),"closed"===c.mode&&0===c.failures.length&&a-c.lastTouchedAtMs>18e5&&e.delete(b);let b=[...e.entries()].filter(([,a])=>"closed"===a.mode).sort((a,b)=>a[1].lastTouchedAtMs-b[1].lastTouchedAtMs);for(;b.length>2048;)e.delete(b.shift()[0])}function k(a,c=!1){let d=i(a);if(!d)return null;let f=Object.values(d).join("\x1f"),g=e.get(f);return!g&&c&&(g={dimensions:d,mode:"closed",failures:[],openDurationMs:3e4,openUntilMs:null,probeLeaseId:null,probeSuccesses:0,lastTouchedAtMs:b()},e.set(f,g)),g}function l(a,b){a?.mode==="open"&&b>=a.openUntilMs&&(a.mode="half_open",a.probeLeaseId=null,g(a,"half_open",b))}function m(a,b,c=a.openDurationMs){a.mode="open",a.openDurationMs=Math.min(3e5,Math.max(3e4,c)),a.openUntilMs=b+a.openDurationMs,a.probeLeaseId=null,a.probeSuccesses=0,a.lastTouchedAtMs=b,g(a,"open",b)}return Object.freeze({recordFailure:function(a={}){let c;if(!1===a.evidentiary)return!1;let e=b();j(e);let f=k(a,!0);return!!f&&(l(f,e),"closed"===f.mode)&&(f.failures=f.failures.filter(a=>e-a.atMs<=6e4),f.failures.push(Object.freeze({atMs:e,accountId:h(a.accountId||a.connectionId,"unknown-account"),provider:h((0,d.g2)(h(a.provider)),"unknown-provider",80)})),f.lastTouchedAtMs=e,c=f.failures.length,("integrity"===f.dimensions.scope?c>=1:!(c<5)&&("provider"===f.dimensions.scope?new Set(f.failures.map(a=>a.accountId)).size>=2:"egress"!==f.dimensions.scope||new Set(f.failures.map(a=>a.provider)).size>=2))&&m(f,e),!0)},recordSuccess:function(a={}){let c=b(),d=k(a);return!!d&&(l(d,c),"closed"===d.mode&&(d.failures=[],d.lastTouchedAtMs=c,!0))},getDecision:function(a){let c=b();j(c);let d=i(a),e=k(a);return e?(l(e,c),Object.freeze({...e.dimensions,state:e.mode,openUntilMs:e.openUntilMs,openDurationMs:e.openDurationMs,probeInFlight:!!e.probeLeaseId,consecutiveProbeSuccesses:e.probeSuccesses})):Object.freeze({...d||{scope:null},state:"closed",openUntilMs:null,openDurationMs:3e4,probeInFlight:!1,consecutiveProbeSuccesses:0})},tryAcquireProbe:function(a){let c=b(),d=k(a);return d?(l(d,c),"half_open"!==d.mode)?Object.freeze({acquired:!1,reason:"open"===d.mode?"circuit_open":"circuit_closed"}):d.probeLeaseId?Object.freeze({acquired:!1,reason:"probe_in_flight"}):(d.probeLeaseId=`probe-${c}-${++f}`,d.lastTouchedAtMs=c,Object.freeze({acquired:!0,leaseId:d.probeLeaseId})):Object.freeze({acquired:!1,reason:"circuit_closed"})},releaseProbe:function(a,c={}){let d=b(),e=k(a);if(!e||"half_open"!==e.mode||!e.probeLeaseId||c.leaseId!==e.probeLeaseId)return!1;if(e.probeLeaseId=null,e.lastTouchedAtMs=d,!0===c.cancelled)return!0;if(!0===c.success)return e.probeSuccesses+=1,e.probeSuccesses>=2&&(e.mode="closed",e.failures=[],e.openDurationMs=3e4,e.openUntilMs=null,e.probeLeaseId=null,e.probeSuccesses=0,e.lastTouchedAtMs=d,g(e,"closed",d)),!0;return m(e,d,Math.min(3e5,2*e.openDurationMs)),!0}})}({onTransition:f.cN}),k=j.recordFailure;j.recordSuccess,j.getDecision,j.tryAcquireProbe;let l=j.releaseProbe},80238:(a,b,c)=>{c.d(b,{Pt:()=>C,Tr:()=>D,c1:()=>z,kI:()=>E,uT:()=>y,vk:()=>B});var d=c(89718),e=c(39326),f=c(12557),g=c(3662),h=c(84917),i=c(91254),j=c(75681),k=c(7803),l=c(93930),m=c(79761);let n=Promise.resolve(),o=new Set(["policy_suspended","credential_rejected","reauth_required"]),p=new Set(["authentication","entitlement_or_quota","permission_denied","rate_limited","upstream_transient"]),q=new Set(["not_attempted","succeeded","transient_failed","rejected"]);function r(a,b=200){return null==a||""===a?null:String(a).slice(0,b).replace(/[^a-zA-Z0-9._:/#-]/g,"")||null}function s(a){let b=Number(a);return Number.isInteger(b)&&b>=0&&b<=599?b:null}function t(a,b){let c=a&&"object"==typeof a&&!Array.isArray(a)?a:{},d=Number(b??c.resetsAtMs),e=new Date(d),f=Number.isFinite(d)&&d>0&&Number.isFinite(e.getTime())?e.toISOString():null;return{failureClass:r(c.failureClass,80)?.toLowerCase()||null,providerErrorCode:r(c.providerErrorCode),upstreamRequestId:r(c.upstreamRequestId),failureResetAt:f,authLifecycle:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=q.has(a.refreshOutcome)?a.refreshOutcome:"not_attempted";return{initialStatus:s(a.initialStatus),refreshAttempted:!0===a.refreshAttempted,refreshOutcome:b,retryStatus:s(a.retryStatus)}}(c.authLifecycle)}}function u(a,b){return({policy_suspended:"Kiro reports that this account is suspended or disabled by upstream policy.",credential_rejected:"Kiro rejected the credential after a successful token refresh.",reauth_required:"Kiro rejected the refresh credential; sign in again before re-enabling.",entitlement_or_quota:"Kiro entitlement or quota is temporarily unavailable.",rate_limited:"Kiro rate limit is temporarily exhausted.",authentication:"Kiro authentication is temporarily unavailable.",permission_denied:"Kiro denied this request without confirming an account suspension.",upstream_transient:"Kiro upstream is temporarily unavailable."})[a]||`Kiro upstream request failed with status ${b||"unknown"}.`}function v(a){return"string"!=typeof a?"":a.trim().replace(/^(?:kiro|kr)\//i,"")}function w(a,b){let c=a?.providerSpecificData?.enabledModels;if(!Array.isArray(c)||0===c.length)return!0;let d=v(b);return c.some(a=>v(a)===d)}function x(a){return Object.freeze({...a,supportedModels:Object.freeze([...a.supportedModels||[]]),supportedOperations:Object.freeze([...a.supportedOperations||[]]),capabilities:Object.freeze([...a.capabilities||[]]),quota:a.quota?Object.freeze({...a.quota}):null,circuits:Object.freeze({...a.circuits||{}}),eligibility:Object.freeze({eligible:a.eligibility.eligible,reasons:Object.freeze([...a.eligibility.reasons])})})}async function y(a,b=null,c={}){let e=(0,j.rs)(a),g=Array.isArray(c.allowedConnectionIds)?c.allowedConnectionIds:null;if(!g&&c.apiKey&&(g=await (0,d.ME)(c.apiKey)),j.IS[e]?.noAuth){let a={id:"noauth",provider:e,priority:1,legacyOrder:0,isActive:!0,quarantinedAt:null,reauthRequired:!1,supportedModels:[],supportedOperations:[c.operation||"chat"],capabilities:c.capabilities||[],modelLocked:!1,quota:null,circuits:{},transportAvailable:!1!==c.transportAvailable,outboundAllowed:!1!==c.outboundAllowed,egressId:"direct",health:null,sticky:!1};return a.eligibility=(0,l.Z)(a,{...c,provider:e,model:b,operation:c.operation||"chat",allowedConnectionIds:g,pinnedConnectionId:c.strictPreferred?c.preferredConnectionId:null}),Object.freeze([x(a)])}let[h,i]=await Promise.all([(0,d.getProviderConnections)({provider:e}),(0,d.tV)(e)]),k=new Map(i.map(a=>[a.connectionId,a])),n=Number.isFinite(c.nowMs)?c.nowMs:Date.now(),o=c.circuitRegistry||m.tH;return Object.freeze(h.map((a,d)=>{let h=a.providerSpecificData||{},i=k.get(a.id)||null,j=Date.parse(i?.fetchedAt),m=Number.isFinite(j)&&n-j<=f.JN,p=(0,f.td)(i?.usage,e,b),q=(0,f.yH)(i,n),r=Array.isArray(h.enabledModels)?h.enabledModels.map(a=>v(a)):[],s=h.connectionProxyPoolId||h.proxyPoolId||(h.vercelRelayUrl?"relay":"direct"),t={account:{scope:"account",provider:e,accountId:a.id},provider:{scope:"provider",provider:e},egress:{scope:"egress",egressId:s},integrity:{scope:"integrity",provider:e,model:b,egressId:s}},u=Object.fromEntries(Object.entries(t).map(([a,b])=>[a,o.getDecision(b)])),w=Object.entries(u).filter(([,a])=>"half_open"===a.state),y=Object.values(u).some(a=>"open"===a.state);if(!0===c.acquireCircuitProbes&&!y&&1===w.length){let[a]=w[0],b=o.tryAcquireProbe(t[a]);u[a]={...u[a],probeAcquired:!0===b.acquired,...b.leaseId?{probeLeaseId:b.leaseId}:{}}}let z={id:a.id,provider:e,priority:Number.isFinite(a.priority)?a.priority:999,legacyOrder:d,isActive:!0===a.isActive,quarantinedAt:a.quarantinedAt||null,reauthRequired:"reauth_required"===a.failureClass||"token_expired"===a.autoDisabledReason||"reauth_required"===a.autoDisabledReason,supportedModels:r,supportedOperations:Array.isArray(h.supportedOperations)?h.supportedOperations:[c.operation||"chat"],capabilities:Array.isArray(h.capabilities)?h.capabilities:[],modelLocked:(0,f.Bl)(a,b,e),quota:i?{provenance:m?"fresh":"last_successful",exhausted:!!q,remaining:p>=0?p:null,total:p>=0?100:null,fetchedAtMs:Number.isFinite(j)?j:null,validUntilMs:Number.isFinite(j)?j+f.JN:null,exhaustedUntilMs:q||null}:null,circuits:u,transportAvailable:!1!==c.transportAvailable&&!1!==h.transportAvailable,outboundAllowed:!1!==c.outboundAllowed,egressId:s,health:"unavailable"===a.testStatus||a.lastError?"degraded":"success"===a.testStatus||"connected"===a.testStatus?"healthy":null,sticky:a.consecutiveUseCount>0};return z.eligibility=(0,l.Z)(z,{...c,provider:e,model:b,operation:c.operation||"chat",allowedConnectionIds:g,pinnedConnectionId:c.strictPreferred?c.preferredConnectionId:null,nowMs:n}),x(z)}))}async function z(a,b=null,g=null,l={}){let m,o=b instanceof Set?b:b?new Set([b]):new Set,p=l?.preferredConnectionId||null,q=!!l?.strictPreferred,r=n;n=new Promise(a=>{m=a});try{let b;await r;let m=(0,j.rs)(a);if(j.IS[m]?.noAuth){let a=((await (0,d.mt)()).providerStrategies||{})[m]||{},b=a.rotateStrategy||"none",c=a.proxyPoolId||null;if("none"!==b){let a=(await (0,d.ui)({isActive:!0})).filter(a=>a.proxyUrl).map(a=>a.id);c=(0,e.p)(a,b,m)}let f=await (0,e.B)({proxyPoolId:c||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{connectionProxyEnabled:f.connectionProxyEnabled,connectionProxyUrl:f.connectionProxyUrl,connectionNoProxy:f.connectionNoProxy,connectionProxyPoolId:f.proxyPoolId||null,vercelRelayUrl:f.vercelRelayUrl||""}}}let n=await (0,d.getProviderConnections)({provider:m,isActive:!0}),s=Array.isArray(l?.allowedConnectionIds)?l.allowedConnectionIds:null;if(!s&&l?.apiKey&&(s=await (0,d.ME)(l.apiKey)),Array.isArray(s)&&s.length>0){let b=new Set(s);n=n.filter(a=>b.has(a.id)),k.debug("AUTH",`${a} | API key scoped to ${n.length} allowed connection(s)`)}k.debug("AUTH",`${a} | total connections: ${n.length}, excludeIds: ${o.size>0?[...o].join(","):"none"}, model: ${g||"any"}`);let t=null;if("kiro"===m&&g)try{t=await (0,h.ED)(g)}catch(a){k.warn("AUTH",`Kiro model support cache unavailable: ${a?.message||a}`)}let u=t?.state==="supported"||t?.state==="unsupported",v={modelUnavailable:!0,provider:m,model:g};if(0===n.length){if(u)return k.warn("AUTH",`${a} | no eligible supporter for ${g}`),v;return k.warn("AUTH",`No credentials for ${a}`),null}let x=n.filter(a=>!a.quarantinedAt),y=new Set,z=new Set,A=!1;if("kiro"===m&&g){let a=x=x.filter(a=>w(a,g)),b=new Set(t?.unsupportedConnectionIds||[]),c=new Set(t?.freshCatalogConnectionIds||[]),d=n.filter(a=>{let c=a?.providerSpecificData?.enabledModels;return Array.isArray(c)&&c.length>0&&w(a,g)&&!b.has(a.id)}).map(a=>a.id),e=new Set([...t?.supportingConnectionIds||[],...d].filter(a=>!b.has(a)));z=new Set([...b,...[...c].filter(a=>!e.has(a))]),x=x.filter(a=>!z.has(a.id)),A=a.length>0&&a.every(a=>z.has(a.id)),e.size>0?(y=e,u=!0):t?.state==="unsupported"&&(x=[])}let B=new Map;if("codebuddy-cn"===m)for(let a of(await (0,d.tV)(m))){let b=(0,f.yH)(a);b&&B.set(a.connectionId,b)}let C=new Map;if("codebuddy-cn"===m)for(let a of n){if(11140!==Number(a.providerErrorCode))continue;let b=(0,f.kJ)(a);b&&C.set(a.id,b)}let D=new Set,E=new Set;if("codex"===m&&g){let a=await (0,d.tV)(m),b=new Map(a.map(a=>[a.connectionId,a]));for(let a of n)(0,f.xB)(a,g,m)&&E.add(a.id),(0,f.N2)(a,g,b.get(a.id),m,{ignoreProbe:!0})&&!E.has(a.id)&&D.add(a.id)}if("codebuddy"===m||"codebuddy-cn"===m)for(let a of n)(0,i.hN)(a)&&(0,f.xB)(a,null,m)&&E.add(a.id);let F=a=>C.has(a.id)||("codebuddy"===m||"codebuddy-cn"===m)&&(0,i.hN)(a)&&E.has(a.id)||(0,f.Bl)(a,g,m)&&!D.has(a.id),G=a=>E.has(a.id)?"codebuddy"===m||"codebuddy-cn"===m?a[(0,f.UM)(null,m)]:new Date(Date.now()+1e3).toISOString():[(0,f.V0)(a,g,m),C.get(a.id)].filter(Boolean).sort().at(-1)||null,H=x.filter(a=>!(o.has(a.id)||F(a)||B.has(a.id))),I=H,J=!1;if("kiro"===m&&g&&!q){let a=H.filter(a=>y.has(a.id));if(a.length>0)I=a;else{let a=H.filter(a=>!y.has(a.id)),b=[...o].filter(a=>!y.has(a)).length;I=a,b>=3?(I=[],J=!0):o.size>0&&0===a.length&&(J=!0)}}if(q&&p){let b=n.find(a=>a.id===p);if(!b)return k.warn("AUTH",`${a} | pinned account not found: ${p}`),null;if(b.quarantinedAt)return k.warn("AUTH",`${a} | pinned account is quarantined: ${b.id?.slice(0,8)}`),null;if(z.has(b.id))return k.warn("AUTH",`${a} | pinned account does not support ${g}: ${b.id?.slice(0,8)}`),v;if(!x.some(a=>a.id===b.id))return k.warn("AUTH",`${a} | pinned account is not eligible for ${g||"this request"}: ${b.id?.slice(0,8)}`),u?v:null;if(o.has(b.id))return k.warn("AUTH",`${a} | pinned account excluded after failure: ${b.id?.slice(0,8)}`),null;if(F(b)||B.has(b.id)){let a=[G(b),B.has(b.id)?new Date(B.get(b.id)).toISOString():null].filter(Boolean).sort().at(-1);return{allRateLimited:!0,retryAfter:a,retryAfterHuman:(0,f.Qo)(a),lastError:b.lastError||"Pinned account unavailable",lastErrorCode:b.errorCode||null}}I=[b]}if(k.debug("AUTH",`${a} | available: ${I.length}/${x.length}`),n.forEach(a=>{let b=o.has(a.id),c=F(a),d=D.has(a.id),e=B.get(a.id),h=!!a.quarantinedAt,i=z.has(a.id);if(b||c||e||d||h||i){let j=(0,f.kJ)(a),l=E.has(a.id);k.debug("AUTH",` \u2192 ${a.id?.slice(0,8)} | ${b?"excluded":""} ${c?`modelLocked(${g}) until ${j}`:""} ${d?`staleLockRecovered(${g})`:""} ${l?`recoveryProbeInFlight(${g})`:""} ${e?`quotaExhausted until ${new Date(e).toISOString()}`:""} ${h?"quarantined":""} ${i?`unsupported(${g})`:""}`)}}),0===I.length){if(J)return k.warn("AUTH",`${a} | bounded fallback exhausted for ${g}`),null;let b=x.filter(a=>F(a)),c=x.map(a=>[F(a)?G(a):null,B.has(a.id)?new Date(B.get(a.id)).toISOString():null].filter(Boolean).sort().at(-1)).filter(Boolean).sort()[0]||null;if(c){let d=b[0];return k.warn("AUTH",`${a} | all ${x.length} candidate accounts locked for ${g||"all"} (${(0,f.Qo)(c)}) | lastError=${d?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:c,retryAfterHuman:(0,f.Qo)(c),lastError:d?.lastError||null,lastErrorCode:d?.errorCode||null}}return k.warn("AUTH",`${a} | all ${n.length} accounts unavailable`),u||A?v:null}let K=await (0,d.mt)(),L=(K.providerStrategies||{})[m]||{},M=L.fallbackStrategy||K.fallbackStrategy||"fill-first";if(p&&(b=I.find(a=>a.id===p))&&k.debug("AUTH",`${a} | pinned to ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"})`),b);else if(q&&p)return k.warn("AUTH",`${a} | pinned account unavailable: ${p}`),null;else if("round-robin"===M){let a=L.stickyRoundRobinLimit||K.stickyRoundRobinLimit||3,c=[...I].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...I].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else if("most-quota"===M){let a=await Promise.all(I.map(async a=>{let b=-1;try{let c=await (0,d.getQuotaSnapshot)(a.id);b=(0,f.td)(c?.usage,m,g)}catch{}return{conn:a,remaining:b}}));a.sort((a,b)=>a.remaining!==b.remaining?b.remaining-a.remaining:(a.conn.priority||999)-(b.conn.priority||999)),b=(a.filter(a=>0!==a.remaining)[0]||a[0]).conn,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1})}else if("lowest-latency"===M){let{getLatencyStats:e}=await Promise.resolve().then(c.bind(c,93999)),f=await e(),g=I.map(a=>{let b=f.get(`${a.provider}|${a.id}`)||f.get(`${m}|${a.id}`);return{conn:a,avgMs:b?b.avgMs:null,samples:b?b.samples:0}});g.sort((a,b)=>null===a.avgMs&&null===b.avgMs?(a.conn.priority||999)-(b.conn.priority||999):null===a.avgMs?1:null===b.avgMs?-1:a.avgMs!==b.avgMs?a.avgMs-b.avgMs:(a.conn.priority||999)-(b.conn.priority||999)),b=g[0].conn,k.debug("AUTH",`${a} | lowest-latency → ${b.id?.slice(0,8)} (${g[0].avgMs??"?"}ms avg, ${g[0].samples} samples)`),await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1})}else b=I[0];if(D.has(b.id)){let a=(0,f.WP)(g,m);await (0,d.updateProviderConnection)(b.id,a),b={...b,...a}}if(("codebuddy"===m||"codebuddy-cn"===m)&&(0,i.hN)(b)){let a=(0,f.WP)(null,m);await (0,d.updateProviderConnection)(b.id,a),b={...b,...a}}let N=await (0,e.B)(b.providerSpecificData||{});return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId||b.providerSpecificData?.projectId||null,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:N.connectionProxyEnabled,connectionProxyUrl:N.connectionProxyUrl,connectionNoProxy:N.connectionNoProxy,strictProxy:!0===N.strictProxy,connectionProxyPoolId:N.proxyPoolId||null,vercelRelayUrl:N.vercelRelayUrl||""},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}}finally{m&&m()}}async function A(a,b,e,h=null,l=null,m=null,n=null){let o,p,q;if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let r=(0,j.rs)(h),s=(0,f.UM)(l,r);if((0,f.d5)(b,e))return await (0,d.updateProviderConnection)(a,{[s]:null}),k.warn("AUTH",`shared egress/WAF error; fallback without locking account [${b}]`),{shouldFallback:!0,cooldownMs:0};if((0,f.P0)(b,e))return await (0,d.updateProviderConnection)(a,{[s]:null}),k.warn("AUTH",`non-account error; no fallback [${b}] ${"string"==typeof e?e.slice(0,100):"Provider error"}`),{shouldFallback:!1,cooldownMs:0};let t=(await (0,d.getProviderConnections)({provider:r})).find(b=>b.id===a),u=t?.backoffLevel||0,v=(0,f.UO)(e),w="codebuddy-cn"===r&&14018===v,x="codebuddy"===r&&14018===v,y="codebuddy-cn"===r&&11140===v;if(y){let c=new Date().toISOString(),e="CodeBuddy CN rejected this credential (11140 request illegal).";return await (0,d.Iu)(a,(a,d)=>{if(a.manuallyReenabledAt&&a.manuallyReenabledAt!==n?.manuallyReenabledAt)return null;let f={...a,providerSpecificData:(0,i.r_)(a.providerSpecificData,c,v)};return{connection:{[s]:null,isActive:!1,testStatus:"unavailable",lastError:e,errorCode:b,providerErrorCode:v,quarantinedAt:c,quarantineReason:e,lastErrorAt:c,autoDisabledAt:c,autoDisabledReason:"credential_rejected",consecutiveAuthFailures:Math.max(1,(a.consecutiveAuthFailures||0)+1),backoffLevel:0,providerSpecificData:f.providerSpecificData},quotaUsage:(0,i.pX)(d?.usage||{},f)}}),k.warn("AUTH",`${t?.displayName||t?.name||a.slice(0,8)} quarantined immediately [11140]`),{shouldFallback:!0,cooldownMs:0}}if(w){let b=await (0,d.getQuotaSnapshot)(a);m=(0,f.lI)(b?.usage)||m}if(m&&m>Date.now()?(o=!0,p=Math.min(m-Date.now(),g.fh),q=0):{shouldFallback:o,cooldownMs:p,newBackoffLevel:q}=(0,f.hk)(b,e,u),!o)return await (0,d.updateProviderConnection)(a,{[s]:null}),{shouldFallback:!1,cooldownMs:0};let z="string"==typeof e?e.slice(0,100):"Provider error",B=w||x,C=B?null:(0,f.LV)(r,l),D=(0,f.S5)(C,p,r),E=new Date().toISOString(),F={...D,[s]:null,...B?{[(0,f.UM)(null,r)]:null}:{},testStatus:"unavailable",lastError:z,errorCode:b,providerErrorCode:v,modelLockReason:{model:C||"__all",providerErrorCode:v,reason:z,lockedAt:E,resetsAt:new Date(Date.now()+p).toISOString()},lastErrorAt:E,backoffLevel:q??u};if(B)try{await (0,d.Iu)(a,(a,b)=>{if(a.manuallyReenabledAt&&a.manuallyReenabledAt!==n?.manuallyReenabledAt)return null;let c={...a,providerSpecificData:(0,i.QN)(a.providerSpecificData,E)};return{connection:{...F,providerSpecificData:c.providerSpecificData},quotaUsage:(0,i.pX)(b?.usage||{},c)}})}catch(a){throw k.warn("AUTH",`CodeBuddy runtime exhaustion update failed: ${a?.message||a}`),a}else await (0,d.updateProviderConnection)(a,F);let G=Object.keys(D)[0],H=t?.displayName||t?.name||t?.email||a.slice(0,8);if(k.warn("AUTH",`${H} locked ${G} for ${Math.round(p/1e3)}s [${b}]`),h&&c.e(6802).then(c.bind(c,86802)).then(a=>{a.alertProviderDown(h,`${H}: ${z}`),(429===b||z.toLowerCase().includes("quota"))&&a.alertQuotaExhausted(h,H)}).catch(()=>{}),h&&b&&z&&console.error(`\u274c ${h} [${b}]: ${z}`),new Set([401,403]).has(b)&&!w){let c=("string"==typeof e?e:"").toLowerCase(),f=["quota","payment","billing","entitlement","subscription","insufficient_quota"].some(a=>c.includes(a));if(y||!f&&["token expired","token invalid","invalid token","revoked","unauthorized","invalid api key","invalid_api_key","banned","suspended","restricted","account disabled"].some(a=>c.includes(a))){let e=(t?.consecutiveAuthFailures||0)+1;e>=3?(await (0,d.updateProviderConnection)(a,{isActive:!1,autoDisabledAt:new Date().toISOString(),autoDisabledReason:c.includes("banned")||c.includes("suspended")||c.includes("restricted")||c.includes("account disabled")?"banned":"token_expired",consecutiveAuthFailures:e}),k.warn("AUTH",`\u26d4 Auto-disabled ${H} after ${e} consecutive auth failures [${b}]: ${z}`)):(await (0,d.updateProviderConnection)(a,{consecutiveAuthFailures:e}),k.warn("AUTH",`${H} auth failure ${e}/3 [${b}]: ${z}`))}}return{shouldFallback:!0,cooldownMs:p}}async function B(a,b,c,e=null,i=null,l=null,m=null,n=null){let q,s,v,w=(0,j.rs)(e);if("antigravity"===w){let c=t(m,l);if("policy_suspended"===c.failureClass&&"ORG_CODE_ASSIST_RESTRICTED"===c.providerErrorCode){if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let e=(await (0,d.getProviderConnections)({provider:w})).find(b=>b.id===a),g=new Date().toISOString(),h="Google organization policy blocks Gemini Code Assist access for this Antigravity account.",j=(0,f.UM)(i,w);await (0,d.updateProviderConnection)(a,{[j]:null,isActive:!1,testStatus:"unavailable",lastError:h,errorCode:b,failureClass:c.failureClass,providerErrorCode:c.providerErrorCode,upstreamRequestId:c.upstreamRequestId,failureResetAt:c.failureResetAt,authLifecycle:c.authLifecycle,quarantinedAt:g,quarantineReason:h,lastErrorAt:g,autoDisabledAt:g,autoDisabledReason:c.failureClass,consecutiveAuthFailures:Math.max(1,(e?.consecutiveAuthFailures||0)+1),backoffLevel:0});let l=e?.displayName||e?.name||e?.email||a.slice(0,8);return k.warn("AUTH",`${l} quarantined immediately [${c.failureClass}]`),{shouldFallback:!0,cooldownMs:0}}}if("kiro"!==w)return A(a,b,c,e,i,l,n);if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let x=(0,f.UM)(i,w),y=t(m,l),{failureClass:z}=y;if("shared_egress_waf"===z||(0,f.d5)(b,c))return await (0,d.updateProviderConnection)(a,{[x]:null}),k.warn("AUTH",`Kiro shared egress/WAF error; fallback without account punishment [${b}]`),{shouldFallback:!0,cooldownMs:0};if(function(a,b){if("invalid_model"===a)return!0;let c=String(b||"").toUpperCase();return/INVALID[_-]?MODEL|MODEL[_-]?(?:NOT[_-]?(?:FOUND|SUPPORTED)|UNSUPPORTED)/.test(c)}(z,y.providerErrorCode)){await (0,d.updateProviderConnection)(a,{[x]:null});let b=!1;try{await (0,h.FL)(a,i);let c=(await (0,d.getProviderConnections)({provider:w,isActive:!0})).filter(a=>!a.quarantinedAt).map(a=>a.id);b=!!i&&await (0,h.CY)(i,a,c)}catch(a){k.warn("AUTH",`Kiro model support cache update failed: ${a?.message||a}`)}return k.warn("AUTH",`Kiro model is unsupported by ${a.slice(0,8)}; ${b?"trying a known supporter":"not rotating to an unknown account"}`),{shouldFallback:b,cooldownMs:0}}if(function(a,b){if("invalid_request"===a||"request_error"===a)return!0;let c=String(b||"").toUpperCase();return/INVALID[_-]?(?:REQUEST|ARGUMENT)|VALIDATION|BAD[_-]?REQUEST|MALFORMED/.test(c)}(z,y.providerErrorCode)||(0,f.P0)(b,c))return await (0,d.updateProviderConnection)(a,{[x]:null}),k.warn("AUTH",`Kiro request error; no account lock or credential rotation [${b}]`),{shouldFallback:!1,cooldownMs:0};let C=(await (0,d.getProviderConnections)({provider:w})).find(b=>b.id===a),D=C?.backoffLevel||0,E=y.providerErrorCode||r((0,f.UO)(c)),F=C?.displayName||C?.name||C?.email||a.slice(0,8);if(o.has(z)){let c=new Date().toISOString(),e=u(z,b);return await (0,d.updateProviderConnection)(a,{[x]:null,isActive:!1,testStatus:"unavailable",lastError:e,errorCode:b,failureClass:z,providerErrorCode:E,upstreamRequestId:y.upstreamRequestId,failureResetAt:y.failureResetAt,authLifecycle:y.authLifecycle,quarantinedAt:c,quarantineReason:e,lastErrorAt:c,autoDisabledAt:c,autoDisabledReason:z,consecutiveAuthFailures:Math.max(1,(C?.consecutiveAuthFailures||0)+1),backoffLevel:0}),k.warn("AUTH",`${F} quarantined immediately [${z}]`),{shouldFallback:!0,cooldownMs:0}}let G=Number(l);if(Number.isFinite(G)&&G>Date.now()?(q=!0,s=Math.min(G-Date.now(),g.fh),v=0):{shouldFallback:q,cooldownMs:s,newBackoffLevel:v}=(0,f.hk)(b,c,D),!q)return await (0,d.updateProviderConnection)(a,{[x]:null}),{shouldFallback:!1,cooldownMs:0};let H=p.has(z)||403===b||408===b||429===b||b>=500,I=z||(429===b?"rate_limited":403===b?"permission_denied":b>=500?"upstream_transient":null),J=u(I,b),K=H?null:(0,f.LV)(w,i),L=(0,f.S5)(K,s,w),M=new Date().toISOString(),N=new Date(Date.now()+s).toISOString();await (0,d.updateProviderConnection)(a,{...L,[x]:null,testStatus:"unavailable",lastError:J,errorCode:b,failureClass:I,providerErrorCode:E,upstreamRequestId:y.upstreamRequestId,failureResetAt:y.failureResetAt,authLifecycle:y.authLifecycle,modelLockReason:{model:K||"__all",providerErrorCode:E,reason:J,lockedAt:M,resetsAt:N},lastErrorAt:M,backoffLevel:v??D,consecutiveAuthFailures:0});let O=Object.keys(L)[0];if(k.warn("AUTH",`${F} locked ${O} for ${Math.round(s/1e3)}s [${b}]`),!z&&(401===b||403===b)){let e=("string"==typeof c?c:"").toLowerCase();if(!["quota","payment","billing","entitlement","subscription","insufficient_quota"].some(a=>e.includes(a))&&["token expired","token invalid","invalid token","revoked","unauthorized","invalid api key","invalid_api_key","banned","suspended","restricted","account disabled"].some(a=>e.includes(a))){let c=(C?.consecutiveAuthFailures||0)+1,f=["banned","suspended","restricted","account disabled"].some(a=>e.includes(a));if(c>=3){let e=new Date().toISOString(),g=f?u("policy_suspended",b):"Kiro rejected this credential three consecutive times.";await (0,d.updateProviderConnection)(a,{isActive:!1,quarantinedAt:e,quarantineReason:g,failureClass:f?"policy_suspended":"authentication",autoDisabledAt:e,autoDisabledReason:f?"policy_suspended":"token_expired",consecutiveAuthFailures:c}),k.warn("AUTH",`${F} quarantined after ${c} unstructured auth failures`)}else await (0,d.updateProviderConnection)(a,{consecutiveAuthFailures:c})}}return{shouldFallback:!0,cooldownMs:s}}async function C(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,g=(0,j.rs)(e.provider),h=(0,f.LV)(g,c),l=Date.now(),m=(0,f.UM)(c,g),n=!1,o=!1,p=(a,b=!1)=>{if(!a||b&&(a.quarantinedAt||e.quarantinedAt))return null;let d=(a,b)=>{if(!a.startsWith(b))return!1;let d=a.slice(b.length);return"__all"===d||!c||(0,f.LV)(g,d)===h};if(b&&Object.keys(a).some(b=>(d(b,"modelLock_")||d(b,"modelRecoveryProbe_"))&&a[b]!==e[b]&&Date.parse(a[b])>l))return n=!0,null;let i=Object.keys(a).filter(a=>a.startsWith("modelLock_"));if("unavailable"!==a.testStatus&&!a.lastError&&0===i.length)return null;let j=i.filter(d=>{if(b&&a[d]!==e[d])return!1;let i=d.slice(10);if(c&&(0,f.LV)(g,i)===h||c&&"modelLock___all"===d)return!0;let j=a[d];return j&&new Date(j).getTime()<=l});if(0===j.length&&"unavailable"!==a.testStatus&&!a.lastError)return null;let k=i.filter(b=>!j.includes(b)&&Date.parse(a[b])>l),o={...Object.fromEntries(j.map(a=>[a,null]))};return b&&a[m]!==e[m]||(o[m]=null),0===k.length&&Object.assign(o,{testStatus:"active",lastError:null,errorCode:null,providerErrorCode:null,..."kiro"===g?{failureClass:null,upstreamRequestId:null,failureResetAt:null,authLifecycle:null}:{},modelLockReason:null,lastErrorAt:null,backoffLevel:0,consecutiveAuthFailures:0}),o};if("kiro"===g){await (0,d.Op)(a,a=>p(a,!0)),n&&k.debug("AUTH",`Kiro success did not clear newer failure state for ${a.slice(0,8)}`);return}if("codebuddy"===g||"codebuddy-cn"===g){let b=(0,i.kt)(e);await (0,d.Iu)(a,a=>{if(a.quarantinedAt||(0,i.uF)(a))return null;let c=(0,i.kt)(a);if(c&&c!==b)return null;let d=p(a)||{};return(b&&(0,i.kt)(a)===b&&(d.providerSpecificData=(0,i.US)(a.providerSpecificData),d[(0,f.UM)(null,g)]=null,o=!0),0===Object.keys(d).length)?null:{connection:d,...o?{quotaUsage:null}:{}}});return}let q=p(e);q&&await (0,d.updateProviderConnection)(a,q)}function D(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-api-key");return c||null}async function E(a){return!!a&&await (0,d.ek)(a)}},91254:(a,b,c)=>{c.d(b,{CG:()=>p,QN:()=>k,US:()=>o,hN:()=>j,kt:()=>i,pX:()=>q,r_:()=>n,uF:()=>m});let d="codebuddyRuntimeExhaustedAt",e="codebuddyRuntimeExhaustedCode",f="codebuddyRuntimeRejectedAt",g="codebuddyRuntimeRejectedCode";function h(a){return a?.provider==="codebuddy"||a?.provider==="codebuddy-cn"}function i(a){return h(a)&&a.providerSpecificData?.[d]||null}function j(a){return!!i(a)}function k(a,b){return{...a||{},[d]:b,[e]:14018}}function l(a){return a?.provider!=="codebuddy-cn"?null:a.providerSpecificData?.[f]||null}function m(a){return!!l(a)}function n(a,b,c=11140){return{...a||{},[f]:b,[g]:c}}function o(a){let b={...a||{}};return delete b[d],delete b[e],b}function p(a){let b=o(a);return delete b[f],delete b[g],b}function q(a,b){if(!h(b))return a;let c=l(b),d=i(b);if(!c&&!d)return a;let e=a?.billingQuotas||a?.quotas||{};if(c)return{...a||{},message:"CodeBuddy CN chat API rejected this credential (11140); billing package balance is nominal and does not prove chat access.",billingQuotas:e,runtimeStatus:"credential_rejected",chatUsable:!1,runtimeRejectedAt:c,runtimeRejectedCode:Number(b.providerSpecificData?.[g])||11140};let f=Object.fromEntries(Object.entries(e).map(([a,b])=>{let c=Number(b?.total);return[a,{...b||{},...Number.isFinite(c)?{used:c}:{},remaining:0,remainingPercentage:0}]}));return{...a||{},message:"CodeBuddy chat API reported exhausted credits (14018); billing package balance is nominal until a chat request succeeds.",billingQuotas:e,quotas:f,runtimeStatus:"exhausted",chatUsable:!1,runtimeExhausted:!0,runtimeExhaustedAt:d,runtimeExhaustedCode:14018}}},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},93930:(a,b,c)=>{c.d(b,{Z:()=>e});let d=Object.freeze([["unsupported_model",(a,b)=>Array.isArray(a.supportedModels)&&a.supportedModels.length>0&&!a.supportedModels.includes(b.model)],["unsupported_operation",(a,b)=>Array.isArray(a.supportedOperations)&&a.supportedOperations.length>0&&!a.supportedOperations.includes(b.operation)],["unsupported_capability",(a,b)=>{let c=new Set(a.capabilities||[]);return c.size>0&&(b.requiredCapabilities||[]).some(a=>!c.has(a))}],["api_key_model_restricted",(a,b)=>Array.isArray(b.allowedModels)&&b.allowedModels.length>0&&!b.allowedModels.includes(b.model)],["api_key_provider_restricted",(a,b)=>Array.isArray(b.allowedProviders)&&b.allowedProviders.length>0&&!b.allowedProviders.includes(a.provider)],["connection_restricted",(a,b)=>Array.isArray(b.allowedConnectionIds)&&b.allowedConnectionIds.length>0&&!b.allowedConnectionIds.includes(a.id)],["explicit_pin_mismatch",(a,b)=>!!b.pinnedConnectionId&&b.pinnedConnectionId!==a.id],["inactive",a=>!0!==a.isActive],["quarantined",a=>!!a.quarantinedAt],["reauth_required",a=>!0===a.reauthRequired],["model_locked",a=>!0===a.modelLocked],["quota_exhausted",(a,b)=>{let c=a.quota;return!!c&&!0===c.exhausted&&("last_successful"!==c.provenance||!(Number(c.remaining)>0&&Number(c.validUntilMs)>Number(b.nowMs||Date.now())))}],["circuit_open",a=>Object.values(a.circuits||{}).some(a=>a?.state==="open"||a?.state==="half_open"&&a?.probeAcquired!==!0)],["missing_transport",a=>!1===a.transportAvailable],["outbound_rejected",a=>!1===a.outboundAllowed]]);function e(a={},b={}){let c=d.filter(([,c])=>c(a,b)).map(([a])=>a);return Object.freeze({eligible:0===c.length,reasons:Object.freeze(c)})}}};
1
+ "use strict";exports.id=8491,exports.ids=[1998,8491],exports.modules={7803:(a,b,c)=>{c.r(b),c.d(b,{debug:()=>o,error:()=>r,errorLine:()=>l,fmtThink:()=>m,info:()=>p,line:()=>k,maskKey:()=>v,nextTag:()=>i,request:()=>s,response:()=>t,stream:()=>u,tagForSession:()=>j,warn:()=>q});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let g=["\uD83D\uDFE2","\uD83D\uDD35","\uD83D\uDFE3","\uD83D\uDFE1","\uD83D\uDFE0","\uD83D\uDD34","⚪","\uD83D\uDFE4"],h=0;function i(){let a=g[h%g.length];return h+=1,a}function j(a){if(!a)return i();let b=0,c=String(a);for(let a=0;a<c.length;a+=1)b=31*b+c.charCodeAt(a)|0;return g[Math.abs(b)%g.length]}function k(a,b,c){e>d.INFO||console.log(`[${f()}] ${a||"⚪"} ${b} ${c}`)}function l(a,b,c){console.log(`[${f()}] ${a||"⚪"} ${b} ${c}`)}function m(a){return a&&a.mode?"none"===a.mode?"off":"auto"===a.mode?"auto":"budget"===a.mode?a.budget>=1e3?`${Math.round(a.budget/1e3)}k`:`${a.budget}`:"level"===a.mode?a.level:null:null}function n(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function o(a,b,c){if(e<=d.DEBUG){let d=c?` ${n(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function p(a,b,c){if(e<=d.INFO){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function q(a,b,c){if(e<=d.WARN){let d=c?` ${n(c)}`:"";console.warn(`[${f()}] ⚠️ [${a}] ${b}${d}`)}}function r(a,b,c){if(e<=d.ERROR){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function s(a,b,c){let d=c?` ${n(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function t(a,b,c){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function u(a,b){let c=b?` ${n(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function v(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},19225:(a,b,c)=>{a.exports=c(44870)},39326:(a,b,c)=>{c.d(b,{B:()=>h,p:()=>g});var d=c(71998);function e(a){return null==a?"":String(a).trim()}let f=new Map;function g(a,b,c){if(!a||0===a.length)return null;if(1===a.length)return a[0];if("round-robin"===b){let b=f.get(c)||{index:-1};return b.index=(b.index+1)%a.length,f.set(c,b),a[b.index]}return"random"===b?a[Math.floor(Math.random()*a.length)]:a[0]}async function h(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},43659:(a,b,c)=>{c.d(b,{A1:()=>g,lR:()=>i,wO:()=>h,yj:()=>e,zL:()=>f});var d=c(3662);function e(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}async function f(a,b=null){let c="";try{c=await a.text()}catch{c=""}if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`,{status:c,message:f,...g}=e;return{statusCode:c||a.status,message:b,...g}}}catch{}let e="";try{let a=JSON.parse(c);e=a.error?.message||a.message||a.error||c}catch{e=c}let g=("string"==typeof e?e:JSON.stringify(e))||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:g}}function g(a,b,c,d=null){return{success:!1,status:a,error:b,resetsAtMs:c,...d&&"object"==typeof d?{failureMetadata:d}:{},response:e(a,b)}}function h(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function i(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}},71998:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,Iu:()=>d.Iu,Kg:()=>d.Kg,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.getModelAliases,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.deleteModelAlias,getProviderConnections:()=>d.getProviderConnections,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(89718)},79761:(a,b,c)=>{c.d(b,{BU:()=>l,hb:()=>k,tH:()=>j});var d=c(40669),e=c(35989),f=c(75434);let g=new Set(["account","provider","egress","integrity"]);function h(a,b="unknown",c=160){return String(a||"").trim().toLowerCase().replace(/[^a-z0-9._:-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,c)||b}function i(a={}){let b=g.has(a.scope)?a.scope:null;if(!b)return null;let c=h((0,d.g2)(h(a.provider)),"unknown-provider",80),f=h(a.accountId||a.connectionId,"unknown-account"),j=h(a.egressId,"direct"),k=(0,e.Nm)(a.modelFamily||a.model);return Object.freeze("account"===b?{scope:b,provider:c,accountId:f}:"provider"===b?{scope:b,provider:c}:"egress"===b?{scope:b,egressId:j}:{scope:b,provider:c,modelFamily:k,egressId:j})}let j=function(a={}){let b="function"==typeof a.now?a.now:Date.now,c="function"==typeof a.onTransition?a.onTransition:()=>{},e=new Map,f=0;function g(a,b,d){c(Object.freeze({type:"circuit",provider:a.dimensions.provider,phase:b,reason:a.dimensions.scope,deadlineMs:a.openUntilMs?Math.max(0,a.openUntilMs-d):0,...a.dimensions.modelFamily?{modelFamily:a.dimensions.modelFamily}:{}}))}function j(a){for(let[b,c]of e)c.failures=c.failures.filter(b=>a-b.atMs<=6e4),"closed"===c.mode&&0===c.failures.length&&a-c.lastTouchedAtMs>18e5&&e.delete(b);let b=[...e.entries()].filter(([,a])=>"closed"===a.mode).sort((a,b)=>a[1].lastTouchedAtMs-b[1].lastTouchedAtMs);for(;b.length>2048;)e.delete(b.shift()[0])}function k(a,c=!1){let d=i(a);if(!d)return null;let f=Object.values(d).join("\x1f"),g=e.get(f);return!g&&c&&(g={dimensions:d,mode:"closed",failures:[],openDurationMs:3e4,openUntilMs:null,probeLeaseId:null,probeSuccesses:0,lastTouchedAtMs:b()},e.set(f,g)),g}function l(a,b){a?.mode==="open"&&b>=a.openUntilMs&&(a.mode="half_open",a.probeLeaseId=null,g(a,"half_open",b))}function m(a,b,c=a.openDurationMs){a.mode="open",a.openDurationMs=Math.min(3e5,Math.max(3e4,c)),a.openUntilMs=b+a.openDurationMs,a.probeLeaseId=null,a.probeSuccesses=0,a.lastTouchedAtMs=b,g(a,"open",b)}return Object.freeze({recordFailure:function(a={}){let c;if(!1===a.evidentiary)return!1;let e=b();j(e);let f=k(a,!0);return!!f&&(l(f,e),"closed"===f.mode)&&(f.failures=f.failures.filter(a=>e-a.atMs<=6e4),f.failures.push(Object.freeze({atMs:e,accountId:h(a.accountId||a.connectionId,"unknown-account"),provider:h((0,d.g2)(h(a.provider)),"unknown-provider",80)})),f.lastTouchedAtMs=e,c=f.failures.length,("integrity"===f.dimensions.scope?c>=1:!(c<5)&&("provider"===f.dimensions.scope?new Set(f.failures.map(a=>a.accountId)).size>=2:"egress"!==f.dimensions.scope||new Set(f.failures.map(a=>a.provider)).size>=2))&&m(f,e),!0)},recordSuccess:function(a={}){let c=b(),d=k(a);return!!d&&(l(d,c),"closed"===d.mode&&(d.failures=[],d.lastTouchedAtMs=c,!0))},getDecision:function(a){let c=b();j(c);let d=i(a),e=k(a);return e?(l(e,c),Object.freeze({...e.dimensions,state:e.mode,openUntilMs:e.openUntilMs,openDurationMs:e.openDurationMs,probeInFlight:!!e.probeLeaseId,consecutiveProbeSuccesses:e.probeSuccesses})):Object.freeze({...d||{scope:null},state:"closed",openUntilMs:null,openDurationMs:3e4,probeInFlight:!1,consecutiveProbeSuccesses:0})},tryAcquireProbe:function(a){let c=b(),d=k(a);return d?(l(d,c),"half_open"!==d.mode)?Object.freeze({acquired:!1,reason:"open"===d.mode?"circuit_open":"circuit_closed"}):d.probeLeaseId?Object.freeze({acquired:!1,reason:"probe_in_flight"}):(d.probeLeaseId=`probe-${c}-${++f}`,d.lastTouchedAtMs=c,Object.freeze({acquired:!0,leaseId:d.probeLeaseId})):Object.freeze({acquired:!1,reason:"circuit_closed"})},releaseProbe:function(a,c={}){let d=b(),e=k(a);if(!e||"half_open"!==e.mode||!e.probeLeaseId||c.leaseId!==e.probeLeaseId)return!1;if(e.probeLeaseId=null,e.lastTouchedAtMs=d,!0===c.cancelled)return!0;if(!0===c.success)return e.probeSuccesses+=1,e.probeSuccesses>=2&&(e.mode="closed",e.failures=[],e.openDurationMs=3e4,e.openUntilMs=null,e.probeLeaseId=null,e.probeSuccesses=0,e.lastTouchedAtMs=d,g(e,"closed",d)),!0;return m(e,d,Math.min(3e5,2*e.openDurationMs)),!0}})}({onTransition:f.cN}),k=j.recordFailure;j.recordSuccess,j.getDecision,j.tryAcquireProbe;let l=j.releaseProbe},80238:(a,b,c)=>{c.d(b,{Pt:()=>C,Tr:()=>D,c1:()=>z,kI:()=>E,uT:()=>y,vk:()=>B});var d=c(89718),e=c(39326),f=c(12557),g=c(3662),h=c(29679),i=c(91254),j=c(75681),k=c(7803),l=c(93930),m=c(79761);let n=Promise.resolve(),o=new Set(["policy_suspended","credential_rejected","reauth_required"]),p=new Set(["authentication","entitlement_or_quota","permission_denied","rate_limited","upstream_transient"]),q=new Set(["not_attempted","succeeded","transient_failed","rejected"]);function r(a,b=200){return null==a||""===a?null:String(a).slice(0,b).replace(/[^a-zA-Z0-9._:/#-]/g,"")||null}function s(a){let b=Number(a);return Number.isInteger(b)&&b>=0&&b<=599?b:null}function t(a,b){let c=a&&"object"==typeof a&&!Array.isArray(a)?a:{},d=Number(b??c.resetsAtMs),e=new Date(d),f=Number.isFinite(d)&&d>0&&Number.isFinite(e.getTime())?e.toISOString():null;return{failureClass:r(c.failureClass,80)?.toLowerCase()||null,providerErrorCode:r(c.providerErrorCode),upstreamRequestId:r(c.upstreamRequestId),failureResetAt:f,authLifecycle:function(a){if(!a||"object"!=typeof a||Array.isArray(a))return null;let b=q.has(a.refreshOutcome)?a.refreshOutcome:"not_attempted";return{initialStatus:s(a.initialStatus),refreshAttempted:!0===a.refreshAttempted,refreshOutcome:b,retryStatus:s(a.retryStatus)}}(c.authLifecycle)}}function u(a,b){return({policy_suspended:"Kiro reports that this account is suspended or disabled by upstream policy.",credential_rejected:"Kiro rejected the credential after a successful token refresh.",reauth_required:"Kiro rejected the refresh credential; sign in again before re-enabling.",entitlement_or_quota:"Kiro entitlement or quota is temporarily unavailable.",rate_limited:"Kiro rate limit is temporarily exhausted.",authentication:"Kiro authentication is temporarily unavailable.",permission_denied:"Kiro denied this request without confirming an account suspension.",upstream_transient:"Kiro upstream is temporarily unavailable."})[a]||`Kiro upstream request failed with status ${b||"unknown"}.`}function v(a){return"string"!=typeof a?"":a.trim().replace(/^(?:kiro|kr)\//i,"")}function w(a,b){let c=a?.providerSpecificData?.enabledModels;if(!Array.isArray(c)||0===c.length)return!0;let d=v(b);return c.some(a=>v(a)===d)}function x(a){return Object.freeze({...a,supportedModels:Object.freeze([...a.supportedModels||[]]),supportedOperations:Object.freeze([...a.supportedOperations||[]]),capabilities:Object.freeze([...a.capabilities||[]]),quota:a.quota?Object.freeze({...a.quota}):null,circuits:Object.freeze({...a.circuits||{}}),eligibility:Object.freeze({eligible:a.eligibility.eligible,reasons:Object.freeze([...a.eligibility.reasons])})})}async function y(a,b=null,c={}){let e=(0,j.rs)(a),g=Array.isArray(c.allowedConnectionIds)?c.allowedConnectionIds:null;if(!g&&c.apiKey&&(g=await (0,d.ME)(c.apiKey)),j.IS[e]?.noAuth){let a={id:"noauth",provider:e,priority:1,legacyOrder:0,isActive:!0,quarantinedAt:null,reauthRequired:!1,supportedModels:[],supportedOperations:[c.operation||"chat"],capabilities:c.capabilities||[],modelLocked:!1,quota:null,circuits:{},transportAvailable:!1!==c.transportAvailable,outboundAllowed:!1!==c.outboundAllowed,egressId:"direct",health:null,sticky:!1};return a.eligibility=(0,l.Z)(a,{...c,provider:e,model:b,operation:c.operation||"chat",allowedConnectionIds:g,pinnedConnectionId:c.strictPreferred?c.preferredConnectionId:null}),Object.freeze([x(a)])}let[h,i]=await Promise.all([(0,d.getProviderConnections)({provider:e}),(0,d.tV)(e)]),k=new Map(i.map(a=>[a.connectionId,a])),n=Number.isFinite(c.nowMs)?c.nowMs:Date.now(),o=c.circuitRegistry||m.tH;return Object.freeze(h.map((a,d)=>{let h=a.providerSpecificData||{},i=k.get(a.id)||null,j=Date.parse(i?.fetchedAt),m=Number.isFinite(j)&&n-j<=f.JN,p=(0,f.td)(i?.usage,e,b),q=(0,f.yH)(i,n),r=Array.isArray(h.enabledModels)?h.enabledModels.map(a=>v(a)):[],s=h.connectionProxyPoolId||h.proxyPoolId||(h.vercelRelayUrl?"relay":"direct"),t={account:{scope:"account",provider:e,accountId:a.id},provider:{scope:"provider",provider:e},egress:{scope:"egress",egressId:s},integrity:{scope:"integrity",provider:e,model:b,egressId:s}},u=Object.fromEntries(Object.entries(t).map(([a,b])=>[a,o.getDecision(b)])),w=Object.entries(u).filter(([,a])=>"half_open"===a.state),y=Object.values(u).some(a=>"open"===a.state);if(!0===c.acquireCircuitProbes&&!y&&1===w.length){let[a]=w[0],b=o.tryAcquireProbe(t[a]);u[a]={...u[a],probeAcquired:!0===b.acquired,...b.leaseId?{probeLeaseId:b.leaseId}:{}}}let z={id:a.id,provider:e,priority:Number.isFinite(a.priority)?a.priority:999,legacyOrder:d,isActive:!0===a.isActive,quarantinedAt:a.quarantinedAt||null,reauthRequired:"reauth_required"===a.failureClass||"token_expired"===a.autoDisabledReason||"reauth_required"===a.autoDisabledReason,supportedModels:r,supportedOperations:Array.isArray(h.supportedOperations)?h.supportedOperations:[c.operation||"chat"],capabilities:Array.isArray(h.capabilities)?h.capabilities:[],modelLocked:(0,f.Bl)(a,b,e),quota:i?{provenance:m?"fresh":"last_successful",exhausted:!!q,remaining:p>=0?p:null,total:p>=0?100:null,fetchedAtMs:Number.isFinite(j)?j:null,validUntilMs:Number.isFinite(j)?j+f.JN:null,exhaustedUntilMs:q||null}:null,circuits:u,transportAvailable:!1!==c.transportAvailable&&!1!==h.transportAvailable,outboundAllowed:!1!==c.outboundAllowed,egressId:s,health:"unavailable"===a.testStatus||a.lastError?"degraded":"success"===a.testStatus||"connected"===a.testStatus?"healthy":null,sticky:a.consecutiveUseCount>0};return z.eligibility=(0,l.Z)(z,{...c,provider:e,model:b,operation:c.operation||"chat",allowedConnectionIds:g,pinnedConnectionId:c.strictPreferred?c.preferredConnectionId:null,nowMs:n}),x(z)}))}async function z(a,b=null,g=null,l={}){let m,o=b instanceof Set?b:b?new Set([b]):new Set,p=l?.preferredConnectionId||null,q=!!l?.strictPreferred,r=n;n=new Promise(a=>{m=a});try{let b;await r;let m=(0,j.rs)(a);if(j.IS[m]?.noAuth){let a=((await (0,d.mt)()).providerStrategies||{})[m]||{},b=a.rotateStrategy||"none",c=a.proxyPoolId||null;if("none"!==b){let a=(await (0,d.ui)({isActive:!0})).filter(a=>a.proxyUrl).map(a=>a.id);c=(0,e.p)(a,b,m)}let f=await (0,e.B)({proxyPoolId:c||""});return{id:"noauth",connectionName:"Public",isActive:!0,accessToken:"public",providerSpecificData:{connectionProxyEnabled:f.connectionProxyEnabled,connectionProxyUrl:f.connectionProxyUrl,connectionNoProxy:f.connectionNoProxy,connectionProxyPoolId:f.proxyPoolId||null,vercelRelayUrl:f.vercelRelayUrl||""}}}let n=await (0,d.getProviderConnections)({provider:m,isActive:!0}),s=Array.isArray(l?.allowedConnectionIds)?l.allowedConnectionIds:null;if(!s&&l?.apiKey&&(s=await (0,d.ME)(l.apiKey)),Array.isArray(s)&&s.length>0){let b=new Set(s);n=n.filter(a=>b.has(a.id)),k.debug("AUTH",`${a} | API key scoped to ${n.length} allowed connection(s)`)}k.debug("AUTH",`${a} | total connections: ${n.length}, excludeIds: ${o.size>0?[...o].join(","):"none"}, model: ${g||"any"}`);let t=null;if("kiro"===m&&g)try{t=await (0,h.ED)(g)}catch(a){k.warn("AUTH",`Kiro model support cache unavailable: ${a?.message||a}`)}let u=t?.state==="supported"||t?.state==="unsupported",v={modelUnavailable:!0,provider:m,model:g};if(0===n.length){if(u)return k.warn("AUTH",`${a} | no eligible supporter for ${g}`),v;return k.warn("AUTH",`No credentials for ${a}`),null}let x=n.filter(a=>!a.quarantinedAt),y=new Set,z=new Set,A=!1;if("kiro"===m&&g){let a=x=x.filter(a=>w(a,g)),b=new Set(t?.unsupportedConnectionIds||[]),c=new Set(t?.freshCatalogConnectionIds||[]),d=n.filter(a=>{let c=a?.providerSpecificData?.enabledModels;return Array.isArray(c)&&c.length>0&&w(a,g)&&!b.has(a.id)}).map(a=>a.id),e=new Set([...t?.supportingConnectionIds||[],...d].filter(a=>!b.has(a)));z=new Set([...b,...[...c].filter(a=>!e.has(a))]),x=x.filter(a=>!z.has(a.id)),A=a.length>0&&a.every(a=>z.has(a.id)),e.size>0?(y=e,u=!0):t?.state==="unsupported"&&(x=[])}let B=new Map;if("codebuddy-cn"===m)for(let a of(await (0,d.tV)(m))){let b=(0,f.yH)(a);b&&B.set(a.connectionId,b)}let C=new Map;if("codebuddy-cn"===m)for(let a of n){if(11140!==Number(a.providerErrorCode))continue;let b=(0,f.kJ)(a);b&&C.set(a.id,b)}let D=new Set,E=new Set;if("codex"===m&&g){let a=await (0,d.tV)(m),b=new Map(a.map(a=>[a.connectionId,a]));for(let a of n)(0,f.xB)(a,g,m)&&E.add(a.id),(0,f.N2)(a,g,b.get(a.id),m,{ignoreProbe:!0})&&!E.has(a.id)&&D.add(a.id)}if("codebuddy"===m||"codebuddy-cn"===m)for(let a of n)(0,i.hN)(a)&&(0,f.xB)(a,null,m)&&E.add(a.id);let F=a=>C.has(a.id)||("codebuddy"===m||"codebuddy-cn"===m)&&(0,i.hN)(a)&&E.has(a.id)||(0,f.Bl)(a,g,m)&&!D.has(a.id),G=a=>E.has(a.id)?"codebuddy"===m||"codebuddy-cn"===m?a[(0,f.UM)(null,m)]:new Date(Date.now()+1e3).toISOString():[(0,f.V0)(a,g,m),C.get(a.id)].filter(Boolean).sort().at(-1)||null,H=x.filter(a=>!(o.has(a.id)||F(a)||B.has(a.id))),I=H,J=!1;if("kiro"===m&&g&&!q){let a=H.filter(a=>y.has(a.id));if(a.length>0)I=a;else{let a=H.filter(a=>!y.has(a.id)),b=[...o].filter(a=>!y.has(a)).length;I=a,b>=3?(I=[],J=!0):o.size>0&&0===a.length&&(J=!0)}}if(q&&p){let b=n.find(a=>a.id===p);if(!b)return k.warn("AUTH",`${a} | pinned account not found: ${p}`),null;if(b.quarantinedAt)return k.warn("AUTH",`${a} | pinned account is quarantined: ${b.id?.slice(0,8)}`),null;if(z.has(b.id))return k.warn("AUTH",`${a} | pinned account does not support ${g}: ${b.id?.slice(0,8)}`),v;if(!x.some(a=>a.id===b.id))return k.warn("AUTH",`${a} | pinned account is not eligible for ${g||"this request"}: ${b.id?.slice(0,8)}`),u?v:null;if(o.has(b.id))return k.warn("AUTH",`${a} | pinned account excluded after failure: ${b.id?.slice(0,8)}`),null;if(F(b)||B.has(b.id)){let a=[G(b),B.has(b.id)?new Date(B.get(b.id)).toISOString():null].filter(Boolean).sort().at(-1);return{allRateLimited:!0,retryAfter:a,retryAfterHuman:(0,f.Qo)(a),lastError:b.lastError||"Pinned account unavailable",lastErrorCode:b.errorCode||null}}I=[b]}if(k.debug("AUTH",`${a} | available: ${I.length}/${x.length}`),n.forEach(a=>{let b=o.has(a.id),c=F(a),d=D.has(a.id),e=B.get(a.id),h=!!a.quarantinedAt,i=z.has(a.id);if(b||c||e||d||h||i){let j=(0,f.kJ)(a),l=E.has(a.id);k.debug("AUTH",` \u2192 ${a.id?.slice(0,8)} | ${b?"excluded":""} ${c?`modelLocked(${g}) until ${j}`:""} ${d?`staleLockRecovered(${g})`:""} ${l?`recoveryProbeInFlight(${g})`:""} ${e?`quotaExhausted until ${new Date(e).toISOString()}`:""} ${h?"quarantined":""} ${i?`unsupported(${g})`:""}`)}}),0===I.length){if(J)return k.warn("AUTH",`${a} | bounded fallback exhausted for ${g}`),null;let b=x.filter(a=>F(a)),c=x.map(a=>[F(a)?G(a):null,B.has(a.id)?new Date(B.get(a.id)).toISOString():null].filter(Boolean).sort().at(-1)).filter(Boolean).sort()[0]||null;if(c){let d=b[0];return k.warn("AUTH",`${a} | all ${x.length} candidate accounts locked for ${g||"all"} (${(0,f.Qo)(c)}) | lastError=${d?.lastError?.slice(0,50)}`),{allRateLimited:!0,retryAfter:c,retryAfterHuman:(0,f.Qo)(c),lastError:d?.lastError||null,lastErrorCode:d?.errorCode||null}}return k.warn("AUTH",`${a} | all ${n.length} accounts unavailable`),u||A?v:null}let K=await (0,d.mt)(),L=(K.providerStrategies||{})[m]||{},M=L.fallbackStrategy||K.fallbackStrategy||"fill-first";if(p&&(b=I.find(a=>a.id===p))&&k.debug("AUTH",`${a} | pinned to ${b.id?.slice(0,8)} (${b.name||b.email||"unnamed"})`),b);else if(q&&p)return k.warn("AUTH",`${a} | pinned account unavailable: ${p}`),null;else if("round-robin"===M){let a=L.stickyRoundRobinLimit||K.stickyRoundRobinLimit||3,c=[...I].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(b.lastUsedAt)-new Date(a.lastUsedAt):-1:1:(a.priority||999)-(b.priority||999))[0],e=c?.consecutiveUseCount||0;c&&c.lastUsedAt&&e<a?(b=c,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:(b.consecutiveUseCount||0)+1})):(b=[...I].sort((a,b)=>a.lastUsedAt||b.lastUsedAt?a.lastUsedAt?b.lastUsedAt?new Date(a.lastUsedAt)-new Date(b.lastUsedAt):1:-1:(a.priority||999)-(b.priority||999))[0],await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1}))}else if("most-quota"===M){let a=await Promise.all(I.map(async a=>{let b=-1;try{let c=await (0,d.getQuotaSnapshot)(a.id);b=(0,f.td)(c?.usage,m,g)}catch{}return{conn:a,remaining:b}}));a.sort((a,b)=>a.remaining!==b.remaining?b.remaining-a.remaining:(a.conn.priority||999)-(b.conn.priority||999)),b=(a.filter(a=>0!==a.remaining)[0]||a[0]).conn,await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1})}else if("lowest-latency"===M){let{getLatencyStats:e}=await Promise.resolve().then(c.bind(c,93999)),f=await e(),g=I.map(a=>{let b=f.get(`${a.provider}|${a.id}`)||f.get(`${m}|${a.id}`);return{conn:a,avgMs:b?b.avgMs:null,samples:b?b.samples:0}});g.sort((a,b)=>null===a.avgMs&&null===b.avgMs?(a.conn.priority||999)-(b.conn.priority||999):null===a.avgMs?1:null===b.avgMs?-1:a.avgMs!==b.avgMs?a.avgMs-b.avgMs:(a.conn.priority||999)-(b.conn.priority||999)),b=g[0].conn,k.debug("AUTH",`${a} | lowest-latency → ${b.id?.slice(0,8)} (${g[0].avgMs??"?"}ms avg, ${g[0].samples} samples)`),await (0,d.updateProviderConnection)(b.id,{lastUsedAt:new Date().toISOString(),consecutiveUseCount:1})}else b=I[0];if(D.has(b.id)){let a=(0,f.WP)(g,m);await (0,d.updateProviderConnection)(b.id,a),b={...b,...a}}if(("codebuddy"===m||"codebuddy-cn"===m)&&(0,i.hN)(b)){let a=(0,f.WP)(null,m);await (0,d.updateProviderConnection)(b.id,a),b={...b,...a}}let N=await (0,e.B)(b.providerSpecificData||{});return{authType:b.authType,apiKey:b.apiKey,accessToken:b.accessToken,refreshToken:b.refreshToken,idToken:b.idToken,expiresAt:b.expiresAt,expiresIn:b.expiresIn,lastRefreshAt:b.lastRefreshAt,projectId:b.projectId||b.providerSpecificData?.projectId||null,connectionName:b.displayName||b.name||b.email||b.id,copilotToken:b.providerSpecificData?.copilotToken,providerSpecificData:{...b.providerSpecificData||{},connectionProxyEnabled:N.connectionProxyEnabled,connectionProxyUrl:N.connectionProxyUrl,connectionNoProxy:N.connectionNoProxy,strictProxy:!0===N.strictProxy,connectionProxyPoolId:N.proxyPoolId||null,vercelRelayUrl:N.vercelRelayUrl||""},connectionId:b.id,testStatus:b.testStatus,lastError:b.lastError,_connection:b}}finally{m&&m()}}async function A(a,b,e,h=null,l=null,m=null,n=null){let o,p,q;if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let r=(0,j.rs)(h),s=(0,f.UM)(l,r);if((0,f.d5)(b,e))return await (0,d.updateProviderConnection)(a,{[s]:null}),k.warn("AUTH",`shared egress/WAF error; fallback without locking account [${b}]`),{shouldFallback:!0,cooldownMs:0};if((0,f.P0)(b,e))return await (0,d.updateProviderConnection)(a,{[s]:null}),k.warn("AUTH",`non-account error; no fallback [${b}] ${"string"==typeof e?e.slice(0,100):"Provider error"}`),{shouldFallback:!1,cooldownMs:0};let t=(await (0,d.getProviderConnections)({provider:r})).find(b=>b.id===a),u=t?.backoffLevel||0,v=(0,f.UO)(e),w="codebuddy-cn"===r&&14018===v,x="codebuddy"===r&&14018===v,y="codebuddy-cn"===r&&11140===v;if(y){let c=new Date().toISOString(),e="CodeBuddy CN rejected this credential (11140 request illegal).";return await (0,d.Iu)(a,(a,d)=>{if(a.manuallyReenabledAt&&a.manuallyReenabledAt!==n?.manuallyReenabledAt)return null;let f={...a,providerSpecificData:(0,i.r_)(a.providerSpecificData,c,v)};return{connection:{[s]:null,isActive:!1,testStatus:"unavailable",lastError:e,errorCode:b,providerErrorCode:v,quarantinedAt:c,quarantineReason:e,lastErrorAt:c,autoDisabledAt:c,autoDisabledReason:"credential_rejected",consecutiveAuthFailures:Math.max(1,(a.consecutiveAuthFailures||0)+1),backoffLevel:0,providerSpecificData:f.providerSpecificData},quotaUsage:(0,i.pX)(d?.usage||{},f)}}),k.warn("AUTH",`${t?.displayName||t?.name||a.slice(0,8)} quarantined immediately [11140]`),{shouldFallback:!0,cooldownMs:0}}if(w){let b=await (0,d.getQuotaSnapshot)(a);m=(0,f.lI)(b?.usage)||m}if(m&&m>Date.now()?(o=!0,p=Math.min(m-Date.now(),g.fh),q=0):{shouldFallback:o,cooldownMs:p,newBackoffLevel:q}=(0,f.hk)(b,e,u),!o)return await (0,d.updateProviderConnection)(a,{[s]:null}),{shouldFallback:!1,cooldownMs:0};let z="string"==typeof e?e.slice(0,100):"Provider error",B=w||x,C=B?null:(0,f.LV)(r,l),D=(0,f.S5)(C,p,r),E=new Date().toISOString(),F={...D,[s]:null,...B?{[(0,f.UM)(null,r)]:null}:{},testStatus:"unavailable",lastError:z,errorCode:b,providerErrorCode:v,modelLockReason:{model:C||"__all",providerErrorCode:v,reason:z,lockedAt:E,resetsAt:new Date(Date.now()+p).toISOString()},lastErrorAt:E,backoffLevel:q??u};if(B)try{await (0,d.Iu)(a,(a,b)=>{if(a.manuallyReenabledAt&&a.manuallyReenabledAt!==n?.manuallyReenabledAt)return null;let c={...a,providerSpecificData:(0,i.QN)(a.providerSpecificData,E)};return{connection:{...F,providerSpecificData:c.providerSpecificData},quotaUsage:(0,i.pX)(b?.usage||{},c)}})}catch(a){throw k.warn("AUTH",`CodeBuddy runtime exhaustion update failed: ${a?.message||a}`),a}else await (0,d.updateProviderConnection)(a,F);let G=Object.keys(D)[0],H=t?.displayName||t?.name||t?.email||a.slice(0,8);if(k.warn("AUTH",`${H} locked ${G} for ${Math.round(p/1e3)}s [${b}]`),h&&c.e(6802).then(c.bind(c,86802)).then(a=>{a.alertProviderDown(h,`${H}: ${z}`),(429===b||z.toLowerCase().includes("quota"))&&a.alertQuotaExhausted(h,H)}).catch(()=>{}),h&&b&&z&&console.error(`\u274c ${h} [${b}]: ${z}`),new Set([401,403]).has(b)&&!w){let c=("string"==typeof e?e:"").toLowerCase(),f=["quota","payment","billing","entitlement","subscription","insufficient_quota"].some(a=>c.includes(a));if(y||!f&&["token expired","token invalid","invalid token","revoked","unauthorized","invalid api key","invalid_api_key","banned","suspended","restricted","account disabled"].some(a=>c.includes(a))){let e=(t?.consecutiveAuthFailures||0)+1;e>=3?(await (0,d.updateProviderConnection)(a,{isActive:!1,autoDisabledAt:new Date().toISOString(),autoDisabledReason:c.includes("banned")||c.includes("suspended")||c.includes("restricted")||c.includes("account disabled")?"banned":"token_expired",consecutiveAuthFailures:e}),k.warn("AUTH",`\u26d4 Auto-disabled ${H} after ${e} consecutive auth failures [${b}]: ${z}`)):(await (0,d.updateProviderConnection)(a,{consecutiveAuthFailures:e}),k.warn("AUTH",`${H} auth failure ${e}/3 [${b}]: ${z}`))}}return{shouldFallback:!0,cooldownMs:p}}async function B(a,b,c,e=null,i=null,l=null,m=null,n=null){let q,s,v,w=(0,j.rs)(e);if("antigravity"===w){let c=t(m,l);if("policy_suspended"===c.failureClass&&"ORG_CODE_ASSIST_RESTRICTED"===c.providerErrorCode){if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let e=(await (0,d.getProviderConnections)({provider:w})).find(b=>b.id===a),g=new Date().toISOString(),h="Google organization policy blocks Gemini Code Assist access for this Antigravity account.",j=(0,f.UM)(i,w);await (0,d.updateProviderConnection)(a,{[j]:null,isActive:!1,testStatus:"unavailable",lastError:h,errorCode:b,failureClass:c.failureClass,providerErrorCode:c.providerErrorCode,upstreamRequestId:c.upstreamRequestId,failureResetAt:c.failureResetAt,authLifecycle:c.authLifecycle,quarantinedAt:g,quarantineReason:h,lastErrorAt:g,autoDisabledAt:g,autoDisabledReason:c.failureClass,consecutiveAuthFailures:Math.max(1,(e?.consecutiveAuthFailures||0)+1),backoffLevel:0});let l=e?.displayName||e?.name||e?.email||a.slice(0,8);return k.warn("AUTH",`${l} quarantined immediately [${c.failureClass}]`),{shouldFallback:!0,cooldownMs:0}}}if("kiro"!==w)return A(a,b,c,e,i,l,n);if(!a||"noauth"===a)return{shouldFallback:!1,cooldownMs:0};let x=(0,f.UM)(i,w),y=t(m,l),{failureClass:z}=y;if("shared_egress_waf"===z||(0,f.d5)(b,c))return await (0,d.updateProviderConnection)(a,{[x]:null}),k.warn("AUTH",`Kiro shared egress/WAF error; fallback without account punishment [${b}]`),{shouldFallback:!0,cooldownMs:0};if(function(a,b){if("invalid_model"===a)return!0;let c=String(b||"").toUpperCase();return/INVALID[_-]?MODEL|MODEL[_-]?(?:NOT[_-]?(?:FOUND|SUPPORTED)|UNSUPPORTED)/.test(c)}(z,y.providerErrorCode)){await (0,d.updateProviderConnection)(a,{[x]:null});let b=!1;try{await (0,h.FL)(a,i);let c=(await (0,d.getProviderConnections)({provider:w,isActive:!0})).filter(a=>!a.quarantinedAt).map(a=>a.id);b=!!i&&await (0,h.CY)(i,a,c)}catch(a){k.warn("AUTH",`Kiro model support cache update failed: ${a?.message||a}`)}return k.warn("AUTH",`Kiro model is unsupported by ${a.slice(0,8)}; ${b?"trying a known supporter":"not rotating to an unknown account"}`),{shouldFallback:b,cooldownMs:0}}if(function(a,b){if("invalid_request"===a||"request_error"===a)return!0;let c=String(b||"").toUpperCase();return/INVALID[_-]?(?:REQUEST|ARGUMENT)|VALIDATION|BAD[_-]?REQUEST|MALFORMED/.test(c)}(z,y.providerErrorCode)||(0,f.P0)(b,c))return await (0,d.updateProviderConnection)(a,{[x]:null}),k.warn("AUTH",`Kiro request error; no account lock or credential rotation [${b}]`),{shouldFallback:!1,cooldownMs:0};let C=(await (0,d.getProviderConnections)({provider:w})).find(b=>b.id===a),D=C?.backoffLevel||0,E=y.providerErrorCode||r((0,f.UO)(c)),F=C?.displayName||C?.name||C?.email||a.slice(0,8);if(o.has(z)){let c=new Date().toISOString(),e=u(z,b);return await (0,d.updateProviderConnection)(a,{[x]:null,isActive:!1,testStatus:"unavailable",lastError:e,errorCode:b,failureClass:z,providerErrorCode:E,upstreamRequestId:y.upstreamRequestId,failureResetAt:y.failureResetAt,authLifecycle:y.authLifecycle,quarantinedAt:c,quarantineReason:e,lastErrorAt:c,autoDisabledAt:c,autoDisabledReason:z,consecutiveAuthFailures:Math.max(1,(C?.consecutiveAuthFailures||0)+1),backoffLevel:0}),k.warn("AUTH",`${F} quarantined immediately [${z}]`),{shouldFallback:!0,cooldownMs:0}}let G=Number(l);if(Number.isFinite(G)&&G>Date.now()?(q=!0,s=Math.min(G-Date.now(),g.fh),v=0):{shouldFallback:q,cooldownMs:s,newBackoffLevel:v}=(0,f.hk)(b,c,D),!q)return await (0,d.updateProviderConnection)(a,{[x]:null}),{shouldFallback:!1,cooldownMs:0};let H=p.has(z)||403===b||408===b||429===b||b>=500,I=z||(429===b?"rate_limited":403===b?"permission_denied":b>=500?"upstream_transient":null),J=u(I,b),K=H?null:(0,f.LV)(w,i),L=(0,f.S5)(K,s,w),M=new Date().toISOString(),N=new Date(Date.now()+s).toISOString();await (0,d.updateProviderConnection)(a,{...L,[x]:null,testStatus:"unavailable",lastError:J,errorCode:b,failureClass:I,providerErrorCode:E,upstreamRequestId:y.upstreamRequestId,failureResetAt:y.failureResetAt,authLifecycle:y.authLifecycle,modelLockReason:{model:K||"__all",providerErrorCode:E,reason:J,lockedAt:M,resetsAt:N},lastErrorAt:M,backoffLevel:v??D,consecutiveAuthFailures:0});let O=Object.keys(L)[0];if(k.warn("AUTH",`${F} locked ${O} for ${Math.round(s/1e3)}s [${b}]`),!z&&(401===b||403===b)){let e=("string"==typeof c?c:"").toLowerCase();if(!["quota","payment","billing","entitlement","subscription","insufficient_quota"].some(a=>e.includes(a))&&["token expired","token invalid","invalid token","revoked","unauthorized","invalid api key","invalid_api_key","banned","suspended","restricted","account disabled"].some(a=>e.includes(a))){let c=(C?.consecutiveAuthFailures||0)+1,f=["banned","suspended","restricted","account disabled"].some(a=>e.includes(a));if(c>=3){let e=new Date().toISOString(),g=f?u("policy_suspended",b):"Kiro rejected this credential three consecutive times.";await (0,d.updateProviderConnection)(a,{isActive:!1,quarantinedAt:e,quarantineReason:g,failureClass:f?"policy_suspended":"authentication",autoDisabledAt:e,autoDisabledReason:f?"policy_suspended":"token_expired",consecutiveAuthFailures:c}),k.warn("AUTH",`${F} quarantined after ${c} unstructured auth failures`)}else await (0,d.updateProviderConnection)(a,{consecutiveAuthFailures:c})}}return{shouldFallback:!0,cooldownMs:s}}async function C(a,b,c=null){if(!a||"noauth"===a)return;let e=b._connection||b,g=(0,j.rs)(e.provider),h=(0,f.LV)(g,c),l=Date.now(),m=(0,f.UM)(c,g),n=!1,o=!1,p=(a,b=!1)=>{if(!a||b&&(a.quarantinedAt||e.quarantinedAt))return null;let d=(a,b)=>{if(!a.startsWith(b))return!1;let d=a.slice(b.length);return"__all"===d||!c||(0,f.LV)(g,d)===h};if(b&&Object.keys(a).some(b=>(d(b,"modelLock_")||d(b,"modelRecoveryProbe_"))&&a[b]!==e[b]&&Date.parse(a[b])>l))return n=!0,null;let i=Object.keys(a).filter(a=>a.startsWith("modelLock_"));if("unavailable"!==a.testStatus&&!a.lastError&&0===i.length)return null;let j=i.filter(d=>{if(b&&a[d]!==e[d])return!1;let i=d.slice(10);if(c&&(0,f.LV)(g,i)===h||c&&"modelLock___all"===d)return!0;let j=a[d];return j&&new Date(j).getTime()<=l});if(0===j.length&&"unavailable"!==a.testStatus&&!a.lastError)return null;let k=i.filter(b=>!j.includes(b)&&Date.parse(a[b])>l),o={...Object.fromEntries(j.map(a=>[a,null]))};return b&&a[m]!==e[m]||(o[m]=null),0===k.length&&Object.assign(o,{testStatus:"active",lastError:null,errorCode:null,providerErrorCode:null,..."kiro"===g?{failureClass:null,upstreamRequestId:null,failureResetAt:null,authLifecycle:null}:{},modelLockReason:null,lastErrorAt:null,backoffLevel:0,consecutiveAuthFailures:0}),o};if("kiro"===g){await (0,d.Op)(a,a=>p(a,!0)),n&&k.debug("AUTH",`Kiro success did not clear newer failure state for ${a.slice(0,8)}`);return}if("codebuddy"===g||"codebuddy-cn"===g){let b=(0,i.kt)(e);await (0,d.Iu)(a,a=>{if(a.quarantinedAt||(0,i.uF)(a))return null;let c=(0,i.kt)(a);if(c&&c!==b)return null;let d=p(a)||{};return(b&&(0,i.kt)(a)===b&&(d.providerSpecificData=(0,i.US)(a.providerSpecificData),d[(0,f.UM)(null,g)]=null,o=!0),0===Object.keys(d).length)?null:{connection:d,...o?{quotaUsage:null}:{}}});return}let q=p(e);q&&await (0,d.updateProviderConnection)(a,q)}function D(a){let b=a.headers.get("Authorization");if(b?.startsWith("Bearer "))return b.slice(7);let c=a.headers.get("x-api-key");return c||null}async function E(a){return!!a&&await (0,d.ek)(a)}},91254:(a,b,c)=>{c.d(b,{CG:()=>p,QN:()=>k,US:()=>o,hN:()=>j,kt:()=>i,pX:()=>q,r_:()=>n,uF:()=>m});let d="codebuddyRuntimeExhaustedAt",e="codebuddyRuntimeExhaustedCode",f="codebuddyRuntimeRejectedAt",g="codebuddyRuntimeRejectedCode";function h(a){return a?.provider==="codebuddy"||a?.provider==="codebuddy-cn"}function i(a){return h(a)&&a.providerSpecificData?.[d]||null}function j(a){return!!i(a)}function k(a,b){return{...a||{},[d]:b,[e]:14018}}function l(a){return a?.provider!=="codebuddy-cn"?null:a.providerSpecificData?.[f]||null}function m(a){return!!l(a)}function n(a,b,c=11140){return{...a||{},[f]:b,[g]:c}}function o(a){let b={...a||{}};return delete b[d],delete b[e],b}function p(a){let b=o(a);return delete b[f],delete b[g],b}function q(a,b){if(!h(b))return a;let c=l(b),d=i(b);if(!c&&!d)return a;let e=a?.billingQuotas||a?.quotas||{};if(c)return{...a||{},message:"CodeBuddy CN chat API rejected this credential (11140); billing package balance is nominal and does not prove chat access.",billingQuotas:e,runtimeStatus:"credential_rejected",chatUsable:!1,runtimeRejectedAt:c,runtimeRejectedCode:Number(b.providerSpecificData?.[g])||11140};let f=Object.fromEntries(Object.entries(e).map(([a,b])=>{let c=Number(b?.total);return[a,{...b||{},...Number.isFinite(c)?{used:c}:{},remaining:0,remainingPercentage:0}]}));return{...a||{},message:"CodeBuddy chat API reported exhausted credits (14018); billing package balance is nominal until a chat request succeeds.",billingQuotas:e,quotas:f,runtimeStatus:"exhausted",chatUsable:!1,runtimeExhausted:!0,runtimeExhaustedAt:d,runtimeExhaustedCode:14018}}},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},93930:(a,b,c)=>{c.d(b,{Z:()=>e});let d=Object.freeze([["unsupported_model",(a,b)=>Array.isArray(a.supportedModels)&&a.supportedModels.length>0&&!a.supportedModels.includes(b.model)],["unsupported_operation",(a,b)=>Array.isArray(a.supportedOperations)&&a.supportedOperations.length>0&&!a.supportedOperations.includes(b.operation)],["unsupported_capability",(a,b)=>{let c=new Set(a.capabilities||[]);return c.size>0&&(b.requiredCapabilities||[]).some(a=>!c.has(a))}],["api_key_model_restricted",(a,b)=>Array.isArray(b.allowedModels)&&b.allowedModels.length>0&&!b.allowedModels.includes(b.model)],["api_key_provider_restricted",(a,b)=>Array.isArray(b.allowedProviders)&&b.allowedProviders.length>0&&!b.allowedProviders.includes(a.provider)],["connection_restricted",(a,b)=>Array.isArray(b.allowedConnectionIds)&&b.allowedConnectionIds.length>0&&!b.allowedConnectionIds.includes(a.id)],["explicit_pin_mismatch",(a,b)=>!!b.pinnedConnectionId&&b.pinnedConnectionId!==a.id],["inactive",a=>!0!==a.isActive],["quarantined",a=>!!a.quarantinedAt],["reauth_required",a=>!0===a.reauthRequired],["model_locked",a=>!0===a.modelLocked],["quota_exhausted",(a,b)=>{let c=a.quota;return!!c&&!0===c.exhausted&&("last_successful"!==c.provenance||!(Number(c.remaining)>0&&Number(c.validUntilMs)>Number(b.nowMs||Date.now())))}],["circuit_open",a=>Object.values(a.circuits||{}).some(a=>a?.state==="open"||a?.state==="half_open"&&a?.probeAcquired!==!0)],["missing_transport",a=>!1===a.transportAvailable],["outbound_rejected",a=>!1===a.outboundAllowed]]);function e(a={},b={}){let c=d.filter(([,c])=>c(a,b)).map(([a])=>a);return Object.freeze({eligible:0===c.length,reasons:Object.freeze(c)})}}};
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/JzhJR_QLUCS172Am3eS9H/_buildManifest.js","static/JzhJR_QLUCS172Am3eS9H/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-99944d59834ca8f9.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-1b03b52e3112452e.js","static/chunks/main-app-5a6578c0256da676.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/S4Ni0EVNQQgndbz1Kanxu/_buildManifest.js","static/S4Ni0EVNQQgndbz1Kanxu/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-99944d59834ca8f9.js","static/chunks/4bd1b696-e356ca5ba0218e27.js","static/chunks/3794-1b03b52e3112452e.js","static/chunks/main-app-5a6578c0256da676.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/081a0afca5a9bd20.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/2259cb9ea5269549.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-99944d59834ca8f9.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-1b03b52e3112452e.js" async=""></script><script src="/_next/static/chunks/main-app-5a6578c0256da676.js" async=""></script><script src="/_next/static/chunks/1a258343-d982be3d64c66e5c.js" async=""></script><script src="/_next/static/chunks/3745-7e7bb6aaf8a63e86.js" async=""></script><script src="/_next/static/chunks/3339-821ef5f316467690.js" async=""></script><script src="/_next/static/chunks/620-92e97ab01cb4c25a.js" async=""></script><script src="/_next/static/chunks/5497-27b73ecf920843b1.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-9fadcbba0c598e87.js" async=""></script><script src="/_next/static/chunks/app/layout-697386c34f0b7bd3.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><meta name="theme-color" content="#0a0a0a"/><title>ZevaiRouter - Provider Automation &amp; Quota Tracking</title><meta name="description" content="ZevaiRouter - provider automation, multi-account workflows, and quota tracking."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.svg"/><script>if(document.fonts&&document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-99944d59834ca8f9.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"3862\",\"static/chunks/1a258343-d982be3d64c66e5c.js\",\"3745\",\"static/chunks/3745-7e7bb6aaf8a63e86.js\",\"3339\",\"static/chunks/3339-821ef5f316467690.js\",\"620\",\"static/chunks/620-92e97ab01cb4c25a.js\",\"5497\",\"static/chunks/5497-27b73ecf920843b1.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-9fadcbba0c598e87.js\"],\"ThemeProvider\"]\n3:I[94635,[\"620\",\"static/chunks/620-92e97ab01cb4c25a.js\",\"7177\",\"static/chunks/app/layout-697386c34f0b7bd3.js\"],\"RuntimeI18nProvider\"]\n4:I[57121,[],\"\"]\n5:I[74581,[],\"\"]\n6:I[90484,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[90484,[],\"ViewportBoundary\"]\nc:I[90484,[],\"MetadataBoundary\"]\ne:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/081a0afca5a9bd20.css\",\"style\"]\n:HL[\"/_next/static/css/2259cb9ea5269549.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/081a0afca5a9bd20.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/2259cb9ea5269549.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"if(document.fonts\u0026\u0026document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$@9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"JzhJR_QLUCS172Am3eS9H\"}\n"])</script><script>self.__next_f.push([1,"f:[]\n9:\"$Wf\"\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[86869,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"ZevaiRouter - Provider Automation \u0026 Quota Tracking\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"ZevaiRouter - provider automation, multi-account workflows, and quota tracking.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L10\",\"4\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/081a0afca5a9bd20.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/2259cb9ea5269549.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-99944d59834ca8f9.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-1b03b52e3112452e.js" async=""></script><script src="/_next/static/chunks/main-app-5a6578c0256da676.js" async=""></script><script src="/_next/static/chunks/1a258343-d982be3d64c66e5c.js" async=""></script><script src="/_next/static/chunks/3745-7e7bb6aaf8a63e86.js" async=""></script><script src="/_next/static/chunks/3339-821ef5f316467690.js" async=""></script><script src="/_next/static/chunks/620-2e6639e4ca9afb1d.js" async=""></script><script src="/_next/static/chunks/5497-27b73ecf920843b1.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-9fadcbba0c598e87.js" async=""></script><script src="/_next/static/chunks/app/layout-697386c34f0b7bd3.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><meta name="theme-color" content="#0a0a0a"/><title>ZevaiRouter - Provider Automation &amp; Quota Tracking</title><meta name="description" content="ZevaiRouter - provider automation, multi-account workflows, and quota tracking."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.svg"/><script>if(document.fonts&&document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-99944d59834ca8f9.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"3862\",\"static/chunks/1a258343-d982be3d64c66e5c.js\",\"3745\",\"static/chunks/3745-7e7bb6aaf8a63e86.js\",\"3339\",\"static/chunks/3339-821ef5f316467690.js\",\"620\",\"static/chunks/620-2e6639e4ca9afb1d.js\",\"5497\",\"static/chunks/5497-27b73ecf920843b1.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-9fadcbba0c598e87.js\"],\"ThemeProvider\"]\n3:I[94635,[\"620\",\"static/chunks/620-2e6639e4ca9afb1d.js\",\"7177\",\"static/chunks/app/layout-697386c34f0b7bd3.js\"],\"RuntimeI18nProvider\"]\n4:I[57121,[],\"\"]\n5:I[74581,[],\"\"]\n6:I[90484,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[90484,[],\"ViewportBoundary\"]\nc:I[90484,[],\"MetadataBoundary\"]\ne:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/081a0afca5a9bd20.css\",\"style\"]\n:HL[\"/_next/static/css/2259cb9ea5269549.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/081a0afca5a9bd20.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/2259cb9ea5269549.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"if(document.fonts\u0026\u0026document.fonts.ready){document.fonts.ready.then(function(){document.documentElement.classList.add('fonts-loaded')})}else{document.documentElement.classList.add('fonts-loaded')}\"}}]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 font-sans antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$@9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"S4Ni0EVNQQgndbz1Kanxu\"}\n"])</script><script>self.__next_f.push([1,"f:[]\n9:\"$Wf\"\n"])</script><script>self.__next_f.push([1,"b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[86869,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"ZevaiRouter - Provider Automation \u0026 Quota Tracking\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"ZevaiRouter - provider automation, multi-account workflows, and quota tracking.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$L10\",\"4\",{}]]\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-99944d59834ca8f9.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-1b03b52e3112452e.js" async=""></script><script src="/_next/static/chunks/main-app-5a6578c0256da676.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-99944d59834ca8f9.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"JzhJR_QLUCS172Am3eS9H\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-99944d59834ca8f9.js"/><script src="/_next/static/chunks/4bd1b696-e356ca5ba0218e27.js" async=""></script><script src="/_next/static/chunks/3794-1b03b52e3112452e.js" async=""></script><script src="/_next/static/chunks/main-app-5a6578c0256da676.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-99944d59834ca8f9.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[57121,[],\"\"]\n3:I[74581,[],\"\"]\n4:I[90484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[90484,[],\"ViewportBoundary\"]\na:I[90484,[],\"MetadataBoundary\"]\nc:I[27123,[],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"S4Ni0EVNQQgndbz1Kanxu\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>