omniroute 0.8.5 → 0.9.0

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 (519) hide show
  1. package/README.de.md +995 -0
  2. package/README.es.md +995 -0
  3. package/README.fr.md +995 -0
  4. package/README.it.md +995 -0
  5. package/README.md +725 -101
  6. package/README.pt-BR.md +995 -0
  7. package/README.ru.md +995 -0
  8. package/README.zh-CN.md +995 -0
  9. package/app/.next/BUILD_ID +1 -1
  10. package/app/.next/app-path-routes-manifest.json +25 -24
  11. package/app/.next/build-manifest.json +2 -2
  12. package/app/.next/prerender-manifest.json +27 -3
  13. package/app/.next/routes-manifest.json +6 -0
  14. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +5 -5
  18. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  30. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -0
  33. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -0
  34. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -0
  35. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  39. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  63. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/_global-error.html +2 -2
  67. package/app/.next/server/app/_global-error.rsc +1 -1
  68. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  69. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  70. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  71. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  72. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  73. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  74. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/_not-found.html +1 -1
  76. package/app/.next/server/app/_not-found.rsc +3 -3
  77. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  78. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  79. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  80. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  81. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  82. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  83. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  88. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  90. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
  92. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  94. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +1 -1
  97. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  100. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  102. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  105. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  109. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  112. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  115. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/cli-tools/status/route.js +1 -1
  117. package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
  130. package/app/.next/server/app/api/evals/[suiteId]/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/evals/route.js +1 -1
  133. package/app/.next/server/app/api/evals/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/fallback/chains/route.js +2 -2
  136. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/models/route.js +1 -1
  144. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/monitoring/health/route.js +2 -2
  146. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/policies/route.js +2 -2
  155. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/providers/route.js +1 -1
  169. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/resilience/route.js +1 -1
  176. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/api/usage/budget/route.js +2 -2
  203. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  207. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  208. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  209. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  210. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  212. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  213. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  214. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  215. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  216. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  218. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  219. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  220. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  221. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  222. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  223. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  224. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  226. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  227. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  228. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  229. package/app/.next/server/app/callback.html +1 -1
  230. package/app/.next/server/app/callback.rsc +3 -3
  231. package/app/.next/server/app/callback.segments/_full.segment.rsc +3 -3
  232. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  233. package/app/.next/server/app/callback.segments/_index.segment.rsc +3 -3
  234. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  235. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  236. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  237. package/app/.next/server/app/dashboard/analytics.html +1 -1
  238. package/app/.next/server/app/dashboard/analytics.rsc +5 -5
  239. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +2 -2
  240. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  241. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  242. package/app/.next/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  243. package/app/.next/server/app/dashboard/analytics.segments/_full.segment.rsc +5 -5
  244. package/app/.next/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  245. package/app/.next/server/app/dashboard/analytics.segments/_index.segment.rsc +3 -3
  246. package/app/.next/server/app/dashboard/analytics.segments/_tree.segment.rsc +2 -2
  247. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  248. package/app/.next/server/app/dashboard/cli-tools.rsc +5 -5
  249. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  250. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  251. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  252. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  253. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  254. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  255. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  256. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  257. package/app/.next/server/app/dashboard/combos.html +1 -1
  258. package/app/.next/server/app/dashboard/combos.rsc +5 -5
  259. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  260. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  261. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  262. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  263. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  264. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  265. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  266. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  267. package/app/.next/server/app/dashboard/costs.html +1 -1
  268. package/app/.next/server/app/dashboard/costs.rsc +5 -5
  269. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs/__PAGE__.segment.rsc +2 -2
  270. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard/costs.segment.rsc +1 -1
  271. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  272. package/app/.next/server/app/dashboard/costs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  273. package/app/.next/server/app/dashboard/costs.segments/_full.segment.rsc +5 -5
  274. package/app/.next/server/app/dashboard/costs.segments/_head.segment.rsc +1 -1
  275. package/app/.next/server/app/dashboard/costs.segments/_index.segment.rsc +3 -3
  276. package/app/.next/server/app/dashboard/costs.segments/_tree.segment.rsc +2 -2
  277. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  278. package/app/.next/server/app/dashboard/endpoint.rsc +5 -5
  279. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  280. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  281. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  282. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  283. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  284. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  285. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  286. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  287. package/app/.next/server/app/dashboard/health.html +1 -1
  288. package/app/.next/server/app/dashboard/health.rsc +5 -5
  289. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health/__PAGE__.segment.rsc +2 -2
  290. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard/health.segment.rsc +1 -1
  291. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  292. package/app/.next/server/app/dashboard/health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  293. package/app/.next/server/app/dashboard/health.segments/_full.segment.rsc +5 -5
  294. package/app/.next/server/app/dashboard/health.segments/_head.segment.rsc +1 -1
  295. package/app/.next/server/app/dashboard/health.segments/_index.segment.rsc +3 -3
  296. package/app/.next/server/app/dashboard/health.segments/_tree.segment.rsc +2 -2
  297. package/app/.next/server/app/dashboard/limits.html +2 -0
  298. package/app/.next/server/app/dashboard/limits.meta +17 -0
  299. package/app/.next/server/app/dashboard/limits.rsc +24 -0
  300. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits/__PAGE__.segment.rsc +9 -0
  301. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard/limits.segment.rsc +4 -0
  302. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +4 -0
  303. package/app/.next/server/app/dashboard/limits.segments/!KGRhc2hib2FyZCk.segment.rsc +5 -0
  304. package/app/.next/server/app/dashboard/limits.segments/_full.segment.rsc +24 -0
  305. package/app/.next/server/app/dashboard/limits.segments/_head.segment.rsc +6 -0
  306. package/app/.next/server/app/dashboard/limits.segments/_index.segment.rsc +9 -0
  307. package/app/.next/server/app/dashboard/limits.segments/_tree.segment.rsc +5 -0
  308. package/app/.next/server/app/dashboard/onboarding.html +1 -1
  309. package/app/.next/server/app/dashboard/onboarding.rsc +4 -4
  310. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding/__PAGE__.segment.rsc +1 -1
  311. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard/onboarding.segment.rsc +1 -1
  312. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  313. package/app/.next/server/app/dashboard/onboarding.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  314. package/app/.next/server/app/dashboard/onboarding.segments/_full.segment.rsc +4 -4
  315. package/app/.next/server/app/dashboard/onboarding.segments/_head.segment.rsc +1 -1
  316. package/app/.next/server/app/dashboard/onboarding.segments/_index.segment.rsc +3 -3
  317. package/app/.next/server/app/dashboard/onboarding.segments/_tree.segment.rsc +2 -2
  318. package/app/.next/server/app/dashboard/profile.html +1 -1
  319. package/app/.next/server/app/dashboard/profile.rsc +4 -4
  320. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  321. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  322. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  323. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  324. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
  325. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  326. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  327. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  328. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  329. package/app/.next/server/app/dashboard/providers/new.rsc +5 -5
  330. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  331. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  332. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  333. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  334. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  335. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  336. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  337. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  338. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  339. package/app/.next/server/app/dashboard/providers.html +1 -1
  340. package/app/.next/server/app/dashboard/providers.rsc +5 -5
  341. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  342. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  343. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  344. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  345. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  346. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  347. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  348. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  349. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  350. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  351. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  352. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  353. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  354. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  355. package/app/.next/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  356. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  357. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  358. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  359. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  360. package/app/.next/server/app/dashboard/settings.html +1 -1
  361. package/app/.next/server/app/dashboard/settings.rsc +5 -5
  362. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings/__PAGE__.segment.rsc +2 -2
  363. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  364. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  365. package/app/.next/server/app/dashboard/settings.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  366. package/app/.next/server/app/dashboard/settings.segments/_full.segment.rsc +5 -5
  367. package/app/.next/server/app/dashboard/settings.segments/_head.segment.rsc +1 -1
  368. package/app/.next/server/app/dashboard/settings.segments/_index.segment.rsc +3 -3
  369. package/app/.next/server/app/dashboard/settings.segments/_tree.segment.rsc +2 -2
  370. package/app/.next/server/app/dashboard/translator.html +2 -2
  371. package/app/.next/server/app/dashboard/translator.rsc +5 -5
  372. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  373. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  374. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  375. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  376. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  377. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  378. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  379. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  380. package/app/.next/server/app/dashboard/usage.html +1 -1
  381. package/app/.next/server/app/dashboard/usage.rsc +5 -5
  382. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  383. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  384. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  385. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  386. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  387. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  388. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  389. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  390. package/app/.next/server/app/docs/page.js +1 -1
  391. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  392. package/app/.next/server/app/docs.html +1 -1
  393. package/app/.next/server/app/docs.rsc +3 -3
  394. package/app/.next/server/app/docs.segments/_full.segment.rsc +3 -3
  395. package/app/.next/server/app/docs.segments/_head.segment.rsc +1 -1
  396. package/app/.next/server/app/docs.segments/_index.segment.rsc +3 -3
  397. package/app/.next/server/app/docs.segments/_tree.segment.rsc +2 -2
  398. package/app/.next/server/app/docs.segments/docs/__PAGE__.segment.rsc +1 -1
  399. package/app/.next/server/app/docs.segments/docs.segment.rsc +1 -1
  400. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  401. package/app/.next/server/app/forbidden.html +1 -1
  402. package/app/.next/server/app/forbidden.rsc +3 -3
  403. package/app/.next/server/app/forbidden.segments/_full.segment.rsc +3 -3
  404. package/app/.next/server/app/forbidden.segments/_head.segment.rsc +1 -1
  405. package/app/.next/server/app/forbidden.segments/_index.segment.rsc +3 -3
  406. package/app/.next/server/app/forbidden.segments/_tree.segment.rsc +2 -2
  407. package/app/.next/server/app/forbidden.segments/forbidden/__PAGE__.segment.rsc +1 -1
  408. package/app/.next/server/app/forbidden.segments/forbidden.segment.rsc +1 -1
  409. package/app/.next/server/app/forgot-password/page.js +1 -1
  410. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  411. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  412. package/app/.next/server/app/forgot-password.html +1 -1
  413. package/app/.next/server/app/forgot-password.rsc +4 -4
  414. package/app/.next/server/app/forgot-password.segments/_full.segment.rsc +4 -4
  415. package/app/.next/server/app/forgot-password.segments/_head.segment.rsc +1 -1
  416. package/app/.next/server/app/forgot-password.segments/_index.segment.rsc +3 -3
  417. package/app/.next/server/app/forgot-password.segments/_tree.segment.rsc +2 -2
  418. package/app/.next/server/app/forgot-password.segments/forgot-password/__PAGE__.segment.rsc +2 -2
  419. package/app/.next/server/app/forgot-password.segments/forgot-password.segment.rsc +1 -1
  420. package/app/.next/server/app/index.html +1 -1
  421. package/app/.next/server/app/index.rsc +3 -3
  422. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  423. package/app/.next/server/app/index.segments/_full.segment.rsc +3 -3
  424. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  425. package/app/.next/server/app/index.segments/_index.segment.rsc +3 -3
  426. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  427. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  428. package/app/.next/server/app/landing.html +1 -1
  429. package/app/.next/server/app/landing.rsc +3 -3
  430. package/app/.next/server/app/landing.segments/_full.segment.rsc +3 -3
  431. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  432. package/app/.next/server/app/landing.segments/_index.segment.rsc +3 -3
  433. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  434. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  435. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  436. package/app/.next/server/app/login/page.js +1 -1
  437. package/app/.next/server/app/login/page.js.nft.json +1 -1
  438. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  439. package/app/.next/server/app/login.html +1 -1
  440. package/app/.next/server/app/login.rsc +4 -4
  441. package/app/.next/server/app/login.segments/_full.segment.rsc +4 -4
  442. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  443. package/app/.next/server/app/login.segments/_index.segment.rsc +3 -3
  444. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  445. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  446. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  447. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  448. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  449. package/app/.next/server/app/privacy.html +1 -1
  450. package/app/.next/server/app/privacy.rsc +3 -3
  451. package/app/.next/server/app/privacy.segments/_full.segment.rsc +3 -3
  452. package/app/.next/server/app/privacy.segments/_head.segment.rsc +1 -1
  453. package/app/.next/server/app/privacy.segments/_index.segment.rsc +3 -3
  454. package/app/.next/server/app/privacy.segments/_tree.segment.rsc +2 -2
  455. package/app/.next/server/app/privacy.segments/privacy/__PAGE__.segment.rsc +1 -1
  456. package/app/.next/server/app/privacy.segments/privacy.segment.rsc +1 -1
  457. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  458. package/app/.next/server/app/terms.html +1 -1
  459. package/app/.next/server/app/terms.rsc +3 -3
  460. package/app/.next/server/app/terms.segments/_full.segment.rsc +3 -3
  461. package/app/.next/server/app/terms.segments/_head.segment.rsc +1 -1
  462. package/app/.next/server/app/terms.segments/_index.segment.rsc +3 -3
  463. package/app/.next/server/app/terms.segments/_tree.segment.rsc +2 -2
  464. package/app/.next/server/app/terms.segments/terms/__PAGE__.segment.rsc +1 -1
  465. package/app/.next/server/app/terms.segments/terms.segment.rsc +1 -1
  466. package/app/.next/server/app-paths-manifest.json +25 -24
  467. package/app/.next/server/chunks/1020.js +1 -1
  468. package/app/.next/server/chunks/239.js +2 -2
  469. package/app/.next/server/chunks/2620.js +2 -2
  470. package/app/.next/server/chunks/4277.js +1 -0
  471. package/app/.next/server/chunks/438.js +1 -0
  472. package/app/.next/server/chunks/5583.js +1 -1
  473. package/app/.next/server/chunks/7669.js +2 -2
  474. package/app/.next/server/chunks/8369.js +1 -1
  475. package/app/.next/server/chunks/9824.js +1 -1
  476. package/app/.next/server/pages/404.html +1 -1
  477. package/app/.next/server/pages/500.html +2 -2
  478. package/app/.next/server/server-reference-manifest.js +1 -1
  479. package/app/.next/server/server-reference-manifest.json +1 -1
  480. package/app/.next/static/8ACUE6hz9uxBNe_Q_ZH6y/_buildManifest.js +1 -0
  481. package/app/.next/static/chunks/1149-fefe7f95f0e9842f.js +1 -0
  482. package/app/.next/static/chunks/{5846-2708fad522c4092b.js → 5846-0541241939d8c7e3.js} +1 -1
  483. package/app/.next/static/chunks/{993-6be0cd05a02eb09b.js → 993-b74bac8c882e8d1a.js} +2 -2
  484. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-74ac2092c2a6b3dc.js +1 -0
  485. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-918d5f38d5cdbbc2.js +15 -0
  486. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-2cf4a7b419667452.js → page-421e732016c49ee4.js} +1 -1
  487. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-6913ad5d715dcc3f.js → page-9495b294cfe54d73.js} +1 -1
  488. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/{page-a446f6fd8dc64f29.js → page-623e54048b5d4f69.js} +1 -1
  489. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-58ea3e55f475ea7b.js +1 -0
  490. package/app/.next/static/chunks/app/(dashboard)/dashboard/{usage/page-8e19076a0d9227ca.js → limits/page-3b7083be8adedc57.js} +1 -1
  491. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-3c840eaf6d7cd77d.js +1 -0
  492. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-26ec85a0bf8624f2.js +1 -0
  493. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-521cffebf9da74b1.js → page-200bed170f9ee2b0.js} +1 -1
  494. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-627628d3588d56d0.js → page-98c6b97d0c195a2c.js} +1 -1
  495. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-038687bc5d2c3bb5.js +1 -0
  496. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-c3cbea97c4f3a3b3.js → page-efca884c20a509a4.js} +1 -1
  497. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-51a813eac9d71eed.js +1 -0
  498. package/app/.next/static/chunks/app/(dashboard)/{layout-c498dd9c790d0115.js → layout-cf710bbfb7c3ba11.js} +1 -1
  499. package/app/.next/static/chunks/app/forgot-password/{page-3682163d66078655.js → page-373672767bb0aae4.js} +1 -1
  500. package/app/.next/static/chunks/app/login/{page-319adaa570f7cef2.js → page-8a9aa887783f2370.js} +1 -1
  501. package/app/.next/static/css/1c99dc691f001331.css +1 -0
  502. package/app/package.json +1 -1
  503. package/app/public/providers/ironclaw.png +0 -0
  504. package/app/public/providers/nanobot.png +0 -0
  505. package/app/public/providers/opencode.svg +18 -0
  506. package/app/public/providers/picoclaw.jpg +0 -0
  507. package/app/public/providers/zeroclaw.png +0 -0
  508. package/package.json +1 -1
  509. package/app/.next/server/chunks/2951.js +0 -1
  510. package/app/.next/static/4zh9cgkOJsay7eUxfk-tb/_buildManifest.js +0 -1
  511. package/app/.next/static/chunks/7013-718042994c9127fa.js +0 -1
  512. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/page-a7a7e3485f278504.js +0 -1
  513. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-1c6897612e762e03.js +0 -15
  514. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/page-d3f501b59334c3d5.js +0 -1
  515. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-7312e2dd8b5feff0.js +0 -1
  516. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-a9c594cf56c3465e.js +0 -1
  517. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-ae5e43ea2a576094.js +0 -1
  518. package/app/.next/static/css/c08bd521c418658c.css +0 -1
  519. /package/app/.next/static/{4zh9cgkOJsay7eUxfk-tb → 8ACUE6hz9uxBNe_Q_ZH6y}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
1
  exports.id=5583,exports.ids=[5583],exports.modules={7224:(a,b,c)=>{Promise.resolve().then(c.bind(c,67045))},8979:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/not-found.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/not-found.tsx","default")},12608:(a,b,c)=>{Promise.resolve().then(c.bind(c,8979))},17084:(a,b,c)=>{"use strict";c.d(b,{Q2:()=>o,DI:()=>l,fg:()=>j,MA:()=>p,IS:()=>h,zN:()=>i,JH:()=>k,wb:()=>s,wG:()=>r,zt:()=>q,gb:()=>n,mq:()=>m});var d=c(60258);let e=d.Ikc({id:d.YjP().min(1),alias:d.YjP().min(1),name:d.YjP().min(1),icon:d.YjP().min(1),color:d.YjP().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:d.YjP().optional(),website:d.YjP().url().optional(),passthroughModels:d.zMY().optional()}),f=d.g1P(d.YjP(),e);function g(a,b){let c=f.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
2
- ${a}`),Error(`Provider validation failed for ${b}`)}}let h={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},i={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},j={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"}},k="openai-compatible-",l="anthropic-compatible-";function m(a){return"string"==typeof a&&a.startsWith(k)}function n(a){return"string"==typeof a&&a.startsWith(l)}let o={...h,...i,...j},p={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function q(a){for(let b of Object.values(o))if(b.alias===a||b.id===a)return b;return null}function r(a){let b=o[a];return b?.alias||a}Object.values(o).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(o).reduce((a,b)=>(a[b.id]=b.alias,a),{});let s=["antigravity","kiro","github","codex","claude"];g(h,"FREE_PROVIDERS"),g(i,"OAUTH_PROVIDERS"),g(j,"APIKEY_PROVIDERS")},25977:(a,b,c)=>{"use strict";var d=c(49226),e=c(40287),f=c(87068);let g="[HealthCheck]",h=!1;async function i(){try{let a=await (0,e.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await j(b)}catch(a){console.error(`${g} Error checking ${b.name||b.id}:`,a.message)}}catch(a){console.error(`${g} Sweep error:`,a.message)}}async function j(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,f.Ny)(a.provider)){let b=new Date().toISOString();await (0,e.rj)(a.id,{lastHealthCheckAt:b}),console.log(`${g} Skipping ${a.provider}/${a.name||a.email||a.id} (refresh unsupported)`);return}let c=a.lastHealthCheckAt?new Date(a.lastHealthCheckAt).getTime():0;if(Date.now()-c<60*b*1e3)return;console.log(`${g} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let d={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await (0,f.iD)(a.provider,d,{info:(a,b)=>console.log(`${g} [${a}] ${b}`),warn:(a,b)=>console.warn(`${g} [${a}] ${b}`),error:(a,b,c)=>console.error(`${g} [${a}] ${b}`,c||"")}),i=new Date().toISOString();if((0,f.jT)(h)){await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"expired",lastError:`Refresh token consumed (${h.error}). Please re-authenticate this account.`,lastErrorAt:i,lastErrorType:h.error,lastErrorSource:"oauth",errorCode:h.error,isActive:!1,refreshToken:null}),console.error(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${h.error}). Connection deactivated. Re-authenticate to restore.`);return}if(h&&h.accessToken){let b={accessToken:h.accessToken,lastHealthCheckAt:i,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};h.refreshToken&&(b.refreshToken=h.refreshToken),h.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*h.expiresIn).toISOString()),await (0,e.rj)(a.id,b),console.log(`${g} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:i,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),console.warn(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h=!0,console.log(`${g} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{i(),setInterval(i,6e4)},1e4);let k=!1;(async function(){if(!k)try{await (0,d.A)(),k=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return k})().catch(a=>console.error("[CloudSync] ensure failed:",a))},29348:(a,b,c)=>{Promise.resolve().then(c.bind(c,75146))},32444:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ThemeProvider.tsx","ThemeProvider")},47695:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(31417),e=c(300),f=c(73959);let g=(0,d.v)()((0,e.Zr)((a,b)=>({theme:f.B2.defaultTheme,setTheme:b=>{a({theme:b})},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c})},initTheme:()=>{b().theme}}),{name:f.B2.storageKey}))},47825:(a,b,c)=>{"use strict";c.d(b,{KC:()=>d.KC,Xg:()=>d.Xg});var d=c(97319);Object.entries(c(17084).Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},49226:(a,b,c)=>{"use strict";c.d(b,{A:()=>k});var d=c(90357),e=c(40287);let f=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||process.env.NEXT_PUBLIC_APP_URL||"http://localhost:20128";class g{constructor(a=null,b=15){this.machineId=a,this.intervalMinutes=b,this.intervalId=null}async initializeMachineId(){this.machineId||(this.machineId=await (0,d.Xj)())}async start(){this.intervalId||(await this.initializeMachineId(),setTimeout(()=>{this.syncWithRetry().catch(()=>{})},3e4),this.intervalId=setInterval(()=>{this.syncWithRetry().catch(()=>{})},60*this.intervalMinutes*1e3))}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null)}async syncWithRetry(a=1){for(let b=1;b<=a;b++)try{return await this.sync()}catch(d){if(b===a)return null;let c=Math.min(1e3*Math.pow(2,b),1e4);await new Promise(a=>setTimeout(a,c))}}async sync(){if(!await (0,e.Nx)())return null;await this.initializeMachineId();let a=await fetch(`${f}/api/sync/cloud`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({machineId:this.machineId,action:"sync"})});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Sync failed");return await a.json()}isRunning(){return null!==this.intervalId}}let h=null;async function i(a=null,b=15){return h||(h=new g(a,b)),h}async function j(){try{await (0,e.bI)();let a=await i(null,15);return await a.start(),a}catch(a){throw console.error("[CloudSync] Error initializing scheduler:",a),a}}a=c.hmd(a),c.c[c.s]===a&&j().catch(a=>console.error("[CloudSync] init failed:",a));let k=j},61135:()=>{},67045:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("html",{children:(0,d.jsxs)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[#0a0a0f] text-[#e0e0e0] font-[system-ui,-apple-system,sans-serif] text-center m-0",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-[#888] max-w-[400px] leading-relaxed mb-6",children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsx)("button",{onClick:b,className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Try Again"})]})})}},73857:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(48249),e=c(2116),f=c.n(e);function g(){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[var(--bg-primary,#0a0a0f)] text-[var(--text-primary,#e0e0e0)] text-center",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-[#6366f1] via-[#8b5cf6] to-[#a855f7] bg-clip-text text-transparent",children:"404"}),(0,d.jsx)("h1",{className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--text-secondary,#888)] max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-[10px] text-white text-sm font-semibold no-underline transition-all duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Go to Dashboard"})]})}},73959:(a,b,c)=>{"use strict";c.d(b,{Q2:()=>d.Q2,fg:()=>d.fg,vQ:()=>e,MA:()=>d.MA,zN:()=>d.zN,B2:()=>f});var d=c(17084);c(47825);let e={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"0.8.5"},f={storageKey:"theme",defaultTheme:"system"}},75146:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(47695);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},76160:(a,b,c)=>{Promise.resolve().then(c.bind(c,73857))},76196:(a,b,c)=>{Promise.resolve().then(c.bind(c,32444))},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i,metadata:()=>h});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444);c(25977);let h={title:"OmniRoute — AI Gateway for Multi-Provider LLMs",description:"OmniRoute is an AI gateway for multi-provider LLMs. One endpoint for all your AI providers.",icons:{icon:"/favicon.svg",apple:"/apple-touch-icon.svg"}};function i({children:a}){return(0,d.jsxs)("html",{lang:"en",suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),(0,d.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap",rel:"stylesheet"})]}),(0,d.jsxs)("body",{className:`${f().variable} font-sans antialiased`,suppressHydrationWarning:!0,children:[(0,d.jsx)("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-50 focus:px-4 focus:py-2 focus:bg-[#6366f1] focus:text-white focus:rounded-lg focus:text-sm focus:font-semibold focus:shadow-lg",children:"Skip to content"}),(0,d.jsx)(g.ThemeProvider,{children:a})]})]})}},79369:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},81227:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx","default")},89097:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},90357:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>e});var d=c(19713);async function e(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let a=(0,d.machineIdSync)();return(await Promise.resolve().then(c.t.bind(c,55511,23))).createHash("sha256").update(a+b).digest("hex").substring(0,16)}catch(a){return console.log("Error getting machine ID:",a),crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){let b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)})}}},97319:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>g,vq:()=>f,KC:()=>h});let d={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/1.0.83 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.55.1","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"60"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"default",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"kimi-k2",name:"Kimi K2"},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3.2-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-v3.2-reasoner",name:"DeepSeek V3.2 Reasoner"},{id:"minimax-m2.1",name:"MiniMax M2.1"},{id:"glm-4.7",name:"GLM 4.7"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"antigravity/1.104.0 darwin/arm64"},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-opus-4-5-thinking",name:"Claude Opus 4.5 Thinking"},{id:"claude-sonnet-4-5-thinking",name:"Claude Sonnet 4.5 Thinking"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5"},{id:"gemini-3-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]}},e=new Map;for(let a of Object.values(d))a.alias&&a.alias!==a.id&&e.set(a.alias,a);let f=function(){let a={};for(let b of Object.values(d))if(b.models&&b.models.length>0){let c=b.alias||b.id;a[c]||(a[c]=b.models)}return a}(),g=function(){let a={};for(let b of Object.values(d))a[b.id]=b.alias||b.id;return a}();function h(a){return f[g[a]||a]||[]}},97496:(a,b,c)=>{Promise.resolve().then(c.bind(c,81227))}};
2
+ ${a}`),Error(`Provider validation failed for ${b}`)}}let h={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},i={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},j={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"}},k="openai-compatible-",l="anthropic-compatible-";function m(a){return"string"==typeof a&&a.startsWith(k)}function n(a){return"string"==typeof a&&a.startsWith(l)}let o={...h,...i,...j},p={oauth:{id:"oauth",name:"OAuth",icon:"lock"},apikey:{id:"apikey",name:"API Key",icon:"key"}};function q(a){for(let b of Object.values(o))if(b.alias===a||b.id===a)return b;return null}function r(a){let b=o[a];return b?.alias||a}Object.values(o).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(o).reduce((a,b)=>(a[b.id]=b.alias,a),{});let s=["antigravity","kiro","github","codex","claude"];g(h,"FREE_PROVIDERS"),g(i,"OAUTH_PROVIDERS"),g(j,"APIKEY_PROVIDERS")},25977:(a,b,c)=>{"use strict";var d=c(49226),e=c(40287),f=c(87068);let g="[HealthCheck]",h=!1;async function i(){try{let a=await (0,e.getProviderConnections)({authType:"oauth"});if(!a||0===a.length)return;for(let b of a)try{await j(b)}catch(a){console.error(`${g} Error checking ${b.name||b.id}:`,a.message)}}catch(a){console.error(`${g} Sweep error:`,a.message)}}async function j(a){let b=a.healthCheckInterval??60;if(b<=0||!a.isActive||!a.refreshToken||"string"!=typeof a.refreshToken||"expired"===a.testStatus)return;if(!(0,f.Ny)(a.provider)){let b=new Date().toISOString();await (0,e.rj)(a.id,{lastHealthCheckAt:b}),console.log(`${g} Skipping ${a.provider}/${a.name||a.email||a.id} (refresh unsupported)`);return}let c=a.lastHealthCheckAt?new Date(a.lastHealthCheckAt).getTime():0;if(Date.now()-c<60*b*1e3)return;console.log(`${g} Refreshing ${a.provider}/${a.name||a.email||a.id} (interval: ${b}min)`);let d={refreshToken:a.refreshToken,accessToken:a.accessToken,expiresAt:a.tokenExpiresAt,providerSpecificData:a.providerSpecificData},h=await (0,f.iD)(a.provider,d,{info:(a,b)=>console.log(`${g} [${a}] ${b}`),warn:(a,b)=>console.warn(`${g} [${a}] ${b}`),error:(a,b,c)=>console.error(`${g} [${a}] ${b}`,c||"")}),i=new Date().toISOString();if((0,f.jT)(h)){await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"expired",lastError:`Refresh token consumed (${h.error}). Please re-authenticate this account.`,lastErrorAt:i,lastErrorType:h.error,lastErrorSource:"oauth",errorCode:h.error,isActive:!1,refreshToken:null}),console.error(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} — Refresh token is permanently invalid (${h.error}). Connection deactivated. Re-authenticate to restore.`);return}if(h&&h.accessToken){let b={accessToken:h.accessToken,lastHealthCheckAt:i,testStatus:"active",lastError:null,lastErrorAt:null,lastErrorType:null,lastErrorSource:null,errorCode:null};h.refreshToken&&(b.refreshToken=h.refreshToken),h.expiresIn&&(b.tokenExpiresAt=new Date(Date.now()+1e3*h.expiresIn).toISOString()),await (0,e.rj)(a.id,b),console.log(`${g} ✓ ${a.provider}/${a.name||a.email||a.id} refreshed`)}else await (0,e.rj)(a.id,{lastHealthCheckAt:i,testStatus:"error",lastError:"Health check: token refresh failed",lastErrorAt:i,lastErrorType:"token_refresh_failed",lastErrorSource:"oauth",errorCode:"refresh_failed"}),console.warn(`${g} ✗ ${a.provider}/${a.name||a.email||a.id} refresh failed`)}h=!0,console.log(`${g} Starting proactive token health-check (tick every 60s)`),setTimeout(()=>{i(),setInterval(i,6e4)},1e4);let k=!1;(async function(){if(!k)try{await (0,d.A)(),k=!0}catch(a){console.error("[ServerInit] Error initializing cloud sync:",a)}return k})().catch(a=>console.error("[CloudSync] ensure failed:",a))},29348:(a,b,c)=>{Promise.resolve().then(c.bind(c,75146))},32444:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/shared/components/ThemeProvider.tsx","ThemeProvider")},47695:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(31417),e=c(300),f=c(73959);let g=(0,d.v)()((0,e.Zr)((a,b)=>({theme:f.B2.defaultTheme,setTheme:b=>{a({theme:b})},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c})},initTheme:()=>{b().theme}}),{name:f.B2.storageKey}))},47825:(a,b,c)=>{"use strict";c.d(b,{KC:()=>d.KC,Xg:()=>d.Xg});var d=c(97319);Object.entries(c(17084).Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},49226:(a,b,c)=>{"use strict";c.d(b,{A:()=>k});var d=c(90357),e=c(40287);let f=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||process.env.NEXT_PUBLIC_APP_URL||"http://localhost:20128";class g{constructor(a=null,b=15){this.machineId=a,this.intervalMinutes=b,this.intervalId=null}async initializeMachineId(){this.machineId||(this.machineId=await (0,d.Xj)())}async start(){this.intervalId||(await this.initializeMachineId(),setTimeout(()=>{this.syncWithRetry().catch(()=>{})},3e4),this.intervalId=setInterval(()=>{this.syncWithRetry().catch(()=>{})},60*this.intervalMinutes*1e3))}stop(){this.intervalId&&(clearInterval(this.intervalId),this.intervalId=null)}async syncWithRetry(a=1){for(let b=1;b<=a;b++)try{return await this.sync()}catch(d){if(b===a)return null;let c=Math.min(1e3*Math.pow(2,b),1e4);await new Promise(a=>setTimeout(a,c))}}async sync(){if(!await (0,e.Nx)())return null;await this.initializeMachineId();let a=await fetch(`${f}/api/sync/cloud`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({machineId:this.machineId,action:"sync"})});if(!a.ok)throw Error((await a.json().catch(()=>({}))).error||"Sync failed");return await a.json()}isRunning(){return null!==this.intervalId}}let h=null;async function i(a=null,b=15){return h||(h=new g(a,b)),h}async function j(){try{await (0,e.bI)();let a=await i(null,15);return await a.start(),a}catch(a){throw console.error("[CloudSync] Error initializing scheduler:",a),a}}a=c.hmd(a),c.c[c.s]===a&&j().catch(a=>console.error("[CloudSync] init failed:",a));let k=j},61135:()=>{},67045:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>e});var d=c(48249);function e({error:a,reset:b}){return(0,d.jsx)("html",{children:(0,d.jsxs)("body",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[#0a0a0f] text-[#e0e0e0] font-[system-ui,-apple-system,sans-serif] text-center m-0",children:[(0,d.jsx)("div",{className:"text-[64px] mb-4",children:"⚠️"}),(0,d.jsx)("h1",{className:"text-[28px] font-bold mb-2",children:"Something went wrong"}),(0,d.jsx)("p",{className:"text-[15px] text-[#888] max-w-[400px] leading-relaxed mb-6",children:"An unexpected error occurred. This has been logged and our team will investigate."}),!1,(0,d.jsx)("button",{onClick:b,className:"px-8 py-3 rounded-[10px] text-white border-none text-sm font-semibold cursor-pointer transition-transform duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Try Again"})]})})}},73857:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(48249),e=c(2116),f=c.n(e);function g(){return(0,d.jsxs)("div",{className:"flex flex-col items-center justify-center min-h-screen p-6 bg-[var(--bg-primary,#0a0a0f)] text-[var(--text-primary,#e0e0e0)] text-center",children:[(0,d.jsx)("div",{className:"text-[96px] font-extrabold leading-none mb-2 bg-gradient-to-br from-[#6366f1] via-[#8b5cf6] to-[#a855f7] bg-clip-text text-transparent",children:"404"}),(0,d.jsx)("h1",{className:"text-2xl font-semibold mb-2",children:"Page not found"}),(0,d.jsx)("p",{className:"text-[15px] text-[var(--text-secondary,#888)] max-w-[400px] leading-relaxed mb-8",children:"The page you're looking for doesn't exist or has been moved."}),(0,d.jsx)(f(),{href:"/dashboard",className:"px-8 py-3 rounded-[10px] text-white text-sm font-semibold no-underline transition-all duration-200 shadow-[0_4px_16px_rgba(99,102,241,0.3)] hover:-translate-y-0.5 bg-gradient-to-br from-[#6366f1] to-[#8b5cf6]",children:"Go to Dashboard"})]})}},73959:(a,b,c)=>{"use strict";c.d(b,{Q2:()=>d.Q2,fg:()=>d.fg,vQ:()=>e,MA:()=>d.MA,zN:()=>d.zN,B2:()=>f});var d=c(17084);c(47825);let e={name:"OmniRoute",description:"AI Gateway for Multi-Provider LLMs",version:"0.9.0"},f={storageKey:"theme",defaultTheme:"system"}},75146:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(47695);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},76160:(a,b,c)=>{Promise.resolve().then(c.bind(c,73857))},76196:(a,b,c)=>{Promise.resolve().then(c.bind(c,32444))},76537:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i,metadata:()=>h});var d=c(5735),e=c(50609),f=c.n(e);c(61135);var g=c(32444);c(25977);let h={title:"OmniRoute — AI Gateway for Multi-Provider LLMs",description:"OmniRoute is an AI gateway for multi-provider LLMs. One endpoint for all your AI providers.",icons:{icon:"/favicon.svg",apple:"/apple-touch-icon.svg"}};function i({children:a}){return(0,d.jsxs)("html",{lang:"en",suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),(0,d.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap",rel:"stylesheet"})]}),(0,d.jsxs)("body",{className:`${f().variable} font-sans antialiased`,suppressHydrationWarning:!0,children:[(0,d.jsx)("a",{href:"#main-content",className:"sr-only focus:not-sr-only focus:absolute focus:top-2 focus:left-2 focus:z-50 focus:px-4 focus:py-2 focus:bg-[#6366f1] focus:text-white focus:rounded-lg focus:text-sm focus:font-semibold focus:shadow-lg",children:"Skip to content"}),(0,d.jsx)(g.ThemeProvider,{children:a})]})]})}},79369:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},81227:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/OmniRoute/OmniRoute/src/app/global-error.tsx","default")},89097:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},90357:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>e});var d=c(19713);async function e(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let a=(0,d.machineIdSync)();return(await Promise.resolve().then(c.t.bind(c,55511,23))).createHash("sha256").update(a+b).digest("hex").substring(0,16)}catch(a){return console.log("Error getting machine ID:",a),crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){let b=16*Math.random()|0;return("x"==a?b:3&b|8).toString(16)})}}},97319:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>g,vq:()=>f,KC:()=>h});let d={claude:{id:"claude",alias:"cc",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/1.0.83 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.55.1","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":"arm64","X-Stainless-Os":"MacOS","X-Stainless-Timeout":"60"},oauth:{clientIdEnv:"CLAUDE_OAUTH_CLIENT_ID",clientIdDefault:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://console.anthropic.com/v1/oauth/token"},models:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}]},gemini:{id:"gemini",alias:"gemini",format:"gemini",executor:"default",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",urlBuilder:(a,b,c)=>`${a}/${b}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"apikey",authHeader:"x-goog-api-key",oauth:{clientIdEnv:"GEMINI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},"gemini-cli":{id:"gemini-cli",alias:"gc",format:"gemini-cli",executor:"gemini-cli",baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",urlBuilder:(a,b,c)=>`${a}:${c?"streamGenerateContent?alt=sse":"generateContent"}`,authType:"oauth",authHeader:"bearer",oauth:{clientIdEnv:"GEMINI_CLI_OAUTH_CLIENT_ID",clientIdDefault:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecretEnv:"GEMINI_CLI_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"}]},codex:{id:"codex",alias:"cx",format:"openai-responses",executor:"codex",baseUrl:"https://chatgpt.com/backend-api/codex/responses",authType:"oauth",authHeader:"bearer",headers:{Version:"0.92.0","Openai-Beta":"responses=experimental","User-Agent":"codex-cli/0.92.0 (Windows 10.0.26100; x64)"},oauth:{clientIdEnv:"CODEX_OAUTH_CLIENT_ID",clientIdDefault:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecretEnv:"CODEX_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://auth.openai.com/oauth/token"},models:[{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}]},qwen:{id:"qwen",alias:"qw",format:"openai",executor:"default",baseUrl:"https://portal.qwen.ai/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},oauth:{clientIdEnv:"QWEN_OAUTH_CLIENT_ID",clientIdDefault:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"}]},iflow:{id:"iflow",alias:"if",format:"openai",executor:"default",baseUrl:"https://apis.iflow.cn/v1/chat/completions",authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"iFlow-Cli"},oauth:{clientIdEnv:"IFLOW_OAUTH_CLIENT_ID",clientIdDefault:"10009311001",clientSecretEnv:"IFLOW_OAUTH_CLIENT_SECRET",clientSecretDefault:"",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},models:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"kimi-k2",name:"Kimi K2"},{id:"kimi-k2-thinking",name:"Kimi K2 Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"deepseek-v3.2-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-v3.2-reasoner",name:"DeepSeek V3.2 Reasoner"},{id:"minimax-m2.1",name:"MiniMax M2.1"},{id:"glm-4.7",name:"GLM 4.7"}]},antigravity:{id:"antigravity",alias:"ag",format:"antigravity",executor:"antigravity",baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://cloudcode-pa.googleapis.com"],urlBuilder:(a,b,c)=>`${a}${c?"/v1internal:streamGenerateContent?alt=sse":"/v1internal:generateContent"}`,authType:"oauth",authHeader:"bearer",headers:{"User-Agent":"antigravity/1.104.0 darwin/arm64"},oauth:{clientIdEnv:"ANTIGRAVITY_OAUTH_CLIENT_ID",clientIdDefault:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecretEnv:"ANTIGRAVITY_OAUTH_CLIENT_SECRET",clientSecretDefault:""},models:[{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"claude-opus-4-5-thinking",name:"Claude Opus 4.5 Thinking"},{id:"claude-sonnet-4-5-thinking",name:"Claude Sonnet 4.5 Thinking"},{id:"claude-sonnet-4-5",name:"Claude Sonnet 4.5"},{id:"gemini-3-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}]},github:{id:"github",alias:"gh",format:"openai",executor:"github",baseUrl:"https://api.githubcopilot.com/chat/completions",responsesBaseUrl:"https://api.githubcopilot.com/responses",authType:"oauth",authHeader:"bearer",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.107.1","editor-plugin-version":"copilot-chat/0.26.7","user-agent":"GitHubCopilotChat/0.26.7","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},models:[{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini",targetFormat:"openai-responses"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max",targetFormat:"openai-responses"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex",targetFormat:"openai-responses"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5 (Full ID)"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}]},kiro:{id:"kiro",alias:"kr",format:"kiro",executor:"kiro",baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",authType:"oauth",authHeader:"bearer",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},oauth:{tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},models:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"}]},cursor:{id:"cursor",alias:"cu",format:"cursor",executor:"cursor",baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",authType:"oauth",authHeader:"bearer",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3",models:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"}]},openai:{id:"openai",alias:"openai",format:"openai",executor:"default",baseUrl:"https://api.openai.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}]},anthropic:{id:"anthropic",alias:"anthropic",format:"claude",executor:"default",baseUrl:"https://api.anthropic.com/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01"},models:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}]},openrouter:{id:"openrouter",alias:"openrouter",format:"openai",executor:"default",baseUrl:"https://openrouter.ai/api/v1/chat/completions",authType:"apikey",authHeader:"bearer",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},models:[{id:"auto",name:"Auto (Best Available)"}]},glm:{id:"glm",alias:"glm",format:"claude",executor:"default",baseUrl:"https://api.z.ai/api/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"},{id:"glm-4.6",name:"GLM 4.6"},{id:"glm-4.5v",name:"GLM 4.5V (Vision)"},{id:"glm-4.5",name:"GLM 4.5"},{id:"glm-4.5-air",name:"GLM 4.5 Air"},{id:"glm-4-32b",name:"GLM 4 32B"}]},kimi:{id:"kimi",alias:"kimi",format:"openai",executor:"default",baseUrl:"https://api.moonshot.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},"kimi-coding":{id:"kimi-coding",alias:"kmc",format:"claude",executor:"default",baseUrl:"https://api.kimi.com/coding/v1/messages",urlSuffix:"?beta=true",authType:"oauth",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},oauth:{clientIdEnv:"KIMI_CODING_OAUTH_CLIENT_ID",clientIdDefault:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token",authUrl:"https://auth.kimi.com/api/oauth/device_authorization"},models:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}]},kilocode:{id:"kilocode",alias:"kc",format:"openrouter",executor:"openrouter",baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],passthroughModels:!0},cline:{id:"cline",alias:"cl",format:"openai",executor:"openai",baseUrl:"https://api.cline.bot/api/v1/chat/completions",authType:"oauth",authHeader:"Authorization",authPrefix:"Bearer ",oauth:{tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh",authUrl:"https://api.cline.bot/api/v1/auth/authorize"},extraHeaders:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},models:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"}],passthroughModels:!0},minimax:{id:"minimax",alias:"minimax",format:"claude",executor:"default",baseUrl:"https://api.minimax.io/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",format:"claude",executor:"default",baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",urlSuffix:"?beta=true",authType:"apikey",authHeader:"x-api-key",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},models:[{id:"MiniMax-M2.1",name:"MiniMax M2.1"}]},deepseek:{id:"deepseek",alias:"ds",format:"openai",executor:"default",baseUrl:"https://api.deepseek.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}]},groq:{id:"groq",alias:"groq",format:"openai",executor:"default",baseUrl:"https://api.groq.com/openai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}]},xai:{id:"xai",alias:"xai",format:"openai",executor:"default",baseUrl:"https://api.x.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}]},mistral:{id:"mistral",alias:"mistral",format:"openai",executor:"default",baseUrl:"https://api.mistral.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}]},perplexity:{id:"perplexity",alias:"pplx",format:"openai",executor:"default",baseUrl:"https://api.perplexity.ai/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}]},together:{id:"together",alias:"together",format:"openai",executor:"default",baseUrl:"https://api.together.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}]},fireworks:{id:"fireworks",alias:"fireworks",format:"openai",executor:"default",baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}]},cerebras:{id:"cerebras",alias:"cerebras",format:"openai",executor:"default",baseUrl:"https://api.cerebras.ai/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}]},cohere:{id:"cohere",alias:"cohere",format:"openai",executor:"default",baseUrl:"https://api.cohere.com/v2/chat",authType:"apikey",authHeader:"bearer",models:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}]},nvidia:{id:"nvidia",alias:"nvidia",format:"openai",executor:"default",baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}]},nebius:{id:"nebius",alias:"nebius",format:"openai",executor:"default",baseUrl:"https://api.tokenfactory.nebius.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}]},siliconflow:{id:"siliconflow",alias:"siliconflow",format:"openai",executor:"default",baseUrl:"https://api.siliconflow.com/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}]},hyperbolic:{id:"hyperbolic",alias:"hyp",format:"openai",executor:"default",baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}]}},e=new Map;for(let a of Object.values(d))a.alias&&a.alias!==a.id&&e.set(a.alias,a);let f=function(){let a={};for(let b of Object.values(d))if(b.models&&b.models.length>0){let c=b.alias||b.id;a[c]||(a[c]=b.models)}return a}(),g=function(){let a={};for(let b of Object.values(d))a[b.id]=b.alias||b.id;return a}();function h(a){return f[g[a]||a]||[]}},97496:(a,b,c)=>{Promise.resolve().then(c.bind(c,81227))}};
@@ -1,3 +1,3 @@
1
- "use strict";exports.id=7669,exports.ids=[239,2620,7669],exports.modules={12620:(a,b,c)=>{c.d(b,{ez:()=>i,getAllCircuitBreakerStatuses:()=>l,getCircuitBreaker:()=>k});var d=c(97917);let e="CLOSED",f="OPEN",g="HALF_OPEN";class h{constructor(a,b={}){this.name=a,this.failureThreshold=b.failureThreshold??5,this.resetTimeout=b.resetTimeout??3e4,this.halfOpenRequests=b.halfOpenRequests??1,this.onStateChange=b.onStateChange||null,this.isFailure=b.isFailure||(()=>!0),this.state=e,this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this.halfOpenAllowed=0,this._restoreFromDb()}_restoreFromDb(){try{let a=(0,d.vX)(this.name);a&&(this.state=a.state,this.failureCount=a.failureCount,this.lastFailureTime=a.lastFailureTime,this.state===g&&(this.halfOpenAllowed=this.halfOpenRequests))}catch{}}_persistToDb(){try{(0,d.QM)(this.name,{state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime,options:{failureThreshold:this.failureThreshold,resetTimeout:this.resetTimeout,halfOpenRequests:this.halfOpenRequests}})}catch{}}async execute(a){if(this.state===f)if(this._shouldAttemptReset())this._transition(g);else throw new i(`Circuit breaker "${this.name}" is OPEN. Try again later.`,this.name,this._timeUntilReset());if(this.state===g&&this.halfOpenAllowed<=0)throw new i(`Circuit breaker "${this.name}" is HALF_OPEN, no more probe requests allowed.`,this.name,this._timeUntilReset());this.state===g&&this.halfOpenAllowed--;try{let b=await a();return this._onSuccess(),b}catch(a){throw this.isFailure(a)&&this._onFailure(),a}}canExecute(){return this.state===e||(this.state===f?this._shouldAttemptReset():this.state===g&&this.halfOpenAllowed>0)}getStatus(){return{name:this.name,state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime}}reset(){this._transition(e),this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this._persistToDb()}_onSuccess(){this.state===g&&(this.successCount++,this._transition(e),this.failureCount=0),this.failureCount=0,this._persistToDb()}_onFailure(){this.failureCount++,this.lastFailureTime=Date.now(),this.state===g?this._transition(f):this.failureCount>=this.failureThreshold&&this._transition(f),this._persistToDb()}_shouldAttemptReset(){return!this.lastFailureTime||Date.now()-this.lastFailureTime>=this.resetTimeout}_timeUntilReset(){return this.lastFailureTime?Math.max(0,this.resetTimeout-(Date.now()-this.lastFailureTime)):0}_transition(a){let b=this.state;this.state=a,a===g&&(this.halfOpenAllowed=this.halfOpenRequests),this.onStateChange&&b!==a&&this.onStateChange(this.name,b,a)}}class i extends Error{constructor(a,b,c){super(a),this.name="CircuitBreakerOpenError",this.circuitName=b,this.retryAfterMs=c}}let j=new Map;function k(a,b){return j.has(a)||j.set(a,new h(a,b)),j.get(a)}function l(){try{for(let a of(0,d.xd)())j.has(a.name)||k(a.name)}catch{}return Array.from(j.values()).map(a=>a.getStatus())}},17669:(a,b,c)=>{c.d(b,{Pr:()=>w,Vg:()=>function a(b,c,d=new Set,e=0){if(e>3)throw Error(`Max combo nesting depth (3) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let f=Array.isArray(c)?c:c?.combos||[],g=f.find(a=>a.name===b);if(g&&g.models)for(let b of g.models){let c=r(b).model;f.find(a=>a.name===c)&&a(c,f,new Set(d),e+1)}}});var d=c(74163),e=c(71861),f=c(27899);let g={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function h(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},h=a=>Object.fromEntries(Object.entries(a).filter(([,a])=>null!=a));return{...g,...h(d),...h(e),...h(f)}}let i=new Map;function j(a,b=3){i.has(a)||i.set(a,{running:0,max:b,queue:[],rateLimitedUntil:null});let c=i.get(a);return c.max=b,c}function k(a){return!!a.rateLimitedUntil&&(!(Date.now()>=a.rateLimitedUntil)||(a.rateLimitedUntil=null,!1))}function l(a){let b=i.get(a);if(b)for(;b.queue.length>0&&b.running<b.max&&!k(b);){let c=b.queue.shift();clearTimeout(c.timer),b.running++,c.resolve(m(a))}}function m(a){let b=!1;return()=>{if(b)return;b=!0;let c=i.get(a);c&&c.running>0&&(c.running--,l(a))}}var n=c(12620),o=c(99939);let p=[429,502,503,504],q=new Map;function r(a){return"string"==typeof a?{model:a,weight:0}:{model:a.model,weight:a.weight||0}}function s(a,b,c=new Set,d=0){if(d>3)return a.models.map(a=>r(a).model);if(c.has(a.name))return[];c.add(a.name);let e=Array.isArray(b)?b:b?.combos||[],f=[];for(let b of a.models||[]){let a=r(b).model,g=e.find(b=>b.name===a);if(g){let a=s(g,e,new Set(c),d+1);f.push(...a)}else f.push(a)}return f}function t(a){let b=a.map(a=>r(a)),c=b.reduce((a,b)=>a+b.weight,0);if(c<=0)return b[Math.floor(Math.random()*b.length)].model;let d=Math.random()*c;for(let a of b)if((d-=a.weight)<=0)return a.model;return b[b.length-1].model}function u(a,b){let c=a.map(a=>r(a));return[c.find(a=>a.model===b),...c.filter(a=>a.model!==b).sort((a,b)=>b.weight-a.weight)].filter(Boolean).map(a=>a.model)}async function v(a){try{let{getPricingForModel:b}=await Promise.resolve().then(c.bind(c,40287)),d=await Promise.all(a.map(async a=>{let c=(0,o.Xh)(a),d=c.provider||c.providerAlias||"unknown",e=c.model||a;try{let c=await b(d,e);return{modelStr:a,cost:c?.input??1/0}}catch{return{modelStr:a,cost:1/0}}}));return d.sort((a,b)=>a.cost-b.cost),d.map(a=>a.modelStr)}catch{return a}}async function w({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l}){let m,q=b.strategy||"priority",w=b.models||[];if("round-robin"===q)return x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l});let y=k?h(b,k):{...g,...b.config||{}},z=y.maxRetries??1,A=y.retryDelayMs??2e3;if(l){let a=s(b,l);if("weighted"===q){let a=t(w);m=(m=u(w,a)).flatMap(a=>{let b=(Array.isArray(l)?l:l?.combos||[]).find(b=>b.name===a);return b?s(b,l):[a]}),j.info("COMBO",`Weighted selection with nested resolution: ${m.length} total models`)}else m=a,j.info("COMBO",`${q} with nested resolution: ${m.length} total models`)}else if("weighted"===q){let a=t(w);m=u(w,a),j.info("COMBO",`Weighted selection: ${a} (from ${w.length} models)`)}else m=w.map(a=>r(a).model);"random"===q?(m=function(a){for(let b=a.length-1;b>0;b--){let c=Math.floor(Math.random()*(b+1));[a[b],a[c]]=[a[c],a[b]]}return a}([...m]),j.info("COMBO",`Random shuffle: ${m.length} models`)):"least-used"===q?(m=function(a,b){let c=(0,f.A5)(b);if(!c||!c.byModel)return a;let d=a.map(a=>({modelStr:a,requests:c.byModel[a]?.requests??0}));return d.sort((a,b)=>a.requests-b.requests),d.map(a=>a.modelStr)}(m,b.name),j.info("COMBO",`Least-used ordering: ${m[0]} has fewest requests`)):"cost-optimized"===q&&(m=await v(m),j.info("COMBO",`Cost-optimized ordering: cheapest first (${m[0]})`));let B=null,C=null,D=null,E=Date.now(),F=0;for(let e=0;e<m.length;e++){let g=m[e],h=(0,o.Xh)(g),k=h.provider||h.providerAlias||"unknown",l=(0,d.T_)(k),r=(0,n.getCircuitBreaker)(`combo:${k}`,{failureThreshold:l.circuitBreakerThreshold,resetTimeout:l.circuitBreakerReset});if(!r.canExecute()){j.info("COMBO",`Skipping ${g}: circuit breaker OPEN for ${k}`),e>0&&F++;continue}if(i&&!await i(g)){j.info("COMBO",`Skipping ${g} (all accounts in cooldown)`),e>0&&F++;continue}for(let h=0;h<=z;h++){h>0&&(j.info("COMBO",`Retrying ${g} in ${A}ms (attempt ${h+1}/${z+1})`),await new Promise(a=>setTimeout(a,A))),j.info("COMBO",`Trying model ${e+1}/${m.length}: ${g}${h>0?` (retry ${h})`:""}`);let i=await c(a,g);if(i.ok){let a=Date.now()-E;return j.info("COMBO",`Model ${g} succeeded (${a}ms, ${F} fallbacks)`),(0,f.JF)(b.name,g,{success:!0,latencyMs:a,fallbackCount:F,strategy:q}),i}let l=i.statusText||"",n=null;try{let a=i.clone();try{let b=await a.json();l=b?.error?.message||b?.error||b?.message||l,n=b?.retryAfter||null}catch{try{let a=await i.text();a&&(l=a.substring(0,500))}catch{}}}catch{}if(n&&(!C||new Date(n)<new Date(C))&&(C=n),"string"!=typeof l)try{l=JSON.stringify(l)}catch{l=String(l)}let{shouldFallback:o,cooldownMs:s}=(0,d.hk)(i.status,l,0,null,k);if(p.includes(i.status)&&r._onFailure(),!o)return j.warn("COMBO",`Model ${g} failed (no fallback)`,{status:i.status}),i;let t=[408,429,500,502,503,504].includes(i.status);if(!(h<z)||!t){B=l||String(i.status),D||(D=i.status),e>0&&F++,j.warn("COMBO",`Model ${g} failed, trying next`,{status:i.status});break}}}let G=m.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}),H=Date.now()-E;if((0,f.JF)(b.name,null,{success:!1,latencyMs:H,fallbackCount:F,strategy:q}),G)return j.warn("COMBO","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let I=D||406,J=B||"All combo models unavailable";if(C){let a=(0,d.Qo)(C);return j.warn("COMBO",`All models failed | ${J} (${a})`),(0,e.wO)(I,J,C,a)}return j.warn("COMBO",`All models failed | ${J}`),new Response(JSON.stringify({error:{message:J}}),{status:I,headers:{"Content-Type":"application/json"}})}async function x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:t,settings:u,allCombos:v}){let w,x=b.models||[],y=u?h(b,u):{...g,...b.config||{}},z=y.concurrencyPerModel??3,A=y.queueTimeoutMs??3e4,B=y.maxRetries??1,C=y.retryDelayMs??2e3,D=(w=v?s(b,v):x.map(a=>r(a).model)).length;if(0===D)return(0,e.wO)(406,"Round-robin combo has no models");let E=q.get(b.name)||0;q.set(b.name,E+1);let F=E%D,G=Date.now(),H=null,I=null,J=null,K=0;for(let e=0;e<D;e++){let g,h=w[(F+e)%D],q=(0,o.Xh)(h),r=q.provider||q.providerAlias||"unknown",s=(0,d.T_)(r),u=(0,n.getCircuitBreaker)(`combo:${r}`,{failureThreshold:s.circuitBreakerThreshold,resetTimeout:s.circuitBreakerReset});if(!u.canExecute()){t.info("COMBO-RR",`Skipping ${h}: circuit breaker OPEN for ${r}`),e>0&&K++;continue}if(i&&!await i(h)){t.info("COMBO-RR",`Skipping ${h} (all accounts in cooldown)`),e>0&&K++;continue}try{g=await function(a,{maxConcurrency:b=3,timeoutMs:c=3e4}={}){let d=j(a,b);return d.running<d.max&&!k(d)?(d.running++,Promise.resolve(m(a))):new Promise((b,e)=>{let f=setTimeout(()=>{let b=d.queue.findIndex(a=>a.timer===f);-1!==b&&d.queue.splice(b,1);let g=Error(`Semaphore timeout after ${c}ms for ${a}`);g.code="SEMAPHORE_TIMEOUT",e(g)},c);d.queue.push({resolve:b,reject:e,timer:f})})}(h,{maxConcurrency:z,timeoutMs:A})}catch(a){if("SEMAPHORE_TIMEOUT"===a.code){t.warn("COMBO-RR",`Semaphore timeout for ${h}, trying next model`),e>0&&K++;continue}throw a}try{for(let g=0;g<=B;g++){g>0&&(t.info("COMBO-RR",`Retrying ${h} in ${C}ms (attempt ${g+1}/${B+1})`),await new Promise(a=>setTimeout(a,C))),t.info("COMBO-RR",`[RR #${E}] → ${h}${e>0?` (fallback +${e})`:""}${g>0?` (retry ${g})`:""}`);let i=await c(a,h);if(i.ok){let a=Date.now()-G;return t.info("COMBO-RR",`${h} succeeded (${a}ms, ${K} fallbacks)`),(0,f.JF)(b.name,h,{success:!0,latencyMs:a,fallbackCount:K,strategy:"round-robin"}),i}let k=i.statusText||"",m=null;try{let a=i.clone();try{let b=await a.json();k=b?.error?.message||b?.error||b?.message||k,m=b?.retryAfter||null}catch{try{let a=await i.text();a&&(k=a.substring(0,500))}catch{}}}catch{}if(m&&(!J||new Date(m)<new Date(J))&&(J=m),"string"!=typeof k)try{k=JSON.stringify(k)}catch{k=String(k)}let{shouldFallback:n,cooldownMs:o}=(0,d.hk)(i.status,k,0,null,r);if(p.includes(i.status)&&o>0&&(!function(a,b){let c=j(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,l(a))},b+50)}(h,o),u._onFailure(),t.warn("COMBO-RR",`${h} error ${i.status}, cooldown ${o}ms (breaker: ${u.getStatus().failureCount}/${s.circuitBreakerThreshold})`)),!n)return t.warn("COMBO-RR",`${h} failed (no fallback)`,{status:i.status}),i;let q=[408,429,500,502,503,504].includes(i.status);if(!(g<B)||!q){H=k||String(i.status),I||(I=i.status),e>0&&K++,t.warn("COMBO-RR",`${h} failed, trying next model`,{status:i.status});break}}}finally{g()}}let L=Date.now()-G;if((0,f.JF)(b.name,null,{success:!1,latencyMs:L,fallbackCount:K,strategy:"round-robin"}),w.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}))return t.warn("COMBO-RR","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let M=I||406,N=H||"All round-robin combo models unavailable";if(J){let a=(0,d.Qo)(J);return t.warn("COMBO-RR",`All models failed | ${N} (${a})`),(0,e.wO)(M,N,J,a)}return t.warn("COMBO-RR",`All models failed | ${N}`),new Response(JSON.stringify({error:{message:N}}),{status:M,headers:{"Content-Type":"application/json"}})}},27899:(a,b,c)=>{c.d(b,{A5:()=>f,BS:()=>g,Go:()=>i,JF:()=>e,NZ:()=>h});let d=new Map;function e(a,b,{success:c,latencyMs:e,fallbackCount:f=0,strategy:g="priority"}){d.has(a)||d.set(a,{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:g,lastUsedAt:null,byModel:{}});let h=d.get(a);if(h.totalRequests++,h.totalLatencyMs+=e,h.totalFallbacks+=f,h.lastUsedAt=new Date().toISOString(),h.strategy=g,c?h.totalSuccesses++:h.totalFailures++,b){h.byModel[b]||(h.byModel[b]={requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null});let a=h.byModel[b];a.requests++,a.totalLatencyMs+=e,a.lastUsedAt=new Date().toISOString(),c?(a.successes++,a.lastStatus="ok"):(a.failures++,a.lastStatus="error")}}function f(a){let b=d.get(a);return b?{...b,avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,fallbackRate:b.totalRequests>0?Math.round(b.totalFallbacks/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,{...b,avgLatencyMs:b.requests>0?Math.round(b.totalLatencyMs/b.requests):0,successRate:b.requests>0?Math.round(b.successes/b.requests*100):0}]))}:null}function g(){let a={};for(let[b]of d)a[b]=f(b);return a}function h(a){d.delete(a)}function i(){d.clear()}},97917:(a,b,c)=>{c.d(b,{M4:()=>m,QM:()=>n,_s:()=>l,io:()=>i,mE:()=>f,qA:()=>k,tv:()=>j,vX:()=>o,xV:()=>e,xd:()=>p,z$:()=>g,zd:()=>h});var d=c(41549);function e(a,b){(0,d.sm)().prepare("INSERT OR REPLACE INTO domain_fallback_chains (model, chain) VALUES (?, ?)").run(a,JSON.stringify(b))}function f(){let a=(0,d.sm)().prepare("SELECT model, chain FROM domain_fallback_chains").all(),b={};for(let c of a)b[c.model]=JSON.parse(c.chain);return b}function g(a){return(0,d.sm)().prepare("DELETE FROM domain_fallback_chains WHERE model = ?").run(a).changes>0}function h(a,b){(0,d.sm)().prepare(`INSERT OR REPLACE INTO domain_budgets (api_key_id, daily_limit_usd, monthly_limit_usd, warning_threshold)
1
+ "use strict";exports.id=7669,exports.ids=[239,2620,7669],exports.modules={12620:(a,b,c)=>{c.d(b,{ez:()=>i,getAllCircuitBreakerStatuses:()=>l,getCircuitBreaker:()=>k,resetAllCircuitBreakers:()=>m});var d=c(97917);let e="CLOSED",f="OPEN",g="HALF_OPEN";class h{constructor(a,b={}){this.name=a,this.failureThreshold=b.failureThreshold??5,this.resetTimeout=b.resetTimeout??3e4,this.halfOpenRequests=b.halfOpenRequests??1,this.onStateChange=b.onStateChange||null,this.isFailure=b.isFailure||(()=>!0),this.state=e,this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this.halfOpenAllowed=0,this._restoreFromDb()}_restoreFromDb(){try{let a=(0,d.vX)(this.name);a&&(this.state=a.state,this.failureCount=a.failureCount,this.lastFailureTime=a.lastFailureTime,this.state===g&&(this.halfOpenAllowed=this.halfOpenRequests))}catch{}}_persistToDb(){try{(0,d.QM)(this.name,{state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime,options:{failureThreshold:this.failureThreshold,resetTimeout:this.resetTimeout,halfOpenRequests:this.halfOpenRequests}})}catch{}}async execute(a){if(this.state===f)if(this._shouldAttemptReset())this._transition(g);else throw new i(`Circuit breaker "${this.name}" is OPEN. Try again later.`,this.name,this._timeUntilReset());if(this.state===g&&this.halfOpenAllowed<=0)throw new i(`Circuit breaker "${this.name}" is HALF_OPEN, no more probe requests allowed.`,this.name,this._timeUntilReset());this.state===g&&this.halfOpenAllowed--;try{let b=await a();return this._onSuccess(),b}catch(a){throw this.isFailure(a)&&this._onFailure(),a}}canExecute(){return this.state===e||(this.state===f?this._shouldAttemptReset():this.state===g&&this.halfOpenAllowed>0)}getStatus(){return{name:this.name,state:this.state,failureCount:this.failureCount,lastFailureTime:this.lastFailureTime}}reset(){this._transition(e),this.failureCount=0,this.successCount=0,this.lastFailureTime=null,this._persistToDb()}_onSuccess(){this.state===g&&(this.successCount++,this._transition(e),this.failureCount=0),this.failureCount=0,this._persistToDb()}_onFailure(){this.failureCount++,this.lastFailureTime=Date.now(),this.state===g?this._transition(f):this.failureCount>=this.failureThreshold&&this._transition(f),this._persistToDb()}_shouldAttemptReset(){return!this.lastFailureTime||Date.now()-this.lastFailureTime>=this.resetTimeout}_timeUntilReset(){return this.lastFailureTime?Math.max(0,this.resetTimeout-(Date.now()-this.lastFailureTime)):0}_transition(a){let b=this.state;this.state=a,a===g&&(this.halfOpenAllowed=this.halfOpenRequests),this.onStateChange&&b!==a&&this.onStateChange(this.name,b,a)}}class i extends Error{constructor(a,b,c){super(a),this.name="CircuitBreakerOpenError",this.circuitName=b,this.retryAfterMs=c}}let j=new Map;function k(a,b){return j.has(a)||j.set(a,new h(a,b)),j.get(a)}function l(){try{for(let a of(0,d.xd)())j.has(a.name)||k(a.name)}catch{}return Array.from(j.values()).map(a=>a.getStatus())}function m(){for(let a of j.values())a.reset();j.clear();try{(0,d.G7)()}catch{}}},17669:(a,b,c)=>{c.d(b,{Pr:()=>w,Vg:()=>function a(b,c,d=new Set,e=0){if(e>3)throw Error(`Max combo nesting depth (3) exceeded at "${b}"`);if(d.has(b))throw Error(`Circular combo reference detected: ${b}`);d.add(b);let f=Array.isArray(c)?c:c?.combos||[],g=f.find(a=>a.name===b);if(g&&g.models)for(let b of g.models){let c=r(b).model;f.find(a=>a.name===c)&&a(c,f,new Set(d),e+1)}}});var d=c(74163),e=c(71861),f=c(27899);let g={strategy:"priority",maxRetries:1,retryDelayMs:2e3,timeoutMs:12e4,concurrencyPerModel:3,queueTimeoutMs:3e4,healthCheckEnabled:!0,healthCheckTimeoutMs:3e3,maxComboDepth:3,trackMetrics:!0};function h(a,b,c){let d=b?.comboDefaults||{},e=c&&b?.providerOverrides?.[c]||{},f=a?.config||{},h=a=>Object.fromEntries(Object.entries(a).filter(([,a])=>null!=a));return{...g,...h(d),...h(e),...h(f)}}let i=new Map;function j(a,b=3){i.has(a)||i.set(a,{running:0,max:b,queue:[],rateLimitedUntil:null});let c=i.get(a);return c.max=b,c}function k(a){return!!a.rateLimitedUntil&&(!(Date.now()>=a.rateLimitedUntil)||(a.rateLimitedUntil=null,!1))}function l(a){let b=i.get(a);if(b)for(;b.queue.length>0&&b.running<b.max&&!k(b);){let c=b.queue.shift();clearTimeout(c.timer),b.running++,c.resolve(m(a))}}function m(a){let b=!1;return()=>{if(b)return;b=!0;let c=i.get(a);c&&c.running>0&&(c.running--,l(a))}}var n=c(12620),o=c(99939);let p=[429,502,503,504],q=new Map;function r(a){return"string"==typeof a?{model:a,weight:0}:{model:a.model,weight:a.weight||0}}function s(a,b,c=new Set,d=0){if(d>3)return a.models.map(a=>r(a).model);if(c.has(a.name))return[];c.add(a.name);let e=Array.isArray(b)?b:b?.combos||[],f=[];for(let b of a.models||[]){let a=r(b).model,g=e.find(b=>b.name===a);if(g){let a=s(g,e,new Set(c),d+1);f.push(...a)}else f.push(a)}return f}function t(a){let b=a.map(a=>r(a)),c=b.reduce((a,b)=>a+b.weight,0);if(c<=0)return b[Math.floor(Math.random()*b.length)].model;let d=Math.random()*c;for(let a of b)if((d-=a.weight)<=0)return a.model;return b[b.length-1].model}function u(a,b){let c=a.map(a=>r(a));return[c.find(a=>a.model===b),...c.filter(a=>a.model!==b).sort((a,b)=>b.weight-a.weight)].filter(Boolean).map(a=>a.model)}async function v(a){try{let{getPricingForModel:b}=await Promise.resolve().then(c.bind(c,40287)),d=await Promise.all(a.map(async a=>{let c=(0,o.Xh)(a),d=c.provider||c.providerAlias||"unknown",e=c.model||a;try{let c=await b(d,e);return{modelStr:a,cost:c?.input??1/0}}catch{return{modelStr:a,cost:1/0}}}));return d.sort((a,b)=>a.cost-b.cost),d.map(a=>a.modelStr)}catch{return a}}async function w({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l}){let m,q=b.strategy||"priority",w=b.models||[];if("round-robin"===q)return x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:j,settings:k,allCombos:l});let y=k?h(b,k):{...g,...b.config||{}},z=y.maxRetries??1,A=y.retryDelayMs??2e3;if(l){let a=s(b,l);if("weighted"===q){let a=t(w);m=(m=u(w,a)).flatMap(a=>{let b=(Array.isArray(l)?l:l?.combos||[]).find(b=>b.name===a);return b?s(b,l):[a]}),j.info("COMBO",`Weighted selection with nested resolution: ${m.length} total models`)}else m=a,j.info("COMBO",`${q} with nested resolution: ${m.length} total models`)}else if("weighted"===q){let a=t(w);m=u(w,a),j.info("COMBO",`Weighted selection: ${a} (from ${w.length} models)`)}else m=w.map(a=>r(a).model);"random"===q?(m=function(a){for(let b=a.length-1;b>0;b--){let c=Math.floor(Math.random()*(b+1));[a[b],a[c]]=[a[c],a[b]]}return a}([...m]),j.info("COMBO",`Random shuffle: ${m.length} models`)):"least-used"===q?(m=function(a,b){let c=(0,f.A5)(b);if(!c||!c.byModel)return a;let d=a.map(a=>({modelStr:a,requests:c.byModel[a]?.requests??0}));return d.sort((a,b)=>a.requests-b.requests),d.map(a=>a.modelStr)}(m,b.name),j.info("COMBO",`Least-used ordering: ${m[0]} has fewest requests`)):"cost-optimized"===q&&(m=await v(m),j.info("COMBO",`Cost-optimized ordering: cheapest first (${m[0]})`));let B=null,C=null,D=null,E=Date.now(),F=0;for(let e=0;e<m.length;e++){let g=m[e],h=(0,o.Xh)(g),k=h.provider||h.providerAlias||"unknown",l=(0,d.T_)(k),r=(0,n.getCircuitBreaker)(`combo:${k}`,{failureThreshold:l.circuitBreakerThreshold,resetTimeout:l.circuitBreakerReset});if(!r.canExecute()){j.info("COMBO",`Skipping ${g}: circuit breaker OPEN for ${k}`),e>0&&F++;continue}if(i&&!await i(g)){j.info("COMBO",`Skipping ${g} (all accounts in cooldown)`),e>0&&F++;continue}for(let h=0;h<=z;h++){h>0&&(j.info("COMBO",`Retrying ${g} in ${A}ms (attempt ${h+1}/${z+1})`),await new Promise(a=>setTimeout(a,A))),j.info("COMBO",`Trying model ${e+1}/${m.length}: ${g}${h>0?` (retry ${h})`:""}`);let i=await c(a,g);if(i.ok){let a=Date.now()-E;return j.info("COMBO",`Model ${g} succeeded (${a}ms, ${F} fallbacks)`),(0,f.JF)(b.name,g,{success:!0,latencyMs:a,fallbackCount:F,strategy:q}),i}let l=i.statusText||"",n=null;try{let a=i.clone();try{let b=await a.json();l=b?.error?.message||b?.error||b?.message||l,n=b?.retryAfter||null}catch{try{let a=await i.text();a&&(l=a.substring(0,500))}catch{}}}catch{}if(n&&(!C||new Date(n)<new Date(C))&&(C=n),"string"!=typeof l)try{l=JSON.stringify(l)}catch{l=String(l)}let{shouldFallback:o,cooldownMs:s}=(0,d.hk)(i.status,l,0,null,k);if(p.includes(i.status)&&r._onFailure(),!o)return j.warn("COMBO",`Model ${g} failed (no fallback)`,{status:i.status}),i;let t=[408,429,500,502,503,504].includes(i.status);if(!(h<z)||!t){B=l||String(i.status),D||(D=i.status),e>0&&F++,j.warn("COMBO",`Model ${g} failed, trying next`,{status:i.status});break}}}let G=m.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}),H=Date.now()-E;if((0,f.JF)(b.name,null,{success:!1,latencyMs:H,fallbackCount:F,strategy:q}),G)return j.warn("COMBO","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let I=D||406,J=B||"All combo models unavailable";if(C){let a=(0,d.Qo)(C);return j.warn("COMBO",`All models failed | ${J} (${a})`),(0,e.wO)(I,J,C,a)}return j.warn("COMBO",`All models failed | ${J}`),new Response(JSON.stringify({error:{message:J}}),{status:I,headers:{"Content-Type":"application/json"}})}async function x({body:a,combo:b,handleSingleModel:c,isModelAvailable:i,log:t,settings:u,allCombos:v}){let w,x=b.models||[],y=u?h(b,u):{...g,...b.config||{}},z=y.concurrencyPerModel??3,A=y.queueTimeoutMs??3e4,B=y.maxRetries??1,C=y.retryDelayMs??2e3,D=(w=v?s(b,v):x.map(a=>r(a).model)).length;if(0===D)return(0,e.wO)(406,"Round-robin combo has no models");let E=q.get(b.name)||0;q.set(b.name,E+1);let F=E%D,G=Date.now(),H=null,I=null,J=null,K=0;for(let e=0;e<D;e++){let g,h=w[(F+e)%D],q=(0,o.Xh)(h),r=q.provider||q.providerAlias||"unknown",s=(0,d.T_)(r),u=(0,n.getCircuitBreaker)(`combo:${r}`,{failureThreshold:s.circuitBreakerThreshold,resetTimeout:s.circuitBreakerReset});if(!u.canExecute()){t.info("COMBO-RR",`Skipping ${h}: circuit breaker OPEN for ${r}`),e>0&&K++;continue}if(i&&!await i(h)){t.info("COMBO-RR",`Skipping ${h} (all accounts in cooldown)`),e>0&&K++;continue}try{g=await function(a,{maxConcurrency:b=3,timeoutMs:c=3e4}={}){let d=j(a,b);return d.running<d.max&&!k(d)?(d.running++,Promise.resolve(m(a))):new Promise((b,e)=>{let f=setTimeout(()=>{let b=d.queue.findIndex(a=>a.timer===f);-1!==b&&d.queue.splice(b,1);let g=Error(`Semaphore timeout after ${c}ms for ${a}`);g.code="SEMAPHORE_TIMEOUT",e(g)},c);d.queue.push({resolve:b,reject:e,timer:f})})}(h,{maxConcurrency:z,timeoutMs:A})}catch(a){if("SEMAPHORE_TIMEOUT"===a.code){t.warn("COMBO-RR",`Semaphore timeout for ${h}, trying next model`),e>0&&K++;continue}throw a}try{for(let g=0;g<=B;g++){g>0&&(t.info("COMBO-RR",`Retrying ${h} in ${C}ms (attempt ${g+1}/${B+1})`),await new Promise(a=>setTimeout(a,C))),t.info("COMBO-RR",`[RR #${E}] → ${h}${e>0?` (fallback +${e})`:""}${g>0?` (retry ${g})`:""}`);let i=await c(a,h);if(i.ok){let a=Date.now()-G;return t.info("COMBO-RR",`${h} succeeded (${a}ms, ${K} fallbacks)`),(0,f.JF)(b.name,h,{success:!0,latencyMs:a,fallbackCount:K,strategy:"round-robin"}),i}let k=i.statusText||"",m=null;try{let a=i.clone();try{let b=await a.json();k=b?.error?.message||b?.error||b?.message||k,m=b?.retryAfter||null}catch{try{let a=await i.text();a&&(k=a.substring(0,500))}catch{}}}catch{}if(m&&(!J||new Date(m)<new Date(J))&&(J=m),"string"!=typeof k)try{k=JSON.stringify(k)}catch{k=String(k)}let{shouldFallback:n,cooldownMs:o}=(0,d.hk)(i.status,k,0,null,r);if(p.includes(i.status)&&o>0&&(!function(a,b){let c=j(a);c.rateLimitedUntil=Date.now()+b,setTimeout(()=>{c.rateLimitedUntil&&Date.now()>=c.rateLimitedUntil&&(c.rateLimitedUntil=null,l(a))},b+50)}(h,o),u._onFailure(),t.warn("COMBO-RR",`${h} error ${i.status}, cooldown ${o}ms (breaker: ${u.getStatus().failureCount}/${s.circuitBreakerThreshold})`)),!n)return t.warn("COMBO-RR",`${h} failed (no fallback)`,{status:i.status}),i;let q=[408,429,500,502,503,504].includes(i.status);if(!(g<B)||!q){H=k||String(i.status),I||(I=i.status),e>0&&K++,t.warn("COMBO-RR",`${h} failed, trying next model`,{status:i.status});break}}}finally{g()}}let L=Date.now()-G;if((0,f.JF)(b.name,null,{success:!1,latencyMs:L,fallbackCount:K,strategy:"round-robin"}),w.every(a=>{let b=(0,o.Xh)(a).provider||(0,o.Xh)(a).providerAlias||"unknown";return!(0,n.getCircuitBreaker)(`combo:${b}`).canExecute()}))return t.warn("COMBO-RR","All models have circuit breaker OPEN — aborting"),(0,e.wO)(503,"All providers temporarily unavailable (circuit breakers open)");let M=I||406,N=H||"All round-robin combo models unavailable";if(J){let a=(0,d.Qo)(J);return t.warn("COMBO-RR",`All models failed | ${N} (${a})`),(0,e.wO)(M,N,J,a)}return t.warn("COMBO-RR",`All models failed | ${N}`),new Response(JSON.stringify({error:{message:N}}),{status:M,headers:{"Content-Type":"application/json"}})}},27899:(a,b,c)=>{c.d(b,{A5:()=>f,BS:()=>g,Go:()=>i,JF:()=>e,NZ:()=>h});let d=new Map;function e(a,b,{success:c,latencyMs:e,fallbackCount:f=0,strategy:g="priority"}){d.has(a)||d.set(a,{totalRequests:0,totalSuccesses:0,totalFailures:0,totalFallbacks:0,totalLatencyMs:0,strategy:g,lastUsedAt:null,byModel:{}});let h=d.get(a);if(h.totalRequests++,h.totalLatencyMs+=e,h.totalFallbacks+=f,h.lastUsedAt=new Date().toISOString(),h.strategy=g,c?h.totalSuccesses++:h.totalFailures++,b){h.byModel[b]||(h.byModel[b]={requests:0,successes:0,failures:0,totalLatencyMs:0,lastStatus:null,lastUsedAt:null});let a=h.byModel[b];a.requests++,a.totalLatencyMs+=e,a.lastUsedAt=new Date().toISOString(),c?(a.successes++,a.lastStatus="ok"):(a.failures++,a.lastStatus="error")}}function f(a){let b=d.get(a);return b?{...b,avgLatencyMs:b.totalRequests>0?Math.round(b.totalLatencyMs/b.totalRequests):0,successRate:b.totalRequests>0?Math.round(b.totalSuccesses/b.totalRequests*100):0,fallbackRate:b.totalRequests>0?Math.round(b.totalFallbacks/b.totalRequests*100):0,byModel:Object.fromEntries(Object.entries(b.byModel).map(([a,b])=>[a,{...b,avgLatencyMs:b.requests>0?Math.round(b.totalLatencyMs/b.requests):0,successRate:b.requests>0?Math.round(b.successes/b.requests*100):0}]))}:null}function g(){let a={};for(let[b]of d)a[b]=f(b);return a}function h(a){d.delete(a)}function i(){d.clear()}},97917:(a,b,c)=>{c.d(b,{G7:()=>q,M4:()=>m,QM:()=>n,_s:()=>l,io:()=>i,mE:()=>f,qA:()=>k,tv:()=>j,vX:()=>o,xV:()=>e,xd:()=>p,z$:()=>g,zd:()=>h});var d=c(41549);function e(a,b){(0,d.sm)().prepare("INSERT OR REPLACE INTO domain_fallback_chains (model, chain) VALUES (?, ?)").run(a,JSON.stringify(b))}function f(){let a=(0,d.sm)().prepare("SELECT model, chain FROM domain_fallback_chains").all(),b={};for(let c of a)b[c.model]=JSON.parse(c.chain);return b}function g(a){return(0,d.sm)().prepare("DELETE FROM domain_fallback_chains WHERE model = ?").run(a).changes>0}function h(a,b){(0,d.sm)().prepare(`INSERT OR REPLACE INTO domain_budgets (api_key_id, daily_limit_usd, monthly_limit_usd, warning_threshold)
2
2
  VALUES (?, ?, ?, ?)`).run(a,b.dailyLimitUsd,b.monthlyLimitUsd||0,b.warningThreshold??.8)}function i(a){let b=(0,d.sm)().prepare("SELECT * FROM domain_budgets WHERE api_key_id = ?").get(a);return b?{dailyLimitUsd:b.daily_limit_usd,monthlyLimitUsd:b.monthly_limit_usd,warningThreshold:b.warning_threshold}:null}function j(a,b,c=Date.now()){(0,d.sm)().prepare("INSERT INTO domain_cost_history (api_key_id, cost, timestamp) VALUES (?, ?, ?)").run(a,b,c)}function k(a,b){return(0,d.sm)().prepare("SELECT cost, timestamp FROM domain_cost_history WHERE api_key_id = ? AND timestamp >= ? ORDER BY timestamp").all(a,b)}function l(a){(0,d.sm)().prepare("DELETE FROM domain_lockout_state WHERE identifier = ?").run(a)}function m(){let a=(0,d.sm)(),b=Date.now();return a.prepare("SELECT identifier, locked_until FROM domain_lockout_state WHERE locked_until IS NOT NULL AND locked_until > ?").all(b).map(a=>({identifier:a.identifier,lockedUntil:a.locked_until}))}function n(a,b){(0,d.sm)().prepare(`INSERT OR REPLACE INTO domain_circuit_breakers (name, state, failure_count, last_failure_time, options)
3
- VALUES (?, ?, ?, ?, ?)`).run(a,b.state,b.failureCount,b.lastFailureTime,b.options?JSON.stringify(b.options):null)}function o(a){let b=(0,d.sm)().prepare("SELECT * FROM domain_circuit_breakers WHERE name = ?").get(a);return b?{state:b.state,failureCount:b.failure_count,lastFailureTime:b.last_failure_time,options:b.options?JSON.parse(b.options):null}:null}function p(){return(0,d.sm)().prepare("SELECT name, state, failure_count, last_failure_time FROM domain_circuit_breakers").all().map(a=>({name:a.name,state:a.state,failureCount:a.failure_count,lastFailureTime:a.last_failure_time}))}},99939:(a,b,c)=>{c.d(b,{Xh:()=>i,js:()=>j});var d=c(23969);let e={};for(let[a,b]of Object.entries(d.PROVIDER_ID_TO_ALIAS))e[b]&&console.log(`[MODEL] Warning: alias "${b}" maps to both "${e[b]}" and "${a}". Using "${a}".`),e[b]=a;let f={github:{"claude-4.5-opus":"claude-opus-4-5-20251101","claude-opus-4.5":"claude-opus-4-5-20251101","gemini-3-pro":"gemini-3-pro-preview","gemini-3-flash":"gemini-3-flash-preview","raptor-mini":"oswe-vscode-prime"},antigravity:{"gemini-3-flash":"gemini-3-flash-preview"}},g=new Map;for(let[a,b]of Object.entries(d.vq)){let c=e[a]||a;for(let a of b||[]){let b=a?.id;if(!b)continue;let d=g.get(b)||[];d.includes(c)||(d.push(c),g.set(b,d))}}function h(a,b){if(!b||"string"!=typeof b)return b;let c=f[e[a]||a];return c?.[b]||b}function i(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(/\.\.[\/\\]/.test(a)||/[\x00-\x1f]/.test(a))return console.log(`[MODEL] Warning: rejected malformed model string: "${a.substring(0,50)}"`),{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}async function j(a,b){let c=i(a);if(!c.isAlias){let a=h(c.provider,c.model);return{provider:c.provider,model:a}}let f="function"==typeof b?await b():b,j=function(a,b){var c,d;if(!b)return null;let f=b[a];if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:null}(c.model,f);if(j){let a=h(j.provider,j.model);return{provider:j.provider,model:a}}let k=c.model,l=g.get(k)||[];if(l.includes("openai"))return{provider:"openai",model:k};let m=l.filter(a=>"openai"!==a);if(1===m.length){let a=m[0],b=h(a,k);return{provider:a,model:b}}if(m.length>1){let a=m.map(a=>d.PROVIDER_ID_TO_ALIAS[a]||a),b=a.slice(0,2).map(a=>`${a}/${k}`),c=`Ambiguous model '${k}'. Use provider/model prefix (ex: ${b.join(" or ")}).`;return console.warn(`[MODEL] ${c} Candidates: ${a.join(", ")}`),{provider:null,model:k,errorType:"ambiguous_model",errorMessage:c,candidateProviders:m,candidateAliases:a}}return{provider:"openai",model:k}}}};
3
+ VALUES (?, ?, ?, ?, ?)`).run(a,b.state,b.failureCount,b.lastFailureTime,b.options?JSON.stringify(b.options):null)}function o(a){let b=(0,d.sm)().prepare("SELECT * FROM domain_circuit_breakers WHERE name = ?").get(a);return b?{state:b.state,failureCount:b.failure_count,lastFailureTime:b.last_failure_time,options:b.options?JSON.parse(b.options):null}:null}function p(){return(0,d.sm)().prepare("SELECT name, state, failure_count, last_failure_time FROM domain_circuit_breakers").all().map(a=>({name:a.name,state:a.state,failureCount:a.failure_count,lastFailureTime:a.last_failure_time}))}function q(){(0,d.sm)().prepare("DELETE FROM domain_circuit_breakers").run()}},99939:(a,b,c)=>{c.d(b,{Xh:()=>i,js:()=>j});var d=c(23969);let e={};for(let[a,b]of Object.entries(d.PROVIDER_ID_TO_ALIAS))e[b]&&console.log(`[MODEL] Warning: alias "${b}" maps to both "${e[b]}" and "${a}". Using "${a}".`),e[b]=a;let f={github:{"claude-4.5-opus":"claude-opus-4-5-20251101","claude-opus-4.5":"claude-opus-4-5-20251101","gemini-3-pro":"gemini-3-pro-preview","gemini-3-flash":"gemini-3-flash-preview","raptor-mini":"oswe-vscode-prime"},antigravity:{"gemini-3-flash":"gemini-3-flash-preview"}},g=new Map;for(let[a,b]of Object.entries(d.vq)){let c=e[a]||a;for(let a of b||[]){let b=a?.id;if(!b)continue;let d=g.get(b)||[];d.includes(c)||(d.push(c),g.set(b,d))}}function h(a,b){if(!b||"string"!=typeof b)return b;let c=f[e[a]||a];return c?.[b]||b}function i(a){if(!a)return{provider:null,model:null,isAlias:!1,providerAlias:null};if(/\.\.[\/\\]/.test(a)||/[\x00-\x1f]/.test(a))return console.log(`[MODEL] Warning: rejected malformed model string: "${a.substring(0,50)}"`),{provider:null,model:null,isAlias:!1,providerAlias:null};if(a.includes("/")){let b=a.indexOf("/"),c=a.slice(0,b),d=a.slice(b+1);return{provider:e[c]||c,model:d,isAlias:!1,providerAlias:c}}return{provider:null,model:a,isAlias:!0,providerAlias:null}}async function j(a,b){let c=i(a);if(!c.isAlias){let a=h(c.provider,c.model);return{provider:c.provider,model:a}}let f="function"==typeof b?await b():b,j=function(a,b){var c,d;if(!b)return null;let f=b[a];if(!f)return null;if("string"==typeof f&&f.includes("/")){let a=f.indexOf("/");return{provider:e[c=f.slice(0,a)]||c,model:f.slice(a+1)}}return"object"==typeof f&&f.provider&&f.model?{provider:e[d=f.provider]||d,model:f.model}:null}(c.model,f);if(j){let a=h(j.provider,j.model);return{provider:j.provider,model:a}}let k=c.model,l=g.get(k)||[];if(l.includes("openai"))return{provider:"openai",model:k};let m=l.filter(a=>"openai"!==a);if(1===m.length){let a=m[0],b=h(a,k);return{provider:a,model:b}}if(m.length>1){let a=m.map(a=>d.PROVIDER_ID_TO_ALIAS[a]||a),b=a.slice(0,2).map(a=>`${a}/${k}`),c=`Ambiguous model '${k}'. Use provider/model prefix (ex: ${b.join(" or ")}).`;return console.warn(`[MODEL] ${c} Candidates: ${a.join(", ")}`),{provider:null,model:k,errorType:"ambiguous_model",errorMessage:c,candidateProviders:m,candidateAliases:a}}return{provider:"openai",model:k}}}};
@@ -1,2 +1,2 @@
1
- "use strict";exports.id=8369,exports.ids=[8369],exports.modules={38369:(a,b,c)=>{c.d(b,{j:()=>r});var d=c(83596),e=c(82216);let f=new Set(["openai","openai-responses"]),g=new Set(["gemini","gemini-cli"]);function h(a){return(a||"").trim().replace(/\/$/,"")}function i(a){return{"Content-Type":"application/json",Authorization:`Bearer ${a}`}}async function j({provider:a,apiKey:b,baseUrl:c,providerSpecificData:d={},modelId:f="gpt-4o-mini"}){if(!c)return{valid:!1,error:"Missing base URL"};let g=function(a){let b=h(a);if(!b)return"";for(let a of["/chat/completions","/responses","/chat","/messages"])if(b.endsWith(a))return`${b.slice(0,-a.length)}/models`;return`${b}/models`}(c);if(!g)return{valid:!1,error:"Invalid models endpoint"};let j=await fetch(g,{method:"GET",headers:i(b)});if(j.ok)return{valid:!0,error:null};if(401===j.status||403===j.status)return{valid:!1,error:"Invalid API key"};let k=function(a,b,c={}){let d=h(b);return d?(0,e.mq)(a)?c?.apiType==="responses"?`${d}/responses`:`${d}/chat/completions`:d.endsWith("/chat/completions")||d.endsWith("/responses")||d.endsWith("/chat")?d:d.endsWith("/v1")?`${d}/chat/completions`:d:""}(a,c,d);if(!k)return{valid:!1,error:`Validation failed: ${j.status}`};let l=await fetch(k,{method:"POST",headers:i(b),body:JSON.stringify({model:f,messages:[{role:"user",content:"test"}],max_tokens:1})});return l.ok?{valid:!0,error:null}:401===l.status||403===l.status?{valid:!1,error:"Invalid API key"}:404===l.status||405===l.status?{valid:!1,error:"Provider validation endpoint not supported"}:l.status>=500?{valid:!1,error:`Provider unavailable (${l.status})`}:{valid:!0,error:null}}async function k({apiKey:a,baseUrl:b,modelId:c,headers:d={}}){if(!b)return{valid:!1,error:"Missing base URL"};let e={"Content-Type":"application/json",...d};e["x-api-key"]||e["X-API-Key"]||(e["x-api-key"]=a),e["anthropic-version"]||e["Anthropic-Version"]||(e["anthropic-version"]="2023-06-01");let f=await fetch(b,{method:"POST",headers:e,body:JSON.stringify({model:c||"claude-3-5-sonnet-20241022",max_tokens:1,messages:[{role:"user",content:"test"}]})});return 401===f.status||403===f.status?{valid:!1,error:"Invalid API key"}:{valid:!0,error:null}}async function l({apiKey:a,baseUrl:b}){if(!b)return{valid:!1,error:"Missing base URL"};let c=b.includes("?")?"&":"?",d=await fetch(`${b}${c}key=${encodeURIComponent(a)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return d.ok?{valid:!0,error:null}:401===d.status||403===d.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${d.status}`}}async function m({apiKey:a}){try{let b=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${a}`}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function n({apiKey:a}){try{let b=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:a,"Content-Type":"application/json"}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function o({apiKey:a}){try{let b=await fetch("https://api.nanobananaapi.ai/api/v1/nanobanana/generate",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({prompt:"test",model:"nanobanana-flash"})});if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function p({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};let d=await fetch(`${c}/models`,{method:"GET",headers:i(a)});return d.ok?{valid:!0,error:null}:401===d.status||403===d.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${d.status}`}}async function q({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};c.endsWith("/messages")&&(c=c.slice(0,-9));let d=await fetch(`${c}/models`,{method:"GET",headers:{"Content-Type":"application/json","x-api-key":a,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a}`}});return d.ok?{valid:!0,error:null}:401===d.status||403===d.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${d.status}`}}async function r({provider:a,apiKey:b,providerSpecificData:c={}}){if(!a||!b)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,e.mq)(a))try{return await p({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}if((0,e.gb)(a))try{return await q({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}let i={deepgram:m,assemblyai:n,nanobanana:o};if(i[a])try{return await i[a]({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}let r=(0,d.qs)(a);if(!r)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let s=r.models?.[0]?.id||null,t=function(a,b={}){return b?.baseUrl?h(b.baseUrl):a?.baseUrl?h(a.baseUrl):""}(r,c);try{if(f.has(r.format))return await j({provider:a,apiKey:b,baseUrl:t,providerSpecificData:c,modelId:s});if("claude"===r.format){let a=`${t}${r.urlSuffix||""}`,c={...r.headers||{}};return"x-api-key"===(r.authHeader||"").toLowerCase()?c["x-api-key"]=b:c.Authorization=`Bearer ${b}`,await k({apiKey:b,baseUrl:a,modelId:s,headers:c})}if(g.has(r.format))return await l({apiKey:b,baseUrl:t});return{valid:!1,error:"Provider validation not supported",unsupported:!0}}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}}},82216:(a,b,c)=>{c.d(b,{Q2:()=>o,js:()=>p,DI:()=>l,fg:()=>j,IS:()=>h,zN:()=>i,JH:()=>k,gb:()=>n,mq:()=>m});var d=c(74443);let e=d.Ikc({id:d.YjP().min(1),alias:d.YjP().min(1),name:d.YjP().min(1),icon:d.YjP().min(1),color:d.YjP().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:d.YjP().optional(),website:d.YjP().url().optional(),passthroughModels:d.zMY().optional()}),f=d.g1P(d.YjP(),e);function g(a,b){let c=f.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
1
+ "use strict";exports.id=8369,exports.ids=[8369],exports.modules={38369:(a,b,c)=>{c.d(b,{j:()=>r});var d=c(83596),e=c(82216);let f=new Set(["openai","openai-responses"]),g=new Set(["gemini","gemini-cli"]);function h(a){return(a||"").trim().replace(/\/$/,"")}function i(a){return{"Content-Type":"application/json",Authorization:`Bearer ${a}`}}async function j({provider:a,apiKey:b,baseUrl:c,providerSpecificData:d={},modelId:f="gpt-4o-mini"}){if(!c)return{valid:!1,error:"Missing base URL"};let g=function(a){let b=h(a);if(!b)return"";for(let a of["/chat/completions","/responses","/chat","/messages"])if(b.endsWith(a))return`${b.slice(0,-a.length)}/models`;return`${b}/models`}(c);if(!g)return{valid:!1,error:"Invalid models endpoint"};let j=await fetch(g,{method:"GET",headers:i(b)});if(j.ok)return{valid:!0,error:null};if(401===j.status||403===j.status)return{valid:!1,error:"Invalid API key"};let k=function(a,b,c={}){let d=h(b);return d?(0,e.mq)(a)?c?.apiType==="responses"?`${d}/responses`:`${d}/chat/completions`:d.endsWith("/chat/completions")||d.endsWith("/responses")||d.endsWith("/chat")?d:d.endsWith("/v1")?`${d}/chat/completions`:d:""}(a,c,d);if(!k)return{valid:!1,error:`Validation failed: ${j.status}`};let l=await fetch(k,{method:"POST",headers:i(b),body:JSON.stringify({model:f,messages:[{role:"user",content:"test"}],max_tokens:1})});return l.ok?{valid:!0,error:null}:401===l.status||403===l.status?{valid:!1,error:"Invalid API key"}:404===l.status||405===l.status?{valid:!1,error:"Provider validation endpoint not supported"}:l.status>=500?{valid:!1,error:`Provider unavailable (${l.status})`}:{valid:!0,error:null}}async function k({apiKey:a,baseUrl:b,modelId:c,headers:d={}}){if(!b)return{valid:!1,error:"Missing base URL"};let e={"Content-Type":"application/json",...d};e["x-api-key"]||e["X-API-Key"]||(e["x-api-key"]=a),e["anthropic-version"]||e["Anthropic-Version"]||(e["anthropic-version"]="2023-06-01");let f=await fetch(b,{method:"POST",headers:e,body:JSON.stringify({model:c||"claude-3-5-sonnet-20241022",max_tokens:1,messages:[{role:"user",content:"test"}]})});return 401===f.status||403===f.status?{valid:!1,error:"Invalid API key"}:{valid:!0,error:null}}async function l({apiKey:a,baseUrl:b}){if(!b)return{valid:!1,error:"Missing base URL"};let c=b.includes("?")?"&":"?",d=await fetch(`${b}${c}key=${encodeURIComponent(a)}`,{method:"GET",headers:{"Content-Type":"application/json"}});return d.ok?{valid:!0,error:null}:401===d.status||403===d.status?{valid:!1,error:"Invalid API key"}:{valid:!1,error:`Validation failed: ${d.status}`}}async function m({apiKey:a}){try{let b=await fetch("https://api.deepgram.com/v1/auth/token",{method:"GET",headers:{Authorization:`Token ${a}`}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function n({apiKey:a}){try{let b=await fetch("https://api.assemblyai.com/v2/transcript?limit=1",{method:"GET",headers:{Authorization:a,"Content-Type":"application/json"}});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!1,error:`Validation failed: ${b.status}`}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function o({apiKey:a}){try{let b=await fetch("https://api.nanobananaapi.ai/api/v1/nanobanana/generate",{method:"POST",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json"},body:JSON.stringify({prompt:"test",model:"nanobanana-flash"})});if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(a){return{valid:!1,error:a.message||"Validation failed"}}}async function p({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for OpenAI compatible provider"};try{let b=await fetch(`${c}/models`,{method:"GET",headers:i(a)});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"}}catch{}let d=b.apiType||"chat",e=`${c}${"responses"===d?"/responses":"/chat/completions"}`;try{let b=await fetch(e,{method:"POST",headers:i(a),body:JSON.stringify({model:"gpt-4o-mini",messages:[{role:"user",content:"test"}],max_tokens:1})});if(b.ok)return{valid:!0,error:null};if(401===b.status||403===b.status)return{valid:!1,error:"Invalid API key"};if(b.status>=400&&b.status<500)return{valid:!0,error:null};if(b.status>=500)return{valid:!1,error:`Provider unavailable (${b.status})`}}catch(a){return{valid:!1,error:a.message||"Connection failed"}}return{valid:!1,error:"Validation failed"}}async function q({apiKey:a,providerSpecificData:b={}}){let c=h(b.baseUrl);if(!c)return{valid:!1,error:"No base URL configured for Anthropic compatible provider"};c.endsWith("/messages")&&(c=c.slice(0,-9));let d={"Content-Type":"application/json","x-api-key":a,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a}`};try{let a=await fetch(`${c}/models`,{method:"GET",headers:d});if(a.ok)return{valid:!0,error:null};if(401===a.status||403===a.status)return{valid:!1,error:"Invalid API key"}}catch{}try{let a=await fetch(`${c}/messages`,{method:"POST",headers:d,body:JSON.stringify({model:"claude-3-5-sonnet-20241022",max_tokens:1,messages:[{role:"user",content:"test"}]})});if(401===a.status||403===a.status)return{valid:!1,error:"Invalid API key"};return{valid:!0,error:null}}catch(a){return{valid:!1,error:a.message||"Connection failed"}}}async function r({provider:a,apiKey:b,providerSpecificData:c={}}){if(!a||!b)return{valid:!1,error:"Provider and API key required",unsupported:!1};if((0,e.mq)(a))try{return await p({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}if((0,e.gb)(a))try{return await q({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}let i={deepgram:m,assemblyai:n,nanobanana:o};if(i[a])try{return await i[a]({apiKey:b,providerSpecificData:c})}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}let r=(0,d.qs)(a);if(!r)return{valid:!1,error:"Provider validation not supported",unsupported:!0};let s=r.models?.[0]?.id||null,t=function(a,b={}){return b?.baseUrl?h(b.baseUrl):a?.baseUrl?h(a.baseUrl):""}(r,c);try{if(f.has(r.format))return await j({provider:a,apiKey:b,baseUrl:t,providerSpecificData:c,modelId:s});if("claude"===r.format){let a=`${t}${r.urlSuffix||""}`,c={...r.headers||{}};return"x-api-key"===(r.authHeader||"").toLowerCase()?c["x-api-key"]=b:c.Authorization=`Bearer ${b}`,await k({apiKey:b,baseUrl:a,modelId:s,headers:c})}if(g.has(r.format))return await l({apiKey:b,baseUrl:t});return{valid:!1,error:"Provider validation not supported",unsupported:!0}}catch(a){return{valid:!1,error:a.message||"Validation failed",unsupported:!1}}}},82216:(a,b,c)=>{c.d(b,{Q2:()=>o,js:()=>p,DI:()=>l,fg:()=>j,IS:()=>h,zN:()=>i,JH:()=>k,gb:()=>n,mq:()=>m});var d=c(74443);let e=d.Ikc({id:d.YjP().min(1),alias:d.YjP().min(1),name:d.YjP().min(1),icon:d.YjP().min(1),color:d.YjP().regex(/^#[0-9A-Fa-f]{6}$/,"Must be a valid hex color (#RRGGBB)"),textIcon:d.YjP().optional(),website:d.YjP().url().optional(),passthroughModels:d.zMY().optional()}),f=d.g1P(d.YjP(),e);function g(a,b){let c=f.safeParse(a);if(!c.success){let a=c.error.issues.map(a=>` ${a.path.join(".")}: ${a.message}`).join("\n");throw console.error(`[PROVIDER VALIDATION] ${b} has invalid entries:
2
2
  ${a}`),Error(`Provider validation failed for ${b}`)}}let h={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"}},i={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},"kimi-coding":{id:"kimi-coding",alias:"kmc",name:"Kimi Coding",icon:"psychology",color:"#1E40AF",textIcon:"KC"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},j={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"}},k="openai-compatible-",l="anthropic-compatible-";function m(a){return"string"==typeof a&&a.startsWith(k)}function n(a){return"string"==typeof a&&a.startsWith(l)}let o={...h,...i,...j},p=Object.values(o).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(o).reduce((a,b)=>(a[b.id]=b.alias,a),{}),g(h,"FREE_PROVIDERS"),g(i,"OAUTH_PROVIDERS"),g(j,"APIKEY_PROVIDERS")}};