@jheavenknows/bluerouter 5.0.82 → 5.0.83

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 (444) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +3 -3
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/api-keys/page_client-reference-manifest.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalcloudprovider/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/personalquota/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/prompt-logs/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/provider-health/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  38. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  39. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  40. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  41. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  42. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  43. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  45. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  47. package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
  48. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  49. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  50. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +5 -5
  51. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  52. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  53. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  54. package/app/.next-cli-build/server/app/api/auth/ldap/test/route.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/api/auth/ldap/users/route.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/api/branding/[asset]/route.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/api/branding/route.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/api/branding/upload/route.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/autostart/route.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/prompt-log-db/route.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/root-ca/route.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/api/dashboard/analytics/route.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/api/dashboard/combos/route.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/api/dashboard/endpoint/route.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/[id]/route.js.nft.json +1 -1
  79. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/options/route.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/api/dashboard/prompt-logs/route.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/api/dashboard/token-saver/route.js.nft.json +1 -1
  82. package/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  83. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  85. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  87. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  90. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  91. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  93. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  96. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  98. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/api-key-models/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/import-models/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/models/[...routeModel]/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/personal-cloud-providers/[id]/usage/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/personal-cloud-providers/client/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/personal-cloud-providers/permissions/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/personal-cloud-providers/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/personal-cloud-providers/routing/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/pricing/recalculate/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/provider-health/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  125. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  141. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  142. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  153. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  178. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  182. package/app/.next-cli-build/server/app/callback.html +1 -1
  183. package/app/.next-cli-build/server/app/callback.rsc +5 -5
  184. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
  185. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  186. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +5 -5
  187. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  188. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  189. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  190. package/app/.next-cli-build/server/app/dashboard/analytics.html +1 -1
  191. package/app/.next-cli-build/server/app/dashboard/analytics.rsc +6 -6
  192. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics/__PAGE__.segment.rsc +1 -1
  193. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard/analytics.segment.rsc +1 -1
  194. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  195. package/app/.next-cli-build/server/app/dashboard/analytics.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  196. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_full.segment.rsc +6 -6
  197. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_head.segment.rsc +1 -1
  198. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_index.segment.rsc +5 -5
  199. package/app/.next-cli-build/server/app/dashboard/analytics.segments/_tree.segment.rsc +1 -1
  200. package/app/.next-cli-build/server/app/dashboard/api-keys.html +1 -1
  201. package/app/.next-cli-build/server/app/dashboard/api-keys.rsc +7 -7
  202. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys/__PAGE__.segment.rsc +2 -2
  203. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard/api-keys.segment.rsc +1 -1
  204. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  205. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  206. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_full.segment.rsc +7 -7
  207. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_head.segment.rsc +1 -1
  208. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_index.segment.rsc +5 -5
  209. package/app/.next-cli-build/server/app/dashboard/api-keys.segments/_tree.segment.rsc +1 -1
  210. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  211. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
  212. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  213. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  215. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  216. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
  217. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  218. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +5 -5
  219. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  220. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  221. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  222. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  223. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  224. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  225. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  226. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  227. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  228. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -5
  229. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  230. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  231. package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
  232. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  233. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  234. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  235. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  236. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  237. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  238. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +5 -5
  239. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  240. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  241. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  242. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  243. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  244. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  245. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  246. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  247. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  248. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -5
  249. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  250. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  251. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
  252. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  253. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  254. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  255. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  256. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  257. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
  258. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  259. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +5 -5
  260. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  261. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
  263. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  264. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  265. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  266. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  267. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
  268. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  269. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +5 -5
  270. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  271. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  272. package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  273. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +1 -1
  274. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  275. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  276. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  277. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  278. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  279. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +5 -5
  280. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  281. package/app/.next-cli-build/server/app/dashboard/prompt-logs.html +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/prompt-logs.rsc +6 -6
  283. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs/__PAGE__.segment.rsc +1 -1
  284. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard/prompt-logs.segment.rsc +1 -1
  285. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  286. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  287. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_full.segment.rsc +6 -6
  288. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_head.segment.rsc +1 -1
  289. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_index.segment.rsc +5 -5
  290. package/app/.next-cli-build/server/app/dashboard/prompt-logs.segments/_tree.segment.rsc +1 -1
  291. package/app/.next-cli-build/server/app/dashboard/provider-health.html +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/provider-health.rsc +6 -6
  293. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health/__PAGE__.segment.rsc +1 -1
  294. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard/provider-health.segment.rsc +1 -1
  295. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  296. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  297. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_full.segment.rsc +6 -6
  298. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_head.segment.rsc +1 -1
  299. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_index.segment.rsc +5 -5
  300. package/app/.next-cli-build/server/app/dashboard/provider-health.segments/_tree.segment.rsc +1 -1
  301. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  302. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
  303. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  304. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  305. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  306. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  307. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  308. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  309. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  310. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -5
  311. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  312. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  313. package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
  314. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  315. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  316. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  317. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  318. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  319. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  320. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +5 -5
  321. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  322. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  323. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
  324. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  325. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  326. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  327. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  328. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
  329. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  330. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -5
  331. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  332. package/app/.next-cli-build/server/app/dashboard/quota.html +1 -1
  333. package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
  334. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  335. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  336. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  337. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  338. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
  339. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  340. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +5 -5
  341. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  342. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  343. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  344. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
  345. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  346. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  347. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -5
  348. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  351. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  352. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  353. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  354. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  355. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  356. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  357. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  358. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  359. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  360. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  361. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +5 -5
  362. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  363. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  364. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  365. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +1 -1
  366. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  367. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  368. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  369. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  370. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  371. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +5 -5
  372. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  373. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  374. package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
  375. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  376. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  377. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  378. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  379. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  380. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  381. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +5 -5
  382. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  383. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  384. package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
  385. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  386. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  387. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  388. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  389. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  390. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  391. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +5 -5
  392. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  393. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  394. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  395. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  396. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  397. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  398. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  399. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  400. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +5 -5
  401. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  402. package/app/.next-cli-build/server/app/index.html +1 -1
  403. package/app/.next-cli-build/server/app/index.rsc +5 -5
  404. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  405. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +5 -5
  406. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  407. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +5 -5
  408. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  410. package/app/.next-cli-build/server/app/landing.html +1 -1
  411. package/app/.next-cli-build/server/app/landing.rsc +5 -5
  412. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  413. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  414. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +5 -5
  415. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  416. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  417. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  418. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  419. package/app/.next-cli-build/server/app/login.html +1 -1
  420. package/app/.next-cli-build/server/app/login.rsc +6 -6
  421. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
  422. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  423. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +5 -5
  424. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  425. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  426. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  427. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  428. package/app/.next-cli-build/server/app-paths-manifest.json +3 -3
  429. package/app/.next-cli-build/server/chunks/2338.js +1 -1
  430. package/app/.next-cli-build/server/chunks/3110.js +1 -1
  431. package/app/.next-cli-build/server/chunks/4746.js +1 -1
  432. package/app/.next-cli-build/server/chunks/6328.js +1 -1
  433. package/app/.next-cli-build/server/chunks/9434.js +1 -1
  434. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  435. package/app/.next-cli-build/server/pages/404.html +1 -1
  436. package/app/.next-cli-build/server/pages/500.html +1 -1
  437. package/app/.next-cli-build/static/chunks/{5263-fe8d957cc5c62e1b.js → 5263-74c9ca0295b0946c.js} +1 -1
  438. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-shm +0 -0
  439. package/app/cli/.build-home/AppData/Roaming/bluerouter/db/data.sqlite-wal +0 -0
  440. package/app/package.json +1 -1
  441. package/package.json +1 -1
  442. /package/app/.next-cli-build/static/{XuTSanPoBg_BlYX3bSYKG → TCF4duJjqgvGD57JnMy-L}/_buildManifest.js +0 -0
  443. /package/app/.next-cli-build/static/{XuTSanPoBg_BlYX3bSYKG → TCF4duJjqgvGD57JnMy-L}/_ssgManifest.js +0 -0
  444. /package/app/cli/.build-home/AppData/Roaming/bluerouter/db/backups/{upgrade-5.0.76-to-5.0.77-5.0.77-20260702-191400 → upgrade-5.0.80-to-5.0.81-5.0.81-20260702-193807}/data.sqlite +0 -0
@@ -243,7 +243,7 @@ ${a.format(b)}`.trim())}}a.exports=G},66498:(a,b,c)=>{let{promisify:d}=c(57975),
243
243
  connection_id = VALUES(connection_id),
244
244
  status = VALUES(status),
245
245
  data_json = VALUES(data_json),
246
- data_size_bytes = VALUES(data_size_bytes)`,[B(a.id),function(a){let b=a?new Date(a):new Date;return(Number.isNaN(b.getTime())?new Date().toISOString():b.toISOString()).replace("T"," ").replace("Z","")}(a.timestamp),B(a.provider)||null,B(a.model)||null,B(a.connectionId)||null,B(a.status)||null,c,Buffer.byteLength(c,"utf8")])}return!0}catch(a){return u("request-details-write",`[observability-mysql] Failed to write request_details: ${v(a)}`),!1}finally{b&&await b.end().catch(()=>{})}}let I=0;async function J(a=1e3){let b;if(Date.now()-I<6e4)return;I=Date.now();let c=await E();if(c)try{b=await F(c);let[[d]]=await b.query("SELECT COUNT(*) AS c FROM request_details"),e=Number(d?.c||0)-a;if(e<=0)return;await b.query("DELETE FROM request_details ORDER BY created_at ASC LIMIT ?",[e])}catch(a){u("request-details-purge",`[observability-mysql] Failed to purge request_details: ${v(a)}`)}finally{b&&await b.end().catch(()=>{})}}global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new l.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0}),global._pendingRequests,global._lastErrorProvider,global._pendingTimers,global._recentRing,global._connectionMapCache,global._statsEmitter;let K=null,L=0;async function M(){if(K&&Date.now()-L<5e3)return K;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,45874)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;K={enabled:"boolean"==typeof b.enableObservability?b.enableObservability:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{K={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return L=Date.now(),K}let N=[],O=null,P=!1,Q=!1,R=!1;function S(a,b){if("write"===a){if(Q)return;Q=!0}else{if(R)return;R=!0}console.error(`[requestDetailsRepo] MySQL observability ${a} unavailable; SQLite fallback is disabled.`,b?.message||b||"")}function T(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}async function U(){if(!P&&0!==N.length){P=!0;try{for(;N.length>0;){let a=N.splice(0,N.length),b=await M(),c=[];for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,requestId:d.requestId||d.id||null,endpoint:d.endpoint||d.request?.endpoint||null,rtkStats:d.rtkStats||null,latency:d.latency||{},tokens:d.tokens||{},request:T(d.request,b.maxJsonSize),providerRequest:T(d.providerRequest,b.maxJsonSize),providerResponse:T(d.providerResponse,b.maxJsonSize),response:T(d.response,b.maxJsonSize)};c.push(a)}if(!(c.length>0)||await H(c).catch(a=>(S("write",a),!1))){let a=await M();J(a.maxRecords).catch(()=>{})}else S("write","request_details write returned false")}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{P=!1}}}let V=async()=>{O&&(clearTimeout(O),O=null),N.length>0&&await U()};process.off("beforeExit",V),process.off("SIGINT",V),process.off("SIGTERM",V),process.off("exit",V),process.on("beforeExit",V),process.on("SIGINT",V),process.on("SIGTERM",V),process.on("exit",V);let W=new Set(["vercel","cloudflare","deno"]);function X(a){return null==a?"":String(a).trim()}async function Y(a={}){try{let b=X(a?.proxyPoolId),c="__none__"===b?"":b,d=function(a={}){let b=a?.connectionProxyEnabled===!0,c=X(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:X(a?.connectionNoProxy)}}(a);if(c){let a=await j(c),b=X(a?.proxyUrl),d=X(a?.noProxy);if(a&&!0===a.isActive&&b){if(W.has(a.type))return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:d,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:d,strictProxy:!0===a.strictProxy}}}if(d.connectionProxyEnabled&&d.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...d};return{source:"none",proxyPoolId:c||null,proxyPool:null,...d}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}var Z=c(3433);function $(a){return null==a?"":String(a).trim()}async function _({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let d,e=$(a);if(!e)return{ok:!1,status:400,error:"proxyUrl is required"};let f=$(b)||"https://google.com/",g=Number(c),h=Number.isFinite(g)&&g>0?Math.min(g,3e4):8e3;try{try{d=new Z.ProxyAgent({uri:e})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),h);try{let c=await (0,Z.hd)(f,{method:"HEAD",dispatcher:d,signal:a.signal,headers:{"User-Agent":"Bluerouter"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:f,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await d?.close?.()}catch{}}}let aa="⚠️ Lưu \xfd: Mỗi t\xe0i khoản OAuth chỉ n\xean d\xf9ng cho một user. Kh\xf4ng chia sẻ OAuth account cho nhiều user/API key để tr\xe1nh lỗi quota, kh\xf3a phi\xean hoặc bị provider hạn chế.",ab={options:["auto","none","low","medium","high"],defaultMode:"auto"},ac=[{id:"speech-2.8-hd",name:"Speech 2.8 HD"},{id:"speech-2.8-turbo",name:"Speech 2.8 Turbo"},{id:"speech-2.6-hd",name:"Speech 2.6 HD"},{id:"speech-2.6-turbo",name:"Speech 2.6 Turbo"},{id:"speech-02-hd",name:"Speech 02 HD"},{id:"speech-02-turbo",name:"Speech 02 Turbo"},{id:"speech-01-hd",name:"Speech 01 HD"},{id:"speech-01-turbo",name:"Speech 01 Turbo"}],ad=Object.freeze({GENERIC:"generic",LLAMA_CPP:"llamacpp",VLLM:"vllm",OLLAMA:"ollama"});function ae(a){return"string"==typeof a&&a.startsWith("openai-compatible-")}function af(a){return"string"==typeof a&&a.startsWith("anthropic-compatible-")}ad.LLAMA_CPP,ad.GENERIC,ad.LLAMA_CPP,ad.VLLM,ad.OLLAMA,Object.freeze({generic:ad.GENERIC,default:ad.GENERIC,openai:ad.GENERIC,strict:ad.GENERIC,llama:ad.LLAMA_CPP,llamacpp:ad.LLAMA_CPP,"llama.cpp":ad.LLAMA_CPP,"llama-cpp":ad.LLAMA_CPP,"llama-server":ad.LLAMA_CPP,llamaserver:ad.LLAMA_CPP,vllm:ad.VLLM,"v-llm":ad.VLLM,ollama:ad.OLLAMA,"ollama-openai":ad.OLLAMA});let ag={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35",deprecated:!0,deprecationNotice:aa,website:"https://kiro.dev",notice:{signupUrl:"https://kiro.dev"}},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationNotice:aa,website:"https://github.com/google-gemini/gemini-cli",notice:{signupUrl:"https://github.com/google-gemini/gemini-cli"}},opencode:{id:"opencode",alias:"oc",name:"OpenCode Free",icon:"terminal",color:"#E87040",textIcon:"OC",noAuth:!0,passthroughModels:!0,modelsFetcher:{url:"https://opencode.ai/zen/v1/models",type:"opencode-free"}},openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"},passthroughModels:!0,serviceKinds:["llm","embedding","tts","imageToText"],embeddingConfig:{baseUrl:"https://openrouter.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"openai/text-embedding-3-small",name:"Text Embedding 3 Small (OpenRouter)",dimensions:1536},{id:"openai/text-embedding-3-large",name:"Text Embedding 3 Large (OpenRouter)",dimensions:3072},{id:"openai/text-embedding-ada-002",name:"Text Embedding Ada 002 (OpenRouter)",dimensions:1536}]}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"},serviceKinds:["llm","tts","embedding"],ttsConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"nvidia-tts",models:[{id:"fastpitch",name:"FastPitch"},{id:"tacotron2",name:"Tacotron2"}]},embeddingConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nvidia/nv-embedqa-e5-v5",name:"NV EmbedQA E5 v5",dimensions:1024}]}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo \xb7 Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",mediaPriority:1,website:"https://ai.google.dev",notice:{apiKeyUrl:"https://aistudio.google.com/app/apikey"},serviceKinds:["llm","embedding","image","imageToText","webSearch","tts","stt"],sttConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-stt",models:[{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Best)"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite (Cheapest)"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"}]},searchViaChat:{defaultModel:"gemini-2.5-flash",pricingUrl:"https://ai.google.dev/pricing",freeTier:"Free tier: 15 RPM, 1M tokens/day on gemini-2.5-flash via AI Studio."},embeddingConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",models:[{id:"text-embedding-004",name:"Text Embedding 004",dimensions:768},{id:"embedding-001",name:"Embedding 001",dimensions:768}]},ttsConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-tts",models:[{id:"gemini-2.5-flash-preview-tts",name:"Gemini 2.5 Flash TTS"},{id:"gemini-2.5-pro-preview-tts",name:"Gemini 2.5 Pro TTS"}]}},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare",icon:"cloud",color:"#F38020",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",notice:{text:"Workers AI free tier. Requires a Cloudflare API token and Account ID.",apiKeyUrl:"https://dash.cloudflare.com/profile/api-tokens"},serviceKinds:["llm","image"],hasProviderSpecificData:!0},byteplus:{id:"byteplus",alias:"bpm",name:"BytePlus ModelArk",icon:"cloud",color:"#2563EB",textIcon:"BP",website:"https://console.byteplus.com/ark",notice:{text:"Free credits for new accounts. Access to Seed 2.0, Kimi K2 Thinking, GLM 4.7, GPT-OSS-120B models.",apiKeyUrl:"https://console.byteplus.com/ark/region:ark+ap-southeast-1/apiKey"},serviceKinds:["llm"]},claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757",deprecated:!0,deprecationNotice:aa,website:"https://claude.ai",notice:{signupUrl:"https://claude.ai"}},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B",deprecated:!0,deprecationNotice:"⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.",website:"https://antigravity.google",notice:{signupUrl:"https://antigravity.google"}},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6",deprecated:!0,deprecationNotice:aa,thinkingConfig:ab,serviceKinds:["llm","image"],kindNotice:{image:"Requires a ChatGPT Plus (or higher) account. Free accounts are not supported for image generation."},website:"https://chatgpt.com/codex",notice:{signupUrl:"https://chatgpt.com/codex"}},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333",deprecated:!0,deprecationNotice:aa,serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://models.github.ai/inference/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-small",name:"Text Embedding 3 Small (GitHub)",dimensions:1536},{id:"text-embedding-3-large",name:"Text Embedding 3 Large (GitHub)",dimensions:3072}]},website:"https://github.com/features/copilot",notice:{signupUrl:"https://github.com/features/copilot"}},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA",website:"https://cursor.com",notice:{signupUrl:"https://cursor.com"}},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai",signupUrl:"https://x.ai"},serviceKinds:["llm","imageToText","webSearch","image"],searchViaChat:{defaultModel:"grok-4.20-reasoning",pricingUrl:"https://x.ai/api#pricing"},authModes:["oauth","apikey"],hasOAuth:!0},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC",website:"https://kilocode.ai",notice:{signupUrl:"https://kilocode.ai"}},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL",website:"https://cline.bot",notice:{signupUrl:"https://cline.bot"}},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn",notice:{apiKeyUrl:"https://platform.moonshot.ai/console/api-keys"},serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"kimi-k2.5",pricingUrl:"https://platform.moonshot.ai/docs/pricing/chat"}},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"},serviceKinds:["llm","image","imageToText","webSearch","tts"],searchViaChat:{defaultModel:"MiniMax-M2.7",pricingUrl:"https://www.minimaxi.com/document/price"},ttsConfig:{baseUrl:"https://api.minimax.io/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts",models:ac}},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"},serviceKinds:["llm","tts"],ttsConfig:{baseUrl:"https://api.minimaxi.com/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts",models:ac}},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com",notice:{apiKeyUrl:"https://bailian.console.aliyun.com/?apiKey=1"}},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com",notice:{apiKeyUrl:"https://modelstudio.console.alibabacloud.com/?apiKey=1"}},"xiaomi-mimo":{id:"xiaomi-mimo",alias:"mimo",name:"Xiaomi MiMo",icon:"smart_toy",color:"#FF6900",textIcon:"XM",website:"https://xiaomimimo.com",notice:{apiKeyUrl:"https://xiaomimimo.com"}},"xiaomi-tokenplan":{id:"xiaomi-tokenplan",alias:"xmtp",name:"Xiaomi MiMo (Token Plan)",icon:"smart_toy",color:"#FF6700",textIcon:"XT",website:"https://mimo.xiaomi.com",notice:{text:"Xiaomi MiMo Token Plan subscription (API key starts with tp-). Token Plan keys are cluster-specific — select the region matching your subscription.",apiKeyUrl:"https://mimo.xiaomi.com"},hasProviderSpecificData:!0,regions:[{id:"sgp",label:"Singapore",baseUrl:"https://token-plan-sgp.xiaomimimo.com/v1"},{id:"cn",label:"China",baseUrl:"https://token-plan-cn.xiaomimimo.com/v1"},{id:"ams",label:"Europe",baseUrl:"https://token-plan-ams.xiaomimimo.com/v1"}],defaultRegion:"sgp"},"volcengine-ark":{id:"volcengine-ark",alias:"ark",name:"Volcengine Ark",icon:"cloud",color:"#1677FF",textIcon:"ARK",website:"https://ark.cn-beijing.volces.com",notice:{apiKeyUrl:"https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey"}},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com",notice:{apiKeyUrl:"https://platform.openai.com/api-keys"},serviceKinds:["llm","embedding","tts","stt","image","imageToText","webSearch"],thinkingConfig:ab,searchViaChat:{defaultModel:"gpt-4o-mini",pricingUrl:"https://openai.com/api/pricing"},ttsConfig:{baseUrl:"https://api.openai.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"tts-1",name:"TTS-1"},{id:"tts-1-hd",name:"TTS-1 HD"},{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS"}]},sttConfig:{baseUrl:"https://api.openai.com/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"whisper-1",name:"Whisper 1"},{id:"gpt-4o-transcribe",name:"GPT-4o Transcribe"},{id:"gpt-4o-mini-transcribe",name:"GPT-4o Mini Transcribe"}]},embeddingConfig:{baseUrl:"https://api.openai.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-small",name:"Text Embedding 3 Small",dimensions:1536},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",dimensions:3072},{id:"text-embedding-ada-002",name:"Text Embedding Ada 002",dimensions:1536}]}},"vercel-ai-gateway":{id:"vercel-ai-gateway",alias:"vercel",name:"Vercel AI Gateway",icon:"deployed_code",color:"#111827",textIcon:"VG",website:"https://vercel.com/ai-gateway",notice:{text:"Unified OpenAI-compatible endpoint from Vercel. Use your AI Gateway API key, then pick models with provider/model IDs like anthropic/claude-sonnet-4.6 or openai/gpt-5.4.",apiKeyUrl:"https://vercel.com/dashboard/~/ai-gateway"},passthroughModels:!0,serviceKinds:["llm"]},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com",notice:{apiKeyUrl:"https://console.anthropic.com/settings/keys"},serviceKinds:["llm","imageToText"]},"opencode-go":{id:"opencode-go",alias:"ocg",name:"OpenCode Go",icon:"terminal",color:"#E87040",textIcon:"OC",website:"https://opencode.ai/auth",notice:{text:"OpenCode Go subscription: $5/mo (then $10/mo). Access to Kimi, GLM, Qwen, MiMo, MiniMax models.",apiKeyUrl:"https://opencode.ai/auth"}},azure:{id:"azure",alias:"azure",name:"Azure OpenAI",icon:"cloud",color:"#0078D4",textIcon:"AZ",website:"https://azure.microsoft.com/en-us/products/ai-services/openai-service",notice:{apiKeyUrl:"https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/OpenAI"},hasProviderSpecificData:!0},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com",notice:{apiKeyUrl:"https://platform.deepseek.com/api_keys"}},commandcode:{id:"commandcode",alias:"cmc",name:"Command Code",icon:"smart_toy",color:"#000000",textIcon:"CC",website:"https://commandcode.ai",notice:{text:"Use your CommandCode CLI API key (starts with user_...) from ~/.commandcode/auth.json or commandcode.ai/studio.",apiKeyUrl:"https://commandcode.ai/studio"}},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",notice:{apiKeyUrl:"https://console.groq.com/keys"},serviceKinds:["llm","imageToText","stt"],sttConfig:{baseUrl:"https://api.groq.com/openai/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"whisper-large-v3",name:"Whisper Large v3"},{id:"whisper-large-v3-turbo",name:"Whisper Large v3 Turbo"},{id:"distil-whisper-large-v3-en",name:"Distil Whisper Large v3 EN"}]}},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai"},serviceKinds:["llm","imageToText","webSearch","image"],searchViaChat:{defaultModel:"grok-4.20-reasoning",pricingUrl:"https://x.ai/api#pricing"},authModes:["oauth","apikey"],hasOAuth:!0},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai",notice:{apiKeyUrl:"https://console.mistral.ai/api-keys"},serviceKinds:["llm","imageToText","embedding"],embeddingConfig:{baseUrl:"https://api.mistral.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-embed",name:"Mistral Embed",dimensions:1024}]}},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai",notice:{apiKeyUrl:"https://www.perplexity.ai/settings/api"},serviceKinds:["llm","webSearch"],searchConfig:{baseUrl:"https://api.perplexity.ai/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",notice:{apiKeyUrl:"https://api.together.xyz/settings/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.together.xyz/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"BAAI/bge-large-en-v1.5",name:"BGE Large EN v1.5",dimensions:1024},{id:"togethercomputer/m2-bert-80M-8k-retrieval",name:"M2 BERT 80M 8K",dimensions:768}]}},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai",notice:{apiKeyUrl:"https://fireworks.ai/account/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.fireworks.ai/inference/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nomic-ai/nomic-embed-text-v1.5",name:"Nomic Embed Text v1.5",dimensions:768}]}},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai",notice:{apiKeyUrl:"https://cloud.cerebras.ai/platform"}},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com",notice:{apiKeyUrl:"https://dashboard.cohere.com/api-keys"}},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com",notice:{apiKeyUrl:"https://studio.nebius.com/settings/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.tokenfactory.nebius.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/Qwen3-Embedding-8B",name:"Qwen3 Embedding 8B",dimensions:4096}]}},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com",notice:{apiKeyUrl:"https://cloud.siliconflow.com/account/ak"}},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz",notice:{apiKeyUrl:"https://app.hyperbolic.xyz/settings"},serviceKinds:["llm","tts"],ttsConfig:{baseUrl:"https://api.hyperbolic.xyz/v1/audio/generation",authType:"apikey",authHeader:"bearer",format:"hyperbolic",models:[{id:"melo-tts",name:"Melo TTS"}]}},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com",notice:{text:"$200 free credit on signup (no card required). Aura-1: $0.015/1k chars, Aura-2: $0.030/1k chars (Pay-As-You-Go).",apiKeyUrl:"https://console.deepgram.com/api-keys"},serviceKinds:["stt","imageToText","tts"],ttsConfig:{baseUrl:"https://api.deepgram.com/v1/speak",authType:"apikey",authHeader:"token",format:"deepgram",models:[]},sttConfig:{baseUrl:"https://api.deepgram.com/v1/listen",authType:"apikey",authHeader:"token",format:"deepgram",models:[{id:"nova-3",name:"Nova 3"},{id:"nova-2",name:"Nova 2"},{id:"whisper-large",name:"Whisper Large"}]}},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com",notice:{apiKeyUrl:"https://www.assemblyai.com/app/api-keys"},serviceKinds:["stt"],sttConfig:{baseUrl:"https://api.assemblyai.com/v2/transcript",authType:"apikey",authHeader:"bearer",format:"assemblyai",async:!0,models:[{id:"universal-3-pro",name:"Universal 3 Pro"},{id:"universal-2",name:"Universal 2"}]}},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana API",icon:"extension",color:"#FFD700",textIcon:"\uD83C\uDF4C",website:"https://nanobananaapi.ai",notice:{text:"3rd-party proxy for Google Nano Banana (Gemini 2.5/3 Flash Image). For official, use Gemini provider.",apiKeyUrl:"https://nanobananaapi.ai/dashboard"},serviceKinds:["image"]},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io",notice:{apiKeyUrl:"https://elevenlabs.io/app/settings/api-keys"},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.elevenlabs.io/v1/text-to-speech",authType:"apikey",authHeader:"xi-api-key",format:"elevenlabs",models:[{id:"eleven_multilingual_v2",name:"Eleven Multilingual v2"},{id:"eleven_turbo_v2_5",name:"Eleven Turbo v2.5"}]}},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai",notice:{apiKeyUrl:"https://play.cartesia.ai/keys"},serviceKinds:["tts"],hidden:!0,ttsConfig:{baseUrl:"https://api.cartesia.ai/tts/bytes",authType:"apikey",authHeader:"x-api-key",format:"cartesia",models:[{id:"sonic-2",name:"Sonic 2"},{id:"sonic-3",name:"Sonic 3"}]}},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht",notice:{apiKeyUrl:"https://play.ht/studio/api-access"},serviceKinds:["tts"],hidden:!0,ttsConfig:{baseUrl:"https://api.play.ht/api/v2/tts/stream",authType:"apikey",authHeader:"playht",format:"playht",models:[{id:"PlayDialog",name:"PlayDialog"},{id:"Play3.0-mini",name:"Play 3.0 Mini"}]}},"local-device":{id:"local-device",alias:"local-device",name:"Local Device",icon:"speaker",color:"#64748B",textIcon:"LD",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"local-device",authType:"none",authHeader:"none",format:"local-device",models:[]}},"google-tts":{id:"google-tts",alias:"google-tts",name:"Google TTS",icon:"record_voice_over",color:"#4285F4",textIcon:"GT",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"google-tts",authType:"none",authHeader:"none",format:"google-tts",models:[]}},"edge-tts":{id:"edge-tts",alias:"edge-tts",name:"Edge TTS",icon:"record_voice_over",color:"#0078D4",textIcon:"ET",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"edge-tts",authType:"none",authHeader:"none",format:"edge-tts",models:[]}},coqui:{id:"coqui",alias:"coqui",name:"Coqui TTS",icon:"record_voice_over",color:"#10B981",textIcon:"CQ",website:"https://github.com/coqui-ai/TTS",serviceKinds:["tts"],hidden:!0,noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5002/api/tts",authType:"none",authHeader:"none",format:"coqui",models:[{id:"tts_models/en/ljspeech/tacotron2-DDC",name:"Tacotron2 DDC (LJSpeech)"}]}},tortoise:{id:"tortoise",alias:"tortoise",name:"Tortoise TTS",icon:"record_voice_over",color:"#7C3AED",textIcon:"TT",website:"https://github.com/neonbjb/tortoise-tts",serviceKinds:["tts"],hidden:!0,noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5000/api/tts",authType:"none",authHeader:"none",format:"tortoise",models:[{id:"tortoise-v2",name:"Tortoise v2"}]}},inworld:{id:"inworld",alias:"inworld",name:"Inworld TTS",icon:"record_voice_over",color:"#FF6B6B",textIcon:"IW",website:"https://inworld.ai",notice:{text:"Free tier: 40 minutes/month TTS. Paid: TTS-1.5 Mini $0.01/min ($15/1M chars), TTS-1.5 Max $0.025/min ($30/1M chars). 270+ voices, 15 languages.",apiKeyUrl:"https://platform.inworld.ai/api-keys"},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.inworld.ai/tts/v1/voice",authType:"apikey",authHeader:"basic",format:"inworld",models:[{id:"inworld-tts-1.5-mini",name:"Inworld TTS 1.5 Mini ($0.01/min)"},{id:"inworld-tts-1.5-max",name:"Inworld TTS 1.5 Max ($0.025/min)"}]}},"voyage-ai":{id:"voyage-ai",alias:"voyage",name:"Voyage AI",icon:"data_array",color:"#0EA5E9",textIcon:"VG",website:"https://www.voyageai.com",notice:{apiKeyUrl:"https://dash.voyageai.com/api-keys"},serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.voyageai.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"voyage-3-large",name:"Voyage 3 Large",dimensions:1024},{id:"voyage-3.5",name:"Voyage 3.5",dimensions:1024},{id:"voyage-3.5-lite",name:"Voyage 3.5 Lite",dimensions:1024},{id:"voyage-code-3",name:"Voyage Code 3",dimensions:1024},{id:"voyage-finance-2",name:"Voyage Finance 2",dimensions:1024},{id:"voyage-law-2",name:"Voyage Law 2",dimensions:1024},{id:"voyage-multilingual-2",name:"Voyage Multilingual 2",dimensions:1024}]}},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui",serviceKinds:["image"]},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI",serviceKinds:["image"]},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",notice:{apiKeyUrl:"https://huggingface.co/settings/tokens"},serviceKinds:["image","imageToText","tts","stt"],hiddenKinds:["tts"],ttsConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-tts",models:[{id:"facebook/mms-tts-eng",name:"MMS TTS English"},{id:"microsoft/speecht5_tts",name:"SpeechT5 TTS"}]},sttConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-asr",models:[{id:"openai/whisper-large-v3",name:"Whisper Large v3 (HF)"},{id:"openai/whisper-small",name:"Whisper Small (HF)"}]}},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"smart_toy",color:"#5B5FEF",textIcon:"BB",website:"https://blackbox.ai",notice:{apiKeyUrl:"https://www.blackbox.ai/api-management"},serviceKinds:["llm"]},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai",notice:{apiKeyUrl:"https://chutes.ai/app/api"}},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models",notice:{apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},tavily:{id:"tavily",alias:"tavily",name:"Tavily",icon:"search",color:"#5B21B6",textIcon:"TV",website:"https://tavily.com",notice:{apiKeyUrl:"https://app.tavily.com/home"},serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.tavily.com/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.tavily.com/extract",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,formats:["markdown","text"],maxCharacters:1e5,timeoutMs:15e3}},"brave-search":{id:"brave-search",alias:"brave",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",notice:{apiKeyUrl:"https://api-dashboard.search.brave.com/app/keys"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.search.brave.com/res/v1",method:"GET",authType:"apikey",authHeader:"x-subscription-token",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},serper:{id:"serper",alias:"serper",name:"Serper",icon:"search",color:"#4F46E5",textIcon:"SP",website:"https://serper.dev",notice:{apiKeyUrl:"https://serper.dev/api-key"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://google.serper.dev",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:2500,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},exa:{id:"exa",alias:"exa",name:"Exa",icon:"manage_search",color:"#2563EB",textIcon:"EX",website:"https://exa.ai",notice:{apiKeyUrl:"https://dashboard.exa.ai/api-keys"},serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.exa.ai/search",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.007,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.exa.ai/contents",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:1e3,formats:["text","markdown"],maxCharacters:1e5,timeoutMs:15e3}},searxng:{id:"searxng",alias:"searxng",name:"SearXNG",icon:"saved_search",color:"#3B82F6",textIcon:"SX",website:"https://docs.searxng.org",serviceKinds:["webSearch"],noAuth:!0,searchConfig:{baseUrl:"http://localhost:8888/search",method:"GET",authType:"none",authHeader:"none",costPerQuery:0,freeMonthlyQuota:999999,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:18e4}},"google-pse":{id:"google-pse",alias:"gpse",name:"Google PSE",icon:"search",color:"#4285F4",textIcon:"GP",website:"https://programmablesearchengine.google.com",notice:{apiKeyUrl:"https://programmablesearchengine.google.com/controlpanel/create"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.googleapis.com/customsearch/v1",method:"GET",authType:"apikey",authHeader:"key",costPerQuery:.005,freeMonthlyQuota:3e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:10,timeoutMs:1e4,cacheTTLMs:3e5}},linkup:{id:"linkup",alias:"linkup",name:"Linkup",icon:"link",color:"#0EA5E9",textIcon:"LK",website:"https://linkup.so",notice:{apiKeyUrl:"https://app.linkup.so/api-keys"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.linkup.so/v1/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:3e5}},searchapi:{id:"searchapi",alias:"searchapi",name:"SearchAPI",icon:"search",color:"#0EA5A4",textIcon:"SA",website:"https://www.searchapi.io",notice:{apiKeyUrl:"https://www.searchapi.io/dashboard"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.searchapi.io/api/v1/search",method:"GET",authType:"apikey",authHeader:"api_key",costPerQuery:.004,freeMonthlyQuota:100,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},youcom:{id:"youcom",alias:"youcom",name:"You.com Search",icon:"search",color:"#7C3AED",textIcon:"YC",website:"https://you.com",notice:{apiKeyUrl:"https://api.you.com"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://ydc-index.io/v1/search",method:"GET",authType:"apikey",authHeader:"x-api-key",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},firecrawl:{id:"firecrawl",alias:"firecrawl",name:"Firecrawl",icon:"local_fire_department",color:"#F59E0B",textIcon:"FC",website:"https://firecrawl.dev",notice:{apiKeyUrl:"https://www.firecrawl.dev/app/api-keys"},serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://api.firecrawl.dev/v1/scrape",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.002,freeMonthlyQuota:500,formats:["markdown","html","text"],maxCharacters:2e5,timeoutMs:3e4}},"fal-ai":{id:"fal-ai",alias:"fal",name:"Fal.ai",icon:"image",color:"#2563EB",textIcon:"FL",website:"https://fal.ai",notice:{apiKeyUrl:"https://fal.ai/dashboard/keys"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.fal.ai/v1/models?limit=1",method:"GET",authType:"apikey",authHeader:"key"}},"stability-ai":{id:"stability-ai",alias:"stability",name:"Stability AI",icon:"image",color:"#8B5CF6",textIcon:"SA",website:"https://stability.ai",notice:{apiKeyUrl:"https://platform.stability.ai/account/keys"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.stability.ai/v1/user/account",method:"GET",authType:"apikey",authHeader:"bearer"}},"black-forest-labs":{id:"black-forest-labs",alias:"bfl",name:"Black Forest Labs",icon:"image",color:"#111827",textIcon:"BF",website:"https://blackforestlabs.ai",notice:{apiKeyUrl:"https://api.bfl.ai"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.bfl.ai/v1/get_result?id=ping",method:"GET",authType:"apikey",authHeader:"x-key"}},recraft:{id:"recraft",alias:"recraft",name:"Recraft",icon:"image",color:"#EC4899",textIcon:"RC",website:"https://recraft.ai",notice:{apiKeyUrl:"https://www.recraft.ai/profile/api"},serviceKinds:["image"],imageConfig:{baseUrl:"https://external.api.recraft.ai/v1/users/me",method:"GET",authType:"apikey",authHeader:"bearer"}},topaz:{id:"topaz",alias:"topaz",name:"Topaz",icon:"image",color:"#059669",textIcon:"TP",website:"https://topazlabs.com",notice:{apiKeyUrl:"https://topazlabs.com/account"},serviceKinds:["image"]},runwayml:{id:"runwayml",alias:"runway",name:"Runway ML",icon:"movie",color:"#000000",textIcon:"RW",website:"https://runwayml.com",notice:{apiKeyUrl:"https://dev.runwayml.com"},serviceKinds:["image","video"],imageConfig:{baseUrl:"https://api.dev.runwayml.com/v1/organization",method:"GET",authType:"apikey",authHeader:"bearer",extraHeaders:{"X-Runway-Version":"2024-11-06"}}},"aws-polly":{id:"aws-polly",alias:"polly",name:"AWS Polly",icon:"record_voice_over",color:"#FF9900",textIcon:"PL",website:"https://aws.amazon.com/polly/",notice:{text:"Use AWS Secret Access Key as API key; set providerSpecificData.accessKeyId and optional region.",apiKeyUrl:"https://console.aws.amazon.com/iam/home#/security_credentials"},serviceKinds:["tts"],hasProviderSpecificData:!0,ttsConfig:{baseUrl:"https://polly.{region}.amazonaws.com/v1/speech",authType:"apikey",authHeader:"aws-sigv4",format:"aws-polly",models:[{id:"standard",name:"Standard"},{id:"neural",name:"Neural"},{id:"long-form",name:"Long-form"},{id:"generative",name:"Generative"}]}},"jina-ai":{id:"jina-ai",alias:"jina",name:"Jina AI",icon:"blur_on",color:"#2563EB",textIcon:"JA",website:"https://jina.ai",notice:{text:"10M free tokens on signup (non-commercial), no credit card required.",apiKeyUrl:"https://jina.ai/?sui=apikey"},serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.jina.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"jina-embeddings-v3",name:"Jina Embeddings v3",dimensions:1024},{id:"jina-embeddings-v2-base-en",name:"Jina Embeddings v2 Base EN",dimensions:768},{id:"jina-embeddings-v2-base-code",name:"Jina Embeddings v2 Base Code",dimensions:768}]}},"jina-reader":{id:"jina-reader",alias:"jina",name:"Jina Reader",icon:"menu_book",color:"#000000",textIcon:"JR",website:"https://jina.ai/reader",notice:{apiKeyUrl:"https://jina.ai/?sui=apikey"},serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://r.jina.ai",method:"GET",authType:"apikey",authHeader:"bearer",costPerQuery:0,freeMonthlyQuota:1e6,formats:["markdown","text","html"],maxCharacters:2e5,timeoutMs:3e4}},"grok-web":{id:"grok-web",alias:"gw",name:"Grok Web (Subscription)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GW",website:"https://grok.com",authType:"cookie",authHint:"Paste your sso= cookie value from grok.com",passthroughModels:!0,serviceKinds:["llm"]},"perplexity-web":{id:"perplexity-web",alias:"pw",name:"Perplexity Web (Pro/Max)",icon:"search",color:"#20808D",textIcon:"PW",website:"https://www.perplexity.ai",authType:"cookie",authHint:"Paste your __Secure-next-auth.session-token cookie value from perplexity.ai",serviceKinds:["llm"]}};Object.values(ag).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(ag).reduce((a,b)=>(a[b.id]=b.alias,a),{});var ah=c(21820);let ai={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},aj={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.92 (external, sdk-cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.14.0","X-Stainless-Package-Version":"0.80.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,ah.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,ah.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,ah.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,ah.platform)()}`}}(),"X-Stainless-Timeout":"600"},ak="https://api.kimi.com/coding/v1/messages",al={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...aj},clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://api.anthropic.com/v1/oauth/token"},gemini:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},"gemini-cli":{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},codex:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",headers:{originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",clientId:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",format:"openai",headers:{"User-Agent":"iFlow-Cli"},clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},qoder:{baseUrl:"https://api.qoder.com/v1/chat/completions",format:"openai",headers:{"User-Agent":"Qoder-Cli"},clientId:process.env.QODER_OAUTH_CLIENT_ID||"10009311001",clientSecret:process.env.QODER_OAUTH_CLIENT_SECRET||"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://api.qoder.com/oauth/token",authUrl:"https://qoder.com/oauth/authorize"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.107.0 ${(0,ah.platform)()}/${(0,ah.arch)()}`},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},openrouter:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},openai:{baseUrl:"https://api.openai.com/v1/chat/completions",format:"openai"},"vercel-ai-gateway":{baseUrl:"https://ai-gateway.vercel.sh/v1/chat/completions",format:"openai"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...ai}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:ak,format:"claude",headers:{...ai}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...ai}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...ai}},alicode:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alicode-intl":{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"volcengine-ark":{baseUrl:"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",format:"openai",headers:{}},byteplus:{baseUrl:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",format:"openai",headers:{}},github:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",format:"openai",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},clientId:"Iv1.b507a08c87ecfe98"},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",retry:{429:2},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"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},cursor:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"3.1.0"},"kimi-coding":{baseUrl:ak,format:"claude",headers:{...ai},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token"},kilocode:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",format:"openai",headers:{}},opencode:{baseUrl:"http://localhost:4096/v1/chat/completions",format:"openai",headers:{}},cline:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},nvidia:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",format:"openai"},anthropic:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...ai}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},commandcode:{baseUrl:"https://api.commandcode.ai/alpha/generate",format:"commandcode",headers:{"x-command-code-version":"0.25.7","x-cli-environment":"cli"}},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",responsesUrl:"https://api.x.ai/v1/responses",format:"openai",clientId:"b1a00492-073a-47ea-816f-4c329264a828",tokenUrl:"https://auth.x.ai/oauth2/token",refreshUrl:"https://auth.x.ai/oauth2/token"},mistral:{baseUrl:"https://api.mistral.ai/v1/chat/completions",format:"openai"},perplexity:{baseUrl:"https://api.perplexity.ai/chat/completions",format:"openai"},together:{baseUrl:"https://api.together.xyz/v1/chat/completions",format:"openai"},fireworks:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",format:"openai"},cerebras:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",format:"openai"},cohere:{baseUrl:"https://api.cohere.ai/v1/chat/completions",format:"openai"},nebius:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",format:"openai"},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1/chat/completions",format:"openai"},hyperbolic:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",format:"openai"},deepgram:{baseUrl:"https://api.deepgram.com/v1/listen",format:"openai"},assemblyai:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",format:"openai"},nanobanana:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",format:"openai"},chutes:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",format:"openai"},ollama:{baseUrl:"https://ollama.com/api/chat",format:"ollama"},"ollama-local":{baseUrl:"http://localhost:11434/api/chat",format:"ollama"},vertex:{baseUrl:"https://aiplatform.googleapis.com",format:"vertex"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"},gitlab:{baseUrl:"https://gitlab.com/api/v4/chat/completions",format:"openai"},codebuddy:{baseUrl:"https://copilot.tencent.com/v1/chat/completions",format:"openai"},opencode:{baseUrl:"https://opencode.ai",format:"openai",headers:{"x-opencode-client":"desktop"},noAuth:!0},"opencode-go":{baseUrl:"https://opencode.ai/zen/go/v1/chat/completions",format:"openai",headers:{}},"grok-web":{baseUrl:"https://grok.com/rest/app-chat/conversations/new",format:"grok-web",authType:"cookie"},"perplexity-web":{baseUrl:"https://www.perplexity.ai/rest/sse/perplexity_ask",format:"perplexity-web",authType:"cookie"},azure:{baseUrl:"",format:"openai",headers:{}},"cloudflare-ai":{baseUrl:"https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions",format:"openai"},"xiaomi-mimo":{baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",format:"openai"},"xiaomi-tokenplan":{baseUrl:"https://token-plan-sgp.xiaomimimo.com/v1/chat/completions",format:"openai"},agentrouter:{baseUrl:"https://agentrouter.org/v1/messages",format:"claude",headers:{...aj}},aimlapi:{baseUrl:"https://api.aimlapi.com/v1/chat/completions",format:"openai"},novita:{baseUrl:"https://api.novita.ai/v3/openai/chat/completions",format:"openai"},modal:{baseUrl:"https://api.modal.com/v1/chat/completions",format:"openai"},reka:{baseUrl:"https://api.reka.ai/v1/chat/completions",format:"openai"},nlpcloud:{baseUrl:"https://api.nlpcloud.io/v1/gpu/chatbot",format:"openai"},bazaarlink:{baseUrl:"https://bazaarlink.ai/api/v1/chat/completions",format:"openai"},completions:{baseUrl:"https://completions.me/api/v1/chat/completions",format:"openai"},enally:{baseUrl:"https://ai.enally.in/v1/chat/completions",format:"openai",authHeader:"x-api-key"},freetheai:{baseUrl:"https://api.freetheai.xyz/v1/chat/completions",format:"openai"},llm7:{baseUrl:"https://api.llm7.io/v1/chat/completions",format:"openai"},lepton:{baseUrl:"https://api.lepton.ai/api/v1/chat/completions",format:"openai"},kluster:{baseUrl:"https://api.kluster.ai/v1/chat/completions",format:"openai"},ai21:{baseUrl:"https://api.ai21.com/studio/v1/chat/completions",format:"openai"},"inference-net":{baseUrl:"https://api.inference.net/v1/chat/completions",format:"openai"},predibase:{baseUrl:"https://serving.app.predibase.com/v1/chat/completions",format:"openai"},bytez:{baseUrl:"https://api.bytez.com/models/v2",format:"openai"},morph:{baseUrl:"https://api.morphllm.com/v1/chat/completions",format:"openai"},longcat:{baseUrl:"https://api.longcat.chat/openai/v1/chat/completions",format:"openai"},puter:{baseUrl:"https://api.puter.com/puterai/openai/v1/chat/completions",format:"openai"},uncloseai:{baseUrl:"https://hermes.ai.unturf.com/v1/chat/completions",format:"openai",noAuth:!0},scaleway:{baseUrl:"https://api.scaleway.ai/v1/chat/completions",format:"openai"},deepinfra:{baseUrl:"https://api.deepinfra.com/v1/openai/chat/completions",format:"openai"},sambanova:{baseUrl:"https://api.sambanova.ai/v1/chat/completions",format:"openai"},nscale:{baseUrl:"https://inference.api.nscale.com/v1/chat/completions",format:"openai"},baseten:{baseUrl:"https://inference.baseten.co/v1/chat/completions",format:"openai"},publicai:{baseUrl:"https://api.publicai.co/v1/chat/completions",format:"openai"},"nous-research":{baseUrl:"https://inference-api.nousresearch.com/v1/chat/completions",format:"openai"},glhf:{baseUrl:"https://glhf.chat/api/openai/v1/chat/completions",format:"openai"},blackbox:{baseUrl:"https://api.blackbox.ai/chat/completions",format:"openai"}},am={alloy:{id:"alloy",name:"Alloy"},ash:{id:"ash",name:"Ash"},ballad:{id:"ballad",name:"Ballad"},cedar:{id:"cedar",name:"Cedar"},coral:{id:"coral",name:"Coral"},echo:{id:"echo",name:"Echo"},fable:{id:"fable",name:"Fable"},marin:{id:"marin",name:"Marin"},nova:{id:"nova",name:"Nova"},onyx:{id:"onyx",name:"Onyx"},sage:{id:"sage",name:"Sage"},shimmer:{id:"shimmer",name:"Shimmer"},verse:{id:"verse",name:"Verse"}},an=(...a)=>a.map(a=>({...am[a],type:"tts"})),ao=an("alloy","ash","coral","echo","fable","nova","onyx","sage","shimmer"),ap=an("alloy","ash","ballad","cedar","coral","echo","fable","marin","nova","onyx","sage","shimmer","verse"),aq=["Zephyr","Puck","Charon","Kore","Fenrir","Leda","Orus","Aoede","Callirrhoe","Autonoe","Enceladus","Iapetus","Umbriel","Algieba","Despina","Erinome","Algenib","Rasalgethi","Laomedeia","Achernar","Alnilam","Schedar","Gacrux","Pulcherrima","Achird","Zubenelgenubi","Vindemiatrix","Sadachbia","Sadaltager","Sulafat"].map(a=>({id:a,name:a,type:"tts"})),ar={openai:{models:[{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS",type:"tts"},{id:"tts-1-hd",name:"TTS-1 HD",type:"tts"},{id:"tts-1",name:"TTS-1",type:"tts"}],voices:{"gpt-4o-mini-tts":ap,"tts-1":ao,"tts-1-hd":ao},allVoices:ap},openrouter:{models:[{id:"openai/gpt-4o-mini-tts",name:"GPT-4o Mini TTS",type:"tts"},{id:"openai/tts-1-hd",name:"TTS-1 HD",type:"tts"},{id:"openai/tts-1",name:"TTS-1",type:"tts"}],voices:{"openai/gpt-4o-mini-tts":ap,"openai/tts-1":ao,"openai/tts-1-hd":ao},allVoices:ap},elevenlabs:{models:[{id:"eleven_flash_v2_5",name:"Flash v2.5 (Fastest)",type:"tts"},{id:"eleven_turbo_v2_5",name:"Turbo v2.5 (Fast)",type:"tts"},{id:"eleven_multilingual_v2",name:"Multilingual v2 (Quality)",type:"tts"},{id:"eleven_monolingual_v1",name:"Monolingual v1 (English)",type:"tts"}]},"edge-tts":{defaults:[{id:"en-US-AriaNeural",name:"Aria (en-US)",type:"tts"},{id:"en-US-GuyNeural",name:"Guy (en-US)",type:"tts"},{id:"en-GB-SoniaNeural",name:"Sonia (en-GB)",type:"tts"},{id:"vi-VN-HoaiMyNeural",name:"Hoai My (vi-VN)",type:"tts"},{id:"vi-VN-NamMinhNeural",name:"Nam Minh (vi-VN)",type:"tts"},{id:"zh-CN-XiaoxiaoNeural",name:"Xiaoxiao (zh-CN)",type:"tts"},{id:"zh-CN-YunxiNeural",name:"Yunxi (zh-CN)",type:"tts"},{id:"fr-FR-DeniseNeural",name:"Denise (fr-FR)",type:"tts"},{id:"de-DE-KatjaNeural",name:"Katja (de-DE)",type:"tts"},{id:"ja-JP-NanamiNeural",name:"Nanami (ja-JP)",type:"tts"},{id:"ko-KR-SunHiNeural",name:"SunHi (ko-KR)",type:"tts"}]},"local-device":{defaults:[{id:"default",name:"System Default Voice",type:"tts"}]},"google-tts":{defaults:[{id:"af",name:"Afrikaans",type:"tts"},{id:"ar",name:"Arabic",type:"tts"},{id:"bg",name:"Bulgarian",type:"tts"},{id:"bn",name:"Bengali",type:"tts"},{id:"bs",name:"Bosnian",type:"tts"},{id:"ca",name:"Catalan",type:"tts"},{id:"cs",name:"Czech",type:"tts"},{id:"cy",name:"Welsh",type:"tts"},{id:"da",name:"Danish",type:"tts"},{id:"de",name:"German",type:"tts"},{id:"el",name:"Greek",type:"tts"},{id:"en",name:"English",type:"tts"},{id:"eo",name:"Esperanto",type:"tts"},{id:"es",name:"Spanish",type:"tts"},{id:"et",name:"Estonian",type:"tts"},{id:"fi",name:"Finnish",type:"tts"},{id:"fr",name:"French",type:"tts"},{id:"gu",name:"Gujarati",type:"tts"},{id:"hi",name:"Hindi",type:"tts"},{id:"hr",name:"Croatian",type:"tts"},{id:"hu",name:"Hungarian",type:"tts"},{id:"hy",name:"Armenian",type:"tts"},{id:"id",name:"Indonesian",type:"tts"},{id:"is",name:"Icelandic",type:"tts"},{id:"it",name:"Italian",type:"tts"},{id:"ja",name:"Japanese",type:"tts"},{id:"jw",name:"Javanese",type:"tts"},{id:"km",name:"Khmer",type:"tts"},{id:"kn",name:"Kannada",type:"tts"},{id:"ko",name:"Korean",type:"tts"},{id:"la",name:"Latin",type:"tts"},{id:"lv",name:"Latvian",type:"tts"},{id:"mk",name:"Macedonian",type:"tts"},{id:"ml",name:"Malayalam",type:"tts"},{id:"mr",name:"Marathi",type:"tts"},{id:"my",name:"Myanmar (Burmese)",type:"tts"},{id:"ne",name:"Nepali",type:"tts"},{id:"nl",name:"Dutch",type:"tts"},{id:"no",name:"Norwegian",type:"tts"},{id:"pl",name:"Polish",type:"tts"},{id:"pt",name:"Portuguese",type:"tts"},{id:"ro",name:"Romanian",type:"tts"},{id:"ru",name:"Russian",type:"tts"},{id:"si",name:"Sinhala",type:"tts"},{id:"sk",name:"Slovak",type:"tts"},{id:"sq",name:"Albanian",type:"tts"},{id:"sr",name:"Serbian",type:"tts"},{id:"su",name:"Sundanese",type:"tts"},{id:"sv",name:"Swedish",type:"tts"},{id:"sw",name:"Swahili",type:"tts"},{id:"ta",name:"Tamil",type:"tts"},{id:"te",name:"Telugu",type:"tts"},{id:"th",name:"Thai",type:"tts"},{id:"tl",name:"Filipino",type:"tts"},{id:"tr",name:"Turkish",type:"tts"},{id:"uk",name:"Ukrainian",type:"tts"},{id:"ur",name:"Urdu",type:"tts"},{id:"vi",name:"Vietnamese",type:"tts"},{id:"zh-CN",name:"Chinese (Simplified)",type:"tts"},{id:"zh-TW",name:"Chinese (Traditional)",type:"tts"}]},gemini:{models:[{id:"gemini-2.5-flash-preview-tts",name:"Gemini 2.5 Flash TTS",type:"tts"},{id:"gemini-2.5-pro-preview-tts",name:"Gemini 2.5 Pro TTS",type:"tts"}],voices:{"gemini-2.5-flash-preview-tts":aq,"gemini-2.5-pro-preview-tts":aq},allVoices:aq}},as="-review",at={cc:[{id:"claude-opus-4-7",name:"Claude Opus 4.7"},{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 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"}],cx:[{id:"gpt-5.5",name:"GPT 5.5"},{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{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"},{id:"gpt-5.5-image",name:"GPT 5.5 Image",type:"image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"]},{id:"gpt-5.4-image",name:"GPT 5.4 Image",type:"image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"]},{id:"gpt-5.3-image",name:"GPT 5.3 Image",type:"image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"]},{id:"gpt-5.2-image",name:"GPT 5.2 Image",type:"image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"]}].flatMap(a=>"llm"!==(a.type||"llm")||a.id.endsWith(as)?[a]:[a,{...a,id:`${a.id}${as}`,name:`${a.name} Review`,upstreamModelId:a.upstreamModelId||a.id,quotaFamily:"review"}]),gc:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"}],qw:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"},{id:"coder-model",name:"Qwen3.6 Coder Model"}],if:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"qwen3-235b",name:"Qwen3 235B A22B"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 Exp"},{id:"deepseek-v3.1",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-v3",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"iflow-rome-30ba3b",name:"iFlow ROME"}],ag:[{id:"gemini-3-flash-agent",name:"Gemini 3.5 Flash (High)"},{id:"gemini-3.5-flash-low",name:"Gemini 3.5 Flash (Medium)"},{id:"gemini-pro-agent",name:"Gemini 3.1 Pro (High)"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro (Low)"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Thinking)"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 (Thinking)"},{id:"gpt-oss-120b-medium",name:"GPT-OSS 120B (Medium)"},{id:"gemini-3-flash",name:"Gemini 3 Flash",thinking:!1}],gh:[{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o mini"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"gpt-5.4",name:"GPT-5.4"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4.7",name:"Claude Opus 4.7"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"},{id:"goldeneye-free-auto",name:"GoldenEye"},{id:"text-embedding-3-small",name:"Text Embedding 3 Small (GitHub)",type:"embedding"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large (GitHub)",type:"embedding"}],kr:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",strip:["image","audio"]},{id:"qwen3-coder-next",name:"Qwen3 Coder Next",strip:["image","audio"]},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"claude-sonnet-4.5-thinking",name:"Claude Sonnet 4.5 (Thinking)"},{id:"claude-haiku-4.5-thinking",name:"Claude Haiku 4.5 (Thinking)"},{id:"claude-sonnet-4.5-agentic",name:"Claude Sonnet 4.5 (Agentic)"},{id:"claude-haiku-4.5-agentic",name:"Claude Haiku 4.5 (Agentic)"},{id:"claude-sonnet-4.5-thinking-agentic",name:"Claude Sonnet 4.5 (Thinking + Agentic)"},{id:"claude-haiku-4.5-thinking-agentic",name:"Claude Haiku 4.5 (Thinking + Agentic)"}],cu:[{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"},{id:"claude-4.6-opus-max",name:"Claude 4.6 Opus Max"},{id:"claude-4.6-sonnet-medium-thinking",name:"Claude 4.6 Sonnet Medium Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"}],kmc:[{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],kc:[{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"}],"opencode-go":[{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5",name:"GLM 5"},{id:"qwen3.5-plus",name:"Qwen 3.5 Plus"},{id:"qwen3.6-plus",name:"Qwen 3.6 Plus"},{id:"mimo-v2-pro",name:"MiMo V2 Pro"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"minimax-m2.7",name:"MiniMax M2.7",targetFormat:"claude"},{id:"minimax-m2.5",name:"MiniMax M2.5",targetFormat:"claude"}],oc:[],cl:[{id:"anthropic/claude-opus-4.7",name:"Claude Opus 4.7"},{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6"},{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"kwaipilot/kat-coder-pro",name:"KAT Coder Pro"}],openai:[{id:"gpt-5.4",name:"GPT-5.4"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"gpt-5.4-nano",name:"GPT-5.4 Nano"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-nano",name:"GPT-5 Nano"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini"},{id:"gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"o3",name:"O3"},{id:"o3-mini",name:"O3 Mini"},{id:"o3-pro",name:"O3 Pro"},{id:"o4-mini",name:"O4 Mini"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",type:"embedding"},{id:"text-embedding-3-small",name:"Text Embedding 3 Small",type:"embedding"},{id:"text-embedding-ada-002",name:"Text Embedding Ada 002",type:"embedding"},{id:"tts-1",name:"TTS-1",type:"tts"},{id:"tts-1-hd",name:"TTS-1 HD",type:"tts"},{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS",type:"tts"},{id:"whisper-1",name:"Whisper 1",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"gpt-4o-transcribe",name:"GPT-4o Transcribe",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"gpt-4o-mini-transcribe",name:"GPT-4o Mini Transcribe",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"gpt-image-1",name:"GPT Image 1",type:"image",params:["n","size","quality","response_format"]},{id:"dall-e-3",name:"DALL-E 3",type:"image",params:["size","quality","style","response_format"]},{id:"dall-e-2",name:"DALL-E 2",type:"image",params:["n","size","response_format"]}],anthropic:[{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"}],gemini:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"gemini-2.0-flash-lite",name:"Gemini 2.0 Flash Lite"},{id:"gemma-4-31b-it",name:"Gemma 4 31B IT"},{id:"gemini-embedding-2-preview",name:"Gemini Embedding 2 Preview",type:"embedding"},{id:"gemini-embedding-001",name:"Gemini Embedding 001",type:"embedding"},{id:"text-embedding-005",name:"Text Embedding 005",type:"embedding"},{id:"text-embedding-004",name:"Text Embedding 004 (Legacy)",type:"embedding"},{id:"gemini-3.1-flash-image-preview",name:"Gemini 3.1 Flash Image (Nano Banana 2)",type:"image",params:[]},{id:"gemini-3-pro-image-preview",name:"Gemini 3 Pro Image (Nano Banana Pro)",type:"image",params:[]},{id:"gemini-2.5-flash-image",name:"Gemini 2.5 Flash Image (Nano Banana)",type:"image",params:[]},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Best)",type:"stt",params:["language","prompt"]},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",type:"stt",params:["language","prompt"]},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite (Cheapest)",type:"stt",params:["language","prompt"]},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash",type:"stt",params:["language","prompt"]}],openrouter:[{id:"openai/text-embedding-3-large",name:"OpenAI Text Embedding 3 Large",type:"embedding"},{id:"openai/text-embedding-3-small",name:"OpenAI Text Embedding 3 Small",type:"embedding"},{id:"openai/text-embedding-ada-002",name:"OpenAI Text Embedding Ada 002",type:"embedding"},{id:"qwen/qwen3-embedding-8b",name:"Qwen3 Embedding 8B",type:"embedding"},{id:"perplexity/pplx-embed-v1-4b",name:"Perplexity Embed V1 4B",type:"embedding"},{id:"perplexity/pplx-embed-v1-0.6b",name:"Perplexity Embed V1 0.6B",type:"embedding"},{id:"nvidia/llama-nemotron-embed-vl-1b-v2:free",name:"NVIDIA Nemotron Embed VL 1B V2 (Free)",type:"embedding"},{id:"openai/gpt-4o-mini-tts",name:"GPT-4o Mini TTS",type:"tts"},{id:"openai/tts-1-hd",name:"TTS-1 HD",type:"tts"},{id:"openai/tts-1",name:"TTS-1",type:"tts"},{id:"openai/dall-e-3",name:"DALL-E 3 (via OpenRouter)",type:"image",params:["size","quality","style","response_format"]},{id:"openai/gpt-image-1",name:"GPT Image 1 (via OpenRouter)",type:"image",params:["n","size","quality","response_format"]},{id:"google/imagen-3.0-generate-002",name:"Imagen 3 (via OpenRouter)",type:"image",params:["n","size"]},{id:"black-forest-labs/FLUX.1-schnell",name:"FLUX.1 Schnell (via OpenRouter)",type:"image",params:["n","size"]}],glm:[{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"}],"glm-cn":[{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM-4.7"},{id:"glm-4.6",name:"GLM-4.6"},{id:"glm-4.5-air",name:"GLM-4.5-Air"}],kimi:[{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],minimax:[{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"},{id:"minimax-image-01",name:"MiniMax Image 01",type:"image",params:["n","size","response_format"]}],blackbox:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o mini"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Legacy)"},{id:"claude-opus-4-6",name:"Claude Opus 4.6 (Legacy)"},{id:"deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek-v3-671b",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"o1",name:"OpenAI o1"},{id:"o3-mini",name:"OpenAI o3-mini"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"}],"minimax-cn":[{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],alicode:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],"alicode-intl":[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],"volcengine-ark":[{id:"Doubao-Seed-2.0-Code",name:"Doubao-Seed-2.0-Code"},{id:"Doubao-Seed-2.0-pro",name:"Doubao-Seed-2.0-pro"},{id:"Doubao-Seed-2.0-lite",name:"Doubao-Seed-2.0-lite"},{id:"Doubao-Seed-Code",name:"Doubao-Seed-Code"},{id:"GLM-5.1",name:"GLM-5.1"},{id:"MiniMax-M2.7",name:"MiniMax-M2.7"},{id:"Kimi-K2.6",name:"Kimi-K2.6"},{id:"MiniMax-M2.5",name:"MiniMax-M2.5"},{id:"Kimi-K2.5",name:"Kimi-K2.5"},{id:"GLM-4.7",name:"GLM-4.7"},{id:"DeepSeek-V3.2",name:"DeepSeek-V3.2"}],"cloudflare-ai":[{id:"@cf/meta/llama-3.2-1b-instruct",name:"Llama 3.2 1B Instruct"},{id:"@cf/meta/llama-3.2-3b-instruct",name:"Llama 3.2 3B Instruct"},{id:"@cf/meta/llama-3.1-8b-instruct-fp8-fast",name:"Llama 3.1 8B Instruct FP8 Fast"},{id:"@cf/meta/llama-3.1-8b-instruct-awq",name:"Llama 3.1 8B Instruct AWQ"},{id:"@cf/mistralai/mistral-small-3.1-24b-instruct",name:"Mistral Small 3.1 24B Instruct"},{id:"@cf/meta/llama-3.1-70b-instruct-fp8-fast",name:"Llama 3.1 70B Instruct FP8 Fast"},{id:"@cf/meta/llama-3.3-70b-instruct-fp8-fast",name:"Llama 3.3 70B Instruct FP8 Fast"},{id:"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",name:"DeepSeek R1 Distill Qwen 32B"},{id:"@cf/moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"@cf/moonshotai/kimi-k2.6",name:"Kimi K2.6"},{id:"@cf/zai-org/glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"@cf/qwen/qwq-32b",name:"QwQ 32B"},{id:"@cf/qwen/qwen2.5-coder-32b-instruct",name:"Qwen 2.5 Coder 32B Instruct"},{id:"@cf/black-forest-labs/flux-2-klein-9b",name:"FLUX.2 Klein 9B",type:"image",params:["size"]},{id:"@cf/black-forest-labs/flux-2-klein-4b",name:"FLUX.2 Klein 4B",type:"image",params:["size"]},{id:"@cf/black-forest-labs/flux-2-dev",name:"FLUX.2 Dev",type:"image",params:["size"]},{id:"@cf/leonardo/lucid-origin",name:"Lucid Origin",type:"image",params:["size"]},{id:"@cf/leonardo/phoenix-1.0",name:"Phoenix 1.0",type:"image",params:["size"]},{id:"@cf/black-forest-labs/flux-1-schnell",name:"FLUX.1 Schnell",type:"image",params:["size"]},{id:"@cf/bytedance/stable-diffusion-xl-lightning",name:"SDXL Lightning",type:"image",params:["size"]},{id:"@cf/lykon/dreamshaper-8-lcm",name:"DreamShaper 8 LCM",type:"image",params:["size"]},{id:"@cf/runwayml/stable-diffusion-v1-5-img2img",name:"Stable Diffusion v1.5 Img2Img",type:"image",params:["size"],capabilities:["edit"]},{id:"@cf/runwayml/stable-diffusion-v1-5-inpainting",name:"Stable Diffusion v1.5 Inpainting",type:"image",params:["size"],capabilities:["edit","mask"]},{id:"@cf/stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0",type:"image",params:["size"]}],byteplus:[{id:"seed-2-0-pro-260328",name:"Seed 2.0 Pro"},{id:"seed-2-0-code-preview-260328",name:"Seed 2.0 Code Preview"},{id:"seed-2-0-mini-260215",name:"Seed 2.0 Mini"},{id:"seed-2-0-lite-260228",name:"Seed 2.0 Lite"},{id:"kimi-k2-thinking-251104",name:"Kimi K2 Thinking"},{id:"glm-4-7-251222",name:"GLM 4.7"},{id:"gpt-oss-120b-250805",name:"GPT-OSS-120B"}],deepseek:[{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek-v4-pro-max",name:"DeepSeek V4 Pro Max",upstreamModelId:"deepseek-v4-pro"},{id:"deepseek-v4-pro-none",name:"DeepSeek V4 Pro No Thinking",upstreamModelId:"deepseek-v4-pro"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash"},{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],commandcode:[{id:"deepseek/deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek/deepseek-v4-flash",name:"DeepSeek V4 Flash"},{id:"moonshotai/Kimi-K2.6",name:"Kimi K2.6"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-5.1",name:"GLM 5.1"},{id:"zai-org/GLM-5",name:"GLM 5"},{id:"MiniMaxAI/MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMaxAI/MiniMax-M2.5",name:"MiniMax M2.5"},{id:"Qwen/Qwen3.6-Max-Preview",name:"Qwen 3.6 Max Preview"},{id:"Qwen/Qwen3.6-Plus",name:"Qwen 3.6 Plus"},{id:"stepfun/Step-3.5-Flash",name:"Step 3.5 Flash"}],groq:[{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"},{id:"whisper-large-v3",name:"Whisper Large v3",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"whisper-large-v3-turbo",name:"Whisper Large v3 Turbo",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"distil-whisper-large-v3-en",name:"Distil Whisper Large v3 EN",type:"stt",params:["language","response_format","temperature","prompt"]}],xai:[{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"},{id:"grok-2-image-1212",name:"Grok 2 Image",type:"image",params:["n","response_format"]}],mistral:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"},{id:"mistral-embed",name:"Mistral Embed",type:"embedding"}],perplexity:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}],together:[{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"},{id:"BAAI/bge-large-en-v1.5",name:"BGE Large EN v1.5",type:"embedding"},{id:"togethercomputer/m2-bert-80M-8k-retrieval",name:"M2 BERT 80M 8K",type:"embedding"}],fireworks:[{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"},{id:"nomic-ai/nomic-embed-text-v1.5",name:"Nomic Embed Text v1.5",type:"embedding"}],cerebras:[{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:"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:"minimaxai/minimax-m2.7",name:"Minimax M2.7"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"nvidia/nv-embedqa-e5-v5",name:"NV EmbedQA E5 v5",type:"embedding"},{id:"nvidia/parakeet-ctc-1.1b-asr",name:"Parakeet CTC 1.1B",type:"stt",params:["language"]}],nebius:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"},{id:"Qwen/Qwen3-Embedding-8B",name:"Qwen3 Embedding 8B",type:"embedding"}],"voyage-ai":[{id:"voyage-3-large",name:"Voyage 3 Large",type:"embedding"},{id:"voyage-3.5",name:"Voyage 3.5",type:"embedding"},{id:"voyage-3.5-lite",name:"Voyage 3.5 Lite",type:"embedding"},{id:"voyage-code-3",name:"Voyage Code 3",type:"embedding"},{id:"voyage-finance-2",name:"Voyage Finance 2",type:"embedding"},{id:"voyage-law-2",name:"Voyage Law 2",type:"embedding"},{id:"voyage-multilingual-2",name:"Voyage Multilingual 2",type:"embedding"}],siliconflow:[{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"}],"xiaomi-mimo":[{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro"},{id:"mimo-v2.5",name:"MiMo V2.5"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"mimo-v2-flash",name:"MiMo V2 Flash"}],"xiaomi-tokenplan":[{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro"},{id:"mimo-v2.5",name:"MiMo V2.5"},{id:"mimo-v2-pro",name:"MiMo V2 Pro"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"mimo-v2-tts",name:"MiMo V2 TTS"},{id:"mimo-v2.5-tts",name:"MiMo V2.5 TTS"},{id:"mimo-v2.5-tts-voiceclone",name:"MiMo V2.5 TTS Voice Clone"},{id:"mimo-v2.5-tts-voicedesign",name:"MiMo V2.5 TTS Voice Design"}],hyperbolic:[{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"}],ollama:[{id:"gpt-oss:120b",name:"GPT OSS 120B"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"qwen3.5",name:"Qwen3.5"}],vertex:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}],"vertex-partner":[{id:"deepseek-ai/deepseek-v3.2-maas",name:"DeepSeek V3.2 (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-thinking-maas",name:"Qwen3 Next 80B Thinking (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-instruct-maas",name:"Qwen3 Next 80B Instruct (Vertex)"},{id:"zai-org/glm-5-maas",name:"GLM-5 (Vertex)"}],"grok-web":[{id:"grok-3",name:"Grok 3"},{id:"grok-3-mini",name:"Grok 3 Mini (Thinking)"},{id:"grok-3-thinking",name:"Grok 3 Thinking"},{id:"grok-4",name:"Grok 4"},{id:"grok-4-mini",name:"Grok 4 Mini (Thinking)"},{id:"grok-4-thinking",name:"Grok 4 Thinking"},{id:"grok-4-heavy",name:"Grok 4 Heavy (SuperGrok)"},{id:"grok-4.1-mini",name:"Grok 4.1 Mini (Thinking)"},{id:"grok-4.1-fast",name:"Grok 4.1 Fast"},{id:"grok-4.1-expert",name:"Grok 4.1 Expert"},{id:"grok-4.1-thinking",name:"Grok 4.1 Thinking"},{id:"grok-4.2",name:"Grok 4.2 (4.20 Beta)"}],"perplexity-web":[{id:"pplx-auto",name:"Perplexity Auto (Free)"},{id:"pplx-sonar",name:"Perplexity Sonar"},{id:"pplx-gpt",name:"GPT-5.4 (via Perplexity)"},{id:"pplx-gemini",name:"Gemini 3.1 Pro (via Perplexity)"},{id:"pplx-sonnet",name:"Claude Sonnet 4.6 (via Perplexity)"},{id:"pplx-opus",name:"Claude Opus 4.6 (via Perplexity)"},{id:"pplx-nemotron",name:"Nemotron 3 Super (via Perplexity)"}],...function(){let a={};for(let[b,c]of Object.entries(ar))c.models&&(a[`${b}-tts-models`]=c.models),c.allVoices&&(a[`${b}-tts-voices`]=c.allVoices),c.defaults&&(a[b]=c.defaults);return a["openai-tts-voices"]=ar.openai.allVoices,a["openrouter-tts-voices"]=ar.openrouter.allVoices,a}(),nanobanana:[{id:"nanobanana-flash",name:"NanoBanana Flash",type:"image",params:["n","size"]},{id:"nanobanana-pro",name:"NanoBanana Pro",type:"image",params:["n","size"]}],sdwebui:[{id:"stable-diffusion-v1-5",name:"Stable Diffusion v1.5",type:"image",params:["n","size"]},{id:"sdxl-base-1.0",name:"SDXL Base 1.0",type:"image",params:["n","size"]}],comfyui:[{id:"flux-dev",name:"FLUX Dev",type:"image",params:["n","size"]},{id:"sdxl",name:"SDXL",type:"image",params:["n","size"]}],huggingface:[{id:"black-forest-labs/FLUX.1-schnell",name:"FLUX.1 Schnell",type:"image",params:[]},{id:"stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0",type:"image",params:[]},{id:"openai/whisper-large-v3",name:"Whisper Large v3 (HF)",type:"stt",params:["language"]},{id:"openai/whisper-small",name:"Whisper Small (HF)",type:"stt",params:["language"]}],agentrouter:[{id:"claude-opus-4-6",name:"Claude 4.6 Opus"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"},{id:"glm-5.1",name:"GLM 5.1"},{id:"deepseek-v3.2",name:"DeepSeek V3.2"}],aimlapi:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"},{id:"gemini-2.0-flash-exp",name:"Gemini 2.0 Flash"},{id:"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",name:"Llama 3.1 70B"}],novita:[{id:"deepseek/deepseek-r1",name:"DeepSeek R1"},{id:"deepseek/deepseek-v3",name:"DeepSeek V3"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"qwen/qwen-2.5-72b-instruct",name:"Qwen 2.5 72B"}],modal:[{id:"auto",name:"Auto (User-hosted)"}],reka:[{id:"reka-flash-3",name:"Reka Flash 3"},{id:"reka-edge-2603",name:"Reka Edge 2603"}],nlpcloud:[{id:"chatdolphin",name:"ChatDolphin"},{id:"dolphin",name:"Dolphin"},{id:"finetuned-llama-3-70b",name:"Llama 3 70B (Finetuned)"}],bazaarlink:[{id:"auto:free",name:"Auto Free (Zero Cost)"},{id:"auto",name:"Auto (Best Model)"}],completions:[{id:"claude-opus-4",name:"Claude Opus 4"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"gpt-4o",name:"GPT-4o"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"}],enally:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"claude-3-5-sonnet",name:"Claude 3.5 Sonnet"}],freetheai:[{id:"gpt-4o",name:"GPT-4o"},{id:"claude-3-5-sonnet",name:"Claude 3.5 Sonnet"},{id:"gemini-1.5-pro",name:"Gemini 1.5 Pro"},{id:"deepseek-chat",name:"DeepSeek Chat"}],llm7:[{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini"},{id:"gemini-1.5-flash",name:"Gemini 1.5 Flash"}],lepton:[{id:"llama3-1-405b",name:"Llama 3.1 405B"},{id:"llama3-1-70b",name:"Llama 3.1 70B"},{id:"llama3-1-8b",name:"Llama 3.1 8B"},{id:"mixtral-8x7b",name:"Mixtral 8x7B"}],kluster:[{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"},{id:"meta-llama/Llama-4-Scout-17B-16E-Instruct",name:"Llama 4 Scout"},{id:"Qwen/Qwen3-235B-A22B-Instruct",name:"Qwen3 235B"}],ai21:[{id:"jamba-large",name:"Jamba 1.5 Large"},{id:"jamba-mini",name:"Jamba 1.5 Mini"}],"inference-net":[{id:"meta-llama/llama-3.3-70b-instruct/fp-16",name:"Llama 3.3 70B"},{id:"deepseek/deepseek-v3-0324",name:"DeepSeek V3"},{id:"mistralai/mistral-nemo-12b-instruct/fp-16",name:"Mistral Nemo 12B"}],predibase:[{id:"llama-3-2-3b-instruct",name:"Llama 3.2 3B"},{id:"llama-3-1-8b-instruct",name:"Llama 3.1 8B"},{id:"qwen2-5-7b-instruct",name:"Qwen 2.5 7B"}],bytez:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"mistralai/Mistral-7B-Instruct-v0.3",name:"Mistral 7B v0.3"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"}],morph:[{id:"morph-v3-large",name:"Morph V3 Large"},{id:"morph-v3-fast",name:"Morph V3 Fast"}],longcat:[{id:"LongCat-Flash-Chat",name:"LongCat Flash Chat"},{id:"LongCat-Flash-Thinking",name:"LongCat Flash Thinking"},{id:"LongCat-Flash-Lite",name:"LongCat Flash Lite"}],puter:[{id:"gpt-5",name:"GPT-5"},{id:"claude-opus-4",name:"Claude Opus 4"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro"},{id:"grok-4",name:"Grok 4"},{id:"deepseek-chat",name:"DeepSeek V3"}],uncloseai:[{id:"auto",name:"Auto (Free)"},{id:"gpt-4o-mini",name:"GPT-4o Mini"}],scaleway:[{id:"qwen3-235b-a22b-instruct-2507",name:"Qwen3 235B"},{id:"llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"mistral-small-3.1-24b-instruct-2503",name:"Mistral Small 3.1"}],deepinfra:[{id:"meta-llama/Meta-Llama-3.1-70B-Instruct",name:"Llama 3.1 70B"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"}],sambanova:[{id:"Meta-Llama-3.1-405B-Instruct",name:"Llama 3.1 405B"},{id:"Meta-Llama-3.1-70B-Instruct",name:"Llama 3.1 70B"},{id:"Meta-Llama-3.1-8B-Instruct",name:"Llama 3.1 8B"}],nscale:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"}],baseten:[{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"}],publicai:[{id:"auto",name:"Auto (Community)"}],"nous-research":[{id:"Hermes-4-405B",name:"Hermes 4 405B"},{id:"Hermes-4-70B",name:"Hermes 4 70B"}],glhf:[{id:"hf:meta-llama/Meta-Llama-3.1-405B-Instruct",name:"Llama 3.1 405B"},{id:"hf:meta-llama/Meta-Llama-3.1-70B-Instruct",name:"Llama 3.1 70B"},{id:"hf:Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"}],deepgram:[{id:"nova-3",name:"Nova 3",type:"stt",params:["language"]},{id:"nova-2",name:"Nova 2",type:"stt",params:["language"]},{id:"whisper-large",name:"Whisper Large",type:"stt",params:["language"]}],assemblyai:[{id:"universal-3-pro",name:"Universal 3 Pro",type:"stt",params:["language"]},{id:"universal-2",name:"Universal 2",type:"stt",params:["language"]}],"fal-ai":[{id:"fal-ai/flux/schnell",name:"FLUX Schnell",type:"image",params:["n","size"]},{id:"fal-ai/flux/dev",name:"FLUX Dev",type:"image",params:["n","size"]},{id:"fal-ai/flux-pro/v1.1",name:"FLUX Pro v1.1",type:"image",params:["n","size"]},{id:"fal-ai/flux-pro/v1.1-ultra",name:"FLUX Pro v1.1 Ultra",type:"image",params:["n","size"]},{id:"fal-ai/recraft-v3",name:"Recraft V3",type:"image",params:["n","size","style"]},{id:"fal-ai/ideogram/v2",name:"Ideogram V2",type:"image",params:["n","size","style"]},{id:"fal-ai/stable-diffusion-v35-large",name:"SD 3.5 Large",type:"image",params:["n","size"]}],"stability-ai":[{id:"stable-image-ultra",name:"Stable Image Ultra",type:"image",params:["size"]},{id:"stable-image-core",name:"Stable Image Core",type:"image",params:["size","style"]},{id:"sd3.5-large",name:"Stable Diffusion 3.5 Large",type:"image",params:["size"]},{id:"sd3.5-large-turbo",name:"Stable Diffusion 3.5 Large Turbo",type:"image",params:["size"]},{id:"sd3.5-medium",name:"Stable Diffusion 3.5 Medium",type:"image",params:["size"]}],"black-forest-labs":[{id:"flux-pro-1.1",name:"FLUX Pro 1.1",type:"image",params:["n","size"]},{id:"flux-pro-1.1-ultra",name:"FLUX Pro 1.1 Ultra",type:"image",params:["size"]},{id:"flux-pro",name:"FLUX Pro",type:"image",params:["n","size"]},{id:"flux-dev",name:"FLUX Dev",type:"image",params:["n","size"]},{id:"flux-kontext-pro",name:"FLUX Kontext Pro (Edit)",type:"image",params:["size"],capabilities:["edit"]},{id:"flux-kontext-max",name:"FLUX Kontext Max (Edit)",type:"image",params:["size"],capabilities:["edit"]}],recraft:[{id:"recraftv3",name:"Recraft V3",type:"image",params:["n","size","style"]},{id:"recraftv2",name:"Recraft V2",type:"image",params:["n","size","style"]}],runwayml:[{id:"gen4_image",name:"Gen-4 Image",type:"image",params:["size"]},{id:"gen4_image_turbo",name:"Gen-4 Image Turbo",type:"image",params:["size"]},{id:"gen4_turbo",name:"Gen-4 Turbo",type:"video",params:[]},{id:"gen3a_turbo",name:"Gen-3 Alpha Turbo",type:"video",params:[]}]};function au(a){let b=at[a];return b?.[0]?.id||null}let av={claude:"cc",codex:"cx","gemini-cli":"gc",qwen:"qw",iflow:"if",antigravity:"ag",github:"gh",kiro:"kr",cursor:"cu","kimi-coding":"kmc",kilocode:"kc",cline:"cl",opencode:"oc",vertex:"vertex","vertex-partner":"vertex-partner"};Object.fromEntries(Object.keys(al).map(a=>[a,av[a]||a])),Object.entries(ag).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(at).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})));let aw={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"},ax={clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"]},ay={clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:"google-api-nodejs-client/9.15.1",loadCodeAssistApiClient:"google-cloud-sdk vscode_cloudshelleditor/0.1",loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:(d=(0,ah.platform)(),e=(0,ah.arch)(),"darwin"===d?"arm64"===e?2:1:"linux"===d?"arm64"===e?4:3:5*("win32"===d)),pluginType:2})};process.env.KIMI_CODING_OAUTH_CLIENT_ID;let az="5.0.81",aA={claude:{checkExpiry:!0,refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"Bluerouter",Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},"kimi-coding":{checkExpiry:!0,refreshable:!1},cursor:{tokenExists:!0},kilocode:{url:"https://api.kilo.ai/api/profile",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},codebuddy:{tokenExists:!0}};async function aB(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:function(a,b={}){let c,d=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",e={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`Bluerouter/${az}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"bluerouter","X-CLIENT-VERSION":az,"X-CORE-VERSION":az,"X-IS-MULTIROOT":"false",...b};return d&&(e.Authorization=d),e}(a,{Accept:"application/json"})})}async function aC(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?ax:ay,d=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:c})});if(!d.ok)return null;let e=await d.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||c}}if("codex"===b){let a=await fetch("https://auth.openai.com/oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:"app_EMoamEEZ73f0CkXaXp7hrann",refresh_token:c})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("claude"===b){let a=await fetch("https://api.anthropic.com/v1/oauth/token",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:"9d1c250a-e61b-44d9-88ed-5944d1962f5e"})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("kiro"===b){let b=a.providerSpecificData||{},d=b.clientId||a.clientId,e=b.clientSecret||a.clientSecret,f=b.region||a.region;if(d&&e){let a=`https://oidc.${f||"us-east-1"}.amazonaws.com/token`,b=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:e,refreshToken:c,grantType:"refresh_token"})});if(!b.ok)return null;let g=await b.json();return{accessToken:g.accessToken,expiresIn:g.expiresIn||3600,refreshToken:g.refreshToken||c}}let g=await fetch("https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:c})});if(!g.ok)return null;let h=await g.json();return{accessToken:h.accessToken,expiresIn:h.expiresIn||3600,refreshToken:h.refreshToken||c}}if("qwen"===b){let a=await fetch("https://chat.qwen.ai/api/v1/oauth2/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:c,client_id:"f0304373b74a44d2b584a3fb70ca9e56"})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("cline"===b){let a=await fetch("https://api.cline.bot/api/v1/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:c,grantType:"refresh_token",clientType:"extension"})});if(!a.ok)return null;let b=await a.json(),d=b?.data||b,e=d?.expiresAt?Math.max(1,Math.floor((new Date(d.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:d?.accessToken,expiresIn:e,refreshToken:d?.refreshToken||c}}return null}catch(a){return console.log(`Error refreshing ${b} token:`,a.message),null}}async function aD(a,b=null){var c;let d=aA[a.provider];if(!d)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(d.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let e=a.accessToken,f=!1,g=null,h=!!(c=a).expiresAt&&new Date(c.expiresAt).getTime()<=Date.now()+3e5;if(d.refreshable&&h&&a.refreshToken){let b=await aC(a);if(!b)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};e=b.accessToken,f=!0,g=b}if(d.checkExpiry)return f?{valid:!0,error:null,refreshed:f,newTokens:g}:h?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("cline"===a.provider){let b=async a=>{let b=await aB(a);return b.ok?{valid:!0,error:null,refreshed:f,newTokens:g}:401===b.status?{valid:!1,error:"Token invalid or revoked",refreshed:f}:403===b.status?{valid:!1,error:"Access denied",refreshed:f}:{valid:!1,error:`API returned ${b.status}`,refreshed:f}},c=await b(e);if(c.valid||"Token invalid or revoked"!==c.error||!a.refreshToken)return c;let d=await aC(a);return d?.accessToken?(f=!0,g=d,e=d.accessToken,await b(e)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let c=d.buildUrl?d.buildUrl(e):d.url,h=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e}`,...d.extraHeaders},i={method:d.method,headers:h};d.body&&(i.body=d.body);let j=await aE(c,i,b);if(j.ok||d.acceptStatuses&&d.acceptStatuses.includes(j.status))return{valid:!0,error:null,refreshed:f,newTokens:g};if(401===j.status&&d.refreshable&&!f&&a.refreshToken){let e=await aC(a);if(e){let a=d.buildUrl?d.buildUrl(e.accessToken):c,f=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e.accessToken}`,...d.extraHeaders},g={method:d.method,headers:f};d.body&&(g.body=d.body);let h=await aE(a,g,b);if(h.ok||d.acceptStatuses&&d.acceptStatuses.includes(h.status))return{valid:!0,error:null,refreshed:!0,newTokens:e}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}if(401===j.status)return{valid:!1,error:"Token invalid or revoked",refreshed:f};if(403===j.status)return{valid:!1,error:"Access denied",refreshed:f};return{valid:!1,error:`API returned ${j.status}`,refreshed:f}}catch(a){return{valid:!1,error:a.message,refreshed:f}}}async function aE(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await c.e(12).then(c.bind(c,80012));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await c.e(12).then(c.bind(c,80012));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function aF(a,b=null){if(ae(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await aE(`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if(af(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=await aE(`${c}/models`,{headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await aE(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:au("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await aE(g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await aE("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await aE("https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await aE("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await aE(`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await aE("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await aE("https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await aE("https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await aE({minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await aE("https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await aE(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:au(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await aE(aw[a.provider],{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:au(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await aE("https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await aE("https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await aE("https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await aE("https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nvidia":{let c=await aE("https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await aE("https://api.perplexity.ai/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await aE("https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await aE("https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await aE("https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await aE("https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await aE("https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await aE("https://api.siliconflow.cn/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await aE("https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let b=await fetch("https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}});return{valid:b.ok,error:b.ok?null:"Invalid API key"}}case"ollama-local":{let b=(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,""),c=await fetch(`${b}/api/tags`);return{valid:c.ok,error:c.ok?null:`Ollama not reachable at ${b}`}}case"deepgram":{let c=await aE("https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await aE("https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await aE("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await aE("https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await aE("https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await aE("https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await aE("https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function aG(a){let b,c=await (0,h.Mc)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let d=await Y(c.providerSpecificData||{});if(d.connectionProxyEnabled&&d.connectionProxyUrl&&!d.vercelRelayUrl){let b=await _({proxyUrl:d.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,h.rj)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let e=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await aF(c,d):await aD(c,d);let f=Date.now()-e,g={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(g.accessToken=b.newTokens.accessToken,b.newTokens.refreshToken&&(g.refreshToken=b.newTokens.refreshToken),b.newTokens.expiresIn&&(g.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString())),await (0,h.rj)(a,g),{valid:b.valid,error:b.error,latencyMs:f,testedAt:new Date().toISOString()}}function aH(a,b,c=1,d=3600){let e=Number.parseInt(a,10);return!Number.isFinite(e)||e<c?b:Math.min(e,d)}function aI(a={}){var b;let c=a&&"object"==typeof a?a:{};return{enabled:!0===c.enabled,intervalSec:aH(c.intervalSec,60,10,86400),failureThreshold:aH(c.failureThreshold,3,1,20),timeoutMs:aH(c.timeoutMs,15e3,1e3,12e4),prompt:"string"==typeof c.prompt&&c.prompt.trim()?c.prompt.trim():"Say hi",disableThinking:!1!==c.disableThinking,model:"string"==typeof(b=c.model||c.healthModel||c.testModel)?b.trim():""}}let aJ=Number.parseInt(process.env.PROVIDER_HEALTHCHECK_TICK_MS||"5000",10),aK="__bluerouterProviderHealthMonitorV2";function aL(){return globalThis[aK]||(globalThis[aK]={timer:null,running:!1,startedAt:null,lastTickAt:null,tickCount:0,lastMonitorError:null}),globalThis[aK]}function aM(){return new Date().toISOString()}function aN(a,b={}){return function(a={},b={},c=""){let d=function(a={},b=""){return function(a={}){let b=a&&"object"==typeof a?a:{};return{overrideConnections:!0===b.overrideConnections,healthCheck:aI(b.healthCheck||b)}}((a.providerHealthChecks||{})[b]||{})}(b,c||a.provider||"");return d.overrideConnections?{healthCheck:d.healthCheck,source:"provider",providerOverride:!0}:{healthCheck:aI(a.healthCheck||{}),source:"connection",providerOverride:!1}}(a,b,a.provider||"")}function aO(a=""){return String(a||"").trim().replace(/\/+$/,"")}function aP(a={}){return a.apiKey||a.accessToken||a.providerSpecificData?.apiKey||""}async function aQ(a){let b=await a.text().catch(()=>"");return b?b.slice(0,500):""}async function aR(a,b){var c;let d="string"==typeof(c=b.model)?c.trim():"";if(!d)return aG(a.id);let e=Date.now(),f=b.prompt||"Say hi",g=function(a=""){if(af(a))return"anthropic";if(ae(a)||"cloudflare-ai"===a)return"openai";if("gemini"===a)return"gemini";if("github"===a)return"openai";let b=aw?.[a]||"";return b.includes("/messages")?"anthropic":b.includes("/chat/completions")||b.includes("/responses")?"openai":null}(a.provider||""),h=function(a,b){let c=a.provider||"",d=a.providerSpecificData?.baseUrl||"";if("cloudflare-ai"===c){let b=a.providerSpecificData?.accountId||a.accountId;return b?`https://api.cloudflare.com/client/v4/accounts/${encodeURIComponent(b)}/ai/v1/chat/completions`:""}if("github"===c)return"https://api.githubcopilot.com/chat/completions";if("gemini"===c)return"https://generativelanguage.googleapis.com/v1beta";if(af(c)){let a=function(a=""){let b=aO(a);return b?(b.endsWith("/messages")&&(b=aO(b.slice(0,-9))),b.endsWith("/v1")||(b=`${b}/v1`),b):""}(d);return a?`${a}/messages`:""}if(ae(c))return function(a=""){let b=aO(a);return b?b.endsWith("/chat/completions")||b.endsWith("/responses")?b:`${b}/chat/completions`:""}(d);let e=aw?.[c]||"";return e?aO(e):"anthropic"===b&&"anthropic"===c?"https://api.anthropic.com/v1/messages":"openai"===b&&"openai"===c?"https://api.openai.com/v1/chat/completions":""}(a,g);if(!g||!h)return aG(a.id);try{let c=function(a,b,c,d,e,f){let g=a.provider||"",h=aP(a);if("gemini"===b){let b=aP(a);if(!b)return{error:"Missing Gemini API key"};let c=function(a=""){return String(a||"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("/")}(e.startsWith("models/")?e:`models/${e}`);return{url:`https://generativelanguage.googleapis.com/v1beta/${c}:generateContent?key=${encodeURIComponent(b)}`,headers:{"Content-Type":"application/json"},body:{contents:[{role:"user",parts:[{text:f}]}],generationConfig:{maxOutputTokens:1}}}}if(!h)return{error:"Missing API key or access token"};if("anthropic"===b)return{url:c,headers:{"Content-Type":"application/json","x-api-key":h,"anthropic-version":"2023-06-01",Authorization:`Bearer ${h}`},body:{model:e,max_tokens:1,messages:[{role:"user",content:f}]}};if("openai"===b){let a={model:e,max_tokens:1,stream:!1,messages:[{role:"user",content:f}]};!1!==d.disableThinking&&ae(g)&&(a.chat_template_kwargs={enable_thinking:!1});let b={"Content-Type":"application/json",Authorization:`Bearer ${h}`};return"github"===g&&(b["Copilot-Integration-Id"]="vscode-chat",b["editor-version"]="vscode/1.107.1",b["editor-plugin-version"]="copilot-chat/0.26.7",b["user-agent"]="GitHubCopilotChat/0.26.7"),{url:c,headers:b,body:a}}return{error:"Direct chat healthcheck is not supported for this provider"}}(a,g,h,b,d,f);if(c.error)return{valid:!1,error:c.error,latencyMs:Date.now()-e,testedAt:aM()};let i=await fetch(c.url,{method:"POST",headers:c.headers,body:JSON.stringify(c.body),signal:AbortSignal.timeout(b.timeoutMs||15e3)}),j=Date.now()-e;if(i.ok)return{valid:!0,error:null,latencyMs:j,testedAt:aM()};let k=await aQ(i);return{valid:!1,error:`Health chat returned ${i.status}${k?`: ${k}`:""}`,latencyMs:j,testedAt:aM()}}catch(a){return{valid:!1,error:a.message||String(a),latencyMs:Date.now()-e,testedAt:aM()}}}async function aS(a,b={}){let c="dead"===a.healthStatus,d=b.testedAt||aM(),e={healthStatus:"alive",healthConsecutiveFailures:0,healthConsecutiveSuccesses:Number(a.healthConsecutiveSuccesses||0)+1,healthLastCheckedAt:d,healthLastOkAt:d,healthLastError:null,healthLastLatencyMs:Number(b.latencyMs||0),testStatus:"active",lastError:null,lastErrorAt:null};return c&&(e.healthLastRecoveredAt=d),await (0,h.rj)(a.id,e),e}async function aT(a,b={},c=null){let d=(c||aI(a.healthCheck||{})).failureThreshold||3,e=Number(a.healthConsecutiveFailures||0)+1,f=b.testedAt||aM(),g=b.error||"Health check failed",i=e>=d,j={healthStatus:i?"dead":"degraded",healthConsecutiveFailures:e,healthConsecutiveSuccesses:0,healthLastCheckedAt:f,healthLastError:g,healthLastLatencyMs:Number(b.latencyMs||0)};return i&&(j.testStatus="error",j.lastError=g,j.lastErrorAt=f),await (0,h.rj)(a.id,j),j}async function aU(a,b={}){let c,{healthCheck:d,source:e,providerOverride:f}=aN(a,b),g=aI(d||{}),h=g.timeoutMs||15e3;try{let b=new Promise(a=>{c=setTimeout(()=>a({valid:!1,error:`Health check timeout after ${h}ms`,latencyMs:h,testedAt:aM()}),h)}),d=await Promise.race([aR(a,{...g,healthSource:e,providerOverride:f}),b]);if(c&&clearTimeout(c),d?.valid){let b=await aS(a,d);return{connectionId:a.id,provider:a.provider,ok:!0,patch:b}}let i=await aT(a,d||{},g);return{connectionId:a.id,provider:a.provider,ok:!1,error:d?.error||"Health check failed",patch:i}}catch(d){c&&clearTimeout(c);let b=await aT(a,{error:d.message||String(d),testedAt:aM()},g);return{connectionId:a.id,provider:a.provider,ok:!1,error:d.message||String(d),patch:b}}}async function aV({force:a=!1,connectionId:b=null}={}){let c=await (0,g.getSettings)(),d=(await (0,h.getProviderConnections)({isActive:!0})).filter(d=>(!b||d.id===b)&&function(a,{settings:b={},force:c=!1}={}){if(!a||!1===a.isActive)return!1;let d=aI(aN(a,b).healthCheck||{});return!!c||!!d.enabled&&function(a){if(!a)return 1/0;let b=new Date(a).getTime();return Number.isFinite(b)?Date.now()-b:1/0}(a.healthLastCheckedAt)>=1e3*d.intervalSec}(d,{settings:c,force:a})),e=[];for(let a of d)e.push(await aU(a,c));return{checked:e.length,results:e,checkedAt:aM()}}async function aW(){let a=aL();if(!a.running){a.running=!0,a.lastTickAt=aM(),a.tickCount+=1;try{await aV(),a.lastMonitorError=null}catch(b){a.lastMonitorError=b.message||String(b),console.log("Provider health monitor error:",a.lastMonitorError)}finally{a.running=!1}}}function aX(){let a=aL();return!!a.timer||(a.startedAt=aM(),a.timer=setInterval(aW,Number.isFinite(aJ)&&aJ>=1e3?aJ:5e3),aW().catch(()=>{}),!0)}},72638:(a,b,c)=>{let{parseHeaders:d}=c(84285),{InvalidArgumentError:e}=c(39067),f=Symbol("resume");class g{#bl=!1;#bm=null;#K=!1;#bn;[f]=null;rawHeaders=null;rawTrailers=null;constructor(a){this.#bn=a}pause(){this.#bl=!0}resume(){this.#bl&&(this.#bl=!1,this[f]?.())}abort(a){this.#K||(this.#K=!0,this.#bm=a,this.#bn(a))}get aborted(){return this.#K}get reason(){return this.#bm}get paused(){return this.#bl}}a.exports=class a{#E;#z;constructor(a){this.#E=a}static unwrap(b){return b.onRequestStart?new a(b):b}onConnect(a,b){this.#z=new g(a),this.#E.onRequestStart?.(this.#z,b)}onResponseStarted(){return this.#E.onResponseStarted?.()}onUpgrade(a,b,c){this.#z.rawHeaders=b,this.#E.onRequestUpgrade?.(this.#z,a,d(b),c)}onHeaders(a,b,c,e){return this.#z[f]=c,this.#z.rawHeaders=b,this.#E.onResponseStart?.(this.#z,a,d(b),e),!this.#z.paused}onData(a){return this.#E.onResponseData?.(this.#z,a),!this.#z.paused}onComplete(a){this.#z.rawTrailers=a,this.#E.onResponseEnd?.(this.#z,d(a))}onError(a){if(!this.#E.onResponseError)throw new e("invalid onError method");this.#E.onResponseError?.(this.#z,a)}}},73135:(a,b,c)=>{let{addAbortListener:d}=c(84285),{RequestAbortedError:e}=c(39067),f=Symbol("kListener"),g=Symbol("kSignal");function h(a){a.abort?a.abort(a[g]?.reason):a.reason=a[g]?.reason??new e,i(a)}function i(a){a[g]&&("removeEventListener"in a[g]?a[g].removeEventListener("abort",a[f]):a[g].removeListener("abort",a[f]),a[g]=null,a[f]=null)}a.exports={addSignal:function(a,b){if(a.reason=null,a[g]=null,a[f]=null,b){if(b.aborted)return void h(a);a[g]=b,a[f]=()=>{h(a)},d(a[g],a[f])}},removeSignal:i}},76316:(a,b,c)=>{let{InvalidArgumentError:d,NotSupportedError:e}=c(39067),f=c(34589),{isValidHTTPToken:g,isValidHeaderValue:h,isStream:i,destroy:j,isBuffer:k,isFormDataLike:l,isIterable:m,hasSafeIterator:n,isBlobLike:o,serializePathWithQuery:p,assertRequestHandler:q,getServerName:r,normalizedMethodRecords:s,getProtocolFromUrlString:t}=c(84285),{channels:u}=c(62571),{headerNameLowerCasedRecord:v}=c(28820),w=/[^\u0021-\u00ff]/,x=Symbol("handler");class y{constructor(a,{path:b,method:c,body:e,headers:f,query:v,idempotent:y,blocking:A,upgrade:B,headersTimeout:C,bodyTimeout:D,reset:E,expectContinue:F,servername:G,throwOnError:H,maxRedirections:I,typeOfService:J},K){if("string"!=typeof b)throw new d("path must be a string");if("/"===b[0]||b.startsWith("http://")||b.startsWith("https://")||"CONNECT"===c){if(w.test(b))throw new d("invalid request path")}else throw new d("path must be an absolute URL or start with a slash");if("string"!=typeof c)throw new d("method must be a string");if(void 0===s[c]&&!g(c))throw new d("invalid request method");if(B&&"string"!=typeof B)throw new d("upgrade must be a string");if(B&&!h(B))throw new d("invalid upgrade header");if(null!=C&&(!Number.isFinite(C)||C<0))throw new d("invalid headersTimeout");if(null!=D&&(!Number.isFinite(D)||D<0))throw new d("invalid bodyTimeout");if(null!=E&&"boolean"!=typeof E)throw new d("invalid reset");if(null!=F&&"boolean"!=typeof F)throw new d("invalid expectContinue");if(null!=H)throw new d("invalid throwOnError");if(null!=I&&0!==I)throw new d("maxRedirections is not supported, use the redirect interceptor");if(null!=J&&(!Number.isInteger(J)||J<0||J>255))throw new d("typeOfService must be an integer between 0 and 255");if(this.headersTimeout=C,this.bodyTimeout=D,this.method=c,this.typeOfService=J??0,this.abort=null,null==e)this.body=null;else if(i(e)){this.body=e;const a=this.body._readableState;a&&a.autoDestroy||(this.endHandler=function(){j(this)},this.body.on("end",this.endHandler)),this.errorHandler=a=>{this.abort?this.abort(a):this.error=a},this.body.on("error",this.errorHandler)}else if(k(e))this.body=e.byteLength?e:null;else if(ArrayBuffer.isView(e))this.body=e.buffer.byteLength?Buffer.from(e.buffer,e.byteOffset,e.byteLength):null;else if(e instanceof ArrayBuffer)this.body=e.byteLength?Buffer.from(e):null;else if("string"==typeof e)this.body=e.length?Buffer.from(e):null;else if(l(e)||m(e)||o(e))this.body=e;else throw new d("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=B||null,this.path=v?p(b,v):b,this.origin=a,this.protocol=t(a),this.idempotent=null==y?"HEAD"===c||"GET"===c:y,this.blocking=A??"HEAD"!==this.method,this.reset=null==E?null:E,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=null!=F&&F,Array.isArray(f)){if(f.length%2!=0)throw new d("headers array must be even");for(let a=0;a<f.length;a+=2)z(this,f[a],f[a+1])}else if(f&&"object"==typeof f)if(n(f))for(const a of f){if(!Array.isArray(a)||2!==a.length)throw new d("headers must be in key-value pair format");z(this,a[0],a[1])}else{const a=Object.keys(f);for(let b=0;b<a.length;++b)z(this,a[b],f[a[b]])}else if(null!=f)throw new d("headers must be an object or an array");q(K,c,B),this.servername=G||r(this.host)||null,this[x]=K,u.create.hasSubscribers&&u.create.publish({request:this})}onBodySent(a){if(u.bodyChunkSent.hasSubscribers&&u.bodyChunkSent.publish({request:this,chunk:a}),this[x].onBodySent)try{return this[x].onBodySent(a)}catch(a){this.abort(a)}}onRequestSent(){if(u.bodySent.hasSubscribers&&u.bodySent.publish({request:this}),this[x].onRequestSent)try{return this[x].onRequestSent()}catch(a){this.abort(a)}}onConnect(a){if(f(!this.aborted),f(!this.completed),!this.error)return this.abort=a,this[x].onConnect(a);a(this.error)}onResponseStarted(){return this[x].onResponseStarted?.()}onHeaders(a,b,c,d){f(!this.aborted),f(!this.completed),u.headers.hasSubscribers&&u.headers.publish({request:this,response:{statusCode:a,headers:b,statusText:d}});try{return this[x].onHeaders(a,b,c,d)}catch(a){this.abort(a)}}onData(a){f(!this.aborted),f(!this.completed),u.bodyChunkReceived.hasSubscribers&&u.bodyChunkReceived.publish({request:this,chunk:a});try{return this[x].onData(a)}catch(a){return this.abort(a),!1}}onUpgrade(a,b,c){return f(!this.aborted),f(!this.completed),this[x].onUpgrade(a,b,c)}onComplete(a){this.onFinally(),f(!this.aborted),f(!this.completed),this.completed=!0,u.trailers.hasSubscribers&&u.trailers.publish({request:this,trailers:a});try{return this[x].onComplete(a)}catch(a){this.onError(a)}}onError(a){if(this.onFinally(),u.error.hasSubscribers&&u.error.publish({request:this,error:a}),!this.aborted)return this.aborted=!0,this[x].onError(a)}onFinally(){this.errorHandler&&(this.body.off("error",this.errorHandler),this.errorHandler=null),this.endHandler&&(this.body.off("end",this.endHandler),this.endHandler=null)}addHeader(a,b){return z(this,a,b),this}}function z(a,b,c){if(c&&"object"==typeof c&&!Array.isArray(c))throw new d(`invalid ${b} header`);if(void 0===c)return;let f=v[b];if(void 0===f&&void 0===v[f=b.toLowerCase()]&&!g(f))throw new d("invalid header key");if(Array.isArray(c)){let a=[];for(let e=0;e<c.length;e++)if("string"==typeof c[e]){if(!h(c[e]))throw new d(`invalid ${b} header`);a.push(c[e])}else if(null===c[e])a.push("");else if("object"==typeof c[e])throw new d(`invalid ${b} header`);else a.push(`${c[e]}`);c=a}else if("string"==typeof c){if(!h(c))throw new d(`invalid ${b} header`)}else c=null===c?"":`${c}`;if("host"===f){if(null!==a.host)throw new d("duplicate host header");if("string"!=typeof c)throw new d("invalid host header");a.host=c}else if("content-length"===f){if(null!==a.contentLength)throw new d("duplicate content-length header");if(!function(a){if("string"!=typeof a||0===a.length)return!1;for(let b=0;b<a.length;b++){let c=a.charCodeAt(b);if(c<48||c>57)return!1}return!0}(c))throw new d("invalid content-length header");a.contentLength=parseInt(c,10)}else if(null===a.contentType&&"content-type"===f)a.contentType=c,a.headers.push(b,c);else if("transfer-encoding"===f||"keep-alive"===f||"upgrade"===f)throw new d(`invalid ${f} header`);else if("connection"===f){let b="string"==typeof c?c:null;if(null===b)throw new d("invalid connection header");for(let c of b.toLowerCase().split(",")){let b=c.trim();if(!g(b))throw new d("invalid connection header");"close"===b&&(a.reset=!0)}}else if("expect"===f)throw new e("expect header not supported");else a.headers.push(b,c)}a.exports=y},76403:(a,b,c)=>{let d,{makeNetworkError:e,makeAppropriateNetworkError:f,filterResponse:g,makeResponse:h,fromInnerResponse:i,getResponseState:j}=c(78196),{HeadersList:k}=c(28665),{Request:l,cloneRequest:m,getRequestDispatcher:n,getRequestState:o}=c(12600),p=c(38522),{makePolicyContainer:q,clonePolicyContainer:r,requestBadPort:s,TAOCheck:t,appendRequestOriginHeader:u,responseLocationURL:v,requestCurrentURL:w,setRequestReferrerPolicyOnRedirect:x,tryUpgradeRequestToAPotentiallyTrustworthyURL:y,createOpaqueTimingInfo:z,appendFetchMetadata:A,corsCheck:B,crossOriginResourcePolicyCheck:C,determineRequestsReferrer:D,coarsenedSharedCurrentTime:E,sameOrigin:F,isCancelled:G,isAborted:H,isErrorLike:I,fullyReadBody:J,readableStreamClose:K,urlIsLocal:L,urlIsHttpHttpsScheme:M,urlHasHttpsScheme:N,clampAndCoarsenConnectionTimingInfo:O,simpleRangeHeaderValue:P,buildContentRange:Q,createInflate:R,extractMimeType:S,hasAuthenticationEntry:T,includesCredentials:U,isTraversableNavigable:V}=c(42425),W=c(34589),{safelyExtractBody:X,extractBody:Y}=c(35381),{redirectStatusSet:Z,nullBodyStatus:$,safeMethodsSet:_,requestBodyHeader:aa,subresourceSet:ab}=c(19608),ac=c(78474),{Readable:ad,pipeline:ae,finished:af,isErrored:ag,isReadable:ah}=c(57075),{addAbortListener:ai,bufferToLowerCasedHeaderName:aj}=c(84285),{dataURLProcessor:ak,serializeAMimeType:al,minimizeSupportedMimeType:am}=c(16537),{getGlobalDispatcher:an}=c(59970),{webidl:ao}=c(32984),{STATUS_CODES:ap}=c(37067),{bytesMatch:aq}=c(64371),{createDeferredPromise:ar}=c(83589),{isomorphicEncode:as}=c(70745),{runtimeFeatures:at}=c(56758),au=at.has("zstd"),av=["GET","HEAD"],aw="u">typeof __UNDICI_IS_NODE__||"u">typeof esbuildDetection?"node":"undici";class ax extends ac{constructor(a){super(),this.dispatcher=a,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(a){"ongoing"===this.state&&(this.state="terminated",this.connection?.destroy(a),this.emit("terminated",a))}abort(a){"ongoing"===this.state&&(this.state="aborted",a||(a=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=a,this.connection?.destroy(a),this.emit("terminated",a))}}function ay(a){az(a,"fetch")}function az(a,b="other"){if("error"===a.type&&a.aborted||!a.urlList?.length)return;let c=a.urlList[0],d=a.timingInfo,e=a.cacheState;M(c)&&null!==d&&(a.timingAllowPassed||(d=z({startTime:d.startTime}),e=""),d.endTime=E(),a.timingInfo=d,aA(d,c.href,b,globalThis,e,"",a.status))}let aA=performance.markResourceTiming;function aB(a,b,c,d,e){if(a&&a.reject(d),b.body?.stream!=null&&ah(b.body.stream)&&b.body.stream.cancel(d).catch(a=>{if("ERR_INVALID_STATE"!==a.code)throw a}),null==c)return;let f=j(c);f.body?.stream!=null&&ah(f.body.stream)&&e.error(d)}function aC({request:a,processRequestBodyChunkLength:b,processRequestEndOfBody:c,processResponse:d,processResponseEndOfBody:e,processResponseConsumeBody:f,useParallelQueue:g=!1,dispatcher:h=an(),requestObject:i=null}){W(h);let j=null,k=!1;null!=a.client&&(j=a.client.globalObject,k=a.client.crossOriginIsolatedCapability);let l=z({startTime:E(k)}),m={controller:new ax(h),request:a,timingInfo:l,processRequestBodyChunkLength:b,processRequestEndOfBody:c,processResponse:d,processResponseConsumeBody:f,processResponseEndOfBody:e,taskDestination:j,crossOriginIsolatedCapability:k,requestObject:i};return W(!a.body||a.body.stream),"client"===a.window&&(a.window=a.client?.globalObject?.constructor?.name==="Window"?a.client:"no-window"),"client"===a.origin&&(a.origin=a.client.origin),"client"===a.policyContainer&&(null!=a.client?a.policyContainer=r(a.client.policyContainer):a.policyContainer=q()),a.headersList.contains("accept",!0)||a.headersList.append("accept","*/*",!0),a.headersList.contains("accept-language",!0)||a.headersList.append("accept-language","*",!0),a.priority,ab.has(a.destination),aD(m,!1),m.controller}async function aD(a,b){try{let c=a.request,d=null;if(c.localURLsOnly&&!L(w(c))&&(d=e("local URLs only")),y(c),"blocked"===s(c)&&(d=e("bad port")),""===c.referrerPolicy&&(c.referrerPolicy=c.policyContainer.referrerPolicy),"no-referrer"!==c.referrer&&(c.referrer=D(c)),null===d){let b=w(c);F(b,c.url)&&"basic"===c.responseTainting||"data:"===b.protocol||"navigate"===c.mode||"websocket"===c.mode?(c.responseTainting="basic",d=await aE(a)):"same-origin"===c.mode?d=e('request mode cannot be "same-origin"'):"no-cors"===c.mode?"follow"!==c.redirect?d=e('redirect mode cannot be "follow" for "no-cors" request'):(c.responseTainting="opaque",d=await aE(a)):M(w(c))?(c.responseTainting="cors",d=await aG(a)):d=e("URL scheme must be a HTTP(S) scheme")}if(b)return d;0===d.status||d.internalResponse||(c.responseTainting,"basic"===c.responseTainting?d=g(d,"basic"):"cors"===c.responseTainting?d=g(d,"cors"):"opaque"===c.responseTainting?d=g(d,"opaque"):W(!1));let f=0===d.status?d:d.internalResponse;if(0===f.urlList.length&&f.urlList.push(...c.urlList),c.timingAllowFailed||(d.timingAllowPassed=!0),"opaque"===d.type&&206===f.status&&f.rangeRequested&&!c.headers.contains("range",!0)&&(d=f=e()),0!==d.status&&("HEAD"===c.method||"CONNECT"===c.method||$.includes(f.status))&&(f.body=null,a.controller.dump=!0),c.integrity){let b=b=>aF(a,e(b));if("opaque"===c.responseTainting||null==d.body)return void b(d.error);J(d.body,e=>{aq(e,c.integrity)?(d.body=X(e)[0],aF(a,d)):b("integrity mismatch")},b)}else aF(a,d)}catch(b){a.controller.terminate(b)}}function aE(a){if(G(a)&&0===a.request.redirectCount)return Promise.resolve(f(a));let{request:b}=a,{protocol:g}=w(b);switch(g){case"about:":return Promise.resolve(e("about scheme is not supported"));case"blob:":{d||(d=c(4573).resolveObjectURL);let a=w(b);if(0!==a.search.length)return Promise.resolve(e("NetworkError when attempting to fetch resource."));let f=d(a.toString());if("GET"!==b.method||!ao.is.Blob(f))return Promise.resolve(e("invalid method"));let g=h(),i=f.size,j=as(`${i}`),k=f.type;if(b.headersList.contains("range",!0)){g.rangeRequested=!0;let a=P(b.headersList.get("range",!0),!0);if("failure"===a)return Promise.resolve(e("failed to fetch the data URL"));let{rangeStartValue:c,rangeEndValue:d}=a;if(null===c)d=(c=i-d)+d-1;else{if(c>=i)return Promise.resolve(e("Range start is greater than the blob's size."));(null===d||d>=i)&&(d=i-1)}let h=f.slice(c,d+1,k);g.body=Y(h)[0];let j=as(`${h.size}`),l=Q(c,d,i);g.status=206,g.statusText="Partial Content",g.headersList.set("content-length",j,!0),g.headersList.set("content-type",k,!0),g.headersList.set("content-range",l,!0)}else{let a=Y(f);g.statusText="OK",g.body=a[0],g.headersList.set("content-length",j,!0),g.headersList.set("content-type",k,!0)}return Promise.resolve(g)}case"data:":{let a=ak(w(b));if("failure"===a)return Promise.resolve(e("failed to fetch the data URL"));return Promise.resolve(h({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:al(a.mimeType)}]],body:X(a.body)[0]}))}case"file:":return Promise.resolve(e("not implemented... yet..."));case"http:":case"https:":return aG(a).catch(a=>e(a));default:return Promise.resolve(e("unknown scheme"))}}function aF(a,b){let c=a.timingInfo,d=()=>{let d=Date.now();"document"===a.request.destination&&(a.controller.fullTimingInfo=c),a.controller.reportTimingSteps=()=>{if(!M(a.request.url))return;c.endTime=d;let e=b.cacheState,f=b.bodyInfo;b.timingAllowPassed||(c=z(c),e="");let g=0;if("navigate"!==a.request.mode||!b.hasCrossOriginRedirects){g=b.status;let a=S(b.headersList);"failure"!==a&&(f.contentType=am(a))}null!=a.request.initiatorType&&aA(c,a.request.url.href,a.request.initiatorType,globalThis,e,f,g)},queueMicrotask(()=>void(a.request.done=!0,null!=a.processResponseEndOfBody&&queueMicrotask(()=>a.processResponseEndOfBody(b)),null!=a.request.initiatorType&&a.controller.reportTimingSteps()))};null!=a.processResponse&&queueMicrotask(()=>{a.processResponse(b),a.processResponse=null});let e="error"===b.type?b:b.internalResponse??b;null==e.body?d():af(e.body.stream,()=>{d()})}async function aG(a){let b=a.request,c=null,d=null,f=a.timingInfo;if(b.serviceWorkers,null===c){if("follow"===b.redirect&&(b.serviceWorkers="none"),d=c=await aH(a),"cors"===b.responseTainting&&"failure"===B(b,c))return e("cors failure");"failure"===t(b,c)&&(b.timingAllowFailed=!0)}return("opaque"===b.responseTainting||"opaque"===c.type)&&"blocked"===C(b.origin,b.client,b.destination,d)?e("blocked"):(Z.has(d.status)&&("manual"!==b.redirect&&a.controller.connection.destroy(void 0,!1),"error"===b.redirect?c=e("unexpected redirect"):"manual"===b.redirect?c=d:"follow"===b.redirect?c=await function(a,b){let c,d=a.request,f=b.internalResponse?b.internalResponse:b;try{if(c=v(f,w(d).hash),null==c)return b}catch(a){return Promise.resolve(e(a))}if(!M(c))return Promise.resolve(e("URL scheme must be a HTTP(S) scheme"));if(20===d.redirectCount)return Promise.resolve(e("redirect count exceeded"));if(d.redirectCount+=1,"cors"===d.mode&&(c.username||c.password)&&!F(d,c))return Promise.resolve(e('cross origin not allowed for request mode "cors"'));if("cors"===d.responseTainting&&(c.username||c.password))return Promise.resolve(e('URL cannot contain credentials for request mode "cors"'));if(303!==f.status&&null!=d.body&&null==d.body.source)return Promise.resolve(e());if([301,302].includes(f.status)&&"POST"===d.method||303===f.status&&!av.includes(d.method))for(let a of(d.method="GET",d.body=null,aa))d.headersList.delete(a);F(w(d),c)||(d.headersList.delete("authorization",!0),d.headersList.delete("proxy-authorization",!0),d.headersList.delete("cookie",!0),d.headersList.delete("host",!0)),null!=d.body&&(W(null!=d.body.source),d.body=X(d.body.source)[0]);let g=a.timingInfo;return g.redirectEndTime=g.postRedirectStartTime=E(a.crossOriginIsolatedCapability),0===g.redirectStartTime&&(g.redirectStartTime=g.startTime),d.urlList.push(c),x(d,f),aD(a,!0)}(a,c):W(!1)),c.timingInfo=f,c)}async function aH(a,b=!1,c=!1){let d=a.request,g=null,h=null,i=null;"no-window"===d.window&&"error"===d.redirect?(g=a,h=d):(h=m(d),(g={...a}).request=h);let j="include"===d.credentials||"same-origin"===d.credentials&&"basic"===d.responseTainting,k=h.body?h.body.length:null,l=null;if(null==h.body&&["POST","PUT"].includes(h.method)&&(l="0"),null!=k&&(l=as(`${k}`)),null==l||h.headersList.contains("content-length",!0)||h.headersList.append("content-length",l,!0),null!=k&&h.keepalive,ao.is.URL(h.referrer)&&h.headersList.append("referer",as(h.referrer.href),!0),u(h),A(h),h.headersList.contains("user-agent",!0)||h.headersList.append("user-agent",aw,!0),"default"===h.cache&&(h.headersList.contains("if-modified-since",!0)||h.headersList.contains("if-none-match",!0)||h.headersList.contains("if-unmodified-since",!0)||h.headersList.contains("if-match",!0)||h.headersList.contains("if-range",!0))&&(h.cache="no-store"),"no-cache"!==h.cache||h.preventNoCacheCacheControlHeaderModification||h.headersList.contains("cache-control",!0)||h.headersList.append("cache-control","max-age=0",!0),("no-store"===h.cache||"reload"===h.cache)&&(h.headersList.contains("pragma",!0)||h.headersList.append("pragma","no-cache",!0),h.headersList.contains("cache-control",!0)||h.headersList.append("cache-control","no-cache",!0)),h.headersList.contains("range",!0)&&h.headersList.append("accept-encoding","identity",!0),h.headersList.contains("accept-encoding",!0)||(N(w(h))?h.headersList.append("accept-encoding","br, gzip, deflate",!0):h.headersList.append("accept-encoding","gzip, deflate",!0)),h.headersList.delete("host",!0),j&&!h.headersList.contains("authorization",!0)){let a=null;if(T(h)&&(void 0===h.useURLCredentials||!U(w(h))));else if(U(w(h))&&b){let{username:b,password:c}=w(h);a=`Basic ${Buffer.from(`${b}:${c}`).toString("base64")}`}null!==a&&h.headersList.append("Authorization",a,!1)}if(h.cache="no-store","no-store"!==h.cache&&h.cache,null==i){if("only-if-cached"===h.cache)return e("only if cached");let a=await aI(g,j,c);!_.has(h.method)&&a.status>=200&&a.status,null==i&&(i=a)}if(i.urlList=[...h.urlList],h.headersList.contains("range",!0)&&(i.rangeRequested=!0),i.requestIncludesCredentials=j,401===i.status&&"cors"!==h.responseTainting&&j&&(void 0!==d.useURLCredentials||V(d.traversableForUserPrompts))){if(null!=d.body){if(null==d.body.source)return i;d.body=X(d.body.source)[0]}if(void 0===d.useURLCredentials||b)return G(a)?f(a):i;a.controller.connection.destroy(),i=await aH(a,!0)}if(407===i.status)return"no-window"===d.window?e():G(a)?f(a):e("proxy authentication required");if(421===i.status&&!c&&(null==d.body||null!=d.body.source)){if(G(a))return f(a);a.controller.connection.destroy(),i=await aH(a,b,!0)}return i}async function aI(a,b=!1,c=!1){W(!a.controller.connection||a.controller.connection.destroyed),a.controller.connection={abort:null,destroyed:!1,destroy(a,b=!0){!this.destroyed&&(this.destroyed=!0,b&&this.abort?.(a??new DOMException("The operation was aborted.","AbortError")))}};let d=a.request,g=null,i=a.timingInfo;d.cache="no-store",d.mode;let j=null;if(null==d.body&&a.processRequestEndOfBody)queueMicrotask(()=>a.processRequestEndOfBody());else if(null!=d.body){let b=async function*(b){G(a)||(yield b,a.processRequestBodyChunkLength?.(b.byteLength))};j=async function*(){try{for await(let a of d.body.stream)yield*b(a);!G(a)&&a.processRequestEndOfBody&&a.processRequestEndOfBody()}catch(b){G(a)||("AbortError"===b.name?a.controller.abort():a.controller.terminate(b))}}()}try{let{body:b,status:c,statusText:e,headersList:f,socket:l}=await function({body:b}){let c=w(d),e=a.controller.dispatcher,f=c.pathname+c.search,g=0===c.search.length&&"?"===c.href[c.href.length-c.hash.length-1];return new Promise((h,j)=>e.dispatch({path:g?`${f}?`:f,origin:c.origin,method:d.method,body:e.isMockActive?d.body&&(d.body.source||d.body.stream):b,headers:d.headersList.entries,maxRedirections:0,upgrade:"websocket"===d.mode?"websocket":void 0},{body:null,abort:null,onConnect(b){let{connection:c}=a.controller;i.finalConnectionTimingInfo=O(void 0,i.postRedirectStartTime,a.crossOriginIsolatedCapability),c.destroyed?b(new DOMException("The operation was aborted.","AbortError")):(a.controller.on("terminated",b),this.abort=c.abort=b),i.finalNetworkRequestStartTime=E(a.crossOriginIsolatedCapability)},onResponseStarted(){i.finalNetworkResponseStartTime=E(a.crossOriginIsolatedCapability)},onHeaders(a,b,c,e){if(a<200)return!1;let f=new k;for(let a=0;a<b.length;a+=2){let c=aj(b[a]),d=b[a+1];if(Array.isArray(d)&&!Buffer.isBuffer(b[a+1]))for(let a of d)f.append(c,a.toString("latin1"),!0);else f.append(c,d.toString("latin1"),!0)}let g=f.get("location",!0);this.body=new ad({read:c});let i=g&&"follow"===d.redirect&&Z.has(a),l=[];if("HEAD"!==d.method&&"CONNECT"!==d.method&&!$.includes(a)&&!i){let a=f.get("content-encoding",!0),b=a?a.toLowerCase().split(","):[];if(b.length>5)return j(Error(`too many content-encodings in response: ${b.length}, maximum allowed is 5`)),!0;for(let a=b.length-1;a>=0;--a){let c=b[a].trim();if("x-gzip"===c||"gzip"===c)l.push(p.createGunzip({flush:p.constants.Z_SYNC_FLUSH,finishFlush:p.constants.Z_SYNC_FLUSH}));else if("deflate"===c)l.push(R({flush:p.constants.Z_SYNC_FLUSH,finishFlush:p.constants.Z_SYNC_FLUSH}));else if("br"===c)l.push(p.createBrotliDecompress({flush:p.constants.BROTLI_OPERATION_FLUSH,finishFlush:p.constants.BROTLI_OPERATION_FLUSH}));else if("zstd"===c&&au)l.push(p.createZstdDecompress({flush:p.constants.ZSTD_e_continue,finishFlush:p.constants.ZSTD_e_end}));else{l.length=0;break}}}let m=this.onError.bind(this);return h({status:a,statusText:e,headersList:f,body:l.length?ae(this.body,...l,a=>{a&&this.onError(a)}).on("error",m):this.body.on("error",m)}),!0},onData(b){if(!a.controller.dump)return i.encodedBodySize+=b.byteLength,this.body.push(b)},onComplete(){this.abort&&a.controller.off("terminated",this.abort),a.controller.ended=!0,this.body.push(null)},onError(b){this.abort&&a.controller.off("terminated",this.abort),this.body?.destroy(b),a.controller.terminate(b),j(b)},onRequestUpgrade(a,b,c,d){if(null!=d.session&&200!==b||null==d.session&&101!==b)return!1;let e=new k;for(let[a,b]of Object.entries(c)){if(null==b)continue;let c=a.toLowerCase();if(Array.isArray(b))for(let a of b)e.append(c,String(a),!0);else e.append(c,String(b),!0)}return h({status:b,statusText:ap[b],headersList:e,socket:d}),!0},onUpgrade(a,b,c){if(null!=c.session&&200!==a||null==c.session&&101!==a)return!1;let d=new k;for(let a=0;a<b.length;a+=2){let c=aj(b[a]),e=b[a+1];if(Array.isArray(e)&&!Buffer.isBuffer(b[a+1]))for(let a of e)d.append(c,a.toString("latin1"),!0);else d.append(c,e.toString("latin1"),!0)}return h({status:a,statusText:ap[a],headersList:d,socket:c}),!0}}))}({body:j});if(l)g=h({status:c,statusText:e,headersList:f,socket:l});else{let d=b[Symbol.asyncIterator]();a.controller.next=()=>d.next(),g=h({status:c,statusText:e,headersList:f})}}catch(b){if("AbortError"===b.name)return a.controller.connection.destroy(),f(a,b);return e(b)}let l=new ReadableStream({start(b){a.controller.controller=b},pull:()=>a.controller.resume(),cancel:b=>{G(a)||a.controller.abort(b)},type:"bytes"});return g.body={stream:l,source:null,length:null},a.controller.resume||a.controller.on("terminated",function(b){H(a)?(g.aborted=!0,ah(l)&&a.controller.controller.error(a.controller.serializedAbortReason)):ah(l)&&a.controller.controller.error(TypeError("terminated",{cause:I(b)?b:void 0})),a.controller.connection.destroy()}),a.controller.resume=async()=>{for(;;){let b,c;try{let{done:c,value:d}=await a.controller.next();if(H(a))break;b=c?void 0:d}catch(d){a.controller.ended&&!i.encodedBodySize?b=void 0:(b=d,c=!0)}if(void 0===b){K(a.controller.controller),function(a,b){a.request.done=!0,null!=a.processResponseDone&&queueMicrotask(()=>a.processResponseDone(b))}(a,g);return}if(i.decodedBodySize+=b?.byteLength??0,c)return void a.controller.terminate(b);let d=new Uint8Array(b);if(d.byteLength&&a.controller.controller.enqueue(d),ag(l))return void a.controller.terminate();if(a.controller.controller.desiredSize<=0)return}},g}a.exports={fetch:function(a,b){let c;ao.argumentLengthCheck(arguments,1,"globalThis.fetch");let d=ar();try{c=new l(a,b)}catch(a){return d.reject(a),d.promise}let e=o(c);if(c.signal.aborted)return aB(d,e,null,c.signal.reason,null),d.promise;let f=e.client.globalObject;f?.constructor?.name==="ServiceWorkerGlobalScope"&&(e.serviceWorkers="none");let g=null,h=!1,j=null;return ai(c.signal,()=>{h=!0,W(null!=j),j.abort(c.signal.reason);let a=g?.deref();aB(d,e,a,c.signal.reason,j.controller)}),j=aC({request:e,processResponseEndOfBody:ay,processResponse:a=>{if(!h){if(a.aborted)return void aB(d,e,g,j.serializedAbortReason,j.controller);if("error"===a.type)return void d.reject(TypeError("fetch failed",{cause:a.error}));g=new WeakRef(i(a,"immutable")),d.resolve(g.deref()),d=null}},dispatcher:n(c),requestObject:c}),d.promise},Fetch:ax,fetching:aC,finalizeAndReportTiming:az}},77935:(a,b,c)=>{let{InvalidArgumentError:d,SocketError:e}=c(39067),{AsyncResource:f}=c(16698),g=c(34589),h=c(84285),{kHTTP2Stream:i}=c(49176),{addSignal:j,removeSignal:k}=c(73135);class l extends f{constructor(a,b){if(!a||"object"!=typeof a)throw new d("invalid opts");if("function"!=typeof b)throw new d("invalid callback");const{signal:c,opaque:e,responseHeaders:f}=a;if(c&&"function"!=typeof c.on&&"function"!=typeof c.addEventListener)throw new d("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=f||null,this.opaque=e||null,this.callback=b,this.abort=null,this.context=null,j(this,c)}onConnect(a,b){this.reason?a(this.reason):(g(this.callback),this.abort=a,this.context=null)}onHeaders(){throw new e("bad upgrade",null)}onUpgrade(a,b,c){g(!0===c[i]?200===a:101===a);let{callback:d,opaque:e,context:f}=this;k(this),this.callback=null;let j="raw"===this.responseHeaders?h.parseRawHeaders(b):h.parseHeaders(b);this.runInAsyncScope(d,null,null,{headers:j,socket:c,opaque:e,context:f})}onError(a){let{callback:b,opaque:c}=this;k(this),b&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(b,null,a,{opaque:c})}))}}a.exports=function a(b,c){if(void 0===c)return new Promise((c,d)=>{a.call(this,b,(a,b)=>a?d(a):c(b))});try{let a=new l(b,c),d={...b,method:b.method||"GET",upgrade:b.protocol||"Websocket"};this.dispatch(d,a)}catch(d){if("function"!=typeof c)throw d;let a=b?.opaque;queueMicrotask(()=>c(d,{opaque:a}))}}},78075:(a,b,c)=>{let d=c(31825);a.exports=a=>b=>function(c,e){return b(c,new d({...c,retryOptions:{...a,...c.retryOptions}},{handler:e,dispatch:b}))}},78196:(a,b,c)=>{let{Headers:d,HeadersList:e,fill:f,getHeadersGuard:g,setHeadersGuard:h,setHeadersList:i}=c(28665),{extractBody:j,cloneBody:k,mixinBody:l,streamRegistry:m,bodyUnusable:n}=c(35381),o=c(84285),p=c(57975),{kEnumerableProperty:q}=o,{isValidReasonPhrase:r,isCancelled:s,isAborted:t,isErrorLike:u,environmentSettingsObject:v}=c(42425),{redirectStatusSet:w,nullBodyStatus:x}=c(19608),{webidl:y}=c(32984),{URLSerializer:z}=c(16537),{kConstruct:A}=c(49176),B=c(34589),{isomorphicEncode:C,serializeJavascriptValueToJSONString:D}=c(70745),E=new TextEncoder("utf-8");class F{#d;#a;static error(){return Q(M(),"immutable")}static json(a,b){y.argumentLengthCheck(arguments,1,"Response.json"),null!==b&&(b=y.converters.ResponseInit(b));let c=j(E.encode(D(a))),d=Q(L({}),"response");return P(d,b,{body:c[0],type:"application/json"}),d}static redirect(a,b=302){let c;y.argumentLengthCheck(arguments,1,"Response.redirect"),a=y.converters.USVString(a),b=y.converters["unsigned short"](b);try{c=new URL(a,v.settingsObject.baseUrl)}catch(b){throw TypeError(`Failed to parse URL from ${a}`,{cause:b})}if(!w.has(b))throw RangeError(`Invalid status code ${b}`);let d=Q(L({}),"immutable");d.#a.status=b;let e=C(z(c));return d.#a.headersList.append("location",e,!0),d}constructor(a=null,b){if(y.util.markAsUncloneable(this),a===A)return;null!==a&&(a=y.converters.BodyInit(a,"Response","body")),b=y.converters.ResponseInit(b),this.#a=L({}),this.#d=new d(A),h(this.#d,"response"),i(this.#d,this.#a.headersList);let c=null;if(null!=a){const[b,d]=j(a);c={body:b,type:d}}P(this,b,c)}get type(){return y.brandCheck(this,F),this.#a.type}get url(){y.brandCheck(this,F);let a=this.#a.urlList,b=a[a.length-1]??null;return null===b?"":z(b,!0)}get redirected(){return y.brandCheck(this,F),this.#a.urlList.length>1}get status(){return y.brandCheck(this,F),this.#a.status}get ok(){return y.brandCheck(this,F),this.#a.status>=200&&this.#a.status<=299}get statusText(){return y.brandCheck(this,F),this.#a.statusText}get headers(){return y.brandCheck(this,F),this.#d}get body(){return y.brandCheck(this,F),this.#a.body?this.#a.body.stream:null}get bodyUsed(){return y.brandCheck(this,F),!!this.#a.body&&o.isDisturbed(this.#a.body.stream)}clone(){if(y.brandCheck(this,F),n(this.#a))throw y.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let a=K(this.#a);return 0!==this.#a.urlList.length&&this.#a.body?.stream&&m.register(this,new WeakRef(this.#a.body.stream)),Q(a,g(this.#d))}[p.inspect.custom](a,b){null===b.depth&&(b.depth=2),b.colors??=!0;let c={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${p.formatWithOptions(b,c)}`}static getResponseHeaders(a){return a.#d}static setResponseHeaders(a,b){a.#d=b}static getResponseState(a){return a.#a}static setResponseState(a,b){a.#a=b}}let{getResponseHeaders:G,setResponseHeaders:H,getResponseState:I,setResponseState:J}=F;function K(a){if(a.internalResponse)return O(K(a.internalResponse),a.type);let b=L({...a,body:null});return null!=a.body&&(b.body=k(a.body)),b}function L(a){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...a,headersList:a?.headersList?new e(a?.headersList):new e,urlList:a?.urlList?[...a.urlList]:[]}}function M(a){return L({type:"error",status:0,error:u(a)?a:Error(a?String(a):a),aborted:a&&"AbortError"===a.name})}function N(a,b){return b={internalResponse:a,...b},new Proxy(a,{get:(a,c)=>c in b?b[c]:a[c],set:(a,c,d)=>(B(!(c in b)),a[c]=d,!0)})}function O(a,b){return"basic"===b?N(a,{type:"basic",headersList:a.headersList}):"cors"===b?N(a,{type:"cors",headersList:a.headersList}):"opaque"===b?N(a,{type:"opaque",urlList:[],status:0,statusText:"",body:null}):"opaqueredirect"===b?N(a,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null}):void B(!1)}function P(a,b,c){if(null!==b.status&&(b.status<200||b.status>599))throw RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in b&&null!=b.statusText&&!r(String(b.statusText)))throw TypeError("Invalid statusText");if("status"in b&&null!=b.status&&(I(a).status=b.status),"statusText"in b&&null!=b.statusText&&(I(a).statusText=b.statusText),"headers"in b&&null!=b.headers&&f(G(a),b.headers),c){if(x.includes(a.status))throw y.errors.exception({header:"Response constructor",message:`Invalid response status code ${a.status}`});I(a).body=c.body,null==c.type||I(a).headersList.contains("content-type",!0)||I(a).headersList.append("content-type",c.type,!0)}}function Q(a,b){let c=new F(A);J(c,a);let e=new d(A);return H(c,e),i(e,a.headersList),h(e,b),0!==a.urlList.length&&a.body?.stream&&m.register(c,new WeakRef(a.body.stream)),c}Reflect.deleteProperty(F,"getResponseHeaders"),Reflect.deleteProperty(F,"setResponseHeaders"),Reflect.deleteProperty(F,"getResponseState"),Reflect.deleteProperty(F,"setResponseState"),l(F,I),Object.defineProperties(F.prototype,{type:q,url:q,status:q,ok:q,redirected:q,statusText:q,headers:q,clone:q,body:q,bodyUsed:q,[Symbol.toStringTag]:{value:"Response",configurable:!0}}),Object.defineProperties(F,{json:q,redirect:q,error:q}),y.converters.XMLHttpRequestBodyInit=function(a,b,c){return"string"==typeof a?y.converters.USVString(a,b,c):y.is.Blob(a)||y.is.BufferSource(a)||y.is.FormData(a)||y.is.URLSearchParams(a)?a:y.converters.DOMString(a,b,c)},y.converters.BodyInit=function(a,b,c){return y.is.ReadableStream(a)||a?.[Symbol.asyncIterator]?a:y.converters.XMLHttpRequestBodyInit(a,b,c)},y.converters.ResponseInit=y.dictionaryConverter([{key:"status",converter:y.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:y.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:y.converters.HeadersInit}]),y.is.Response=y.util.MakeTypeAssertion(F),a.exports={isNetworkError:function(a){return"error"===a.type&&0===a.status},makeNetworkError:M,makeResponse:L,makeAppropriateNetworkError:function(a,b=null){return B(s(a)),t(a)?M(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:b})):M(Object.assign(new DOMException("Request was cancelled."),{cause:b}))},filterResponse:O,Response:F,cloneResponse:K,fromInnerResponse:Q,getResponseState:I}},79412:a=>{let b=Symbol.for("undici.globalOrigin.1");a.exports={getGlobalOrigin:function(){return globalThis[b]},setGlobalOrigin:function(a){if(void 0===a)return void Object.defineProperty(globalThis,b,{value:void 0,writable:!0,enumerable:!1,configurable:!1});let c=new URL(a);if("http:"!==c.protocol&&"https:"!==c.protocol)throw TypeError(`Only http & https urls are allowed, received ${c.protocol}`);Object.defineProperty(globalThis,b,{value:c,writable:!0,enumerable:!1,configurable:!1})}}},79468:(a,b,c)=>{let{safeHTTPMethods:d,pathHasQueryOrFragment:e,hasSafeIterator:f}=c(84285),{serializePathWithQuery:g}=c(84285);a.exports={makeCacheKey:function(a){if(!a.origin)throw Error("opts.origin is undefined");let b=a.path||"/";return a.query&&!e(b)&&(b=g(b,a.query)),{origin:a.origin.toString(),method:a.method,path:b,headers:a.headers}},normalizeHeaders:function(a){let b;if(null==a.headers)b={};else if("object"==typeof a.headers)if(b={},f(a.headers))for(let c of a.headers){if(!Array.isArray(c))throw Error("opts.headers is not a valid header map");let[a,d]=c;if("string"!=typeof a||"string"!=typeof d)throw Error("opts.headers is not a valid header map");b[a.toLowerCase()]=d}else for(let c of Object.keys(a.headers))b[c.toLowerCase()]=a.headers[c];else throw Error("opts.headers is not an object");return b},assertCacheKey:function(a){if("object"!=typeof a)throw TypeError(`expected key to be object, got ${typeof a}`);for(let b of["origin","method","path"])if("string"!=typeof a[b])throw TypeError(`expected key.${b} to be string, got ${typeof a[b]}`);if(void 0!==a.headers&&"object"!=typeof a.headers)throw TypeError(`expected headers to be object, got ${typeof a}`)},assertCacheValue:function(a){if("object"!=typeof a)throw TypeError(`expected value to be object, got ${typeof a}`);for(let b of["statusCode","cachedAt","staleAt","deleteAt"])if("number"!=typeof a[b])throw TypeError(`expected value.${b} to be number, got ${typeof a[b]}`);if("string"!=typeof a.statusMessage)throw TypeError(`expected value.statusMessage to be string, got ${typeof a.statusMessage}`);if(null!=a.headers&&"object"!=typeof a.headers)throw TypeError(`expected value.rawHeaders to be object, got ${typeof a.headers}`);if(void 0!==a.vary&&"object"!=typeof a.vary)throw TypeError(`expected value.vary to be object, got ${typeof a.vary}`);if(void 0!==a.etag&&"string"!=typeof a.etag)throw TypeError(`expected value.etag to be string, got ${typeof a.etag}`)},parseCacheControlHeader:function(a){let b,c={};if(Array.isArray(a))for(let c of(b=[],a))b.push(...c.split(","));else b=a.split(",");for(let a=0;a<b.length;a++){let d,e,f=b[a].toLowerCase(),g=f.indexOf("=");switch(-1!==g?(d=f.substring(0,g).trimStart(),e=f.substring(g+1)):d=f.trim(),d){case"min-fresh":case"max-stale":case"max-age":case"s-maxage":case"stale-while-revalidate":case"stale-if-error":{if(void 0===e||" "===e[0])continue;e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]&&(e=e.substring(1,e.length-1));let a=parseInt(e,10);if(a!=a||"max-age"===d&&d in c&&c[d]>=a)continue;c[d]=a;break}case"private":case"no-cache":if(e){if('"'===e[0]){let f=[e.substring(1)],g='"'===e[e.length-1];if(!g)for(let c=a+1;c<b.length;c++){let a=b[c],d=a.length;if(f.push(a.trim()),0!==d&&'"'===a[d-1]){g=!0;break}}if(g){let a=f[f.length-1];'"'===a[a.length-1]&&(a=a.substring(0,a.length-1),f[f.length-1]=a);for(let a=0;a<f.length;a++)f[a]=f[a].trim();d in c?c[d]=c[d].concat(f):c[d]=f}}else{let a=e.trim();d in c?c[d]=c[d].concat(a):c[d]=[a]}break}case"public":case"no-store":case"must-revalidate":case"proxy-revalidate":case"immutable":case"no-transform":case"must-understand":case"only-if-cached":if(e)continue;c[d]=!0;break;default:continue}}return c},parseVaryHeader:function(a,b){if("string"==typeof a&&a.includes("*"))return b;let c={};for(let d of"string"==typeof a?a.split(","):a){let a=d.trim().toLowerCase();c[a]=b[a]??null}return c},isEtagUsable:function(a){return!(a.length<=2)&&('"'===a[0]&&'"'===a[a.length-1]?!('"'===a[1]||a.startsWith('"W/')):!!a.startsWith('W/"')&&'"'===a[a.length-1]&&4!==a.length)},assertCacheMethods:function(a,b="CacheMethods"){if(!Array.isArray(a))throw TypeError(`expected type of ${b} needs to be an array, got ${null===a?"null":typeof a}`);if(0===a.length)throw TypeError(`${b} needs to have at least one method`);for(let c of a)if(!d.includes(c))throw TypeError(`element of ${b}-array needs to be one of following values: ${d.join(", ")}, got ${c}`)},assertCacheStore:function(a,b="CacheStore"){if("object"!=typeof a||null===a)throw TypeError(`expected type of ${b} to be a CacheStore, got ${null===a?"null":typeof a}`);for(let c of["get","createWriteStream","delete"])if("function"!=typeof a[c])throw TypeError(`${b} needs to have a \`${c}()\` function`)},makeDeduplicationKey:function(a,b){let c={};if(a.headers)for(let d of Object.keys(a.headers).sort())b?.has(d.toLowerCase())||(c[d]=a.headers[d]);return JSON.stringify([a.origin,a.method,a.path,c])}}},80830:a=>{a.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOriginalDispatch:Symbol("original dispatch"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected"),kIgnoreTrailingSlash:Symbol("ignore trailing slash"),kMockAgentMockCallHistoryInstance:Symbol("mock agent mock call history name"),kMockAgentRegisterCallHistory:Symbol("mock agent register mock call history"),kMockAgentAddCallHistoryLog:Symbol("mock agent add call history log"),kMockAgentIsCallHistoryEnabled:Symbol("mock agent is call history enabled"),kMockAgentAcceptsNonStandardSearchParameters:Symbol("mock agent accepts non standard search parameters"),kMockCallHistoryAddLog:Symbol("mock call history add log"),kTotalDispatchCount:Symbol("total dispatch count")}},80985:(a,b,c)=>{let d,e,f=c(34589),{pipeline:g}=c(57075),h=c(84285),{RequestContentLengthMismatchError:i,RequestAbortedError:j,SocketError:k,InformationalError:l,InvalidArgumentError:m}=c(39067),{kUrl:n,kReset:o,kClient:p,kRunning:q,kPending:r,kQueue:s,kPendingIdx:t,kRunningIdx:u,kError:v,kSocket:w,kStrictContentLength:x,kOnError:y,kMaxConcurrentStreams:z,kPingInterval:A,kHTTP2Session:B,kHTTP2InitialWindowSize:C,kHTTP2ConnectionWindowSize:D,kResume:E,kSize:F,kHTTPContext:G,kClosed:H,kBodyTimeout:I,kEnableConnectProtocol:J,kRemoteSettings:K,kHTTP2Stream:L,kHTTP2SessionState:M}=c(49176),{channels:N}=c(62571),O=Symbol("open streams");try{e=c(32467)}catch{e={constants:{}}}let{constants:{HTTP2_HEADER_AUTHORITY:P,HTTP2_HEADER_METHOD:Q,HTTP2_HEADER_PATH:R,HTTP2_HEADER_SCHEME:S,HTTP2_HEADER_CONTENT_LENGTH:T,HTTP2_HEADER_EXPECT:U,HTTP2_HEADER_STATUS:V,HTTP2_HEADER_PROTOCOL:W,NGHTTP2_REFUSED_STREAM:X,NGHTTP2_CANCEL:Y}}=e;function Z(a){let b=[];for(let[c,d]of Object.entries(a))if(Array.isArray(d))for(let a of d)b.push(Buffer.from(c),Buffer.from(a));else b.push(Buffer.from(c),Buffer.from(d));return b}function $(a){try{"function"==typeof this.setLocalWindowSize&&this.setLocalWindowSize(a)}catch{}}function _(a){if(this[p][z]=a.maxConcurrentStreams??this[p][z],!0===this[K]&&!0===this[J]&&!1===a.enableConnectProtocol){let a=new l("HTTP/2: Server disabled extended CONNECT protocol against RFC-8441");this[w][v]=a,this[p][y](a);return}this[J]=a.enableConnectProtocol??this[J],this[K]=!0,this[p][E]()}function aa(a){let b=a[M];if((a.closed||a.destroyed)&&null!=b.ping.interval){clearInterval(b.ping.interval),b.ping.interval=null;return}a.ping((function(a,b){let c=this[p],d=this[p];if(null!=a){let b=new l(`HTTP/2: "PING" errored - type ${a.message}`);d[v]=b,c[y](b)}else c.emit("ping",b)}).bind(a))}function ab(a){f("ERR_TLS_CERT_ALTNAME_INVALID"!==a.code),this[w][v]=a,this[p][y](a)}function ac(a,b,c){if(0===c){let c=new l(`HTTP/2: "frameError" received - type ${a}, code ${b}`);this[w][v]=c,this[p][y](c)}}function ad(){let a=new k("other side closed",h.getSocketInfo(this[w]));this.destroy(a),h.destroy(this[w],a)}function ae(a){let b=this[v]||new k(`HTTP/2: "GOAWAY" frame received with code ${a}`,h.getSocketInfo(this[w])),c=this[p];if(c[w]=null,c[G]=null,this.close(),this[B]=null,h.destroy(this[w],b),c[u]<c[s].length){let a=c[s][c[u]];c[s][c[u]++]=null,h.errorRequest(c,a,b),c[t]=c[u]}f(0===c[q]),c.emit("disconnect",c[n],[c],b),c.emit("connectionError",c[n],[c],b),c[E]()}function af(){let{[p]:a,[M]:b}=this,{[w]:c}=a,d=this[w][v]||this[v]||new k("closed",h.getSocketInfo(c));if(a[w]=null,a[G]=null,null!=b.ping.interval&&(clearInterval(b.ping.interval),b.ping.interval=null),a.destroyed){f(0===a[r]);let b=a[s].splice(a[u]);for(let c=0;c<b.length;c++){let e=b[c];h.errorRequest(a,e,d)}}}function ag(){let a=this[v]||new k("closed",h.getSocketInfo(this)),b=this[B][p];b[w]=null,b[G]=null,null!==this[B]&&this[B].destroy(a),b[t]=b[u],f(0===b[q]),b.emit("disconnect",b[n],[b],a),b[E]()}function ah(a){f("ERR_TLS_CERT_ALTNAME_INVALID"!==a.code),this[v]=a,this[p][y](a)}function ai(){h.destroy(this,new k("other side closed",h.getSocketInfo(this)))}function aj(){this[H]=!0}function ak(a,b,c,d,e,g,i,j){try{null!=c&&h.isBuffer(c)&&(f(i===c.byteLength,"buffer body must have content length"),b.cork(),b.write(c),b.uncork(),b.end(),e.onBodySent(c)),j||(g[o]=!0),e.onRequestSent(),d[E]()}catch(b){a(b)}}async function al(a,b,c,d,e,g,h,j){f(h===c.size,"blob body must have content length");try{if(null!=h&&h!==c.size)throw new i;let a=Buffer.from(await c.arrayBuffer());b.cork(),b.write(a),b.uncork(),b.end(),e.onBodySent(a),e.onRequestSent(),j||(g[o]=!0),d[E]()}catch(b){a(b)}}async function am(a,b,c,d,e,g,h,i){f(0!==h||0===d[q],"iterator body cannot be pipelined");let j=null;function k(){if(j){let a=j;j=null,a()}}let l=()=>new Promise((a,b)=>{f(null===j),g[v]?b(g[v]):j=a});b.on("close",k).on("drain",k);try{for await(let a of c){if(g[v])throw g[v];let c=b.write(a);e.onBodySent(a),c||await l()}b.end(),e.onRequestSent(),i||(g[o]=!0),d[E]()}catch(b){a(b)}finally{b.off("close",k).off("drain",k)}}a.exports=function(a,b){a[w]=b;let k=a[C],r=a[D],v=e.connect(a[n],{createConnection:()=>b,peerMaxConcurrentStreams:a[z],settings:{enablePush:!1,...null!=k?{initialWindowSize:k}:null}});return a[w]=b,v[O]=0,v[p]=a,v[w]=b,v[M]={ping:{interval:0===a[A]?null:setInterval(aa,a[A],v).unref()}},v[J]=!1,v[K]=!1,r&&h.addListener(v,"connect",$.bind(v,r)),h.addListener(v,"error",ab),h.addListener(v,"frameError",ac),h.addListener(v,"end",ad),h.addListener(v,"goaway",ae),h.addListener(v,"close",af),h.addListener(v,"remoteSettings",_),v.unref(),a[B]=v,b[B]=v,h.addListener(b,"error",ah),h.addListener(b,"end",ai),h.addListener(b,"close",ag),b[H]=!1,b.on("close",aj),{version:"h2",defaultPipelining:1/0,write:b=>(function(a,b){let e=b.bodyTimeout??a[I],k=a[B],{method:p,path:r,host:v,upgrade:z,expectContinue:A,signal:C,protocol:D,headers:F}=b,{body:G}=b;if(null!=z&&"websocket"!==z)return h.errorRequest(a,b,new m(`Custom upgrade "${z}" not supported over HTTP/2`)),!1;let H={};for(let a=0;a<F.length;a+=2){let b=F[a+0],c=F[a+1];if("cookie"===b){null!=H[b]?H[b]=Array.isArray(H[b])?(H[b].push(c),H[b]):[H[b],c]:H[b]=c;continue}if(Array.isArray(c))for(let a=0;a<c.length;a++)H[b]?H[b]+=`, ${c[a]}`:H[b]=c[a];else H[b]?H[b]+=`, ${c}`:H[b]=c}let K=null,{hostname:M,port:$}=a[n];H[P]=v||`${M}${$?`:${$}`:""}`,H[Q]=p;let _=c=>{b.aborted||b.completed||(c=c||new j,h.errorRequest(a,b,c),null!=K&&(K.removeAllListeners("data"),K.close(),a[y](c),a[E]()),h.destroy(G,c))};try{b.onConnect(_)}catch(c){h.errorRequest(a,b,c)}if(b.aborted)return!1;if(z||"CONNECT"===p)return(k.ref(),"websocket"===z)?!1===k[J]?(h.errorRequest(a,b,new l("HTTP/2: Extended CONNECT protocol not supported by server")),k.unref(),!1):(H[Q]="CONNECT",H[W]="websocket",H[R]=r,"ws:"===D||"wss:"===D?H[S]="ws:"===D?"http":"https":H[S]="http:"===D?"http":"https",(K=k.request(H,{endStream:!1,signal:C}))[L]=!0,K.once("response",(c,d)=>{let{[V]:e,...f}=c;b.onUpgrade(e,Z(f),K),++k[O],a[s][a[u]++]=null}),K.on("error",()=>{(K.rstCode===X||K.rstCode===Y)&&_(new l(`HTTP/2: "stream error" received - code ${K.rstCode}`))}),K.once("close",()=>{k[O]-=1,0===k[O]&&k.unref()}),K.setTimeout(e),!0):((K=k.request(H,{endStream:!1,signal:C}))[L]=!0,K.on("response",c=>{let{[V]:d,...e}=c;b.onUpgrade(d,Z(e),K),++k[O],a[s][a[u]++]=null}),K.once("close",()=>{k[O]-=1,0===k[O]&&k.unref()}),K.setTimeout(e),!0);H[R]=r,H[S]="http:"===D?"http":"https";let aa="PUT"===p||"POST"===p||"PATCH"===p;G&&"function"==typeof G.read&&G.read(0);let ab=h.bodyLength(G);if(h.isFormDataLike(G)){let[a,b]=(d??=c(35381).extractBody)(G);H["content-type"]=b,G=a.stream,ab=a.length}if(null==ab&&(ab=b.contentLength),aa||(ab=null),"GET"!==p&&"HEAD"!==p&&"OPTIONS"!==p&&"TRACE"!==p&&"CONNECT"!==p&&ab>0&&null!=b.contentLength&&b.contentLength!==ab){if(a[x])return h.errorRequest(a,b,new i),!1;process.emitWarning(new i)}if(null!=ab&&(f(G||0===ab,"no body must not have content length"),H[T]=`${ab}`),k.ref(),N.sendHeaders.hasSubscribers){let a="";for(let b in H)a+=`${b}: ${H[b]}\r
246
+ data_size_bytes = VALUES(data_size_bytes)`,[B(a.id),function(a){let b=a?new Date(a):new Date;return(Number.isNaN(b.getTime())?new Date().toISOString():b.toISOString()).replace("T"," ").replace("Z","")}(a.timestamp),B(a.provider)||null,B(a.model)||null,B(a.connectionId)||null,B(a.status)||null,c,Buffer.byteLength(c,"utf8")])}return!0}catch(a){return u("request-details-write",`[observability-mysql] Failed to write request_details: ${v(a)}`),!1}finally{b&&await b.end().catch(()=>{})}}let I=0;async function J(a=1e3){let b;if(Date.now()-I<6e4)return;I=Date.now();let c=await E();if(c)try{b=await F(c);let[[d]]=await b.query("SELECT COUNT(*) AS c FROM request_details"),e=Number(d?.c||0)-a;if(e<=0)return;await b.query("DELETE FROM request_details ORDER BY created_at ASC LIMIT ?",[e])}catch(a){u("request-details-purge",`[observability-mysql] Failed to purge request_details: ${v(a)}`)}finally{b&&await b.end().catch(()=>{})}}global._pendingRequests||(global._pendingRequests={byModel:{},byAccount:{}}),global._lastErrorProvider||(global._lastErrorProvider={provider:"",ts:0}),global._statsEmitter||(global._statsEmitter=new l.EventEmitter,global._statsEmitter.setMaxListeners(50)),global._pendingTimers||(global._pendingTimers={}),global._recentRing||(global._recentRing={items:[],initialized:!1}),global._connectionMapCache||(global._connectionMapCache={map:{},ts:0}),global._pendingRequests,global._lastErrorProvider,global._pendingTimers,global._recentRing,global._connectionMapCache,global._statsEmitter;let K=null,L=0;async function M(){if(K&&Date.now()-L<5e3)return K;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,45874)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;K={enabled:"boolean"==typeof b.enableObservability?b.enableObservability:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{K={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return L=Date.now(),K}let N=[],O=null,P=!1,Q=!1,R=!1;function S(a,b){if("write"===a){if(Q)return;Q=!0}else{if(R)return;R=!0}console.error(`[requestDetailsRepo] MySQL observability ${a} unavailable; SQLite fallback is disabled.`,b?.message||b||"")}function T(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}async function U(){if(!P&&0!==N.length){P=!0;try{for(;N.length>0;){let a=N.splice(0,N.length),b=await M(),c=[];for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,timestamp:d.timestamp,status:d.status||null,requestId:d.requestId||d.id||null,endpoint:d.endpoint||d.request?.endpoint||null,rtkStats:d.rtkStats||null,latency:d.latency||{},tokens:d.tokens||{},request:T(d.request,b.maxJsonSize),providerRequest:T(d.providerRequest,b.maxJsonSize),providerResponse:T(d.providerResponse,b.maxJsonSize),response:T(d.response,b.maxJsonSize)};c.push(a)}if(!(c.length>0)||await H(c).catch(a=>(S("write",a),!1))){let a=await M();J(a.maxRecords).catch(()=>{})}else S("write","request_details write returned false")}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{P=!1}}}let V=async()=>{O&&(clearTimeout(O),O=null),N.length>0&&await U()};process.off("beforeExit",V),process.off("SIGINT",V),process.off("SIGTERM",V),process.off("exit",V),process.on("beforeExit",V),process.on("SIGINT",V),process.on("SIGTERM",V),process.on("exit",V);let W=new Set(["vercel","cloudflare","deno"]);function X(a){return null==a?"":String(a).trim()}async function Y(a={}){try{let b=X(a?.proxyPoolId),c="__none__"===b?"":b,d=function(a={}){let b=a?.connectionProxyEnabled===!0,c=X(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:X(a?.connectionNoProxy)}}(a);if(c){let a=await j(c),b=X(a?.proxyUrl),d=X(a?.noProxy);if(a&&!0===a.isActive&&b){if(W.has(a.type))return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:d,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:d,strictProxy:!0===a.strictProxy}}}if(d.connectionProxyEnabled&&d.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...d};return{source:"none",proxyPoolId:c||null,proxyPool:null,...d}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}var Z=c(3433);function $(a){return null==a?"":String(a).trim()}async function _({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let d,e=$(a);if(!e)return{ok:!1,status:400,error:"proxyUrl is required"};let f=$(b)||"https://google.com/",g=Number(c),h=Number.isFinite(g)&&g>0?Math.min(g,3e4):8e3;try{try{d=new Z.ProxyAgent({uri:e})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),h);try{let c=await (0,Z.hd)(f,{method:"HEAD",dispatcher:d,signal:a.signal,headers:{"User-Agent":"Bluerouter"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:f,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await d?.close?.()}catch{}}}let aa="⚠️ Lưu \xfd: Mỗi t\xe0i khoản OAuth chỉ n\xean d\xf9ng cho một user. Kh\xf4ng chia sẻ OAuth account cho nhiều user/API key để tr\xe1nh lỗi quota, kh\xf3a phi\xean hoặc bị provider hạn chế.",ab={options:["auto","none","low","medium","high"],defaultMode:"auto"},ac=[{id:"speech-2.8-hd",name:"Speech 2.8 HD"},{id:"speech-2.8-turbo",name:"Speech 2.8 Turbo"},{id:"speech-2.6-hd",name:"Speech 2.6 HD"},{id:"speech-2.6-turbo",name:"Speech 2.6 Turbo"},{id:"speech-02-hd",name:"Speech 02 HD"},{id:"speech-02-turbo",name:"Speech 02 Turbo"},{id:"speech-01-hd",name:"Speech 01 HD"},{id:"speech-01-turbo",name:"Speech 01 Turbo"}],ad=Object.freeze({GENERIC:"generic",LLAMA_CPP:"llamacpp",VLLM:"vllm",OLLAMA:"ollama"});function ae(a){return"string"==typeof a&&a.startsWith("openai-compatible-")}function af(a){return"string"==typeof a&&a.startsWith("anthropic-compatible-")}ad.LLAMA_CPP,ad.GENERIC,ad.LLAMA_CPP,ad.VLLM,ad.OLLAMA,Object.freeze({generic:ad.GENERIC,default:ad.GENERIC,openai:ad.GENERIC,strict:ad.GENERIC,llama:ad.LLAMA_CPP,llamacpp:ad.LLAMA_CPP,"llama.cpp":ad.LLAMA_CPP,"llama-cpp":ad.LLAMA_CPP,"llama-server":ad.LLAMA_CPP,llamaserver:ad.LLAMA_CPP,vllm:ad.VLLM,"v-llm":ad.VLLM,ollama:ad.OLLAMA,"ollama-openai":ad.OLLAMA});let ag={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35",deprecated:!0,deprecationNotice:aa,website:"https://kiro.dev",notice:{signupUrl:"https://kiro.dev"}},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationNotice:aa,website:"https://github.com/google-gemini/gemini-cli",notice:{signupUrl:"https://github.com/google-gemini/gemini-cli"}},opencode:{id:"opencode",alias:"oc",name:"OpenCode Free",icon:"terminal",color:"#E87040",textIcon:"OC",noAuth:!0,passthroughModels:!0,modelsFetcher:{url:"https://opencode.ai/zen/v1/models",type:"opencode-free"}},openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"},passthroughModels:!0,serviceKinds:["llm","embedding","tts","imageToText"],embeddingConfig:{baseUrl:"https://openrouter.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"openai/text-embedding-3-small",name:"Text Embedding 3 Small (OpenRouter)",dimensions:1536},{id:"openai/text-embedding-3-large",name:"Text Embedding 3 Large (OpenRouter)",dimensions:3072},{id:"openai/text-embedding-ada-002",name:"Text Embedding Ada 002 (OpenRouter)",dimensions:1536}]}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"},serviceKinds:["llm","tts","embedding"],ttsConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"nvidia-tts",models:[{id:"fastpitch",name:"FastPitch"},{id:"tacotron2",name:"Tacotron2"}]},embeddingConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nvidia/nv-embedqa-e5-v5",name:"NV EmbedQA E5 v5",dimensions:1024}]}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo \xb7 Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",mediaPriority:1,website:"https://ai.google.dev",notice:{apiKeyUrl:"https://aistudio.google.com/app/apikey"},serviceKinds:["llm","embedding","image","imageToText","webSearch","tts","stt"],sttConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-stt",models:[{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Best)"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite (Cheapest)"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"}]},searchViaChat:{defaultModel:"gemini-2.5-flash",pricingUrl:"https://ai.google.dev/pricing",freeTier:"Free tier: 15 RPM, 1M tokens/day on gemini-2.5-flash via AI Studio."},embeddingConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",models:[{id:"text-embedding-004",name:"Text Embedding 004",dimensions:768},{id:"embedding-001",name:"Embedding 001",dimensions:768}]},ttsConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-tts",models:[{id:"gemini-2.5-flash-preview-tts",name:"Gemini 2.5 Flash TTS"},{id:"gemini-2.5-pro-preview-tts",name:"Gemini 2.5 Pro TTS"}]}},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare",icon:"cloud",color:"#F38020",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",notice:{text:"Workers AI free tier. Requires a Cloudflare API token and Account ID.",apiKeyUrl:"https://dash.cloudflare.com/profile/api-tokens"},serviceKinds:["llm","image"],hasProviderSpecificData:!0},byteplus:{id:"byteplus",alias:"bpm",name:"BytePlus ModelArk",icon:"cloud",color:"#2563EB",textIcon:"BP",website:"https://console.byteplus.com/ark",notice:{text:"Free credits for new accounts. Access to Seed 2.0, Kimi K2 Thinking, GLM 4.7, GPT-OSS-120B models.",apiKeyUrl:"https://console.byteplus.com/ark/region:ark+ap-southeast-1/apiKey"},serviceKinds:["llm"]},claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757",deprecated:!0,deprecationNotice:aa,website:"https://claude.ai",notice:{signupUrl:"https://claude.ai"}},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B",deprecated:!0,deprecationNotice:"⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.",website:"https://antigravity.google",notice:{signupUrl:"https://antigravity.google"}},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6",deprecated:!0,deprecationNotice:aa,thinkingConfig:ab,serviceKinds:["llm","image"],kindNotice:{image:"Requires a ChatGPT Plus (or higher) account. Free accounts are not supported for image generation."},website:"https://chatgpt.com/codex",notice:{signupUrl:"https://chatgpt.com/codex"}},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333",deprecated:!0,deprecationNotice:aa,serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://models.github.ai/inference/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-small",name:"Text Embedding 3 Small (GitHub)",dimensions:1536},{id:"text-embedding-3-large",name:"Text Embedding 3 Large (GitHub)",dimensions:3072}]},website:"https://github.com/features/copilot",notice:{signupUrl:"https://github.com/features/copilot"}},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA",website:"https://cursor.com",notice:{signupUrl:"https://cursor.com"}},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai",signupUrl:"https://x.ai"},serviceKinds:["llm","imageToText","webSearch","image"],searchViaChat:{defaultModel:"grok-4.20-reasoning",pricingUrl:"https://x.ai/api#pricing"},authModes:["oauth","apikey"],hasOAuth:!0},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC",website:"https://kilocode.ai",notice:{signupUrl:"https://kilocode.ai"}},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL",website:"https://cline.bot",notice:{signupUrl:"https://cline.bot"}},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn",notice:{apiKeyUrl:"https://platform.moonshot.ai/console/api-keys"},serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"kimi-k2.5",pricingUrl:"https://platform.moonshot.ai/docs/pricing/chat"}},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"},serviceKinds:["llm","image","imageToText","webSearch","tts"],searchViaChat:{defaultModel:"MiniMax-M2.7",pricingUrl:"https://www.minimaxi.com/document/price"},ttsConfig:{baseUrl:"https://api.minimax.io/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts",models:ac}},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"},serviceKinds:["llm","tts"],ttsConfig:{baseUrl:"https://api.minimaxi.com/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts",models:ac}},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com",notice:{apiKeyUrl:"https://bailian.console.aliyun.com/?apiKey=1"}},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com",notice:{apiKeyUrl:"https://modelstudio.console.alibabacloud.com/?apiKey=1"}},"xiaomi-mimo":{id:"xiaomi-mimo",alias:"mimo",name:"Xiaomi MiMo",icon:"smart_toy",color:"#FF6900",textIcon:"XM",website:"https://xiaomimimo.com",notice:{apiKeyUrl:"https://xiaomimimo.com"}},"xiaomi-tokenplan":{id:"xiaomi-tokenplan",alias:"xmtp",name:"Xiaomi MiMo (Token Plan)",icon:"smart_toy",color:"#FF6700",textIcon:"XT",website:"https://mimo.xiaomi.com",notice:{text:"Xiaomi MiMo Token Plan subscription (API key starts with tp-). Token Plan keys are cluster-specific — select the region matching your subscription.",apiKeyUrl:"https://mimo.xiaomi.com"},hasProviderSpecificData:!0,regions:[{id:"sgp",label:"Singapore",baseUrl:"https://token-plan-sgp.xiaomimimo.com/v1"},{id:"cn",label:"China",baseUrl:"https://token-plan-cn.xiaomimimo.com/v1"},{id:"ams",label:"Europe",baseUrl:"https://token-plan-ams.xiaomimimo.com/v1"}],defaultRegion:"sgp"},"volcengine-ark":{id:"volcengine-ark",alias:"ark",name:"Volcengine Ark",icon:"cloud",color:"#1677FF",textIcon:"ARK",website:"https://ark.cn-beijing.volces.com",notice:{apiKeyUrl:"https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey"}},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com",notice:{apiKeyUrl:"https://platform.openai.com/api-keys"},serviceKinds:["llm","embedding","tts","stt","image","imageToText","webSearch"],thinkingConfig:ab,searchViaChat:{defaultModel:"gpt-4o-mini",pricingUrl:"https://openai.com/api/pricing"},ttsConfig:{baseUrl:"https://api.openai.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"tts-1",name:"TTS-1"},{id:"tts-1-hd",name:"TTS-1 HD"},{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS"}]},sttConfig:{baseUrl:"https://api.openai.com/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"whisper-1",name:"Whisper 1"},{id:"gpt-4o-transcribe",name:"GPT-4o Transcribe"},{id:"gpt-4o-mini-transcribe",name:"GPT-4o Mini Transcribe"}]},embeddingConfig:{baseUrl:"https://api.openai.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-small",name:"Text Embedding 3 Small",dimensions:1536},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",dimensions:3072},{id:"text-embedding-ada-002",name:"Text Embedding Ada 002",dimensions:1536}]}},"vercel-ai-gateway":{id:"vercel-ai-gateway",alias:"vercel",name:"Vercel AI Gateway",icon:"deployed_code",color:"#111827",textIcon:"VG",website:"https://vercel.com/ai-gateway",notice:{text:"Unified OpenAI-compatible endpoint from Vercel. Use your AI Gateway API key, then pick models with provider/model IDs like anthropic/claude-sonnet-4.6 or openai/gpt-5.4.",apiKeyUrl:"https://vercel.com/dashboard/~/ai-gateway"},passthroughModels:!0,serviceKinds:["llm"]},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com",notice:{apiKeyUrl:"https://console.anthropic.com/settings/keys"},serviceKinds:["llm","imageToText"]},"opencode-go":{id:"opencode-go",alias:"ocg",name:"OpenCode Go",icon:"terminal",color:"#E87040",textIcon:"OC",website:"https://opencode.ai/auth",notice:{text:"OpenCode Go subscription: $5/mo (then $10/mo). Access to Kimi, GLM, Qwen, MiMo, MiniMax models.",apiKeyUrl:"https://opencode.ai/auth"}},azure:{id:"azure",alias:"azure",name:"Azure OpenAI",icon:"cloud",color:"#0078D4",textIcon:"AZ",website:"https://azure.microsoft.com/en-us/products/ai-services/openai-service",notice:{apiKeyUrl:"https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/OpenAI"},hasProviderSpecificData:!0},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com",notice:{apiKeyUrl:"https://platform.deepseek.com/api_keys"}},commandcode:{id:"commandcode",alias:"cmc",name:"Command Code",icon:"smart_toy",color:"#000000",textIcon:"CC",website:"https://commandcode.ai",notice:{text:"Use your CommandCode CLI API key (starts with user_...) from ~/.commandcode/auth.json or commandcode.ai/studio.",apiKeyUrl:"https://commandcode.ai/studio"}},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",notice:{apiKeyUrl:"https://console.groq.com/keys"},serviceKinds:["llm","imageToText","stt"],sttConfig:{baseUrl:"https://api.groq.com/openai/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"whisper-large-v3",name:"Whisper Large v3"},{id:"whisper-large-v3-turbo",name:"Whisper Large v3 Turbo"},{id:"distil-whisper-large-v3-en",name:"Distil Whisper Large v3 EN"}]}},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai"},serviceKinds:["llm","imageToText","webSearch","image"],searchViaChat:{defaultModel:"grok-4.20-reasoning",pricingUrl:"https://x.ai/api#pricing"},authModes:["oauth","apikey"],hasOAuth:!0},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai",notice:{apiKeyUrl:"https://console.mistral.ai/api-keys"},serviceKinds:["llm","imageToText","embedding"],embeddingConfig:{baseUrl:"https://api.mistral.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-embed",name:"Mistral Embed",dimensions:1024}]}},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai",notice:{apiKeyUrl:"https://www.perplexity.ai/settings/api"},serviceKinds:["llm","webSearch"],searchConfig:{baseUrl:"https://api.perplexity.ai/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",notice:{apiKeyUrl:"https://api.together.xyz/settings/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.together.xyz/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"BAAI/bge-large-en-v1.5",name:"BGE Large EN v1.5",dimensions:1024},{id:"togethercomputer/m2-bert-80M-8k-retrieval",name:"M2 BERT 80M 8K",dimensions:768}]}},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai",notice:{apiKeyUrl:"https://fireworks.ai/account/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.fireworks.ai/inference/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nomic-ai/nomic-embed-text-v1.5",name:"Nomic Embed Text v1.5",dimensions:768}]}},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai",notice:{apiKeyUrl:"https://cloud.cerebras.ai/platform"}},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com",notice:{apiKeyUrl:"https://dashboard.cohere.com/api-keys"}},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com",notice:{apiKeyUrl:"https://studio.nebius.com/settings/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.tokenfactory.nebius.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/Qwen3-Embedding-8B",name:"Qwen3 Embedding 8B",dimensions:4096}]}},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com",notice:{apiKeyUrl:"https://cloud.siliconflow.com/account/ak"}},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz",notice:{apiKeyUrl:"https://app.hyperbolic.xyz/settings"},serviceKinds:["llm","tts"],ttsConfig:{baseUrl:"https://api.hyperbolic.xyz/v1/audio/generation",authType:"apikey",authHeader:"bearer",format:"hyperbolic",models:[{id:"melo-tts",name:"Melo TTS"}]}},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com",notice:{text:"$200 free credit on signup (no card required). Aura-1: $0.015/1k chars, Aura-2: $0.030/1k chars (Pay-As-You-Go).",apiKeyUrl:"https://console.deepgram.com/api-keys"},serviceKinds:["stt","imageToText","tts"],ttsConfig:{baseUrl:"https://api.deepgram.com/v1/speak",authType:"apikey",authHeader:"token",format:"deepgram",models:[]},sttConfig:{baseUrl:"https://api.deepgram.com/v1/listen",authType:"apikey",authHeader:"token",format:"deepgram",models:[{id:"nova-3",name:"Nova 3"},{id:"nova-2",name:"Nova 2"},{id:"whisper-large",name:"Whisper Large"}]}},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com",notice:{apiKeyUrl:"https://www.assemblyai.com/app/api-keys"},serviceKinds:["stt"],sttConfig:{baseUrl:"https://api.assemblyai.com/v2/transcript",authType:"apikey",authHeader:"bearer",format:"assemblyai",async:!0,models:[{id:"universal-3-pro",name:"Universal 3 Pro"},{id:"universal-2",name:"Universal 2"}]}},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana API",icon:"extension",color:"#FFD700",textIcon:"\uD83C\uDF4C",website:"https://nanobananaapi.ai",notice:{text:"3rd-party proxy for Google Nano Banana (Gemini 2.5/3 Flash Image). For official, use Gemini provider.",apiKeyUrl:"https://nanobananaapi.ai/dashboard"},serviceKinds:["image"]},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io",notice:{apiKeyUrl:"https://elevenlabs.io/app/settings/api-keys"},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.elevenlabs.io/v1/text-to-speech",authType:"apikey",authHeader:"xi-api-key",format:"elevenlabs",models:[{id:"eleven_multilingual_v2",name:"Eleven Multilingual v2"},{id:"eleven_turbo_v2_5",name:"Eleven Turbo v2.5"}]}},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai",notice:{apiKeyUrl:"https://play.cartesia.ai/keys"},serviceKinds:["tts"],hidden:!0,ttsConfig:{baseUrl:"https://api.cartesia.ai/tts/bytes",authType:"apikey",authHeader:"x-api-key",format:"cartesia",models:[{id:"sonic-2",name:"Sonic 2"},{id:"sonic-3",name:"Sonic 3"}]}},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht",notice:{apiKeyUrl:"https://play.ht/studio/api-access"},serviceKinds:["tts"],hidden:!0,ttsConfig:{baseUrl:"https://api.play.ht/api/v2/tts/stream",authType:"apikey",authHeader:"playht",format:"playht",models:[{id:"PlayDialog",name:"PlayDialog"},{id:"Play3.0-mini",name:"Play 3.0 Mini"}]}},"local-device":{id:"local-device",alias:"local-device",name:"Local Device",icon:"speaker",color:"#64748B",textIcon:"LD",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"local-device",authType:"none",authHeader:"none",format:"local-device",models:[]}},"google-tts":{id:"google-tts",alias:"google-tts",name:"Google TTS",icon:"record_voice_over",color:"#4285F4",textIcon:"GT",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"google-tts",authType:"none",authHeader:"none",format:"google-tts",models:[]}},"edge-tts":{id:"edge-tts",alias:"edge-tts",name:"Edge TTS",icon:"record_voice_over",color:"#0078D4",textIcon:"ET",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"edge-tts",authType:"none",authHeader:"none",format:"edge-tts",models:[]}},coqui:{id:"coqui",alias:"coqui",name:"Coqui TTS",icon:"record_voice_over",color:"#10B981",textIcon:"CQ",website:"https://github.com/coqui-ai/TTS",serviceKinds:["tts"],hidden:!0,noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5002/api/tts",authType:"none",authHeader:"none",format:"coqui",models:[{id:"tts_models/en/ljspeech/tacotron2-DDC",name:"Tacotron2 DDC (LJSpeech)"}]}},tortoise:{id:"tortoise",alias:"tortoise",name:"Tortoise TTS",icon:"record_voice_over",color:"#7C3AED",textIcon:"TT",website:"https://github.com/neonbjb/tortoise-tts",serviceKinds:["tts"],hidden:!0,noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5000/api/tts",authType:"none",authHeader:"none",format:"tortoise",models:[{id:"tortoise-v2",name:"Tortoise v2"}]}},inworld:{id:"inworld",alias:"inworld",name:"Inworld TTS",icon:"record_voice_over",color:"#FF6B6B",textIcon:"IW",website:"https://inworld.ai",notice:{text:"Free tier: 40 minutes/month TTS. Paid: TTS-1.5 Mini $0.01/min ($15/1M chars), TTS-1.5 Max $0.025/min ($30/1M chars). 270+ voices, 15 languages.",apiKeyUrl:"https://platform.inworld.ai/api-keys"},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.inworld.ai/tts/v1/voice",authType:"apikey",authHeader:"basic",format:"inworld",models:[{id:"inworld-tts-1.5-mini",name:"Inworld TTS 1.5 Mini ($0.01/min)"},{id:"inworld-tts-1.5-max",name:"Inworld TTS 1.5 Max ($0.025/min)"}]}},"voyage-ai":{id:"voyage-ai",alias:"voyage",name:"Voyage AI",icon:"data_array",color:"#0EA5E9",textIcon:"VG",website:"https://www.voyageai.com",notice:{apiKeyUrl:"https://dash.voyageai.com/api-keys"},serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.voyageai.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"voyage-3-large",name:"Voyage 3 Large",dimensions:1024},{id:"voyage-3.5",name:"Voyage 3.5",dimensions:1024},{id:"voyage-3.5-lite",name:"Voyage 3.5 Lite",dimensions:1024},{id:"voyage-code-3",name:"Voyage Code 3",dimensions:1024},{id:"voyage-finance-2",name:"Voyage Finance 2",dimensions:1024},{id:"voyage-law-2",name:"Voyage Law 2",dimensions:1024},{id:"voyage-multilingual-2",name:"Voyage Multilingual 2",dimensions:1024}]}},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui",serviceKinds:["image"]},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI",serviceKinds:["image"]},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",notice:{apiKeyUrl:"https://huggingface.co/settings/tokens"},serviceKinds:["image","imageToText","tts","stt"],hiddenKinds:["tts"],ttsConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-tts",models:[{id:"facebook/mms-tts-eng",name:"MMS TTS English"},{id:"microsoft/speecht5_tts",name:"SpeechT5 TTS"}]},sttConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-asr",models:[{id:"openai/whisper-large-v3",name:"Whisper Large v3 (HF)"},{id:"openai/whisper-small",name:"Whisper Small (HF)"}]}},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"smart_toy",color:"#5B5FEF",textIcon:"BB",website:"https://blackbox.ai",notice:{apiKeyUrl:"https://www.blackbox.ai/api-management"},serviceKinds:["llm"]},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai",notice:{apiKeyUrl:"https://chutes.ai/app/api"}},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models",notice:{apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},tavily:{id:"tavily",alias:"tavily",name:"Tavily",icon:"search",color:"#5B21B6",textIcon:"TV",website:"https://tavily.com",notice:{apiKeyUrl:"https://app.tavily.com/home"},serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.tavily.com/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.tavily.com/extract",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,formats:["markdown","text"],maxCharacters:1e5,timeoutMs:15e3}},"brave-search":{id:"brave-search",alias:"brave",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",notice:{apiKeyUrl:"https://api-dashboard.search.brave.com/app/keys"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.search.brave.com/res/v1",method:"GET",authType:"apikey",authHeader:"x-subscription-token",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},serper:{id:"serper",alias:"serper",name:"Serper",icon:"search",color:"#4F46E5",textIcon:"SP",website:"https://serper.dev",notice:{apiKeyUrl:"https://serper.dev/api-key"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://google.serper.dev",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:2500,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},exa:{id:"exa",alias:"exa",name:"Exa",icon:"manage_search",color:"#2563EB",textIcon:"EX",website:"https://exa.ai",notice:{apiKeyUrl:"https://dashboard.exa.ai/api-keys"},serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.exa.ai/search",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.007,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.exa.ai/contents",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:1e3,formats:["text","markdown"],maxCharacters:1e5,timeoutMs:15e3}},searxng:{id:"searxng",alias:"searxng",name:"SearXNG",icon:"saved_search",color:"#3B82F6",textIcon:"SX",website:"https://docs.searxng.org",serviceKinds:["webSearch"],noAuth:!0,searchConfig:{baseUrl:"http://localhost:8888/search",method:"GET",authType:"none",authHeader:"none",costPerQuery:0,freeMonthlyQuota:999999,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:18e4}},"google-pse":{id:"google-pse",alias:"gpse",name:"Google PSE",icon:"search",color:"#4285F4",textIcon:"GP",website:"https://programmablesearchengine.google.com",notice:{apiKeyUrl:"https://programmablesearchengine.google.com/controlpanel/create"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.googleapis.com/customsearch/v1",method:"GET",authType:"apikey",authHeader:"key",costPerQuery:.005,freeMonthlyQuota:3e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:10,timeoutMs:1e4,cacheTTLMs:3e5}},linkup:{id:"linkup",alias:"linkup",name:"Linkup",icon:"link",color:"#0EA5E9",textIcon:"LK",website:"https://linkup.so",notice:{apiKeyUrl:"https://app.linkup.so/api-keys"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.linkup.so/v1/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:3e5}},searchapi:{id:"searchapi",alias:"searchapi",name:"SearchAPI",icon:"search",color:"#0EA5A4",textIcon:"SA",website:"https://www.searchapi.io",notice:{apiKeyUrl:"https://www.searchapi.io/dashboard"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.searchapi.io/api/v1/search",method:"GET",authType:"apikey",authHeader:"api_key",costPerQuery:.004,freeMonthlyQuota:100,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},youcom:{id:"youcom",alias:"youcom",name:"You.com Search",icon:"search",color:"#7C3AED",textIcon:"YC",website:"https://you.com",notice:{apiKeyUrl:"https://api.you.com"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://ydc-index.io/v1/search",method:"GET",authType:"apikey",authHeader:"x-api-key",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},firecrawl:{id:"firecrawl",alias:"firecrawl",name:"Firecrawl",icon:"local_fire_department",color:"#F59E0B",textIcon:"FC",website:"https://firecrawl.dev",notice:{apiKeyUrl:"https://www.firecrawl.dev/app/api-keys"},serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://api.firecrawl.dev/v1/scrape",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.002,freeMonthlyQuota:500,formats:["markdown","html","text"],maxCharacters:2e5,timeoutMs:3e4}},"fal-ai":{id:"fal-ai",alias:"fal",name:"Fal.ai",icon:"image",color:"#2563EB",textIcon:"FL",website:"https://fal.ai",notice:{apiKeyUrl:"https://fal.ai/dashboard/keys"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.fal.ai/v1/models?limit=1",method:"GET",authType:"apikey",authHeader:"key"}},"stability-ai":{id:"stability-ai",alias:"stability",name:"Stability AI",icon:"image",color:"#8B5CF6",textIcon:"SA",website:"https://stability.ai",notice:{apiKeyUrl:"https://platform.stability.ai/account/keys"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.stability.ai/v1/user/account",method:"GET",authType:"apikey",authHeader:"bearer"}},"black-forest-labs":{id:"black-forest-labs",alias:"bfl",name:"Black Forest Labs",icon:"image",color:"#111827",textIcon:"BF",website:"https://blackforestlabs.ai",notice:{apiKeyUrl:"https://api.bfl.ai"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.bfl.ai/v1/get_result?id=ping",method:"GET",authType:"apikey",authHeader:"x-key"}},recraft:{id:"recraft",alias:"recraft",name:"Recraft",icon:"image",color:"#EC4899",textIcon:"RC",website:"https://recraft.ai",notice:{apiKeyUrl:"https://www.recraft.ai/profile/api"},serviceKinds:["image"],imageConfig:{baseUrl:"https://external.api.recraft.ai/v1/users/me",method:"GET",authType:"apikey",authHeader:"bearer"}},topaz:{id:"topaz",alias:"topaz",name:"Topaz",icon:"image",color:"#059669",textIcon:"TP",website:"https://topazlabs.com",notice:{apiKeyUrl:"https://topazlabs.com/account"},serviceKinds:["image"]},runwayml:{id:"runwayml",alias:"runway",name:"Runway ML",icon:"movie",color:"#000000",textIcon:"RW",website:"https://runwayml.com",notice:{apiKeyUrl:"https://dev.runwayml.com"},serviceKinds:["image","video"],imageConfig:{baseUrl:"https://api.dev.runwayml.com/v1/organization",method:"GET",authType:"apikey",authHeader:"bearer",extraHeaders:{"X-Runway-Version":"2024-11-06"}}},"aws-polly":{id:"aws-polly",alias:"polly",name:"AWS Polly",icon:"record_voice_over",color:"#FF9900",textIcon:"PL",website:"https://aws.amazon.com/polly/",notice:{text:"Use AWS Secret Access Key as API key; set providerSpecificData.accessKeyId and optional region.",apiKeyUrl:"https://console.aws.amazon.com/iam/home#/security_credentials"},serviceKinds:["tts"],hasProviderSpecificData:!0,ttsConfig:{baseUrl:"https://polly.{region}.amazonaws.com/v1/speech",authType:"apikey",authHeader:"aws-sigv4",format:"aws-polly",models:[{id:"standard",name:"Standard"},{id:"neural",name:"Neural"},{id:"long-form",name:"Long-form"},{id:"generative",name:"Generative"}]}},"jina-ai":{id:"jina-ai",alias:"jina",name:"Jina AI",icon:"blur_on",color:"#2563EB",textIcon:"JA",website:"https://jina.ai",notice:{text:"10M free tokens on signup (non-commercial), no credit card required.",apiKeyUrl:"https://jina.ai/?sui=apikey"},serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.jina.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"jina-embeddings-v3",name:"Jina Embeddings v3",dimensions:1024},{id:"jina-embeddings-v2-base-en",name:"Jina Embeddings v2 Base EN",dimensions:768},{id:"jina-embeddings-v2-base-code",name:"Jina Embeddings v2 Base Code",dimensions:768}]}},"jina-reader":{id:"jina-reader",alias:"jina",name:"Jina Reader",icon:"menu_book",color:"#000000",textIcon:"JR",website:"https://jina.ai/reader",notice:{apiKeyUrl:"https://jina.ai/?sui=apikey"},serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://r.jina.ai",method:"GET",authType:"apikey",authHeader:"bearer",costPerQuery:0,freeMonthlyQuota:1e6,formats:["markdown","text","html"],maxCharacters:2e5,timeoutMs:3e4}},"grok-web":{id:"grok-web",alias:"gw",name:"Grok Web (Subscription)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GW",website:"https://grok.com",authType:"cookie",authHint:"Paste your sso= cookie value from grok.com",passthroughModels:!0,serviceKinds:["llm"]},"perplexity-web":{id:"perplexity-web",alias:"pw",name:"Perplexity Web (Pro/Max)",icon:"search",color:"#20808D",textIcon:"PW",website:"https://www.perplexity.ai",authType:"cookie",authHint:"Paste your __Secure-next-auth.session-token cookie value from perplexity.ai",serviceKinds:["llm"]}};Object.values(ag).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(ag).reduce((a,b)=>(a[b.id]=b.alias,a),{});var ah=c(21820);let ai={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},aj={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05,advanced-tool-use-2025-11-20,effort-2025-11-24,structured-outputs-2025-12-15,fast-mode-2026-02-01,redact-thinking-2026-02-12,token-efficient-tools-2026-03-28","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.92 (external, sdk-cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.14.0","X-Stainless-Package-Version":"0.80.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,ah.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,ah.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,ah.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,ah.platform)()}`}}(),"X-Stainless-Timeout":"600"},ak="https://api.kimi.com/coding/v1/messages",al={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...aj},clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://api.anthropic.com/v1/oauth/token"},gemini:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},"gemini-cli":{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},codex:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",headers:{originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",clientId:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",format:"openai",headers:{"User-Agent":"iFlow-Cli"},clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},qoder:{baseUrl:"https://api.qoder.com/v1/chat/completions",format:"openai",headers:{"User-Agent":"Qoder-Cli"},clientId:process.env.QODER_OAUTH_CLIENT_ID||"10009311001",clientSecret:process.env.QODER_OAUTH_CLIENT_SECRET||"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://api.qoder.com/oauth/token",authUrl:"https://qoder.com/oauth/authorize"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.107.0 ${(0,ah.platform)()}/${(0,ah.arch)()}`},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},openrouter:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},openai:{baseUrl:"https://api.openai.com/v1/chat/completions",format:"openai"},"vercel-ai-gateway":{baseUrl:"https://ai-gateway.vercel.sh/v1/chat/completions",format:"openai"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...ai}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:ak,format:"claude",headers:{...ai}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...ai}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...ai}},alicode:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alicode-intl":{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"volcengine-ark":{baseUrl:"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",format:"openai",headers:{}},byteplus:{baseUrl:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",format:"openai",headers:{}},github:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",format:"openai",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"},clientId:"Iv1.b507a08c87ecfe98"},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",retry:{429:2},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"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},cursor:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"3.1.0"},"kimi-coding":{baseUrl:ak,format:"claude",headers:{...ai},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token"},kilocode:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",format:"openai",headers:{}},opencode:{baseUrl:"http://localhost:4096/v1/chat/completions",format:"openai",headers:{}},cline:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},nvidia:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",format:"openai"},anthropic:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...ai}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},commandcode:{baseUrl:"https://api.commandcode.ai/alpha/generate",format:"commandcode",headers:{"x-command-code-version":"0.25.7","x-cli-environment":"cli"}},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",responsesUrl:"https://api.x.ai/v1/responses",format:"openai",clientId:"b1a00492-073a-47ea-816f-4c329264a828",tokenUrl:"https://auth.x.ai/oauth2/token",refreshUrl:"https://auth.x.ai/oauth2/token"},mistral:{baseUrl:"https://api.mistral.ai/v1/chat/completions",format:"openai"},perplexity:{baseUrl:"https://api.perplexity.ai/chat/completions",format:"openai"},together:{baseUrl:"https://api.together.xyz/v1/chat/completions",format:"openai"},fireworks:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",format:"openai"},cerebras:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",format:"openai"},cohere:{baseUrl:"https://api.cohere.ai/v1/chat/completions",format:"openai"},nebius:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",format:"openai"},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1/chat/completions",format:"openai"},hyperbolic:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",format:"openai"},deepgram:{baseUrl:"https://api.deepgram.com/v1/listen",format:"openai"},assemblyai:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",format:"openai"},nanobanana:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",format:"openai"},chutes:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",format:"openai"},ollama:{baseUrl:"https://ollama.com/api/chat",format:"ollama"},"ollama-local":{baseUrl:"http://localhost:11434/api/chat",format:"ollama"},vertex:{baseUrl:"https://aiplatform.googleapis.com",format:"vertex"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"},gitlab:{baseUrl:"https://gitlab.com/api/v4/chat/completions",format:"openai"},codebuddy:{baseUrl:"https://copilot.tencent.com/v1/chat/completions",format:"openai"},opencode:{baseUrl:"https://opencode.ai",format:"openai",headers:{"x-opencode-client":"desktop"},noAuth:!0},"opencode-go":{baseUrl:"https://opencode.ai/zen/go/v1/chat/completions",format:"openai",headers:{}},"grok-web":{baseUrl:"https://grok.com/rest/app-chat/conversations/new",format:"grok-web",authType:"cookie"},"perplexity-web":{baseUrl:"https://www.perplexity.ai/rest/sse/perplexity_ask",format:"perplexity-web",authType:"cookie"},azure:{baseUrl:"",format:"openai",headers:{}},"cloudflare-ai":{baseUrl:"https://api.cloudflare.com/client/v4/accounts/{accountId}/ai/v1/chat/completions",format:"openai"},"xiaomi-mimo":{baseUrl:"https://api.xiaomimimo.com/v1/chat/completions",format:"openai"},"xiaomi-tokenplan":{baseUrl:"https://token-plan-sgp.xiaomimimo.com/v1/chat/completions",format:"openai"},agentrouter:{baseUrl:"https://agentrouter.org/v1/messages",format:"claude",headers:{...aj}},aimlapi:{baseUrl:"https://api.aimlapi.com/v1/chat/completions",format:"openai"},novita:{baseUrl:"https://api.novita.ai/v3/openai/chat/completions",format:"openai"},modal:{baseUrl:"https://api.modal.com/v1/chat/completions",format:"openai"},reka:{baseUrl:"https://api.reka.ai/v1/chat/completions",format:"openai"},nlpcloud:{baseUrl:"https://api.nlpcloud.io/v1/gpu/chatbot",format:"openai"},bazaarlink:{baseUrl:"https://bazaarlink.ai/api/v1/chat/completions",format:"openai"},completions:{baseUrl:"https://completions.me/api/v1/chat/completions",format:"openai"},enally:{baseUrl:"https://ai.enally.in/v1/chat/completions",format:"openai",authHeader:"x-api-key"},freetheai:{baseUrl:"https://api.freetheai.xyz/v1/chat/completions",format:"openai"},llm7:{baseUrl:"https://api.llm7.io/v1/chat/completions",format:"openai"},lepton:{baseUrl:"https://api.lepton.ai/api/v1/chat/completions",format:"openai"},kluster:{baseUrl:"https://api.kluster.ai/v1/chat/completions",format:"openai"},ai21:{baseUrl:"https://api.ai21.com/studio/v1/chat/completions",format:"openai"},"inference-net":{baseUrl:"https://api.inference.net/v1/chat/completions",format:"openai"},predibase:{baseUrl:"https://serving.app.predibase.com/v1/chat/completions",format:"openai"},bytez:{baseUrl:"https://api.bytez.com/models/v2",format:"openai"},morph:{baseUrl:"https://api.morphllm.com/v1/chat/completions",format:"openai"},longcat:{baseUrl:"https://api.longcat.chat/openai/v1/chat/completions",format:"openai"},puter:{baseUrl:"https://api.puter.com/puterai/openai/v1/chat/completions",format:"openai"},uncloseai:{baseUrl:"https://hermes.ai.unturf.com/v1/chat/completions",format:"openai",noAuth:!0},scaleway:{baseUrl:"https://api.scaleway.ai/v1/chat/completions",format:"openai"},deepinfra:{baseUrl:"https://api.deepinfra.com/v1/openai/chat/completions",format:"openai"},sambanova:{baseUrl:"https://api.sambanova.ai/v1/chat/completions",format:"openai"},nscale:{baseUrl:"https://inference.api.nscale.com/v1/chat/completions",format:"openai"},baseten:{baseUrl:"https://inference.baseten.co/v1/chat/completions",format:"openai"},publicai:{baseUrl:"https://api.publicai.co/v1/chat/completions",format:"openai"},"nous-research":{baseUrl:"https://inference-api.nousresearch.com/v1/chat/completions",format:"openai"},glhf:{baseUrl:"https://glhf.chat/api/openai/v1/chat/completions",format:"openai"},blackbox:{baseUrl:"https://api.blackbox.ai/chat/completions",format:"openai"}},am={alloy:{id:"alloy",name:"Alloy"},ash:{id:"ash",name:"Ash"},ballad:{id:"ballad",name:"Ballad"},cedar:{id:"cedar",name:"Cedar"},coral:{id:"coral",name:"Coral"},echo:{id:"echo",name:"Echo"},fable:{id:"fable",name:"Fable"},marin:{id:"marin",name:"Marin"},nova:{id:"nova",name:"Nova"},onyx:{id:"onyx",name:"Onyx"},sage:{id:"sage",name:"Sage"},shimmer:{id:"shimmer",name:"Shimmer"},verse:{id:"verse",name:"Verse"}},an=(...a)=>a.map(a=>({...am[a],type:"tts"})),ao=an("alloy","ash","coral","echo","fable","nova","onyx","sage","shimmer"),ap=an("alloy","ash","ballad","cedar","coral","echo","fable","marin","nova","onyx","sage","shimmer","verse"),aq=["Zephyr","Puck","Charon","Kore","Fenrir","Leda","Orus","Aoede","Callirrhoe","Autonoe","Enceladus","Iapetus","Umbriel","Algieba","Despina","Erinome","Algenib","Rasalgethi","Laomedeia","Achernar","Alnilam","Schedar","Gacrux","Pulcherrima","Achird","Zubenelgenubi","Vindemiatrix","Sadachbia","Sadaltager","Sulafat"].map(a=>({id:a,name:a,type:"tts"})),ar={openai:{models:[{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS",type:"tts"},{id:"tts-1-hd",name:"TTS-1 HD",type:"tts"},{id:"tts-1",name:"TTS-1",type:"tts"}],voices:{"gpt-4o-mini-tts":ap,"tts-1":ao,"tts-1-hd":ao},allVoices:ap},openrouter:{models:[{id:"openai/gpt-4o-mini-tts",name:"GPT-4o Mini TTS",type:"tts"},{id:"openai/tts-1-hd",name:"TTS-1 HD",type:"tts"},{id:"openai/tts-1",name:"TTS-1",type:"tts"}],voices:{"openai/gpt-4o-mini-tts":ap,"openai/tts-1":ao,"openai/tts-1-hd":ao},allVoices:ap},elevenlabs:{models:[{id:"eleven_flash_v2_5",name:"Flash v2.5 (Fastest)",type:"tts"},{id:"eleven_turbo_v2_5",name:"Turbo v2.5 (Fast)",type:"tts"},{id:"eleven_multilingual_v2",name:"Multilingual v2 (Quality)",type:"tts"},{id:"eleven_monolingual_v1",name:"Monolingual v1 (English)",type:"tts"}]},"edge-tts":{defaults:[{id:"en-US-AriaNeural",name:"Aria (en-US)",type:"tts"},{id:"en-US-GuyNeural",name:"Guy (en-US)",type:"tts"},{id:"en-GB-SoniaNeural",name:"Sonia (en-GB)",type:"tts"},{id:"vi-VN-HoaiMyNeural",name:"Hoai My (vi-VN)",type:"tts"},{id:"vi-VN-NamMinhNeural",name:"Nam Minh (vi-VN)",type:"tts"},{id:"zh-CN-XiaoxiaoNeural",name:"Xiaoxiao (zh-CN)",type:"tts"},{id:"zh-CN-YunxiNeural",name:"Yunxi (zh-CN)",type:"tts"},{id:"fr-FR-DeniseNeural",name:"Denise (fr-FR)",type:"tts"},{id:"de-DE-KatjaNeural",name:"Katja (de-DE)",type:"tts"},{id:"ja-JP-NanamiNeural",name:"Nanami (ja-JP)",type:"tts"},{id:"ko-KR-SunHiNeural",name:"SunHi (ko-KR)",type:"tts"}]},"local-device":{defaults:[{id:"default",name:"System Default Voice",type:"tts"}]},"google-tts":{defaults:[{id:"af",name:"Afrikaans",type:"tts"},{id:"ar",name:"Arabic",type:"tts"},{id:"bg",name:"Bulgarian",type:"tts"},{id:"bn",name:"Bengali",type:"tts"},{id:"bs",name:"Bosnian",type:"tts"},{id:"ca",name:"Catalan",type:"tts"},{id:"cs",name:"Czech",type:"tts"},{id:"cy",name:"Welsh",type:"tts"},{id:"da",name:"Danish",type:"tts"},{id:"de",name:"German",type:"tts"},{id:"el",name:"Greek",type:"tts"},{id:"en",name:"English",type:"tts"},{id:"eo",name:"Esperanto",type:"tts"},{id:"es",name:"Spanish",type:"tts"},{id:"et",name:"Estonian",type:"tts"},{id:"fi",name:"Finnish",type:"tts"},{id:"fr",name:"French",type:"tts"},{id:"gu",name:"Gujarati",type:"tts"},{id:"hi",name:"Hindi",type:"tts"},{id:"hr",name:"Croatian",type:"tts"},{id:"hu",name:"Hungarian",type:"tts"},{id:"hy",name:"Armenian",type:"tts"},{id:"id",name:"Indonesian",type:"tts"},{id:"is",name:"Icelandic",type:"tts"},{id:"it",name:"Italian",type:"tts"},{id:"ja",name:"Japanese",type:"tts"},{id:"jw",name:"Javanese",type:"tts"},{id:"km",name:"Khmer",type:"tts"},{id:"kn",name:"Kannada",type:"tts"},{id:"ko",name:"Korean",type:"tts"},{id:"la",name:"Latin",type:"tts"},{id:"lv",name:"Latvian",type:"tts"},{id:"mk",name:"Macedonian",type:"tts"},{id:"ml",name:"Malayalam",type:"tts"},{id:"mr",name:"Marathi",type:"tts"},{id:"my",name:"Myanmar (Burmese)",type:"tts"},{id:"ne",name:"Nepali",type:"tts"},{id:"nl",name:"Dutch",type:"tts"},{id:"no",name:"Norwegian",type:"tts"},{id:"pl",name:"Polish",type:"tts"},{id:"pt",name:"Portuguese",type:"tts"},{id:"ro",name:"Romanian",type:"tts"},{id:"ru",name:"Russian",type:"tts"},{id:"si",name:"Sinhala",type:"tts"},{id:"sk",name:"Slovak",type:"tts"},{id:"sq",name:"Albanian",type:"tts"},{id:"sr",name:"Serbian",type:"tts"},{id:"su",name:"Sundanese",type:"tts"},{id:"sv",name:"Swedish",type:"tts"},{id:"sw",name:"Swahili",type:"tts"},{id:"ta",name:"Tamil",type:"tts"},{id:"te",name:"Telugu",type:"tts"},{id:"th",name:"Thai",type:"tts"},{id:"tl",name:"Filipino",type:"tts"},{id:"tr",name:"Turkish",type:"tts"},{id:"uk",name:"Ukrainian",type:"tts"},{id:"ur",name:"Urdu",type:"tts"},{id:"vi",name:"Vietnamese",type:"tts"},{id:"zh-CN",name:"Chinese (Simplified)",type:"tts"},{id:"zh-TW",name:"Chinese (Traditional)",type:"tts"}]},gemini:{models:[{id:"gemini-2.5-flash-preview-tts",name:"Gemini 2.5 Flash TTS",type:"tts"},{id:"gemini-2.5-pro-preview-tts",name:"Gemini 2.5 Pro TTS",type:"tts"}],voices:{"gemini-2.5-flash-preview-tts":aq,"gemini-2.5-pro-preview-tts":aq},allVoices:aq}},as="-review",at={cc:[{id:"claude-opus-4-7",name:"Claude Opus 4.7"},{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 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"}],cx:[{id:"gpt-5.5",name:"GPT 5.5"},{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{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"},{id:"gpt-5.5-image",name:"GPT 5.5 Image",type:"image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"]},{id:"gpt-5.4-image",name:"GPT 5.4 Image",type:"image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"]},{id:"gpt-5.3-image",name:"GPT 5.3 Image",type:"image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"]},{id:"gpt-5.2-image",name:"GPT 5.2 Image",type:"image",capabilities:["text2img","edit"],params:["size","quality","background","image_detail","output_format"]}].flatMap(a=>"llm"!==(a.type||"llm")||a.id.endsWith(as)?[a]:[a,{...a,id:`${a.id}${as}`,name:`${a.name} Review`,upstreamModelId:a.upstreamModelId||a.id,quotaFamily:"review"}]),gc:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"}],qw:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"},{id:"coder-model",name:"Qwen3.6 Coder Model"}],if:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"qwen3-235b",name:"Qwen3 235B A22B"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 Exp"},{id:"deepseek-v3.1",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-v3",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"iflow-rome-30ba3b",name:"iFlow ROME"}],ag:[{id:"gemini-3-flash-agent",name:"Gemini 3.5 Flash (High)"},{id:"gemini-3.5-flash-low",name:"Gemini 3.5 Flash (Medium)"},{id:"gemini-pro-agent",name:"Gemini 3.1 Pro (High)"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro (Low)"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Thinking)"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 (Thinking)"},{id:"gpt-oss-120b-medium",name:"GPT-OSS 120B (Medium)"},{id:"gemini-3-flash",name:"Gemini 3 Flash",thinking:!1}],gh:[{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o mini"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"gpt-5.4",name:"GPT-5.4"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-opus-4.7",name:"Claude Opus 4.7"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash"},{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"},{id:"goldeneye-free-auto",name:"GoldenEye"},{id:"text-embedding-3-small",name:"Text Embedding 3 Small (GitHub)",type:"embedding"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large (GitHub)",type:"embedding"}],kr:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",strip:["image","audio"]},{id:"qwen3-coder-next",name:"Qwen3 Coder Next",strip:["image","audio"]},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"claude-sonnet-4.5-thinking",name:"Claude Sonnet 4.5 (Thinking)"},{id:"claude-haiku-4.5-thinking",name:"Claude Haiku 4.5 (Thinking)"},{id:"claude-sonnet-4.5-agentic",name:"Claude Sonnet 4.5 (Agentic)"},{id:"claude-haiku-4.5-agentic",name:"Claude Haiku 4.5 (Agentic)"},{id:"claude-sonnet-4.5-thinking-agentic",name:"Claude Sonnet 4.5 (Thinking + Agentic)"},{id:"claude-haiku-4.5-thinking-agentic",name:"Claude Haiku 4.5 (Thinking + Agentic)"}],cu:[{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"},{id:"claude-4.6-opus-max",name:"Claude 4.6 Opus Max"},{id:"claude-4.6-sonnet-medium-thinking",name:"Claude 4.6 Sonnet Medium Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"}],kmc:[{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],kc:[{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"}],"opencode-go":[{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5",name:"GLM 5"},{id:"qwen3.5-plus",name:"Qwen 3.5 Plus"},{id:"qwen3.6-plus",name:"Qwen 3.6 Plus"},{id:"mimo-v2-pro",name:"MiMo V2 Pro"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"minimax-m2.7",name:"MiniMax M2.7",targetFormat:"claude"},{id:"minimax-m2.5",name:"MiniMax M2.5",targetFormat:"claude"}],oc:[],cl:[{id:"anthropic/claude-opus-4.7",name:"Claude Opus 4.7"},{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6"},{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"kwaipilot/kat-coder-pro",name:"KAT Coder Pro"}],openai:[{id:"gpt-5.4",name:"GPT-5.4"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini"},{id:"gpt-5.4-nano",name:"GPT-5.4 Nano"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-nano",name:"GPT-5 Nano"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini"},{id:"gpt-4.1-nano",name:"GPT-4.1 Nano"},{id:"o3",name:"O3"},{id:"o3-mini",name:"O3 Mini"},{id:"o3-pro",name:"O3 Pro"},{id:"o4-mini",name:"O4 Mini"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",type:"embedding"},{id:"text-embedding-3-small",name:"Text Embedding 3 Small",type:"embedding"},{id:"text-embedding-ada-002",name:"Text Embedding Ada 002",type:"embedding"},{id:"tts-1",name:"TTS-1",type:"tts"},{id:"tts-1-hd",name:"TTS-1 HD",type:"tts"},{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS",type:"tts"},{id:"whisper-1",name:"Whisper 1",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"gpt-4o-transcribe",name:"GPT-4o Transcribe",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"gpt-4o-mini-transcribe",name:"GPT-4o Mini Transcribe",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"gpt-image-1",name:"GPT Image 1",type:"image",params:["n","size","quality","response_format"]},{id:"dall-e-3",name:"DALL-E 3",type:"image",params:["size","quality","style","response_format"]},{id:"dall-e-2",name:"DALL-E 2",type:"image",params:["n","size","response_format"]}],anthropic:[{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"}],gemini:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"},{id:"gemini-2.0-flash-lite",name:"Gemini 2.0 Flash Lite"},{id:"gemma-4-31b-it",name:"Gemma 4 31B IT"},{id:"gemini-embedding-2-preview",name:"Gemini Embedding 2 Preview",type:"embedding"},{id:"gemini-embedding-001",name:"Gemini Embedding 001",type:"embedding"},{id:"text-embedding-005",name:"Text Embedding 005",type:"embedding"},{id:"text-embedding-004",name:"Text Embedding 004 (Legacy)",type:"embedding"},{id:"gemini-3.1-flash-image-preview",name:"Gemini 3.1 Flash Image (Nano Banana 2)",type:"image",params:[]},{id:"gemini-3-pro-image-preview",name:"Gemini 3 Pro Image (Nano Banana Pro)",type:"image",params:[]},{id:"gemini-2.5-flash-image",name:"Gemini 2.5 Flash Image (Nano Banana)",type:"image",params:[]},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Best)",type:"stt",params:["language","prompt"]},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",type:"stt",params:["language","prompt"]},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite (Cheapest)",type:"stt",params:["language","prompt"]},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash",type:"stt",params:["language","prompt"]}],openrouter:[{id:"openai/text-embedding-3-large",name:"OpenAI Text Embedding 3 Large",type:"embedding"},{id:"openai/text-embedding-3-small",name:"OpenAI Text Embedding 3 Small",type:"embedding"},{id:"openai/text-embedding-ada-002",name:"OpenAI Text Embedding Ada 002",type:"embedding"},{id:"qwen/qwen3-embedding-8b",name:"Qwen3 Embedding 8B",type:"embedding"},{id:"perplexity/pplx-embed-v1-4b",name:"Perplexity Embed V1 4B",type:"embedding"},{id:"perplexity/pplx-embed-v1-0.6b",name:"Perplexity Embed V1 0.6B",type:"embedding"},{id:"nvidia/llama-nemotron-embed-vl-1b-v2:free",name:"NVIDIA Nemotron Embed VL 1B V2 (Free)",type:"embedding"},{id:"openai/gpt-4o-mini-tts",name:"GPT-4o Mini TTS",type:"tts"},{id:"openai/tts-1-hd",name:"TTS-1 HD",type:"tts"},{id:"openai/tts-1",name:"TTS-1",type:"tts"},{id:"openai/dall-e-3",name:"DALL-E 3 (via OpenRouter)",type:"image",params:["size","quality","style","response_format"]},{id:"openai/gpt-image-1",name:"GPT Image 1 (via OpenRouter)",type:"image",params:["n","size","quality","response_format"]},{id:"google/imagen-3.0-generate-002",name:"Imagen 3 (via OpenRouter)",type:"image",params:["n","size"]},{id:"black-forest-labs/FLUX.1-schnell",name:"FLUX.1 Schnell (via OpenRouter)",type:"image",params:["n","size"]}],glm:[{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"}],"glm-cn":[{id:"glm-5.1",name:"GLM 5.1"},{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM-4.7"},{id:"glm-4.6",name:"GLM-4.6"},{id:"glm-4.5-air",name:"GLM-4.5-Air"}],kimi:[{id:"kimi-k2.6",name:"Kimi K2.6"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],minimax:[{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"},{id:"minimax-image-01",name:"MiniMax Image 01",type:"image",params:["n","size","response_format"]}],blackbox:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o mini"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Legacy)"},{id:"claude-opus-4-6",name:"Claude Opus 4.6 (Legacy)"},{id:"deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek-v3-671b",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"o1",name:"OpenAI o1"},{id:"o3-mini",name:"OpenAI o3-mini"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"}],"minimax-cn":[{id:"MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],alicode:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],"alicode-intl":[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],"volcengine-ark":[{id:"Doubao-Seed-2.0-Code",name:"Doubao-Seed-2.0-Code"},{id:"Doubao-Seed-2.0-pro",name:"Doubao-Seed-2.0-pro"},{id:"Doubao-Seed-2.0-lite",name:"Doubao-Seed-2.0-lite"},{id:"Doubao-Seed-Code",name:"Doubao-Seed-Code"},{id:"GLM-5.1",name:"GLM-5.1"},{id:"MiniMax-M2.7",name:"MiniMax-M2.7"},{id:"Kimi-K2.6",name:"Kimi-K2.6"},{id:"MiniMax-M2.5",name:"MiniMax-M2.5"},{id:"Kimi-K2.5",name:"Kimi-K2.5"},{id:"GLM-4.7",name:"GLM-4.7"},{id:"DeepSeek-V3.2",name:"DeepSeek-V3.2"}],"cloudflare-ai":[{id:"@cf/meta/llama-3.2-1b-instruct",name:"Llama 3.2 1B Instruct"},{id:"@cf/meta/llama-3.2-3b-instruct",name:"Llama 3.2 3B Instruct"},{id:"@cf/meta/llama-3.1-8b-instruct-fp8-fast",name:"Llama 3.1 8B Instruct FP8 Fast"},{id:"@cf/meta/llama-3.1-8b-instruct-awq",name:"Llama 3.1 8B Instruct AWQ"},{id:"@cf/mistralai/mistral-small-3.1-24b-instruct",name:"Mistral Small 3.1 24B Instruct"},{id:"@cf/meta/llama-3.1-70b-instruct-fp8-fast",name:"Llama 3.1 70B Instruct FP8 Fast"},{id:"@cf/meta/llama-3.3-70b-instruct-fp8-fast",name:"Llama 3.3 70B Instruct FP8 Fast"},{id:"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",name:"DeepSeek R1 Distill Qwen 32B"},{id:"@cf/moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"@cf/moonshotai/kimi-k2.6",name:"Kimi K2.6"},{id:"@cf/zai-org/glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"@cf/qwen/qwq-32b",name:"QwQ 32B"},{id:"@cf/qwen/qwen2.5-coder-32b-instruct",name:"Qwen 2.5 Coder 32B Instruct"},{id:"@cf/black-forest-labs/flux-2-klein-9b",name:"FLUX.2 Klein 9B",type:"image",params:["size"]},{id:"@cf/black-forest-labs/flux-2-klein-4b",name:"FLUX.2 Klein 4B",type:"image",params:["size"]},{id:"@cf/black-forest-labs/flux-2-dev",name:"FLUX.2 Dev",type:"image",params:["size"]},{id:"@cf/leonardo/lucid-origin",name:"Lucid Origin",type:"image",params:["size"]},{id:"@cf/leonardo/phoenix-1.0",name:"Phoenix 1.0",type:"image",params:["size"]},{id:"@cf/black-forest-labs/flux-1-schnell",name:"FLUX.1 Schnell",type:"image",params:["size"]},{id:"@cf/bytedance/stable-diffusion-xl-lightning",name:"SDXL Lightning",type:"image",params:["size"]},{id:"@cf/lykon/dreamshaper-8-lcm",name:"DreamShaper 8 LCM",type:"image",params:["size"]},{id:"@cf/runwayml/stable-diffusion-v1-5-img2img",name:"Stable Diffusion v1.5 Img2Img",type:"image",params:["size"],capabilities:["edit"]},{id:"@cf/runwayml/stable-diffusion-v1-5-inpainting",name:"Stable Diffusion v1.5 Inpainting",type:"image",params:["size"],capabilities:["edit","mask"]},{id:"@cf/stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0",type:"image",params:["size"]}],byteplus:[{id:"seed-2-0-pro-260328",name:"Seed 2.0 Pro"},{id:"seed-2-0-code-preview-260328",name:"Seed 2.0 Code Preview"},{id:"seed-2-0-mini-260215",name:"Seed 2.0 Mini"},{id:"seed-2-0-lite-260228",name:"Seed 2.0 Lite"},{id:"kimi-k2-thinking-251104",name:"Kimi K2 Thinking"},{id:"glm-4-7-251222",name:"GLM 4.7"},{id:"gpt-oss-120b-250805",name:"GPT-OSS-120B"}],deepseek:[{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek-v4-pro-max",name:"DeepSeek V4 Pro Max",upstreamModelId:"deepseek-v4-pro"},{id:"deepseek-v4-pro-none",name:"DeepSeek V4 Pro No Thinking",upstreamModelId:"deepseek-v4-pro"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash"},{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],commandcode:[{id:"deepseek/deepseek-v4-pro",name:"DeepSeek V4 Pro"},{id:"deepseek/deepseek-v4-flash",name:"DeepSeek V4 Flash"},{id:"moonshotai/Kimi-K2.6",name:"Kimi K2.6"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-5.1",name:"GLM 5.1"},{id:"zai-org/GLM-5",name:"GLM 5"},{id:"MiniMaxAI/MiniMax-M2.7",name:"MiniMax M2.7"},{id:"MiniMaxAI/MiniMax-M2.5",name:"MiniMax M2.5"},{id:"Qwen/Qwen3.6-Max-Preview",name:"Qwen 3.6 Max Preview"},{id:"Qwen/Qwen3.6-Plus",name:"Qwen 3.6 Plus"},{id:"stepfun/Step-3.5-Flash",name:"Step 3.5 Flash"}],groq:[{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"},{id:"whisper-large-v3",name:"Whisper Large v3",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"whisper-large-v3-turbo",name:"Whisper Large v3 Turbo",type:"stt",params:["language","response_format","temperature","prompt"]},{id:"distil-whisper-large-v3-en",name:"Distil Whisper Large v3 EN",type:"stt",params:["language","response_format","temperature","prompt"]}],xai:[{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"},{id:"grok-2-image-1212",name:"Grok 2 Image",type:"image",params:["n","response_format"]}],mistral:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"},{id:"mistral-embed",name:"Mistral Embed",type:"embedding"}],perplexity:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}],together:[{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"},{id:"BAAI/bge-large-en-v1.5",name:"BGE Large EN v1.5",type:"embedding"},{id:"togethercomputer/m2-bert-80M-8k-retrieval",name:"M2 BERT 80M 8K",type:"embedding"}],fireworks:[{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"},{id:"nomic-ai/nomic-embed-text-v1.5",name:"Nomic Embed Text v1.5",type:"embedding"}],cerebras:[{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:"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:"minimaxai/minimax-m2.7",name:"Minimax M2.7"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"nvidia/nv-embedqa-e5-v5",name:"NV EmbedQA E5 v5",type:"embedding"},{id:"nvidia/parakeet-ctc-1.1b-asr",name:"Parakeet CTC 1.1B",type:"stt",params:["language"]}],nebius:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"},{id:"Qwen/Qwen3-Embedding-8B",name:"Qwen3 Embedding 8B",type:"embedding"}],"voyage-ai":[{id:"voyage-3-large",name:"Voyage 3 Large",type:"embedding"},{id:"voyage-3.5",name:"Voyage 3.5",type:"embedding"},{id:"voyage-3.5-lite",name:"Voyage 3.5 Lite",type:"embedding"},{id:"voyage-code-3",name:"Voyage Code 3",type:"embedding"},{id:"voyage-finance-2",name:"Voyage Finance 2",type:"embedding"},{id:"voyage-law-2",name:"Voyage Law 2",type:"embedding"},{id:"voyage-multilingual-2",name:"Voyage Multilingual 2",type:"embedding"}],siliconflow:[{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"}],"xiaomi-mimo":[{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro"},{id:"mimo-v2.5",name:"MiMo V2.5"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"mimo-v2-flash",name:"MiMo V2 Flash"}],"xiaomi-tokenplan":[{id:"mimo-v2.5-pro",name:"MiMo V2.5 Pro"},{id:"mimo-v2.5",name:"MiMo V2.5"},{id:"mimo-v2-pro",name:"MiMo V2 Pro"},{id:"mimo-v2-omni",name:"MiMo V2 Omni"},{id:"mimo-v2-tts",name:"MiMo V2 TTS"},{id:"mimo-v2.5-tts",name:"MiMo V2.5 TTS"},{id:"mimo-v2.5-tts-voiceclone",name:"MiMo V2.5 TTS Voice Clone"},{id:"mimo-v2.5-tts-voicedesign",name:"MiMo V2.5 TTS Voice Design"}],hyperbolic:[{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"}],ollama:[{id:"gpt-oss:120b",name:"GPT OSS 120B"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"qwen3.5",name:"Qwen3.5"}],vertex:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}],"vertex-partner":[{id:"deepseek-ai/deepseek-v3.2-maas",name:"DeepSeek V3.2 (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-thinking-maas",name:"Qwen3 Next 80B Thinking (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-instruct-maas",name:"Qwen3 Next 80B Instruct (Vertex)"},{id:"zai-org/glm-5-maas",name:"GLM-5 (Vertex)"}],"grok-web":[{id:"grok-3",name:"Grok 3"},{id:"grok-3-mini",name:"Grok 3 Mini (Thinking)"},{id:"grok-3-thinking",name:"Grok 3 Thinking"},{id:"grok-4",name:"Grok 4"},{id:"grok-4-mini",name:"Grok 4 Mini (Thinking)"},{id:"grok-4-thinking",name:"Grok 4 Thinking"},{id:"grok-4-heavy",name:"Grok 4 Heavy (SuperGrok)"},{id:"grok-4.1-mini",name:"Grok 4.1 Mini (Thinking)"},{id:"grok-4.1-fast",name:"Grok 4.1 Fast"},{id:"grok-4.1-expert",name:"Grok 4.1 Expert"},{id:"grok-4.1-thinking",name:"Grok 4.1 Thinking"},{id:"grok-4.2",name:"Grok 4.2 (4.20 Beta)"}],"perplexity-web":[{id:"pplx-auto",name:"Perplexity Auto (Free)"},{id:"pplx-sonar",name:"Perplexity Sonar"},{id:"pplx-gpt",name:"GPT-5.4 (via Perplexity)"},{id:"pplx-gemini",name:"Gemini 3.1 Pro (via Perplexity)"},{id:"pplx-sonnet",name:"Claude Sonnet 4.6 (via Perplexity)"},{id:"pplx-opus",name:"Claude Opus 4.6 (via Perplexity)"},{id:"pplx-nemotron",name:"Nemotron 3 Super (via Perplexity)"}],...function(){let a={};for(let[b,c]of Object.entries(ar))c.models&&(a[`${b}-tts-models`]=c.models),c.allVoices&&(a[`${b}-tts-voices`]=c.allVoices),c.defaults&&(a[b]=c.defaults);return a["openai-tts-voices"]=ar.openai.allVoices,a["openrouter-tts-voices"]=ar.openrouter.allVoices,a}(),nanobanana:[{id:"nanobanana-flash",name:"NanoBanana Flash",type:"image",params:["n","size"]},{id:"nanobanana-pro",name:"NanoBanana Pro",type:"image",params:["n","size"]}],sdwebui:[{id:"stable-diffusion-v1-5",name:"Stable Diffusion v1.5",type:"image",params:["n","size"]},{id:"sdxl-base-1.0",name:"SDXL Base 1.0",type:"image",params:["n","size"]}],comfyui:[{id:"flux-dev",name:"FLUX Dev",type:"image",params:["n","size"]},{id:"sdxl",name:"SDXL",type:"image",params:["n","size"]}],huggingface:[{id:"black-forest-labs/FLUX.1-schnell",name:"FLUX.1 Schnell",type:"image",params:[]},{id:"stabilityai/stable-diffusion-xl-base-1.0",name:"SDXL Base 1.0",type:"image",params:[]},{id:"openai/whisper-large-v3",name:"Whisper Large v3 (HF)",type:"stt",params:["language"]},{id:"openai/whisper-small",name:"Whisper Small (HF)",type:"stt",params:["language"]}],agentrouter:[{id:"claude-opus-4-6",name:"Claude 4.6 Opus"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"},{id:"glm-5.1",name:"GLM 5.1"},{id:"deepseek-v3.2",name:"DeepSeek V3.2"}],aimlapi:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"},{id:"gemini-2.0-flash-exp",name:"Gemini 2.0 Flash"},{id:"meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo",name:"Llama 3.1 70B"}],novita:[{id:"deepseek/deepseek-r1",name:"DeepSeek R1"},{id:"deepseek/deepseek-v3",name:"DeepSeek V3"},{id:"meta-llama/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"qwen/qwen-2.5-72b-instruct",name:"Qwen 2.5 72B"}],modal:[{id:"auto",name:"Auto (User-hosted)"}],reka:[{id:"reka-flash-3",name:"Reka Flash 3"},{id:"reka-edge-2603",name:"Reka Edge 2603"}],nlpcloud:[{id:"chatdolphin",name:"ChatDolphin"},{id:"dolphin",name:"Dolphin"},{id:"finetuned-llama-3-70b",name:"Llama 3 70B (Finetuned)"}],bazaarlink:[{id:"auto:free",name:"Auto Free (Zero Cost)"},{id:"auto",name:"Auto (Best Model)"}],completions:[{id:"claude-opus-4",name:"Claude Opus 4"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"gpt-4o",name:"GPT-4o"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"}],enally:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"claude-3-5-sonnet",name:"Claude 3.5 Sonnet"}],freetheai:[{id:"gpt-4o",name:"GPT-4o"},{id:"claude-3-5-sonnet",name:"Claude 3.5 Sonnet"},{id:"gemini-1.5-pro",name:"Gemini 1.5 Pro"},{id:"deepseek-chat",name:"DeepSeek Chat"}],llm7:[{id:"gpt-4o-mini",name:"GPT-4o Mini"},{id:"gpt-4.1-mini",name:"GPT-4.1 Mini"},{id:"gemini-1.5-flash",name:"Gemini 1.5 Flash"}],lepton:[{id:"llama3-1-405b",name:"Llama 3.1 405B"},{id:"llama3-1-70b",name:"Llama 3.1 70B"},{id:"llama3-1-8b",name:"Llama 3.1 8B"},{id:"mixtral-8x7b",name:"Mixtral 8x7B"}],kluster:[{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"},{id:"meta-llama/Llama-4-Scout-17B-16E-Instruct",name:"Llama 4 Scout"},{id:"Qwen/Qwen3-235B-A22B-Instruct",name:"Qwen3 235B"}],ai21:[{id:"jamba-large",name:"Jamba 1.5 Large"},{id:"jamba-mini",name:"Jamba 1.5 Mini"}],"inference-net":[{id:"meta-llama/llama-3.3-70b-instruct/fp-16",name:"Llama 3.3 70B"},{id:"deepseek/deepseek-v3-0324",name:"DeepSeek V3"},{id:"mistralai/mistral-nemo-12b-instruct/fp-16",name:"Mistral Nemo 12B"}],predibase:[{id:"llama-3-2-3b-instruct",name:"Llama 3.2 3B"},{id:"llama-3-1-8b-instruct",name:"Llama 3.1 8B"},{id:"qwen2-5-7b-instruct",name:"Qwen 2.5 7B"}],bytez:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"mistralai/Mistral-7B-Instruct-v0.3",name:"Mistral 7B v0.3"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"}],morph:[{id:"morph-v3-large",name:"Morph V3 Large"},{id:"morph-v3-fast",name:"Morph V3 Fast"}],longcat:[{id:"LongCat-Flash-Chat",name:"LongCat Flash Chat"},{id:"LongCat-Flash-Thinking",name:"LongCat Flash Thinking"},{id:"LongCat-Flash-Lite",name:"LongCat Flash Lite"}],puter:[{id:"gpt-5",name:"GPT-5"},{id:"claude-opus-4",name:"Claude Opus 4"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro"},{id:"grok-4",name:"Grok 4"},{id:"deepseek-chat",name:"DeepSeek V3"}],uncloseai:[{id:"auto",name:"Auto (Free)"},{id:"gpt-4o-mini",name:"GPT-4o Mini"}],scaleway:[{id:"qwen3-235b-a22b-instruct-2507",name:"Qwen3 235B"},{id:"llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"mistral-small-3.1-24b-instruct-2503",name:"Mistral Small 3.1"}],deepinfra:[{id:"meta-llama/Meta-Llama-3.1-70B-Instruct",name:"Llama 3.1 70B"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"}],sambanova:[{id:"Meta-Llama-3.1-405B-Instruct",name:"Llama 3.1 405B"},{id:"Meta-Llama-3.1-70B-Instruct",name:"Llama 3.1 70B"},{id:"Meta-Llama-3.1-8B-Instruct",name:"Llama 3.1 8B"}],nscale:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"}],baseten:[{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"}],publicai:[{id:"auto",name:"Auto (Community)"}],"nous-research":[{id:"Hermes-4-405B",name:"Hermes 4 405B"},{id:"Hermes-4-70B",name:"Hermes 4 70B"}],glhf:[{id:"hf:meta-llama/Meta-Llama-3.1-405B-Instruct",name:"Llama 3.1 405B"},{id:"hf:meta-llama/Meta-Llama-3.1-70B-Instruct",name:"Llama 3.1 70B"},{id:"hf:Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"}],deepgram:[{id:"nova-3",name:"Nova 3",type:"stt",params:["language"]},{id:"nova-2",name:"Nova 2",type:"stt",params:["language"]},{id:"whisper-large",name:"Whisper Large",type:"stt",params:["language"]}],assemblyai:[{id:"universal-3-pro",name:"Universal 3 Pro",type:"stt",params:["language"]},{id:"universal-2",name:"Universal 2",type:"stt",params:["language"]}],"fal-ai":[{id:"fal-ai/flux/schnell",name:"FLUX Schnell",type:"image",params:["n","size"]},{id:"fal-ai/flux/dev",name:"FLUX Dev",type:"image",params:["n","size"]},{id:"fal-ai/flux-pro/v1.1",name:"FLUX Pro v1.1",type:"image",params:["n","size"]},{id:"fal-ai/flux-pro/v1.1-ultra",name:"FLUX Pro v1.1 Ultra",type:"image",params:["n","size"]},{id:"fal-ai/recraft-v3",name:"Recraft V3",type:"image",params:["n","size","style"]},{id:"fal-ai/ideogram/v2",name:"Ideogram V2",type:"image",params:["n","size","style"]},{id:"fal-ai/stable-diffusion-v35-large",name:"SD 3.5 Large",type:"image",params:["n","size"]}],"stability-ai":[{id:"stable-image-ultra",name:"Stable Image Ultra",type:"image",params:["size"]},{id:"stable-image-core",name:"Stable Image Core",type:"image",params:["size","style"]},{id:"sd3.5-large",name:"Stable Diffusion 3.5 Large",type:"image",params:["size"]},{id:"sd3.5-large-turbo",name:"Stable Diffusion 3.5 Large Turbo",type:"image",params:["size"]},{id:"sd3.5-medium",name:"Stable Diffusion 3.5 Medium",type:"image",params:["size"]}],"black-forest-labs":[{id:"flux-pro-1.1",name:"FLUX Pro 1.1",type:"image",params:["n","size"]},{id:"flux-pro-1.1-ultra",name:"FLUX Pro 1.1 Ultra",type:"image",params:["size"]},{id:"flux-pro",name:"FLUX Pro",type:"image",params:["n","size"]},{id:"flux-dev",name:"FLUX Dev",type:"image",params:["n","size"]},{id:"flux-kontext-pro",name:"FLUX Kontext Pro (Edit)",type:"image",params:["size"],capabilities:["edit"]},{id:"flux-kontext-max",name:"FLUX Kontext Max (Edit)",type:"image",params:["size"],capabilities:["edit"]}],recraft:[{id:"recraftv3",name:"Recraft V3",type:"image",params:["n","size","style"]},{id:"recraftv2",name:"Recraft V2",type:"image",params:["n","size","style"]}],runwayml:[{id:"gen4_image",name:"Gen-4 Image",type:"image",params:["size"]},{id:"gen4_image_turbo",name:"Gen-4 Image Turbo",type:"image",params:["size"]},{id:"gen4_turbo",name:"Gen-4 Turbo",type:"video",params:[]},{id:"gen3a_turbo",name:"Gen-3 Alpha Turbo",type:"video",params:[]}]};function au(a){let b=at[a];return b?.[0]?.id||null}let av={claude:"cc",codex:"cx","gemini-cli":"gc",qwen:"qw",iflow:"if",antigravity:"ag",github:"gh",kiro:"kr",cursor:"cu","kimi-coding":"kmc",kilocode:"kc",cline:"cl",opencode:"oc",vertex:"vertex","vertex-partner":"vertex-partner"};Object.fromEntries(Object.keys(al).map(a=>[a,av[a]||a])),Object.entries(ag).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(at).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})));let aw={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"},ax={clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"]},ay={clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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",authorizeUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",userInfoUrl:"https://www.googleapis.com/oauth2/v1/userinfo",scopes:["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],apiEndpoint:"https://cloudcode-pa.googleapis.com",apiVersion:"v1internal",loadCodeAssistEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUserEndpoint:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser",loadCodeAssistUserAgent:"google-api-nodejs-client/9.15.1",loadCodeAssistApiClient:"google-cloud-sdk vscode_cloudshelleditor/0.1",loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:(d=(0,ah.platform)(),e=(0,ah.arch)(),"darwin"===d?"arm64"===e?2:1:"linux"===d?"arm64"===e?4:3:5*("win32"===d)),pluginType:2})};process.env.KIMI_CODING_OAUTH_CLIENT_ID;let az="5.0.82",aA={claude:{checkExpiry:!0,refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"Bluerouter",Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},"kimi-coding":{checkExpiry:!0,refreshable:!1},cursor:{tokenExists:!0},kilocode:{url:"https://api.kilo.ai/api/profile",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},codebuddy:{tokenExists:!0}};async function aB(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:function(a,b={}){let c,d=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",e={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`Bluerouter/${az}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"bluerouter","X-CLIENT-VERSION":az,"X-CORE-VERSION":az,"X-IS-MULTIROOT":"false",...b};return d&&(e.Authorization=d),e}(a,{Accept:"application/json"})})}async function aC(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?ax:ay,d=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:c})});if(!d.ok)return null;let e=await d.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||c}}if("codex"===b){let a=await fetch("https://auth.openai.com/oauth/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",client_id:"app_EMoamEEZ73f0CkXaXp7hrann",refresh_token:c})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("claude"===b){let a=await fetch("https://api.anthropic.com/v1/oauth/token",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:"9d1c250a-e61b-44d9-88ed-5944d1962f5e"})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("kiro"===b){let b=a.providerSpecificData||{},d=b.clientId||a.clientId,e=b.clientSecret||a.clientSecret,f=b.region||a.region;if(d&&e){let a=`https://oidc.${f||"us-east-1"}.amazonaws.com/token`,b=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:e,refreshToken:c,grantType:"refresh_token"})});if(!b.ok)return null;let g=await b.json();return{accessToken:g.accessToken,expiresIn:g.expiresIn||3600,refreshToken:g.refreshToken||c}}let g=await fetch("https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:c})});if(!g.ok)return null;let h=await g.json();return{accessToken:h.accessToken,expiresIn:h.expiresIn||3600,refreshToken:h.refreshToken||c}}if("qwen"===b){let a=await fetch("https://chat.qwen.ai/api/v1/oauth2/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:c,client_id:"f0304373b74a44d2b584a3fb70ca9e56"})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("cline"===b){let a=await fetch("https://api.cline.bot/api/v1/auth/refresh",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:c,grantType:"refresh_token",clientType:"extension"})});if(!a.ok)return null;let b=await a.json(),d=b?.data||b,e=d?.expiresAt?Math.max(1,Math.floor((new Date(d.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:d?.accessToken,expiresIn:e,refreshToken:d?.refreshToken||c}}return null}catch(a){return console.log(`Error refreshing ${b} token:`,a.message),null}}async function aD(a,b=null){var c;let d=aA[a.provider];if(!d)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(d.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let e=a.accessToken,f=!1,g=null,h=!!(c=a).expiresAt&&new Date(c.expiresAt).getTime()<=Date.now()+3e5;if(d.refreshable&&h&&a.refreshToken){let b=await aC(a);if(!b)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};e=b.accessToken,f=!0,g=b}if(d.checkExpiry)return f?{valid:!0,error:null,refreshed:f,newTokens:g}:h?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("cline"===a.provider){let b=async a=>{let b=await aB(a);return b.ok?{valid:!0,error:null,refreshed:f,newTokens:g}:401===b.status?{valid:!1,error:"Token invalid or revoked",refreshed:f}:403===b.status?{valid:!1,error:"Access denied",refreshed:f}:{valid:!1,error:`API returned ${b.status}`,refreshed:f}},c=await b(e);if(c.valid||"Token invalid or revoked"!==c.error||!a.refreshToken)return c;let d=await aC(a);return d?.accessToken?(f=!0,g=d,e=d.accessToken,await b(e)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let c=d.buildUrl?d.buildUrl(e):d.url,h=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e}`,...d.extraHeaders},i={method:d.method,headers:h};d.body&&(i.body=d.body);let j=await aE(c,i,b);if(j.ok||d.acceptStatuses&&d.acceptStatuses.includes(j.status))return{valid:!0,error:null,refreshed:f,newTokens:g};if(401===j.status&&d.refreshable&&!f&&a.refreshToken){let e=await aC(a);if(e){let a=d.buildUrl?d.buildUrl(e.accessToken):c,f=d.noAuth?{...d.extraHeaders}:{[d.authHeader]:`${d.authPrefix}${e.accessToken}`,...d.extraHeaders},g={method:d.method,headers:f};d.body&&(g.body=d.body);let h=await aE(a,g,b);if(h.ok||d.acceptStatuses&&d.acceptStatuses.includes(h.status))return{valid:!0,error:null,refreshed:!0,newTokens:e}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}if(401===j.status)return{valid:!1,error:"Token invalid or revoked",refreshed:f};if(403===j.status)return{valid:!1,error:"Access denied",refreshed:f};return{valid:!1,error:`API returned ${j.status}`,refreshed:f}}catch(a){return{valid:!1,error:a.message,refreshed:f}}}async function aE(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await c.e(12).then(c.bind(c,80012));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await c.e(12).then(c.bind(c,80012));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function aF(a,b=null){if(ae(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await aE(`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if(af(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=await aE(`${c}/models`,{headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01",Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await aE(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:au("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await aE(g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await aE("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await aE("https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await aE("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await aE(`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await aE("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await aE("https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await aE("https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await aE({minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await aE("https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await aE(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:au(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await aE(aw[a.provider],{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:au(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await aE("https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await aE("https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await aE("https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await aE("https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nvidia":{let c=await aE("https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await aE("https://api.perplexity.ai/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await aE("https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await aE("https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await aE("https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await aE("https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await aE("https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await aE("https://api.siliconflow.cn/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await aE("https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let b=await fetch("https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}});return{valid:b.ok,error:b.ok?null:"Invalid API key"}}case"ollama-local":{let b=(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,""),c=await fetch(`${b}/api/tags`);return{valid:c.ok,error:c.ok?null:`Ollama not reachable at ${b}`}}case"deepgram":{let c=await aE("https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await aE("https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await aE("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await aE("https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await aE("https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await aE("https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await aE("https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function aG(a){let b,c=await (0,h.Mc)(a);if(!c)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};let d=await Y(c.providerSpecificData||{});if(d.connectionProxyEnabled&&d.connectionProxyUrl&&!d.vercelRelayUrl){let b=await _({proxyUrl:d.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,h.rj)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let e=Date.now();b="apikey"===c.authType||"cookie"===c.authType?await aF(c,d):await aD(c,d);let f=Date.now()-e,g={testStatus:b.valid?"active":"error",lastError:b.valid?null:b.error,lastErrorAt:b.valid?null:new Date().toISOString()};return b.refreshed&&b.newTokens&&(g.accessToken=b.newTokens.accessToken,b.newTokens.refreshToken&&(g.refreshToken=b.newTokens.refreshToken),b.newTokens.expiresIn&&(g.expiresAt=new Date(Date.now()+1e3*b.newTokens.expiresIn).toISOString())),await (0,h.rj)(a,g),{valid:b.valid,error:b.error,latencyMs:f,testedAt:new Date().toISOString()}}function aH(a,b,c=1,d=3600){let e=Number.parseInt(a,10);return!Number.isFinite(e)||e<c?b:Math.min(e,d)}function aI(a={}){var b;let c=a&&"object"==typeof a?a:{};return{enabled:!0===c.enabled,intervalSec:aH(c.intervalSec,60,10,86400),failureThreshold:aH(c.failureThreshold,3,1,20),timeoutMs:aH(c.timeoutMs,15e3,1e3,12e4),prompt:"string"==typeof c.prompt&&c.prompt.trim()?c.prompt.trim():"Say hi",disableThinking:!1!==c.disableThinking,model:"string"==typeof(b=c.model||c.healthModel||c.testModel)?b.trim():""}}let aJ=Number.parseInt(process.env.PROVIDER_HEALTHCHECK_TICK_MS||"5000",10),aK="__bluerouterProviderHealthMonitorV2";function aL(){return globalThis[aK]||(globalThis[aK]={timer:null,running:!1,startedAt:null,lastTickAt:null,tickCount:0,lastMonitorError:null}),globalThis[aK]}function aM(){return new Date().toISOString()}function aN(a,b={}){return function(a={},b={},c=""){let d=function(a={},b=""){return function(a={}){let b=a&&"object"==typeof a?a:{};return{overrideConnections:!0===b.overrideConnections,healthCheck:aI(b.healthCheck||b)}}((a.providerHealthChecks||{})[b]||{})}(b,c||a.provider||"");return d.overrideConnections?{healthCheck:d.healthCheck,source:"provider",providerOverride:!0}:{healthCheck:aI(a.healthCheck||{}),source:"connection",providerOverride:!1}}(a,b,a.provider||"")}function aO(a=""){return String(a||"").trim().replace(/\/+$/,"")}function aP(a={}){return a.apiKey||a.accessToken||a.providerSpecificData?.apiKey||""}async function aQ(a){let b=await a.text().catch(()=>"");return b?b.slice(0,500):""}async function aR(a,b){var c;let d="string"==typeof(c=b.model)?c.trim():"";if(!d)return aG(a.id);let e=Date.now(),f=b.prompt||"Say hi",g=function(a=""){if(af(a))return"anthropic";if(ae(a)||"cloudflare-ai"===a)return"openai";if("gemini"===a)return"gemini";if("github"===a)return"openai";let b=aw?.[a]||"";return b.includes("/messages")?"anthropic":b.includes("/chat/completions")||b.includes("/responses")?"openai":null}(a.provider||""),h=function(a,b){let c=a.provider||"",d=a.providerSpecificData?.baseUrl||"";if("cloudflare-ai"===c){let b=a.providerSpecificData?.accountId||a.accountId;return b?`https://api.cloudflare.com/client/v4/accounts/${encodeURIComponent(b)}/ai/v1/chat/completions`:""}if("github"===c)return"https://api.githubcopilot.com/chat/completions";if("gemini"===c)return"https://generativelanguage.googleapis.com/v1beta";if(af(c)){let a=function(a=""){let b=aO(a);return b?(b.endsWith("/messages")&&(b=aO(b.slice(0,-9))),b.endsWith("/v1")||(b=`${b}/v1`),b):""}(d);return a?`${a}/messages`:""}if(ae(c))return function(a=""){let b=aO(a);return b?b.endsWith("/chat/completions")||b.endsWith("/responses")?b:`${b}/chat/completions`:""}(d);let e=aw?.[c]||"";return e?aO(e):"anthropic"===b&&"anthropic"===c?"https://api.anthropic.com/v1/messages":"openai"===b&&"openai"===c?"https://api.openai.com/v1/chat/completions":""}(a,g);if(!g||!h)return aG(a.id);try{let c=function(a,b,c,d,e,f){let g=a.provider||"",h=aP(a);if("gemini"===b){let b=aP(a);if(!b)return{error:"Missing Gemini API key"};let c=function(a=""){return String(a||"").split("/").filter(Boolean).map(a=>encodeURIComponent(a)).join("/")}(e.startsWith("models/")?e:`models/${e}`);return{url:`https://generativelanguage.googleapis.com/v1beta/${c}:generateContent?key=${encodeURIComponent(b)}`,headers:{"Content-Type":"application/json"},body:{contents:[{role:"user",parts:[{text:f}]}],generationConfig:{maxOutputTokens:1}}}}if(!h)return{error:"Missing API key or access token"};if("anthropic"===b)return{url:c,headers:{"Content-Type":"application/json","x-api-key":h,"anthropic-version":"2023-06-01",Authorization:`Bearer ${h}`},body:{model:e,max_tokens:1,messages:[{role:"user",content:f}]}};if("openai"===b){let a={model:e,max_tokens:1,stream:!1,messages:[{role:"user",content:f}]};!1!==d.disableThinking&&ae(g)&&(a.chat_template_kwargs={enable_thinking:!1});let b={"Content-Type":"application/json",Authorization:`Bearer ${h}`};return"github"===g&&(b["Copilot-Integration-Id"]="vscode-chat",b["editor-version"]="vscode/1.107.1",b["editor-plugin-version"]="copilot-chat/0.26.7",b["user-agent"]="GitHubCopilotChat/0.26.7"),{url:c,headers:b,body:a}}return{error:"Direct chat healthcheck is not supported for this provider"}}(a,g,h,b,d,f);if(c.error)return{valid:!1,error:c.error,latencyMs:Date.now()-e,testedAt:aM()};let i=await fetch(c.url,{method:"POST",headers:c.headers,body:JSON.stringify(c.body),signal:AbortSignal.timeout(b.timeoutMs||15e3)}),j=Date.now()-e;if(i.ok)return{valid:!0,error:null,latencyMs:j,testedAt:aM()};let k=await aQ(i);return{valid:!1,error:`Health chat returned ${i.status}${k?`: ${k}`:""}`,latencyMs:j,testedAt:aM()}}catch(a){return{valid:!1,error:a.message||String(a),latencyMs:Date.now()-e,testedAt:aM()}}}async function aS(a,b={}){let c="dead"===a.healthStatus,d=b.testedAt||aM(),e={healthStatus:"alive",healthConsecutiveFailures:0,healthConsecutiveSuccesses:Number(a.healthConsecutiveSuccesses||0)+1,healthLastCheckedAt:d,healthLastOkAt:d,healthLastError:null,healthLastLatencyMs:Number(b.latencyMs||0),testStatus:"active",lastError:null,lastErrorAt:null};return c&&(e.healthLastRecoveredAt=d),await (0,h.rj)(a.id,e),e}async function aT(a,b={},c=null){let d=(c||aI(a.healthCheck||{})).failureThreshold||3,e=Number(a.healthConsecutiveFailures||0)+1,f=b.testedAt||aM(),g=b.error||"Health check failed",i=e>=d,j={healthStatus:i?"dead":"degraded",healthConsecutiveFailures:e,healthConsecutiveSuccesses:0,healthLastCheckedAt:f,healthLastError:g,healthLastLatencyMs:Number(b.latencyMs||0)};return i&&(j.testStatus="error",j.lastError=g,j.lastErrorAt=f),await (0,h.rj)(a.id,j),j}async function aU(a,b={}){let c,{healthCheck:d,source:e,providerOverride:f}=aN(a,b),g=aI(d||{}),h=g.timeoutMs||15e3;try{let b=new Promise(a=>{c=setTimeout(()=>a({valid:!1,error:`Health check timeout after ${h}ms`,latencyMs:h,testedAt:aM()}),h)}),d=await Promise.race([aR(a,{...g,healthSource:e,providerOverride:f}),b]);if(c&&clearTimeout(c),d?.valid){let b=await aS(a,d);return{connectionId:a.id,provider:a.provider,ok:!0,patch:b}}let i=await aT(a,d||{},g);return{connectionId:a.id,provider:a.provider,ok:!1,error:d?.error||"Health check failed",patch:i}}catch(d){c&&clearTimeout(c);let b=await aT(a,{error:d.message||String(d),testedAt:aM()},g);return{connectionId:a.id,provider:a.provider,ok:!1,error:d.message||String(d),patch:b}}}async function aV({force:a=!1,connectionId:b=null}={}){let c=await (0,g.getSettings)(),d=(await (0,h.getProviderConnections)({isActive:!0})).filter(d=>(!b||d.id===b)&&function(a,{settings:b={},force:c=!1}={}){if(!a||!1===a.isActive)return!1;let d=aI(aN(a,b).healthCheck||{});return!!c||!!d.enabled&&function(a){if(!a)return 1/0;let b=new Date(a).getTime();return Number.isFinite(b)?Date.now()-b:1/0}(a.healthLastCheckedAt)>=1e3*d.intervalSec}(d,{settings:c,force:a})),e=[];for(let a of d)e.push(await aU(a,c));return{checked:e.length,results:e,checkedAt:aM()}}async function aW(){let a=aL();if(!a.running){a.running=!0,a.lastTickAt=aM(),a.tickCount+=1;try{await aV(),a.lastMonitorError=null}catch(b){a.lastMonitorError=b.message||String(b),console.log("Provider health monitor error:",a.lastMonitorError)}finally{a.running=!1}}}function aX(){let a=aL();return!!a.timer||(a.startedAt=aM(),a.timer=setInterval(aW,Number.isFinite(aJ)&&aJ>=1e3?aJ:5e3),aW().catch(()=>{}),!0)}},72638:(a,b,c)=>{let{parseHeaders:d}=c(84285),{InvalidArgumentError:e}=c(39067),f=Symbol("resume");class g{#bl=!1;#bm=null;#K=!1;#bn;[f]=null;rawHeaders=null;rawTrailers=null;constructor(a){this.#bn=a}pause(){this.#bl=!0}resume(){this.#bl&&(this.#bl=!1,this[f]?.())}abort(a){this.#K||(this.#K=!0,this.#bm=a,this.#bn(a))}get aborted(){return this.#K}get reason(){return this.#bm}get paused(){return this.#bl}}a.exports=class a{#E;#z;constructor(a){this.#E=a}static unwrap(b){return b.onRequestStart?new a(b):b}onConnect(a,b){this.#z=new g(a),this.#E.onRequestStart?.(this.#z,b)}onResponseStarted(){return this.#E.onResponseStarted?.()}onUpgrade(a,b,c){this.#z.rawHeaders=b,this.#E.onRequestUpgrade?.(this.#z,a,d(b),c)}onHeaders(a,b,c,e){return this.#z[f]=c,this.#z.rawHeaders=b,this.#E.onResponseStart?.(this.#z,a,d(b),e),!this.#z.paused}onData(a){return this.#E.onResponseData?.(this.#z,a),!this.#z.paused}onComplete(a){this.#z.rawTrailers=a,this.#E.onResponseEnd?.(this.#z,d(a))}onError(a){if(!this.#E.onResponseError)throw new e("invalid onError method");this.#E.onResponseError?.(this.#z,a)}}},73135:(a,b,c)=>{let{addAbortListener:d}=c(84285),{RequestAbortedError:e}=c(39067),f=Symbol("kListener"),g=Symbol("kSignal");function h(a){a.abort?a.abort(a[g]?.reason):a.reason=a[g]?.reason??new e,i(a)}function i(a){a[g]&&("removeEventListener"in a[g]?a[g].removeEventListener("abort",a[f]):a[g].removeListener("abort",a[f]),a[g]=null,a[f]=null)}a.exports={addSignal:function(a,b){if(a.reason=null,a[g]=null,a[f]=null,b){if(b.aborted)return void h(a);a[g]=b,a[f]=()=>{h(a)},d(a[g],a[f])}},removeSignal:i}},76316:(a,b,c)=>{let{InvalidArgumentError:d,NotSupportedError:e}=c(39067),f=c(34589),{isValidHTTPToken:g,isValidHeaderValue:h,isStream:i,destroy:j,isBuffer:k,isFormDataLike:l,isIterable:m,hasSafeIterator:n,isBlobLike:o,serializePathWithQuery:p,assertRequestHandler:q,getServerName:r,normalizedMethodRecords:s,getProtocolFromUrlString:t}=c(84285),{channels:u}=c(62571),{headerNameLowerCasedRecord:v}=c(28820),w=/[^\u0021-\u00ff]/,x=Symbol("handler");class y{constructor(a,{path:b,method:c,body:e,headers:f,query:v,idempotent:y,blocking:A,upgrade:B,headersTimeout:C,bodyTimeout:D,reset:E,expectContinue:F,servername:G,throwOnError:H,maxRedirections:I,typeOfService:J},K){if("string"!=typeof b)throw new d("path must be a string");if("/"===b[0]||b.startsWith("http://")||b.startsWith("https://")||"CONNECT"===c){if(w.test(b))throw new d("invalid request path")}else throw new d("path must be an absolute URL or start with a slash");if("string"!=typeof c)throw new d("method must be a string");if(void 0===s[c]&&!g(c))throw new d("invalid request method");if(B&&"string"!=typeof B)throw new d("upgrade must be a string");if(B&&!h(B))throw new d("invalid upgrade header");if(null!=C&&(!Number.isFinite(C)||C<0))throw new d("invalid headersTimeout");if(null!=D&&(!Number.isFinite(D)||D<0))throw new d("invalid bodyTimeout");if(null!=E&&"boolean"!=typeof E)throw new d("invalid reset");if(null!=F&&"boolean"!=typeof F)throw new d("invalid expectContinue");if(null!=H)throw new d("invalid throwOnError");if(null!=I&&0!==I)throw new d("maxRedirections is not supported, use the redirect interceptor");if(null!=J&&(!Number.isInteger(J)||J<0||J>255))throw new d("typeOfService must be an integer between 0 and 255");if(this.headersTimeout=C,this.bodyTimeout=D,this.method=c,this.typeOfService=J??0,this.abort=null,null==e)this.body=null;else if(i(e)){this.body=e;const a=this.body._readableState;a&&a.autoDestroy||(this.endHandler=function(){j(this)},this.body.on("end",this.endHandler)),this.errorHandler=a=>{this.abort?this.abort(a):this.error=a},this.body.on("error",this.errorHandler)}else if(k(e))this.body=e.byteLength?e:null;else if(ArrayBuffer.isView(e))this.body=e.buffer.byteLength?Buffer.from(e.buffer,e.byteOffset,e.byteLength):null;else if(e instanceof ArrayBuffer)this.body=e.byteLength?Buffer.from(e):null;else if("string"==typeof e)this.body=e.length?Buffer.from(e):null;else if(l(e)||m(e)||o(e))this.body=e;else throw new d("body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable");if(this.completed=!1,this.aborted=!1,this.upgrade=B||null,this.path=v?p(b,v):b,this.origin=a,this.protocol=t(a),this.idempotent=null==y?"HEAD"===c||"GET"===c:y,this.blocking=A??"HEAD"!==this.method,this.reset=null==E?null:E,this.host=null,this.contentLength=null,this.contentType=null,this.headers=[],this.expectContinue=null!=F&&F,Array.isArray(f)){if(f.length%2!=0)throw new d("headers array must be even");for(let a=0;a<f.length;a+=2)z(this,f[a],f[a+1])}else if(f&&"object"==typeof f)if(n(f))for(const a of f){if(!Array.isArray(a)||2!==a.length)throw new d("headers must be in key-value pair format");z(this,a[0],a[1])}else{const a=Object.keys(f);for(let b=0;b<a.length;++b)z(this,a[b],f[a[b]])}else if(null!=f)throw new d("headers must be an object or an array");q(K,c,B),this.servername=G||r(this.host)||null,this[x]=K,u.create.hasSubscribers&&u.create.publish({request:this})}onBodySent(a){if(u.bodyChunkSent.hasSubscribers&&u.bodyChunkSent.publish({request:this,chunk:a}),this[x].onBodySent)try{return this[x].onBodySent(a)}catch(a){this.abort(a)}}onRequestSent(){if(u.bodySent.hasSubscribers&&u.bodySent.publish({request:this}),this[x].onRequestSent)try{return this[x].onRequestSent()}catch(a){this.abort(a)}}onConnect(a){if(f(!this.aborted),f(!this.completed),!this.error)return this.abort=a,this[x].onConnect(a);a(this.error)}onResponseStarted(){return this[x].onResponseStarted?.()}onHeaders(a,b,c,d){f(!this.aborted),f(!this.completed),u.headers.hasSubscribers&&u.headers.publish({request:this,response:{statusCode:a,headers:b,statusText:d}});try{return this[x].onHeaders(a,b,c,d)}catch(a){this.abort(a)}}onData(a){f(!this.aborted),f(!this.completed),u.bodyChunkReceived.hasSubscribers&&u.bodyChunkReceived.publish({request:this,chunk:a});try{return this[x].onData(a)}catch(a){return this.abort(a),!1}}onUpgrade(a,b,c){return f(!this.aborted),f(!this.completed),this[x].onUpgrade(a,b,c)}onComplete(a){this.onFinally(),f(!this.aborted),f(!this.completed),this.completed=!0,u.trailers.hasSubscribers&&u.trailers.publish({request:this,trailers:a});try{return this[x].onComplete(a)}catch(a){this.onError(a)}}onError(a){if(this.onFinally(),u.error.hasSubscribers&&u.error.publish({request:this,error:a}),!this.aborted)return this.aborted=!0,this[x].onError(a)}onFinally(){this.errorHandler&&(this.body.off("error",this.errorHandler),this.errorHandler=null),this.endHandler&&(this.body.off("end",this.endHandler),this.endHandler=null)}addHeader(a,b){return z(this,a,b),this}}function z(a,b,c){if(c&&"object"==typeof c&&!Array.isArray(c))throw new d(`invalid ${b} header`);if(void 0===c)return;let f=v[b];if(void 0===f&&void 0===v[f=b.toLowerCase()]&&!g(f))throw new d("invalid header key");if(Array.isArray(c)){let a=[];for(let e=0;e<c.length;e++)if("string"==typeof c[e]){if(!h(c[e]))throw new d(`invalid ${b} header`);a.push(c[e])}else if(null===c[e])a.push("");else if("object"==typeof c[e])throw new d(`invalid ${b} header`);else a.push(`${c[e]}`);c=a}else if("string"==typeof c){if(!h(c))throw new d(`invalid ${b} header`)}else c=null===c?"":`${c}`;if("host"===f){if(null!==a.host)throw new d("duplicate host header");if("string"!=typeof c)throw new d("invalid host header");a.host=c}else if("content-length"===f){if(null!==a.contentLength)throw new d("duplicate content-length header");if(!function(a){if("string"!=typeof a||0===a.length)return!1;for(let b=0;b<a.length;b++){let c=a.charCodeAt(b);if(c<48||c>57)return!1}return!0}(c))throw new d("invalid content-length header");a.contentLength=parseInt(c,10)}else if(null===a.contentType&&"content-type"===f)a.contentType=c,a.headers.push(b,c);else if("transfer-encoding"===f||"keep-alive"===f||"upgrade"===f)throw new d(`invalid ${f} header`);else if("connection"===f){let b="string"==typeof c?c:null;if(null===b)throw new d("invalid connection header");for(let c of b.toLowerCase().split(",")){let b=c.trim();if(!g(b))throw new d("invalid connection header");"close"===b&&(a.reset=!0)}}else if("expect"===f)throw new e("expect header not supported");else a.headers.push(b,c)}a.exports=y},76403:(a,b,c)=>{let d,{makeNetworkError:e,makeAppropriateNetworkError:f,filterResponse:g,makeResponse:h,fromInnerResponse:i,getResponseState:j}=c(78196),{HeadersList:k}=c(28665),{Request:l,cloneRequest:m,getRequestDispatcher:n,getRequestState:o}=c(12600),p=c(38522),{makePolicyContainer:q,clonePolicyContainer:r,requestBadPort:s,TAOCheck:t,appendRequestOriginHeader:u,responseLocationURL:v,requestCurrentURL:w,setRequestReferrerPolicyOnRedirect:x,tryUpgradeRequestToAPotentiallyTrustworthyURL:y,createOpaqueTimingInfo:z,appendFetchMetadata:A,corsCheck:B,crossOriginResourcePolicyCheck:C,determineRequestsReferrer:D,coarsenedSharedCurrentTime:E,sameOrigin:F,isCancelled:G,isAborted:H,isErrorLike:I,fullyReadBody:J,readableStreamClose:K,urlIsLocal:L,urlIsHttpHttpsScheme:M,urlHasHttpsScheme:N,clampAndCoarsenConnectionTimingInfo:O,simpleRangeHeaderValue:P,buildContentRange:Q,createInflate:R,extractMimeType:S,hasAuthenticationEntry:T,includesCredentials:U,isTraversableNavigable:V}=c(42425),W=c(34589),{safelyExtractBody:X,extractBody:Y}=c(35381),{redirectStatusSet:Z,nullBodyStatus:$,safeMethodsSet:_,requestBodyHeader:aa,subresourceSet:ab}=c(19608),ac=c(78474),{Readable:ad,pipeline:ae,finished:af,isErrored:ag,isReadable:ah}=c(57075),{addAbortListener:ai,bufferToLowerCasedHeaderName:aj}=c(84285),{dataURLProcessor:ak,serializeAMimeType:al,minimizeSupportedMimeType:am}=c(16537),{getGlobalDispatcher:an}=c(59970),{webidl:ao}=c(32984),{STATUS_CODES:ap}=c(37067),{bytesMatch:aq}=c(64371),{createDeferredPromise:ar}=c(83589),{isomorphicEncode:as}=c(70745),{runtimeFeatures:at}=c(56758),au=at.has("zstd"),av=["GET","HEAD"],aw="u">typeof __UNDICI_IS_NODE__||"u">typeof esbuildDetection?"node":"undici";class ax extends ac{constructor(a){super(),this.dispatcher=a,this.connection=null,this.dump=!1,this.state="ongoing"}terminate(a){"ongoing"===this.state&&(this.state="terminated",this.connection?.destroy(a),this.emit("terminated",a))}abort(a){"ongoing"===this.state&&(this.state="aborted",a||(a=new DOMException("The operation was aborted.","AbortError")),this.serializedAbortReason=a,this.connection?.destroy(a),this.emit("terminated",a))}}function ay(a){az(a,"fetch")}function az(a,b="other"){if("error"===a.type&&a.aborted||!a.urlList?.length)return;let c=a.urlList[0],d=a.timingInfo,e=a.cacheState;M(c)&&null!==d&&(a.timingAllowPassed||(d=z({startTime:d.startTime}),e=""),d.endTime=E(),a.timingInfo=d,aA(d,c.href,b,globalThis,e,"",a.status))}let aA=performance.markResourceTiming;function aB(a,b,c,d,e){if(a&&a.reject(d),b.body?.stream!=null&&ah(b.body.stream)&&b.body.stream.cancel(d).catch(a=>{if("ERR_INVALID_STATE"!==a.code)throw a}),null==c)return;let f=j(c);f.body?.stream!=null&&ah(f.body.stream)&&e.error(d)}function aC({request:a,processRequestBodyChunkLength:b,processRequestEndOfBody:c,processResponse:d,processResponseEndOfBody:e,processResponseConsumeBody:f,useParallelQueue:g=!1,dispatcher:h=an(),requestObject:i=null}){W(h);let j=null,k=!1;null!=a.client&&(j=a.client.globalObject,k=a.client.crossOriginIsolatedCapability);let l=z({startTime:E(k)}),m={controller:new ax(h),request:a,timingInfo:l,processRequestBodyChunkLength:b,processRequestEndOfBody:c,processResponse:d,processResponseConsumeBody:f,processResponseEndOfBody:e,taskDestination:j,crossOriginIsolatedCapability:k,requestObject:i};return W(!a.body||a.body.stream),"client"===a.window&&(a.window=a.client?.globalObject?.constructor?.name==="Window"?a.client:"no-window"),"client"===a.origin&&(a.origin=a.client.origin),"client"===a.policyContainer&&(null!=a.client?a.policyContainer=r(a.client.policyContainer):a.policyContainer=q()),a.headersList.contains("accept",!0)||a.headersList.append("accept","*/*",!0),a.headersList.contains("accept-language",!0)||a.headersList.append("accept-language","*",!0),a.priority,ab.has(a.destination),aD(m,!1),m.controller}async function aD(a,b){try{let c=a.request,d=null;if(c.localURLsOnly&&!L(w(c))&&(d=e("local URLs only")),y(c),"blocked"===s(c)&&(d=e("bad port")),""===c.referrerPolicy&&(c.referrerPolicy=c.policyContainer.referrerPolicy),"no-referrer"!==c.referrer&&(c.referrer=D(c)),null===d){let b=w(c);F(b,c.url)&&"basic"===c.responseTainting||"data:"===b.protocol||"navigate"===c.mode||"websocket"===c.mode?(c.responseTainting="basic",d=await aE(a)):"same-origin"===c.mode?d=e('request mode cannot be "same-origin"'):"no-cors"===c.mode?"follow"!==c.redirect?d=e('redirect mode cannot be "follow" for "no-cors" request'):(c.responseTainting="opaque",d=await aE(a)):M(w(c))?(c.responseTainting="cors",d=await aG(a)):d=e("URL scheme must be a HTTP(S) scheme")}if(b)return d;0===d.status||d.internalResponse||(c.responseTainting,"basic"===c.responseTainting?d=g(d,"basic"):"cors"===c.responseTainting?d=g(d,"cors"):"opaque"===c.responseTainting?d=g(d,"opaque"):W(!1));let f=0===d.status?d:d.internalResponse;if(0===f.urlList.length&&f.urlList.push(...c.urlList),c.timingAllowFailed||(d.timingAllowPassed=!0),"opaque"===d.type&&206===f.status&&f.rangeRequested&&!c.headers.contains("range",!0)&&(d=f=e()),0!==d.status&&("HEAD"===c.method||"CONNECT"===c.method||$.includes(f.status))&&(f.body=null,a.controller.dump=!0),c.integrity){let b=b=>aF(a,e(b));if("opaque"===c.responseTainting||null==d.body)return void b(d.error);J(d.body,e=>{aq(e,c.integrity)?(d.body=X(e)[0],aF(a,d)):b("integrity mismatch")},b)}else aF(a,d)}catch(b){a.controller.terminate(b)}}function aE(a){if(G(a)&&0===a.request.redirectCount)return Promise.resolve(f(a));let{request:b}=a,{protocol:g}=w(b);switch(g){case"about:":return Promise.resolve(e("about scheme is not supported"));case"blob:":{d||(d=c(4573).resolveObjectURL);let a=w(b);if(0!==a.search.length)return Promise.resolve(e("NetworkError when attempting to fetch resource."));let f=d(a.toString());if("GET"!==b.method||!ao.is.Blob(f))return Promise.resolve(e("invalid method"));let g=h(),i=f.size,j=as(`${i}`),k=f.type;if(b.headersList.contains("range",!0)){g.rangeRequested=!0;let a=P(b.headersList.get("range",!0),!0);if("failure"===a)return Promise.resolve(e("failed to fetch the data URL"));let{rangeStartValue:c,rangeEndValue:d}=a;if(null===c)d=(c=i-d)+d-1;else{if(c>=i)return Promise.resolve(e("Range start is greater than the blob's size."));(null===d||d>=i)&&(d=i-1)}let h=f.slice(c,d+1,k);g.body=Y(h)[0];let j=as(`${h.size}`),l=Q(c,d,i);g.status=206,g.statusText="Partial Content",g.headersList.set("content-length",j,!0),g.headersList.set("content-type",k,!0),g.headersList.set("content-range",l,!0)}else{let a=Y(f);g.statusText="OK",g.body=a[0],g.headersList.set("content-length",j,!0),g.headersList.set("content-type",k,!0)}return Promise.resolve(g)}case"data:":{let a=ak(w(b));if("failure"===a)return Promise.resolve(e("failed to fetch the data URL"));return Promise.resolve(h({statusText:"OK",headersList:[["content-type",{name:"Content-Type",value:al(a.mimeType)}]],body:X(a.body)[0]}))}case"file:":return Promise.resolve(e("not implemented... yet..."));case"http:":case"https:":return aG(a).catch(a=>e(a));default:return Promise.resolve(e("unknown scheme"))}}function aF(a,b){let c=a.timingInfo,d=()=>{let d=Date.now();"document"===a.request.destination&&(a.controller.fullTimingInfo=c),a.controller.reportTimingSteps=()=>{if(!M(a.request.url))return;c.endTime=d;let e=b.cacheState,f=b.bodyInfo;b.timingAllowPassed||(c=z(c),e="");let g=0;if("navigate"!==a.request.mode||!b.hasCrossOriginRedirects){g=b.status;let a=S(b.headersList);"failure"!==a&&(f.contentType=am(a))}null!=a.request.initiatorType&&aA(c,a.request.url.href,a.request.initiatorType,globalThis,e,f,g)},queueMicrotask(()=>void(a.request.done=!0,null!=a.processResponseEndOfBody&&queueMicrotask(()=>a.processResponseEndOfBody(b)),null!=a.request.initiatorType&&a.controller.reportTimingSteps()))};null!=a.processResponse&&queueMicrotask(()=>{a.processResponse(b),a.processResponse=null});let e="error"===b.type?b:b.internalResponse??b;null==e.body?d():af(e.body.stream,()=>{d()})}async function aG(a){let b=a.request,c=null,d=null,f=a.timingInfo;if(b.serviceWorkers,null===c){if("follow"===b.redirect&&(b.serviceWorkers="none"),d=c=await aH(a),"cors"===b.responseTainting&&"failure"===B(b,c))return e("cors failure");"failure"===t(b,c)&&(b.timingAllowFailed=!0)}return("opaque"===b.responseTainting||"opaque"===c.type)&&"blocked"===C(b.origin,b.client,b.destination,d)?e("blocked"):(Z.has(d.status)&&("manual"!==b.redirect&&a.controller.connection.destroy(void 0,!1),"error"===b.redirect?c=e("unexpected redirect"):"manual"===b.redirect?c=d:"follow"===b.redirect?c=await function(a,b){let c,d=a.request,f=b.internalResponse?b.internalResponse:b;try{if(c=v(f,w(d).hash),null==c)return b}catch(a){return Promise.resolve(e(a))}if(!M(c))return Promise.resolve(e("URL scheme must be a HTTP(S) scheme"));if(20===d.redirectCount)return Promise.resolve(e("redirect count exceeded"));if(d.redirectCount+=1,"cors"===d.mode&&(c.username||c.password)&&!F(d,c))return Promise.resolve(e('cross origin not allowed for request mode "cors"'));if("cors"===d.responseTainting&&(c.username||c.password))return Promise.resolve(e('URL cannot contain credentials for request mode "cors"'));if(303!==f.status&&null!=d.body&&null==d.body.source)return Promise.resolve(e());if([301,302].includes(f.status)&&"POST"===d.method||303===f.status&&!av.includes(d.method))for(let a of(d.method="GET",d.body=null,aa))d.headersList.delete(a);F(w(d),c)||(d.headersList.delete("authorization",!0),d.headersList.delete("proxy-authorization",!0),d.headersList.delete("cookie",!0),d.headersList.delete("host",!0)),null!=d.body&&(W(null!=d.body.source),d.body=X(d.body.source)[0]);let g=a.timingInfo;return g.redirectEndTime=g.postRedirectStartTime=E(a.crossOriginIsolatedCapability),0===g.redirectStartTime&&(g.redirectStartTime=g.startTime),d.urlList.push(c),x(d,f),aD(a,!0)}(a,c):W(!1)),c.timingInfo=f,c)}async function aH(a,b=!1,c=!1){let d=a.request,g=null,h=null,i=null;"no-window"===d.window&&"error"===d.redirect?(g=a,h=d):(h=m(d),(g={...a}).request=h);let j="include"===d.credentials||"same-origin"===d.credentials&&"basic"===d.responseTainting,k=h.body?h.body.length:null,l=null;if(null==h.body&&["POST","PUT"].includes(h.method)&&(l="0"),null!=k&&(l=as(`${k}`)),null==l||h.headersList.contains("content-length",!0)||h.headersList.append("content-length",l,!0),null!=k&&h.keepalive,ao.is.URL(h.referrer)&&h.headersList.append("referer",as(h.referrer.href),!0),u(h),A(h),h.headersList.contains("user-agent",!0)||h.headersList.append("user-agent",aw,!0),"default"===h.cache&&(h.headersList.contains("if-modified-since",!0)||h.headersList.contains("if-none-match",!0)||h.headersList.contains("if-unmodified-since",!0)||h.headersList.contains("if-match",!0)||h.headersList.contains("if-range",!0))&&(h.cache="no-store"),"no-cache"!==h.cache||h.preventNoCacheCacheControlHeaderModification||h.headersList.contains("cache-control",!0)||h.headersList.append("cache-control","max-age=0",!0),("no-store"===h.cache||"reload"===h.cache)&&(h.headersList.contains("pragma",!0)||h.headersList.append("pragma","no-cache",!0),h.headersList.contains("cache-control",!0)||h.headersList.append("cache-control","no-cache",!0)),h.headersList.contains("range",!0)&&h.headersList.append("accept-encoding","identity",!0),h.headersList.contains("accept-encoding",!0)||(N(w(h))?h.headersList.append("accept-encoding","br, gzip, deflate",!0):h.headersList.append("accept-encoding","gzip, deflate",!0)),h.headersList.delete("host",!0),j&&!h.headersList.contains("authorization",!0)){let a=null;if(T(h)&&(void 0===h.useURLCredentials||!U(w(h))));else if(U(w(h))&&b){let{username:b,password:c}=w(h);a=`Basic ${Buffer.from(`${b}:${c}`).toString("base64")}`}null!==a&&h.headersList.append("Authorization",a,!1)}if(h.cache="no-store","no-store"!==h.cache&&h.cache,null==i){if("only-if-cached"===h.cache)return e("only if cached");let a=await aI(g,j,c);!_.has(h.method)&&a.status>=200&&a.status,null==i&&(i=a)}if(i.urlList=[...h.urlList],h.headersList.contains("range",!0)&&(i.rangeRequested=!0),i.requestIncludesCredentials=j,401===i.status&&"cors"!==h.responseTainting&&j&&(void 0!==d.useURLCredentials||V(d.traversableForUserPrompts))){if(null!=d.body){if(null==d.body.source)return i;d.body=X(d.body.source)[0]}if(void 0===d.useURLCredentials||b)return G(a)?f(a):i;a.controller.connection.destroy(),i=await aH(a,!0)}if(407===i.status)return"no-window"===d.window?e():G(a)?f(a):e("proxy authentication required");if(421===i.status&&!c&&(null==d.body||null!=d.body.source)){if(G(a))return f(a);a.controller.connection.destroy(),i=await aH(a,b,!0)}return i}async function aI(a,b=!1,c=!1){W(!a.controller.connection||a.controller.connection.destroyed),a.controller.connection={abort:null,destroyed:!1,destroy(a,b=!0){!this.destroyed&&(this.destroyed=!0,b&&this.abort?.(a??new DOMException("The operation was aborted.","AbortError")))}};let d=a.request,g=null,i=a.timingInfo;d.cache="no-store",d.mode;let j=null;if(null==d.body&&a.processRequestEndOfBody)queueMicrotask(()=>a.processRequestEndOfBody());else if(null!=d.body){let b=async function*(b){G(a)||(yield b,a.processRequestBodyChunkLength?.(b.byteLength))};j=async function*(){try{for await(let a of d.body.stream)yield*b(a);!G(a)&&a.processRequestEndOfBody&&a.processRequestEndOfBody()}catch(b){G(a)||("AbortError"===b.name?a.controller.abort():a.controller.terminate(b))}}()}try{let{body:b,status:c,statusText:e,headersList:f,socket:l}=await function({body:b}){let c=w(d),e=a.controller.dispatcher,f=c.pathname+c.search,g=0===c.search.length&&"?"===c.href[c.href.length-c.hash.length-1];return new Promise((h,j)=>e.dispatch({path:g?`${f}?`:f,origin:c.origin,method:d.method,body:e.isMockActive?d.body&&(d.body.source||d.body.stream):b,headers:d.headersList.entries,maxRedirections:0,upgrade:"websocket"===d.mode?"websocket":void 0},{body:null,abort:null,onConnect(b){let{connection:c}=a.controller;i.finalConnectionTimingInfo=O(void 0,i.postRedirectStartTime,a.crossOriginIsolatedCapability),c.destroyed?b(new DOMException("The operation was aborted.","AbortError")):(a.controller.on("terminated",b),this.abort=c.abort=b),i.finalNetworkRequestStartTime=E(a.crossOriginIsolatedCapability)},onResponseStarted(){i.finalNetworkResponseStartTime=E(a.crossOriginIsolatedCapability)},onHeaders(a,b,c,e){if(a<200)return!1;let f=new k;for(let a=0;a<b.length;a+=2){let c=aj(b[a]),d=b[a+1];if(Array.isArray(d)&&!Buffer.isBuffer(b[a+1]))for(let a of d)f.append(c,a.toString("latin1"),!0);else f.append(c,d.toString("latin1"),!0)}let g=f.get("location",!0);this.body=new ad({read:c});let i=g&&"follow"===d.redirect&&Z.has(a),l=[];if("HEAD"!==d.method&&"CONNECT"!==d.method&&!$.includes(a)&&!i){let a=f.get("content-encoding",!0),b=a?a.toLowerCase().split(","):[];if(b.length>5)return j(Error(`too many content-encodings in response: ${b.length}, maximum allowed is 5`)),!0;for(let a=b.length-1;a>=0;--a){let c=b[a].trim();if("x-gzip"===c||"gzip"===c)l.push(p.createGunzip({flush:p.constants.Z_SYNC_FLUSH,finishFlush:p.constants.Z_SYNC_FLUSH}));else if("deflate"===c)l.push(R({flush:p.constants.Z_SYNC_FLUSH,finishFlush:p.constants.Z_SYNC_FLUSH}));else if("br"===c)l.push(p.createBrotliDecompress({flush:p.constants.BROTLI_OPERATION_FLUSH,finishFlush:p.constants.BROTLI_OPERATION_FLUSH}));else if("zstd"===c&&au)l.push(p.createZstdDecompress({flush:p.constants.ZSTD_e_continue,finishFlush:p.constants.ZSTD_e_end}));else{l.length=0;break}}}let m=this.onError.bind(this);return h({status:a,statusText:e,headersList:f,body:l.length?ae(this.body,...l,a=>{a&&this.onError(a)}).on("error",m):this.body.on("error",m)}),!0},onData(b){if(!a.controller.dump)return i.encodedBodySize+=b.byteLength,this.body.push(b)},onComplete(){this.abort&&a.controller.off("terminated",this.abort),a.controller.ended=!0,this.body.push(null)},onError(b){this.abort&&a.controller.off("terminated",this.abort),this.body?.destroy(b),a.controller.terminate(b),j(b)},onRequestUpgrade(a,b,c,d){if(null!=d.session&&200!==b||null==d.session&&101!==b)return!1;let e=new k;for(let[a,b]of Object.entries(c)){if(null==b)continue;let c=a.toLowerCase();if(Array.isArray(b))for(let a of b)e.append(c,String(a),!0);else e.append(c,String(b),!0)}return h({status:b,statusText:ap[b],headersList:e,socket:d}),!0},onUpgrade(a,b,c){if(null!=c.session&&200!==a||null==c.session&&101!==a)return!1;let d=new k;for(let a=0;a<b.length;a+=2){let c=aj(b[a]),e=b[a+1];if(Array.isArray(e)&&!Buffer.isBuffer(b[a+1]))for(let a of e)d.append(c,a.toString("latin1"),!0);else d.append(c,e.toString("latin1"),!0)}return h({status:a,statusText:ap[a],headersList:d,socket:c}),!0}}))}({body:j});if(l)g=h({status:c,statusText:e,headersList:f,socket:l});else{let d=b[Symbol.asyncIterator]();a.controller.next=()=>d.next(),g=h({status:c,statusText:e,headersList:f})}}catch(b){if("AbortError"===b.name)return a.controller.connection.destroy(),f(a,b);return e(b)}let l=new ReadableStream({start(b){a.controller.controller=b},pull:()=>a.controller.resume(),cancel:b=>{G(a)||a.controller.abort(b)},type:"bytes"});return g.body={stream:l,source:null,length:null},a.controller.resume||a.controller.on("terminated",function(b){H(a)?(g.aborted=!0,ah(l)&&a.controller.controller.error(a.controller.serializedAbortReason)):ah(l)&&a.controller.controller.error(TypeError("terminated",{cause:I(b)?b:void 0})),a.controller.connection.destroy()}),a.controller.resume=async()=>{for(;;){let b,c;try{let{done:c,value:d}=await a.controller.next();if(H(a))break;b=c?void 0:d}catch(d){a.controller.ended&&!i.encodedBodySize?b=void 0:(b=d,c=!0)}if(void 0===b){K(a.controller.controller),function(a,b){a.request.done=!0,null!=a.processResponseDone&&queueMicrotask(()=>a.processResponseDone(b))}(a,g);return}if(i.decodedBodySize+=b?.byteLength??0,c)return void a.controller.terminate(b);let d=new Uint8Array(b);if(d.byteLength&&a.controller.controller.enqueue(d),ag(l))return void a.controller.terminate();if(a.controller.controller.desiredSize<=0)return}},g}a.exports={fetch:function(a,b){let c;ao.argumentLengthCheck(arguments,1,"globalThis.fetch");let d=ar();try{c=new l(a,b)}catch(a){return d.reject(a),d.promise}let e=o(c);if(c.signal.aborted)return aB(d,e,null,c.signal.reason,null),d.promise;let f=e.client.globalObject;f?.constructor?.name==="ServiceWorkerGlobalScope"&&(e.serviceWorkers="none");let g=null,h=!1,j=null;return ai(c.signal,()=>{h=!0,W(null!=j),j.abort(c.signal.reason);let a=g?.deref();aB(d,e,a,c.signal.reason,j.controller)}),j=aC({request:e,processResponseEndOfBody:ay,processResponse:a=>{if(!h){if(a.aborted)return void aB(d,e,g,j.serializedAbortReason,j.controller);if("error"===a.type)return void d.reject(TypeError("fetch failed",{cause:a.error}));g=new WeakRef(i(a,"immutable")),d.resolve(g.deref()),d=null}},dispatcher:n(c),requestObject:c}),d.promise},Fetch:ax,fetching:aC,finalizeAndReportTiming:az}},77935:(a,b,c)=>{let{InvalidArgumentError:d,SocketError:e}=c(39067),{AsyncResource:f}=c(16698),g=c(34589),h=c(84285),{kHTTP2Stream:i}=c(49176),{addSignal:j,removeSignal:k}=c(73135);class l extends f{constructor(a,b){if(!a||"object"!=typeof a)throw new d("invalid opts");if("function"!=typeof b)throw new d("invalid callback");const{signal:c,opaque:e,responseHeaders:f}=a;if(c&&"function"!=typeof c.on&&"function"!=typeof c.addEventListener)throw new d("signal must be an EventEmitter or EventTarget");super("UNDICI_UPGRADE"),this.responseHeaders=f||null,this.opaque=e||null,this.callback=b,this.abort=null,this.context=null,j(this,c)}onConnect(a,b){this.reason?a(this.reason):(g(this.callback),this.abort=a,this.context=null)}onHeaders(){throw new e("bad upgrade",null)}onUpgrade(a,b,c){g(!0===c[i]?200===a:101===a);let{callback:d,opaque:e,context:f}=this;k(this),this.callback=null;let j="raw"===this.responseHeaders?h.parseRawHeaders(b):h.parseHeaders(b);this.runInAsyncScope(d,null,null,{headers:j,socket:c,opaque:e,context:f})}onError(a){let{callback:b,opaque:c}=this;k(this),b&&(this.callback=null,queueMicrotask(()=>{this.runInAsyncScope(b,null,a,{opaque:c})}))}}a.exports=function a(b,c){if(void 0===c)return new Promise((c,d)=>{a.call(this,b,(a,b)=>a?d(a):c(b))});try{let a=new l(b,c),d={...b,method:b.method||"GET",upgrade:b.protocol||"Websocket"};this.dispatch(d,a)}catch(d){if("function"!=typeof c)throw d;let a=b?.opaque;queueMicrotask(()=>c(d,{opaque:a}))}}},78075:(a,b,c)=>{let d=c(31825);a.exports=a=>b=>function(c,e){return b(c,new d({...c,retryOptions:{...a,...c.retryOptions}},{handler:e,dispatch:b}))}},78196:(a,b,c)=>{let{Headers:d,HeadersList:e,fill:f,getHeadersGuard:g,setHeadersGuard:h,setHeadersList:i}=c(28665),{extractBody:j,cloneBody:k,mixinBody:l,streamRegistry:m,bodyUnusable:n}=c(35381),o=c(84285),p=c(57975),{kEnumerableProperty:q}=o,{isValidReasonPhrase:r,isCancelled:s,isAborted:t,isErrorLike:u,environmentSettingsObject:v}=c(42425),{redirectStatusSet:w,nullBodyStatus:x}=c(19608),{webidl:y}=c(32984),{URLSerializer:z}=c(16537),{kConstruct:A}=c(49176),B=c(34589),{isomorphicEncode:C,serializeJavascriptValueToJSONString:D}=c(70745),E=new TextEncoder("utf-8");class F{#d;#a;static error(){return Q(M(),"immutable")}static json(a,b){y.argumentLengthCheck(arguments,1,"Response.json"),null!==b&&(b=y.converters.ResponseInit(b));let c=j(E.encode(D(a))),d=Q(L({}),"response");return P(d,b,{body:c[0],type:"application/json"}),d}static redirect(a,b=302){let c;y.argumentLengthCheck(arguments,1,"Response.redirect"),a=y.converters.USVString(a),b=y.converters["unsigned short"](b);try{c=new URL(a,v.settingsObject.baseUrl)}catch(b){throw TypeError(`Failed to parse URL from ${a}`,{cause:b})}if(!w.has(b))throw RangeError(`Invalid status code ${b}`);let d=Q(L({}),"immutable");d.#a.status=b;let e=C(z(c));return d.#a.headersList.append("location",e,!0),d}constructor(a=null,b){if(y.util.markAsUncloneable(this),a===A)return;null!==a&&(a=y.converters.BodyInit(a,"Response","body")),b=y.converters.ResponseInit(b),this.#a=L({}),this.#d=new d(A),h(this.#d,"response"),i(this.#d,this.#a.headersList);let c=null;if(null!=a){const[b,d]=j(a);c={body:b,type:d}}P(this,b,c)}get type(){return y.brandCheck(this,F),this.#a.type}get url(){y.brandCheck(this,F);let a=this.#a.urlList,b=a[a.length-1]??null;return null===b?"":z(b,!0)}get redirected(){return y.brandCheck(this,F),this.#a.urlList.length>1}get status(){return y.brandCheck(this,F),this.#a.status}get ok(){return y.brandCheck(this,F),this.#a.status>=200&&this.#a.status<=299}get statusText(){return y.brandCheck(this,F),this.#a.statusText}get headers(){return y.brandCheck(this,F),this.#d}get body(){return y.brandCheck(this,F),this.#a.body?this.#a.body.stream:null}get bodyUsed(){return y.brandCheck(this,F),!!this.#a.body&&o.isDisturbed(this.#a.body.stream)}clone(){if(y.brandCheck(this,F),n(this.#a))throw y.errors.exception({header:"Response.clone",message:"Body has already been consumed."});let a=K(this.#a);return 0!==this.#a.urlList.length&&this.#a.body?.stream&&m.register(this,new WeakRef(this.#a.body.stream)),Q(a,g(this.#d))}[p.inspect.custom](a,b){null===b.depth&&(b.depth=2),b.colors??=!0;let c={status:this.status,statusText:this.statusText,headers:this.headers,body:this.body,bodyUsed:this.bodyUsed,ok:this.ok,redirected:this.redirected,type:this.type,url:this.url};return`Response ${p.formatWithOptions(b,c)}`}static getResponseHeaders(a){return a.#d}static setResponseHeaders(a,b){a.#d=b}static getResponseState(a){return a.#a}static setResponseState(a,b){a.#a=b}}let{getResponseHeaders:G,setResponseHeaders:H,getResponseState:I,setResponseState:J}=F;function K(a){if(a.internalResponse)return O(K(a.internalResponse),a.type);let b=L({...a,body:null});return null!=a.body&&(b.body=k(a.body)),b}function L(a){return{aborted:!1,rangeRequested:!1,timingAllowPassed:!1,requestIncludesCredentials:!1,type:"default",status:200,timingInfo:null,cacheState:"",statusText:"",...a,headersList:a?.headersList?new e(a?.headersList):new e,urlList:a?.urlList?[...a.urlList]:[]}}function M(a){return L({type:"error",status:0,error:u(a)?a:Error(a?String(a):a),aborted:a&&"AbortError"===a.name})}function N(a,b){return b={internalResponse:a,...b},new Proxy(a,{get:(a,c)=>c in b?b[c]:a[c],set:(a,c,d)=>(B(!(c in b)),a[c]=d,!0)})}function O(a,b){return"basic"===b?N(a,{type:"basic",headersList:a.headersList}):"cors"===b?N(a,{type:"cors",headersList:a.headersList}):"opaque"===b?N(a,{type:"opaque",urlList:[],status:0,statusText:"",body:null}):"opaqueredirect"===b?N(a,{type:"opaqueredirect",status:0,statusText:"",headersList:[],body:null}):void B(!1)}function P(a,b,c){if(null!==b.status&&(b.status<200||b.status>599))throw RangeError('init["status"] must be in the range of 200 to 599, inclusive.');if("statusText"in b&&null!=b.statusText&&!r(String(b.statusText)))throw TypeError("Invalid statusText");if("status"in b&&null!=b.status&&(I(a).status=b.status),"statusText"in b&&null!=b.statusText&&(I(a).statusText=b.statusText),"headers"in b&&null!=b.headers&&f(G(a),b.headers),c){if(x.includes(a.status))throw y.errors.exception({header:"Response constructor",message:`Invalid response status code ${a.status}`});I(a).body=c.body,null==c.type||I(a).headersList.contains("content-type",!0)||I(a).headersList.append("content-type",c.type,!0)}}function Q(a,b){let c=new F(A);J(c,a);let e=new d(A);return H(c,e),i(e,a.headersList),h(e,b),0!==a.urlList.length&&a.body?.stream&&m.register(c,new WeakRef(a.body.stream)),c}Reflect.deleteProperty(F,"getResponseHeaders"),Reflect.deleteProperty(F,"setResponseHeaders"),Reflect.deleteProperty(F,"getResponseState"),Reflect.deleteProperty(F,"setResponseState"),l(F,I),Object.defineProperties(F.prototype,{type:q,url:q,status:q,ok:q,redirected:q,statusText:q,headers:q,clone:q,body:q,bodyUsed:q,[Symbol.toStringTag]:{value:"Response",configurable:!0}}),Object.defineProperties(F,{json:q,redirect:q,error:q}),y.converters.XMLHttpRequestBodyInit=function(a,b,c){return"string"==typeof a?y.converters.USVString(a,b,c):y.is.Blob(a)||y.is.BufferSource(a)||y.is.FormData(a)||y.is.URLSearchParams(a)?a:y.converters.DOMString(a,b,c)},y.converters.BodyInit=function(a,b,c){return y.is.ReadableStream(a)||a?.[Symbol.asyncIterator]?a:y.converters.XMLHttpRequestBodyInit(a,b,c)},y.converters.ResponseInit=y.dictionaryConverter([{key:"status",converter:y.converters["unsigned short"],defaultValue:()=>200},{key:"statusText",converter:y.converters.ByteString,defaultValue:()=>""},{key:"headers",converter:y.converters.HeadersInit}]),y.is.Response=y.util.MakeTypeAssertion(F),a.exports={isNetworkError:function(a){return"error"===a.type&&0===a.status},makeNetworkError:M,makeResponse:L,makeAppropriateNetworkError:function(a,b=null){return B(s(a)),t(a)?M(Object.assign(new DOMException("The operation was aborted.","AbortError"),{cause:b})):M(Object.assign(new DOMException("Request was cancelled."),{cause:b}))},filterResponse:O,Response:F,cloneResponse:K,fromInnerResponse:Q,getResponseState:I}},79412:a=>{let b=Symbol.for("undici.globalOrigin.1");a.exports={getGlobalOrigin:function(){return globalThis[b]},setGlobalOrigin:function(a){if(void 0===a)return void Object.defineProperty(globalThis,b,{value:void 0,writable:!0,enumerable:!1,configurable:!1});let c=new URL(a);if("http:"!==c.protocol&&"https:"!==c.protocol)throw TypeError(`Only http & https urls are allowed, received ${c.protocol}`);Object.defineProperty(globalThis,b,{value:c,writable:!0,enumerable:!1,configurable:!1})}}},79468:(a,b,c)=>{let{safeHTTPMethods:d,pathHasQueryOrFragment:e,hasSafeIterator:f}=c(84285),{serializePathWithQuery:g}=c(84285);a.exports={makeCacheKey:function(a){if(!a.origin)throw Error("opts.origin is undefined");let b=a.path||"/";return a.query&&!e(b)&&(b=g(b,a.query)),{origin:a.origin.toString(),method:a.method,path:b,headers:a.headers}},normalizeHeaders:function(a){let b;if(null==a.headers)b={};else if("object"==typeof a.headers)if(b={},f(a.headers))for(let c of a.headers){if(!Array.isArray(c))throw Error("opts.headers is not a valid header map");let[a,d]=c;if("string"!=typeof a||"string"!=typeof d)throw Error("opts.headers is not a valid header map");b[a.toLowerCase()]=d}else for(let c of Object.keys(a.headers))b[c.toLowerCase()]=a.headers[c];else throw Error("opts.headers is not an object");return b},assertCacheKey:function(a){if("object"!=typeof a)throw TypeError(`expected key to be object, got ${typeof a}`);for(let b of["origin","method","path"])if("string"!=typeof a[b])throw TypeError(`expected key.${b} to be string, got ${typeof a[b]}`);if(void 0!==a.headers&&"object"!=typeof a.headers)throw TypeError(`expected headers to be object, got ${typeof a}`)},assertCacheValue:function(a){if("object"!=typeof a)throw TypeError(`expected value to be object, got ${typeof a}`);for(let b of["statusCode","cachedAt","staleAt","deleteAt"])if("number"!=typeof a[b])throw TypeError(`expected value.${b} to be number, got ${typeof a[b]}`);if("string"!=typeof a.statusMessage)throw TypeError(`expected value.statusMessage to be string, got ${typeof a.statusMessage}`);if(null!=a.headers&&"object"!=typeof a.headers)throw TypeError(`expected value.rawHeaders to be object, got ${typeof a.headers}`);if(void 0!==a.vary&&"object"!=typeof a.vary)throw TypeError(`expected value.vary to be object, got ${typeof a.vary}`);if(void 0!==a.etag&&"string"!=typeof a.etag)throw TypeError(`expected value.etag to be string, got ${typeof a.etag}`)},parseCacheControlHeader:function(a){let b,c={};if(Array.isArray(a))for(let c of(b=[],a))b.push(...c.split(","));else b=a.split(",");for(let a=0;a<b.length;a++){let d,e,f=b[a].toLowerCase(),g=f.indexOf("=");switch(-1!==g?(d=f.substring(0,g).trimStart(),e=f.substring(g+1)):d=f.trim(),d){case"min-fresh":case"max-stale":case"max-age":case"s-maxage":case"stale-while-revalidate":case"stale-if-error":{if(void 0===e||" "===e[0])continue;e.length>=2&&'"'===e[0]&&'"'===e[e.length-1]&&(e=e.substring(1,e.length-1));let a=parseInt(e,10);if(a!=a||"max-age"===d&&d in c&&c[d]>=a)continue;c[d]=a;break}case"private":case"no-cache":if(e){if('"'===e[0]){let f=[e.substring(1)],g='"'===e[e.length-1];if(!g)for(let c=a+1;c<b.length;c++){let a=b[c],d=a.length;if(f.push(a.trim()),0!==d&&'"'===a[d-1]){g=!0;break}}if(g){let a=f[f.length-1];'"'===a[a.length-1]&&(a=a.substring(0,a.length-1),f[f.length-1]=a);for(let a=0;a<f.length;a++)f[a]=f[a].trim();d in c?c[d]=c[d].concat(f):c[d]=f}}else{let a=e.trim();d in c?c[d]=c[d].concat(a):c[d]=[a]}break}case"public":case"no-store":case"must-revalidate":case"proxy-revalidate":case"immutable":case"no-transform":case"must-understand":case"only-if-cached":if(e)continue;c[d]=!0;break;default:continue}}return c},parseVaryHeader:function(a,b){if("string"==typeof a&&a.includes("*"))return b;let c={};for(let d of"string"==typeof a?a.split(","):a){let a=d.trim().toLowerCase();c[a]=b[a]??null}return c},isEtagUsable:function(a){return!(a.length<=2)&&('"'===a[0]&&'"'===a[a.length-1]?!('"'===a[1]||a.startsWith('"W/')):!!a.startsWith('W/"')&&'"'===a[a.length-1]&&4!==a.length)},assertCacheMethods:function(a,b="CacheMethods"){if(!Array.isArray(a))throw TypeError(`expected type of ${b} needs to be an array, got ${null===a?"null":typeof a}`);if(0===a.length)throw TypeError(`${b} needs to have at least one method`);for(let c of a)if(!d.includes(c))throw TypeError(`element of ${b}-array needs to be one of following values: ${d.join(", ")}, got ${c}`)},assertCacheStore:function(a,b="CacheStore"){if("object"!=typeof a||null===a)throw TypeError(`expected type of ${b} to be a CacheStore, got ${null===a?"null":typeof a}`);for(let c of["get","createWriteStream","delete"])if("function"!=typeof a[c])throw TypeError(`${b} needs to have a \`${c}()\` function`)},makeDeduplicationKey:function(a,b){let c={};if(a.headers)for(let d of Object.keys(a.headers).sort())b?.has(d.toLowerCase())||(c[d]=a.headers[d]);return JSON.stringify([a.origin,a.method,a.path,c])}}},80830:a=>{a.exports={kAgent:Symbol("agent"),kOptions:Symbol("options"),kFactory:Symbol("factory"),kDispatches:Symbol("dispatches"),kDispatchKey:Symbol("dispatch key"),kDefaultHeaders:Symbol("default headers"),kDefaultTrailers:Symbol("default trailers"),kContentLength:Symbol("content length"),kMockAgent:Symbol("mock agent"),kMockAgentSet:Symbol("mock agent set"),kMockAgentGet:Symbol("mock agent get"),kMockDispatch:Symbol("mock dispatch"),kClose:Symbol("close"),kOriginalClose:Symbol("original agent close"),kOriginalDispatch:Symbol("original dispatch"),kOrigin:Symbol("origin"),kIsMockActive:Symbol("is mock active"),kNetConnect:Symbol("net connect"),kGetNetConnect:Symbol("get net connect"),kConnected:Symbol("connected"),kIgnoreTrailingSlash:Symbol("ignore trailing slash"),kMockAgentMockCallHistoryInstance:Symbol("mock agent mock call history name"),kMockAgentRegisterCallHistory:Symbol("mock agent register mock call history"),kMockAgentAddCallHistoryLog:Symbol("mock agent add call history log"),kMockAgentIsCallHistoryEnabled:Symbol("mock agent is call history enabled"),kMockAgentAcceptsNonStandardSearchParameters:Symbol("mock agent accepts non standard search parameters"),kMockCallHistoryAddLog:Symbol("mock call history add log"),kTotalDispatchCount:Symbol("total dispatch count")}},80985:(a,b,c)=>{let d,e,f=c(34589),{pipeline:g}=c(57075),h=c(84285),{RequestContentLengthMismatchError:i,RequestAbortedError:j,SocketError:k,InformationalError:l,InvalidArgumentError:m}=c(39067),{kUrl:n,kReset:o,kClient:p,kRunning:q,kPending:r,kQueue:s,kPendingIdx:t,kRunningIdx:u,kError:v,kSocket:w,kStrictContentLength:x,kOnError:y,kMaxConcurrentStreams:z,kPingInterval:A,kHTTP2Session:B,kHTTP2InitialWindowSize:C,kHTTP2ConnectionWindowSize:D,kResume:E,kSize:F,kHTTPContext:G,kClosed:H,kBodyTimeout:I,kEnableConnectProtocol:J,kRemoteSettings:K,kHTTP2Stream:L,kHTTP2SessionState:M}=c(49176),{channels:N}=c(62571),O=Symbol("open streams");try{e=c(32467)}catch{e={constants:{}}}let{constants:{HTTP2_HEADER_AUTHORITY:P,HTTP2_HEADER_METHOD:Q,HTTP2_HEADER_PATH:R,HTTP2_HEADER_SCHEME:S,HTTP2_HEADER_CONTENT_LENGTH:T,HTTP2_HEADER_EXPECT:U,HTTP2_HEADER_STATUS:V,HTTP2_HEADER_PROTOCOL:W,NGHTTP2_REFUSED_STREAM:X,NGHTTP2_CANCEL:Y}}=e;function Z(a){let b=[];for(let[c,d]of Object.entries(a))if(Array.isArray(d))for(let a of d)b.push(Buffer.from(c),Buffer.from(a));else b.push(Buffer.from(c),Buffer.from(d));return b}function $(a){try{"function"==typeof this.setLocalWindowSize&&this.setLocalWindowSize(a)}catch{}}function _(a){if(this[p][z]=a.maxConcurrentStreams??this[p][z],!0===this[K]&&!0===this[J]&&!1===a.enableConnectProtocol){let a=new l("HTTP/2: Server disabled extended CONNECT protocol against RFC-8441");this[w][v]=a,this[p][y](a);return}this[J]=a.enableConnectProtocol??this[J],this[K]=!0,this[p][E]()}function aa(a){let b=a[M];if((a.closed||a.destroyed)&&null!=b.ping.interval){clearInterval(b.ping.interval),b.ping.interval=null;return}a.ping((function(a,b){let c=this[p],d=this[p];if(null!=a){let b=new l(`HTTP/2: "PING" errored - type ${a.message}`);d[v]=b,c[y](b)}else c.emit("ping",b)}).bind(a))}function ab(a){f("ERR_TLS_CERT_ALTNAME_INVALID"!==a.code),this[w][v]=a,this[p][y](a)}function ac(a,b,c){if(0===c){let c=new l(`HTTP/2: "frameError" received - type ${a}, code ${b}`);this[w][v]=c,this[p][y](c)}}function ad(){let a=new k("other side closed",h.getSocketInfo(this[w]));this.destroy(a),h.destroy(this[w],a)}function ae(a){let b=this[v]||new k(`HTTP/2: "GOAWAY" frame received with code ${a}`,h.getSocketInfo(this[w])),c=this[p];if(c[w]=null,c[G]=null,this.close(),this[B]=null,h.destroy(this[w],b),c[u]<c[s].length){let a=c[s][c[u]];c[s][c[u]++]=null,h.errorRequest(c,a,b),c[t]=c[u]}f(0===c[q]),c.emit("disconnect",c[n],[c],b),c.emit("connectionError",c[n],[c],b),c[E]()}function af(){let{[p]:a,[M]:b}=this,{[w]:c}=a,d=this[w][v]||this[v]||new k("closed",h.getSocketInfo(c));if(a[w]=null,a[G]=null,null!=b.ping.interval&&(clearInterval(b.ping.interval),b.ping.interval=null),a.destroyed){f(0===a[r]);let b=a[s].splice(a[u]);for(let c=0;c<b.length;c++){let e=b[c];h.errorRequest(a,e,d)}}}function ag(){let a=this[v]||new k("closed",h.getSocketInfo(this)),b=this[B][p];b[w]=null,b[G]=null,null!==this[B]&&this[B].destroy(a),b[t]=b[u],f(0===b[q]),b.emit("disconnect",b[n],[b],a),b[E]()}function ah(a){f("ERR_TLS_CERT_ALTNAME_INVALID"!==a.code),this[v]=a,this[p][y](a)}function ai(){h.destroy(this,new k("other side closed",h.getSocketInfo(this)))}function aj(){this[H]=!0}function ak(a,b,c,d,e,g,i,j){try{null!=c&&h.isBuffer(c)&&(f(i===c.byteLength,"buffer body must have content length"),b.cork(),b.write(c),b.uncork(),b.end(),e.onBodySent(c)),j||(g[o]=!0),e.onRequestSent(),d[E]()}catch(b){a(b)}}async function al(a,b,c,d,e,g,h,j){f(h===c.size,"blob body must have content length");try{if(null!=h&&h!==c.size)throw new i;let a=Buffer.from(await c.arrayBuffer());b.cork(),b.write(a),b.uncork(),b.end(),e.onBodySent(a),e.onRequestSent(),j||(g[o]=!0),d[E]()}catch(b){a(b)}}async function am(a,b,c,d,e,g,h,i){f(0!==h||0===d[q],"iterator body cannot be pipelined");let j=null;function k(){if(j){let a=j;j=null,a()}}let l=()=>new Promise((a,b)=>{f(null===j),g[v]?b(g[v]):j=a});b.on("close",k).on("drain",k);try{for await(let a of c){if(g[v])throw g[v];let c=b.write(a);e.onBodySent(a),c||await l()}b.end(),e.onRequestSent(),i||(g[o]=!0),d[E]()}catch(b){a(b)}finally{b.off("close",k).off("drain",k)}}a.exports=function(a,b){a[w]=b;let k=a[C],r=a[D],v=e.connect(a[n],{createConnection:()=>b,peerMaxConcurrentStreams:a[z],settings:{enablePush:!1,...null!=k?{initialWindowSize:k}:null}});return a[w]=b,v[O]=0,v[p]=a,v[w]=b,v[M]={ping:{interval:0===a[A]?null:setInterval(aa,a[A],v).unref()}},v[J]=!1,v[K]=!1,r&&h.addListener(v,"connect",$.bind(v,r)),h.addListener(v,"error",ab),h.addListener(v,"frameError",ac),h.addListener(v,"end",ad),h.addListener(v,"goaway",ae),h.addListener(v,"close",af),h.addListener(v,"remoteSettings",_),v.unref(),a[B]=v,b[B]=v,h.addListener(b,"error",ah),h.addListener(b,"end",ai),h.addListener(b,"close",ag),b[H]=!1,b.on("close",aj),{version:"h2",defaultPipelining:1/0,write:b=>(function(a,b){let e=b.bodyTimeout??a[I],k=a[B],{method:p,path:r,host:v,upgrade:z,expectContinue:A,signal:C,protocol:D,headers:F}=b,{body:G}=b;if(null!=z&&"websocket"!==z)return h.errorRequest(a,b,new m(`Custom upgrade "${z}" not supported over HTTP/2`)),!1;let H={};for(let a=0;a<F.length;a+=2){let b=F[a+0],c=F[a+1];if("cookie"===b){null!=H[b]?H[b]=Array.isArray(H[b])?(H[b].push(c),H[b]):[H[b],c]:H[b]=c;continue}if(Array.isArray(c))for(let a=0;a<c.length;a++)H[b]?H[b]+=`, ${c[a]}`:H[b]=c[a];else H[b]?H[b]+=`, ${c}`:H[b]=c}let K=null,{hostname:M,port:$}=a[n];H[P]=v||`${M}${$?`:${$}`:""}`,H[Q]=p;let _=c=>{b.aborted||b.completed||(c=c||new j,h.errorRequest(a,b,c),null!=K&&(K.removeAllListeners("data"),K.close(),a[y](c),a[E]()),h.destroy(G,c))};try{b.onConnect(_)}catch(c){h.errorRequest(a,b,c)}if(b.aborted)return!1;if(z||"CONNECT"===p)return(k.ref(),"websocket"===z)?!1===k[J]?(h.errorRequest(a,b,new l("HTTP/2: Extended CONNECT protocol not supported by server")),k.unref(),!1):(H[Q]="CONNECT",H[W]="websocket",H[R]=r,"ws:"===D||"wss:"===D?H[S]="ws:"===D?"http":"https":H[S]="http:"===D?"http":"https",(K=k.request(H,{endStream:!1,signal:C}))[L]=!0,K.once("response",(c,d)=>{let{[V]:e,...f}=c;b.onUpgrade(e,Z(f),K),++k[O],a[s][a[u]++]=null}),K.on("error",()=>{(K.rstCode===X||K.rstCode===Y)&&_(new l(`HTTP/2: "stream error" received - code ${K.rstCode}`))}),K.once("close",()=>{k[O]-=1,0===k[O]&&k.unref()}),K.setTimeout(e),!0):((K=k.request(H,{endStream:!1,signal:C}))[L]=!0,K.on("response",c=>{let{[V]:d,...e}=c;b.onUpgrade(d,Z(e),K),++k[O],a[s][a[u]++]=null}),K.once("close",()=>{k[O]-=1,0===k[O]&&k.unref()}),K.setTimeout(e),!0);H[R]=r,H[S]="http:"===D?"http":"https";let aa="PUT"===p||"POST"===p||"PATCH"===p;G&&"function"==typeof G.read&&G.read(0);let ab=h.bodyLength(G);if(h.isFormDataLike(G)){let[a,b]=(d??=c(35381).extractBody)(G);H["content-type"]=b,G=a.stream,ab=a.length}if(null==ab&&(ab=b.contentLength),aa||(ab=null),"GET"!==p&&"HEAD"!==p&&"OPTIONS"!==p&&"TRACE"!==p&&"CONNECT"!==p&&ab>0&&null!=b.contentLength&&b.contentLength!==ab){if(a[x])return h.errorRequest(a,b,new i),!1;process.emitWarning(new i)}if(null!=ab&&(f(G||0===ab,"no body must not have content length"),H[T]=`${ab}`),k.ref(),N.sendHeaders.hasSubscribers){let a="";for(let b in H)a+=`${b}: ${H[b]}\r
247
247
  `;N.sendHeaders.publish({request:b,headers:a,socket:k[w]})}let ac="GET"===p||"HEAD"===p||null===G;A?(H[U]="100-continue",(K=k.request(H,{endStream:ac,signal:C}))[L]=!0,K.once("continue",ae)):((K=k.request(H,{endStream:ac,signal:C}))[L]=!0,ae()),++k[O],K.setTimeout(e);let ad=!1;return K.once("response",a=>{let{[V]:c,...d}=a;(b.onResponseStarted(),ad=!0,b.aborted)?K.removeAllListeners("data"):(!1===b.onHeaders(Number(c),Z(d),K.resume.bind(K),"")&&K.pause(),K.on("data",a=>{b.aborted||b.completed||!1===b.onData(a)&&K.pause()}))}),K.once("end",()=>{K.removeAllListeners("data"),ad?(b.aborted||b.completed||b.onComplete({}),a[s][a[u]++]=null):(_(new l("HTTP/2: stream half-closed (remote)")),a[s][a[u]++]=null,a[t]=a[u]),a[E]()}),K.once("close",()=>{K.removeAllListeners("data"),k[O]-=1,0===k[O]&&k.unref()}),K.once("error",function(a){K.removeAllListeners("data"),_(a)}),K.once("frameError",(a,b)=>{K.removeAllListeners("data"),_(new l(`HTTP/2: "frameError" received - type ${a}, code ${b}`))}),K.on("aborted",()=>{K.removeAllListeners("data")}),K.on("timeout",()=>{let a=new l(`HTTP/2: "stream timeout after ${e}"`);K.removeAllListeners("data"),k[O]-=1,0===k[O]&&k.unref(),_(a)}),K.once("trailers",a=>{b.aborted||b.completed||(K.removeAllListeners("data"),b.onComplete(a))}),!0;function ae(){var c,d,e,i,j,k,l;let m;G&&0!==ab?h.isBuffer(G)?ak(_,K,G,a,b,a[w],ab,aa):h.isBlobLike(G)?"function"==typeof G.stream?am(_,K,G.stream(),a,b,a[w],ab,aa):al(_,K,G,a,b,a[w],ab,aa):h.isStream(G)?(c=_,d=a[w],e=aa,i=K,j=G,k=a,l=b,f(0!==ab||0===k[q],"stream body cannot be pipelined"),m=g(j,i,a=>{a?(h.destroy(m,a),c(a)):(h.removeAllListeners(m),l.onRequestSent(),e||(d[o]=!0),k[E]())}),h.addListener(m,"data",function(a){l.onBodySent(a)})):h.isIterable(G)?am(_,K,G,a,b,a[w],ab,aa):f(!1):ak(_,K,null,a,b,a[w],ab,aa)}})(a,b),resume(){var b;let c;c=(b=a)[w],c?.destroyed===!1&&(0===b[F]||0===b[z]?(c.unref(),b[B].unref()):(c.ref(),b[B].ref()))},destroy(a,c){b[H]?queueMicrotask(c):b.destroy(a).on("close",c)},get destroyed(){return b.destroyed},busy(b){if(null!=b){if(!(a[q]>0))return("websocket"===b.upgrade||"CONNECT"===b.method)&&!1===v[K];else if(!1===b.idempotent||("websocket"===b.upgrade||"CONNECT"===b.method)&&!1===v[K]||0!==h.bodyLength(b.body)&&(h.isStream(b.body)||h.isAsyncIterable(b.body)||h.isFormDataLike(b.body)))return!0}return!1}}}},83204:(a,b,c)=>{let d=c(34589),e=c(29167);a.exports=class{#E;#bo=!1;#bp=!1;#bq=!1;constructor(a){if("object"!=typeof a||null===a)throw TypeError("handler must be an object");this.#E=e.wrap(a)}onRequestStart(...a){this.#E.onRequestStart?.(...a)}onRequestUpgrade(...a){return d(!this.#bo),d(!this.#bp),this.#E.onRequestUpgrade?.(...a)}onResponseStart(...a){return d(!this.#bo),d(!this.#bp),d(!this.#bq),this.#bq=!0,this.#E.onResponseStart?.(...a)}onResponseData(...a){return d(!this.#bo),d(!this.#bp),this.#E.onResponseData?.(...a)}onResponseEnd(...a){return d(!this.#bo),d(!this.#bp),this.#bo=!0,this.#E.onResponseEnd?.(...a)}onResponseError(...a){return this.#bp=!0,this.#E.onResponseError?.(...a)}onBodySent(){}}},83589:a=>{a.exports={createDeferredPromise:function(){let a,b;return{promise:new Promise((c,d)=>{a=c,b=d}),resolve:a,reject:b}}}},84285:(a,b,c)=>{let d=c(34589),{kDestroyed:e,kBodyUsed:f,kListeners:g,kBody:h}=c(49176),{IncomingMessage:i}=c(37067),j=c(57075),k=c(77030),{stringify:l}=c(41792),{EventEmitter:m}=c(78474),n=c(64704),{InvalidArgumentError:o,ConnectTimeoutError:p}=c(39067),{headerNameLowerCasedRecord:q}=c(28820),{tree:r}=c(36649),[s,t]=process.versions.node.split(".",2).map(a=>Number(a));class u{constructor(a){this[h]=a,this[f]=!1}async *[Symbol.asyncIterator](){d(!this[f],"disturbed"),this[f]=!0,yield*this[h]}}function v(){}function w(a){return a&&"object"==typeof a&&"function"==typeof a.pipe&&"function"==typeof a.on}function x(a){if(null===a)return!1;{if(a instanceof Blob)return!0;if("object"!=typeof a)return!1;let b=a[Symbol.toStringTag];return("Blob"===b||"File"===b)&&("stream"in a&&"function"==typeof a.stream||"arrayBuffer"in a&&"function"==typeof a.arrayBuffer)}}function y(a){return a.includes("?")||a.includes("#")}function z(a){let b=parseInt(a,10);return b===Number(a)&&b>=0&&b<=65535}function A(a){return null!=a&&"h"===a[0]&&"t"===a[1]&&"t"===a[2]&&"p"===a[3]&&(":"===a[4]||"s"===a[4]&&":"===a[5])}function B(a){if("string"==typeof a){if(!A((a=new URL(a)).origin||a.protocol))throw new o("Invalid URL protocol: the URL must start with `http:` or `https:`.");return a}if(!a||"object"!=typeof a)throw new o("Invalid URL: The URL argument must be a non-null object.");if(!(a instanceof URL)){if(null!=a.port&&""!==a.port&&!1===z(a.port))throw new o("Invalid URL: port must be a valid integer or a string representation of an integer.");if(null!=a.path&&"string"!=typeof a.path)throw new o("Invalid URL path: the path must be a string or null/undefined.");if(null!=a.pathname&&"string"!=typeof a.pathname)throw new o("Invalid URL pathname: the pathname must be a string or null/undefined.");if(null!=a.hostname&&"string"!=typeof a.hostname)throw new o("Invalid URL hostname: the hostname must be a string or null/undefined.");if(null!=a.origin&&"string"!=typeof a.origin)throw new o("Invalid URL origin: the origin must be a string or null/undefined.");if(!A(a.origin||a.protocol))throw new o("Invalid URL protocol: the URL must start with `http:` or `https:`.");let b=null!=a.port?a.port:"https:"===a.protocol?443:80,c=null!=a.origin?a.origin:`${a.protocol||""}//${a.hostname||""}:${b}`,d=null!=a.path?a.path:`${a.pathname||""}${a.search||""}`;return"/"===c[c.length-1]&&(c=c.slice(0,c.length-1)),d&&"/"!==d[0]&&(d=`/${d}`),new URL(`${c}${d}`)}if(!A(a.origin||a.protocol))throw new o("Invalid URL protocol: the URL must start with `http:` or `https:`.");return a}function C(a){return null!=a&&("function"==typeof a[Symbol.iterator]||"function"==typeof a[Symbol.asyncIterator])}function D(a){if(null==a)return 0;if(w(a)){let b=a._readableState;return b&&!1===b.objectMode&&!0===b.ended&&Number.isFinite(b.length)?b.length:null}return x(a)?null!=a.size?a.size:null:I(a)?a.byteLength:null}function E(a){return a&&!!(a.destroyed||a[e]||j.isDestroyed?.(a))}function F(a,b){null==a||!w(a)||E(a)||("function"==typeof a.destroy?(Object.getPrototypeOf(a).constructor===i&&(a.socket=null),a.destroy(b)):b&&queueMicrotask(()=>{a.emit("error",b)}),!0!==a.destroyed&&(a[e]=!0))}let G=/timeout=(\d+)/;function H(a){return"string"==typeof a?q[a]??a.toLowerCase():r.lookup(a)??a.toString("latin1").toLowerCase()}function I(a){return a instanceof Uint8Array||Buffer.isBuffer(a)}function J(a){return a&&"object"==typeof a&&"function"==typeof a.append&&"function"==typeof a.delete&&"function"==typeof a.get&&"function"==typeof a.getAll&&"function"==typeof a.has&&"function"==typeof a.set&&"FormData"===a[Symbol.toStringTag]}let K=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),L=/^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/,M=/[^\t\x20-\x7e\x80-\xff]/,N=/^bytes (\d+)-(\d+)\/(\d+)?$/,O="win32"===process.platform?(a,b)=>{if(!b.timeout)return v;let c=null,d=null,e=n.setFastTimeout(()=>{c=setImmediate(()=>{d=setImmediate(()=>P(a.deref(),b))})},b.timeout);return()=>{n.clearFastTimeout(e),clearImmediate(c),clearImmediate(d)}}:(a,b)=>{if(!b.timeout)return v;let c=null,d=n.setFastTimeout(()=>{c=setImmediate(()=>{P(a.deref(),b)})},b.timeout);return()=>{n.clearFastTimeout(d),clearImmediate(c)}};function P(a,b){if(null==a)return;let c="Connect Timeout Error";Array.isArray(a.autoSelectFamilyAttemptedAddresses)?c+=` (attempted addresses: ${a.autoSelectFamilyAttemptedAddresses.join(", ")},`:c+=` (attempted address: ${b.hostname}:${b.port},`,F(a,new p(c+=` timeout: ${b.timeout}ms)`))}let Q=Object.create(null);Q.enumerable=!0;let R={delete:"DELETE",DELETE:"DELETE",get:"GET",GET:"GET",head:"HEAD",HEAD:"HEAD",options:"OPTIONS",OPTIONS:"OPTIONS",post:"POST",POST:"POST",put:"PUT",PUT:"PUT"},S={...R,patch:"patch",PATCH:"PATCH"};Object.setPrototypeOf(R,null),Object.setPrototypeOf(S,null),a.exports={kEnumerableProperty:Q,isDisturbed:function(a){return!!(a&&(j.isDisturbed(a)||a[f]))},isBlobLike:x,parseOrigin:function(a){if("/"!==(a=B(a)).pathname||a.search||a.hash)throw new o("invalid url");return a},parseURL:B,getServerName:function(a){if(!a)return null;d("string"==typeof a);let b=function(a){if("["===a[0]){let b=a.indexOf("]");return d(-1!==b),a.substring(1,b)}let b=a.indexOf(":");return -1===b?a:a.substring(0,b)}(a);return k.isIP(b)?"":b},isStream:w,isIterable:C,hasSafeIterator:function(a){let b=Object.getPrototypeOf(a);return Object.prototype.hasOwnProperty.call(a,Symbol.iterator)||null!=b&&b!==Object.prototype&&"function"==typeof a[Symbol.iterator]},isAsyncIterable:function(a){return null!=a&&"function"==typeof a[Symbol.asyncIterator]},isDestroyed:E,headerNameToString:H,bufferToLowerCasedHeaderName:function(a){return r.lookup(a)??a.toString("latin1").toLowerCase()},addListener:function(a,b,c){return(a[g]??=[]).push([b,c]),a.on(b,c),a},removeAllListeners:function(a){if(null!=a[g]){for(let[b,c]of a[g])a.removeListener(b,c);a[g]=null}return a},errorRequest:function(a,b,c){try{b.onError(c),d(b.aborted)}catch(b){a.emit("error",b)}},parseRawHeaders:function(a){let b,c,d=a.length,e=Array(d);for(let f=0;f<d;f+=2)b=a[f],c=a[f+1],"string"!=typeof b&&(b=b.toString()),"string"!=typeof c&&(c=c.toString("latin1")),e[f]=b,e[f+1]=c;return e},encodeRawHeaders:function(a){if(!Array.isArray(a))throw TypeError("expected headers to be an array");return a.map(a=>Buffer.from(a))},parseHeaders:function(a,b){void 0===b&&(b={});for(let c=0;c<a.length;c+=2){let d=H(a[c]),e=b[d];if(void 0!==e)if(Object.hasOwn(b,d))"string"==typeof e&&(e=[e],b[d]=e),e.push(a[c+1].toString("latin1"));else{let e="string"==typeof a[c+1]?a[c+1]:Array.isArray(a[c+1])?a[c+1].map(a=>a.toString("latin1")):a[c+1].toString("latin1");"__proto__"===d?Object.defineProperty(b,d,{value:e,enumerable:!0,configurable:!0,writable:!0}):b[d]=e}else{let e="string"==typeof a[c+1]?a[c+1]:Array.isArray(a[c+1])?a[c+1].map(a=>a.toString("latin1")):a[c+1].toString("latin1");b[d]=e}}return b},parseKeepAliveTimeout:function(a){let b=a.match(G);return b?1e3*parseInt(b[1],10):null},destroy:F,bodyLength:D,deepClone:function(a){return JSON.parse(JSON.stringify(a))},ReadableStreamFrom:function(a){let b;return new ReadableStream({start(){b=a[Symbol.asyncIterator]()},pull(a){return b.next().then(({done:b,value:c})=>{if(b)return queueMicrotask(()=>{a.close(),a.byobRequest?.respond(0)});{let b=Buffer.isBuffer(c)?c:Buffer.from(c);return b.byteLength?a.enqueue(new Uint8Array(b)):this.pull(a)}})},cancel:()=>b.return(),type:"bytes"})},isBuffer:I,assertRequestHandler:function(a,b,c){if(!a||"object"!=typeof a)throw new o("handler must be an object");if("function"!=typeof a.onRequestStart){if("function"!=typeof a.onConnect)throw new o("invalid onConnect method");if("function"!=typeof a.onError)throw new o("invalid onError method");if("function"!=typeof a.onBodySent&&void 0!==a.onBodySent)throw new o("invalid onBodySent method");if(c||"CONNECT"===b){if("function"!=typeof a.onUpgrade)throw new o("invalid onUpgrade method")}else{if("function"!=typeof a.onHeaders)throw new o("invalid onHeaders method");if("function"!=typeof a.onData)throw new o("invalid onData method");if("function"!=typeof a.onComplete)throw new o("invalid onComplete method")}}},getSocketInfo:function(a){return{localAddress:a.localAddress,localPort:a.localPort,remoteAddress:a.remoteAddress,remotePort:a.remotePort,remoteFamily:a.remoteFamily,timeout:a.timeout,bytesWritten:a.bytesWritten,bytesRead:a.bytesRead}},isFormDataLike:J,pathHasQueryOrFragment:y,serializePathWithQuery:function(a,b){if(y(a))throw Error('Query params cannot be passed when url already contains "?" or "#".');let c=l(b);return c&&(a+="?"+c),a},addAbortListener:function(a,b){return"addEventListener"in a?(a.addEventListener("abort",b,{once:!0}),()=>a.removeEventListener("abort",b)):(a.once("abort",b),()=>a.removeListener("abort",b))},isValidHTTPToken:function(a){if(a.length>=12)return L.test(a);if(0===a.length)return!1;for(let b=0;b<a.length;b++)if(1!==K[a.charCodeAt(b)])return!1;return!0},isValidHeaderValue:function(a){return!M.test(a)},isTokenCharCode:function(a){return 1===K[a]},parseRangeHeader:function(a){if(null==a||""===a)return{start:0,end:null,size:null};let b=a?a.match(N):null;return b?{start:parseInt(b[1]),end:b[2]?parseInt(b[2]):null,size:b[3]?parseInt(b[3]):null}:null},normalizedMethodRecordsBase:R,normalizedMethodRecords:S,isValidPort:z,isHttpOrHttpsPrefixed:A,nodeMajor:s,nodeMinor:t,safeHTTPMethods:Object.freeze(["GET","HEAD","OPTIONS","TRACE"]),wrapRequestBody:function(a){return w(a)?(0===D(a)&&a.on("data",function(){d(!1)}),"boolean"!=typeof a.readableDidRead&&(a[f]=!1,m.prototype.on.call(a,"data",function(){this[f]=!0})),a):a&&"function"==typeof a.pipeTo?new u(a):a&&J(a)?a:a&&"string"!=typeof a&&!ArrayBuffer.isView(a)&&C(a)?new u(a):a},setupConnectTimeout:O,getProtocolFromUrlString:function(a){if("h"===a[0]&&"t"===a[1]&&"t"===a[2]&&"p"===a[3])switch(a[4]){case":":return"http:";case"s":if(":"===a[5])return"https:"}return a.slice(0,a.indexOf(":")+1)}}},84698:a=>{function b(a){for(let b=0;b<a.length;++b){let c=a.charCodeAt(b);if(c<33||c>126||34===c||40===c||41===c||60===c||62===c||64===c||44===c||59===c||58===c||92===c||47===c||91===c||93===c||63===c||61===c||123===c||125===c)throw Error("Invalid cookie name")}}function c(a){let b=a.length,c=0;if('"'===a[0]){if(1===b||'"'!==a[b-1])throw Error("Invalid cookie value");--b,++c}for(;c<b;){let b=a.charCodeAt(c++);if(b<33||b>126||34===b||44===b||59===b||92===b)throw Error("Invalid cookie value")}}function d(a){for(let b=0;b<a.length;++b){let c=a.charCodeAt(b);if(c<32||127===c||59===c)throw Error("Invalid cookie path")}}let e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],g=Array(61).fill(0).map((a,b)=>b.toString().padStart(2,"0"));function h(a){return"number"==typeof a&&(a=new Date(a)),`${e[a.getUTCDay()]}, ${g[a.getUTCDate()]} ${f[a.getUTCMonth()]} ${a.getUTCFullYear()} ${g[a.getUTCHours()]}:${g[a.getUTCMinutes()]}:${g[a.getUTCSeconds()]} GMT`}a.exports={isCTLExcludingHtab:function(a){for(let b=0;b<a.length;++b){let c=a.charCodeAt(b);if(c>=0&&c<=8||c>=10&&c<=31||127===c)return!0}return!1},validateCookieName:b,validateCookiePath:d,validateCookieValue:c,toIMFDate:h,stringify:function(a){if(0===a.name.length)return null;b(a.name),c(a.value);let e=[`${a.name}=${a.value}`];if(a.name.startsWith("__Secure-")&&(a.secure=!0),a.name.startsWith("__Host-")&&(a.secure=!0,a.domain=null,a.path="/"),a.secure&&e.push("Secure"),a.httpOnly&&e.push("HttpOnly"),"number"==typeof a.maxAge){if(a.maxAge<0)throw Error("Invalid cookie max-age");e.push(`Max-Age=${a.maxAge}`)}if(a.domain){var f=a.domain;if(f.startsWith("-")||f.endsWith(".")||f.endsWith("-"))throw Error("Invalid cookie domain");e.push(`Domain=${a.domain}`)}for(let b of(a.path&&(d(a.path),e.push(`Path=${a.path}`)),a.expires&&"Invalid Date"!==a.expires.toString()&&e.push(`Expires=${h(a.expires)}`),a.sameSite&&e.push(`SameSite=${a.sameSite}`),a.unparsed)){if(!b.includes("="))throw Error("Invalid unparsed");let[a,...c]=b.split("=");e.push(`${a.trim()}=${c.join("=")}`)}return e.join("; ")}}},86625:(a,b,c)=>{let{promisify:d}=c(57975),e=c(35689),{buildMockDispatch:f}=c(70634),{kDispatches:g,kMockAgent:h,kClose:i,kOriginalClose:j,kOrigin:k,kOriginalDispatch:l,kConnected:m,kIgnoreTrailingSlash:n}=c(80830),{MockInterceptor:o}=c(55720),p=c(49176),{InvalidArgumentError:q}=c(39067);class r extends e{constructor(a,b){if(!b||!b.agent||"function"!=typeof b.agent.dispatch)throw new q("Argument opts.agent must implement Agent");super(a,b),this[h]=b.agent,this[k]=a,this[n]=b.ignoreTrailingSlash??!1,this[g]=[],this[m]=1,this[l]=this.dispatch,this[j]=this.close.bind(this),this.dispatch=f.call(this),this.close=this[i]}get[p.kConnected](){return this[m]}intercept(a){return new o(a&&{ignoreTrailingSlash:this[n],...a},this[g])}cleanMocks(){this[g]=[]}async [i](){await d(this[j])(),this[m]=0,this[h][p.kClients].delete(this[k])}}a.exports=r},87085:(a,b,c)=>{let{InvalidArgumentError:d,RequestAbortedError:e}=c(39067),f=c(83204);class g extends f{#ab=1048576;#br=!1;#ac=0;#z=null;aborted=!1;reason=!1;constructor({maxSize:a,signal:b},c){if(null!=a&&(!Number.isFinite(a)||a<1))throw new d("maxSize must be a number greater than 0");super(c),this.#ab=a??this.#ab}#bn(a){this.aborted=!0,this.reason=a}onRequestStart(a,b){return a.abort=this.#bn.bind(this),this.#z=a,super.onRequestStart(a,b)}onResponseStart(a,b,c,d){let f=c["content-length"];if(null!=f&&f>this.#ab)throw new e(`Response size (${f}) larger than maxSize (${this.#ab})`);return!0===this.aborted||super.onResponseStart(a,b,c,d)}onResponseError(a,b){this.#br||(b=this.#z?.reason??b,super.onResponseError(a,b))}onResponseData(a,b){return this.#ac=this.#ac+b.length,this.#ac>=this.#ab&&(this.#br=!0,!0===this.aborted?super.onResponseError(a,this.reason):super.onResponseEnd(a,{})),!0}onResponseEnd(a,b){if(!this.#br){if(!0===this.#z.aborted)return void super.onResponseError(a,this.reason);super.onResponseEnd(a,b)}}}a.exports=function({maxSize:a}={maxSize:1048576}){return b=>function(c,d){let{dumpMaxSize:e=a}=c,f=new g({maxSize:e,signal:c.signal},d);return b(c,f)}}},87123:(a,b,c)=>{c.d(b,{KQ:()=>q,AL:()=>p,HG:()=>o,Or:()=>r,Jh:()=>s});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j);let l="bluerouter";function m(){return"win32"===process.platform?i().join(process.env.APPDATA||i().join(k().homedir(),"AppData","Roaming"),l):i().join(k().homedir(),`.${l}`)}let n=function(){let a=process.env.DATA_DIR;if(!a)return m();try{return g().mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${l}`),m();throw b}}(),o=e().join(n,"db"),p=e().join(o,"data.sqlite"),q=e().join(o,"backups"),r={main:e().join(n,"db.json"),usage:e().join(n,"usage.json"),disabled:e().join(n,"disabledModels.json"),details:e().join(n,"request-details.json")};function s(){for(let a of[n,o,q])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},87404:(a,b,c)=>{let{webidl:d}=c(32984),{validateCloseCodeAndReason:e}=c(94050),{kConstruct:f}=c(49176),{kEnumerableProperty:g}=c(84285);function h(){class a extends DOMException{get reason(){return""}}return void 0!==new a().reason?DOMException:new Proxy(DOMException,{construct(a,b,c){let d=Reflect.construct(a,b,a);return Object.setPrototypeOf(d,c.prototype),d}})}class i extends h(){#bs;#bm;constructor(a="",b){if(super(a=d.converters.DOMString(a,"WebSocketError","message"),"WebSocketError"),b===f)return;null!==b&&(b=d.converters.WebSocketCloseInfo(b));let c=b.closeCode??null;const g=b.reason??"";e(c,g),0!==g.length&&null===c&&(c=1e3),this.#bs=c,this.#bm=g}get closeCode(){return this.#bs}get reason(){return this.#bm}static createUnvalidatedWebSocketError(a,b,c){let d=new i(a,f);return d.#bs=b,d.#bm=c,d}}let{createUnvalidatedWebSocketError:j}=i;delete i.createUnvalidatedWebSocketError,Object.defineProperties(i.prototype,{closeCode:g,reason:g,[Symbol.toStringTag]:{value:"WebSocketError",writable:!1,enumerable:!1,configurable:!0}}),d.is.WebSocketError=d.util.MakeTypeAssertion(i),a.exports={WebSocketError:i,createUnvalidatedWebSocketError:j}},89409:(a,b,c)=>{let d=c(84285),{parseCacheControlHeader:e,parseVaryHeader:f,isEtagUsable:g}=c(79468),{parseHttpDate:h}=c(24214);function i(){}let j=[200,203,204,206,300,301,308,404,405,410,414,501],k=[206];class l{#bt;#bu;#bv;#bw;#E;#bx;constructor({store:a,type:b,cacheByDefault:c},d,e){this.#bw=a,this.#bu=b,this.#bv=c,this.#bt=d,this.#E=e}onRequestStart(a,b){this.#bx?.destroy(),this.#bx=void 0,this.#E.onRequestStart?.(a,b)}onRequestUpgrade(a,b,c,d){this.#E.onRequestUpgrade?.(a,b,c,d)}onResponseStart(a,b,c,l){var m,n,o,p,q,r,s,t,u;let v,w,x,y,z,A=()=>this.#E.onResponseStart?.(a,b,c,l),B=this;if(!d.safeHTTPMethods.includes(this.#bt.method)&&b>=200&&b<=399){try{this.#bw.delete(this.#bt)?.catch?.(i)}catch{}return A()}let C=c["cache-control"],D=c["last-modified"]&&j.includes(b);if(!C&&!c.expires&&!D&&!this.#bv)return A();let E=C?e(C):{};if(m=this.#bu,n=b,o=c,p=E,q=this.#bt.headers,n<200||k.includes(n)||!j.includes(n)&&!o.expires&&!p.public&&void 0===p["max-age"]&&!(p.private&&"private"===m)&&(void 0===p["s-maxage"]||"shared"!==m)||p["no-store"]||"shared"===m&&!0===p.private||o.vary?.includes("*")||q?.authorization&&(!p.public&&!p["s-maxage"]&&!p["must-revalidate"]||"string"!=typeof q.authorization||Array.isArray(p["no-cache"])&&p["no-cache"].includes("authorization")||Array.isArray(p.private)&&p.private.includes("authorization"))||0)return A();let F=Date.now(),G=c.age?isNaN(v=parseInt(Array.isArray(r=c.age)?r[0]:r))?void 0:1e3*v:void 0;if(G&&G>=2147483647e3)return A();let H="string"==typeof c.date?h(c.date):void 0,I=function(a,b,c,d,e,f){if("shared"===a){let a=f["s-maxage"];if(void 0!==a)return a>0?1e3*a:void 0}let g=f["max-age"];if(void 0!==g)return g>0?1e3*g:void 0;if("string"==typeof d.expires){let a=h(d.expires);if(a){if(b>=a.getTime()||e&&(e>=a||void 0!==c&&c>a-e))return;return a.getTime()-b}}if("string"==typeof d["last-modified"]){var i;let a=new Date(d["last-modified"]);if((i=a)instanceof Date&&Number.isFinite(i.valueOf())){if(a.getTime()>=b)return;return .1*(b-a.getTime())}}if(f.immutable)return 31536e3}(this.#bu,F,G,c,H,E)??this.#bv;if(void 0===I||G&&G>I)return A();let J=H?H.getTime():F,K=I+J;if(F>=K||this.#bt.headers&&c.vary&&!(z=f(c.vary,this.#bt.headers)))return A();let L=(s=J,t=E,u=K,w=-1/0,x=-1/0,y=-1/0,(t["stale-while-revalidate"]&&(w=u+1e3*t["stale-while-revalidate"]),t["stale-if-error"]&&(x=u+1e3*t["stale-if-error"]),t.immutable&&w===-1/0&&x===-1/0&&(y=s+31536e6),w===-1/0&&x===-1/0&&y===-1/0)?u+(u-s):Math.max(u,w,x,y)),M=function(a,b){let c,d=["connection","proxy-authenticate","proxy-authentication-info","proxy-authorization","proxy-connection","te","transfer-encoding","upgrade","age"];for(let e of(a.connection&&(Array.isArray(a.connection)?d.push(...a.connection.map(a=>a.trim())):d.push(...a.connection.split(",").map(a=>a.trim()))),Array.isArray(b["no-cache"])&&d.push(...b["no-cache"]),Array.isArray(b.private)&&d.push(...b.private),d))a[e]&&(c??={...a},delete c[e]);return c??a}(c,E),N={statusCode:b,statusMessage:l,headers:M,vary:z,cacheControlDirectives:E,cachedAt:G?F-G:F,staleAt:K,deleteAt:L};if(304===b){let b=b=>{if(!b)return A();if(N.statusCode=b.statusCode,N.statusMessage=b.statusMessage,N.etag=b.etag,N.headers={...b.headers,...M},A(),this.#bx=this.#bw.createWriteStream(this.#bt,N),this.#bx&&b?.body)if("function"==typeof b.body.values){let c=b.body.values(),d=()=>{for(let b of c){let c=!1===this.#bx.write(b);if(this.#E.onResponseData?.(a,b),c)break}};this.#bx.on("error",function(){B.#bx=void 0,B.#bw.delete(B.#bt)}).on("drain",()=>{d()}).on("close",function(){B.#bx===this&&(B.#bx=void 0)}),d()}else"function"==typeof b.body.on&&(b.body.on("data",b=>{this.#bx.write(b),this.#E.onResponseData?.(a,b)}).on("end",()=>{this.#bx.end()}).on("error",()=>{this.#bx=void 0,this.#bw.delete(this.#bt)}),this.#bx.on("error",function(){B.#bx=void 0,B.#bw.delete(B.#bt)}).on("close",function(){B.#bx===this&&(B.#bx=void 0)}))},c=this.#bw.get(this.#bt);c&&"function"==typeof c.then?c.then(b):b(c)}else{if("string"==typeof c.etag&&g(c.etag)&&(N.etag=c.etag),this.#bx=this.#bw.createWriteStream(this.#bt,N),!this.#bx)return A();this.#bx.on("drain",()=>a.resume()).on("error",function(){B.#bx=void 0,B.#bw.delete(B.#bt)}).on("close",function(){B.#bx===this&&(B.#bx=void 0),a.resume()}),A()}}onResponseData(a,b){this.#bx?.write(b)===!1&&a.pause(),this.#E.onResponseData?.(a,b)}onResponseEnd(a,b){this.#bx?.end(),this.#E.onResponseEnd?.(a,b)}onResponseError(a,b){this.#bx?.destroy(b),this.#bx=void 0,this.#E.onResponseError?.(a,b)}}a.exports=l},89512:(a,b,c)=>{let d=c(37417),e=c(65630),{SnapshotRecorder:f}=c(94279),g=c(29167),{InvalidArgumentError:h,UndiciError:i}=c(39067),{validateSnapshotMode:j}=c(47800),k=Symbol("kSnapshotRecorder"),l=Symbol("kSnapshotMode"),m=Symbol("kSnapshotPath"),n=Symbol("kSnapshotLoaded"),o=Symbol("kRealAgent"),p=!1;class q extends e{constructor(a={}){p||(process.emitWarning("SnapshotAgent is experimental and subject to change","ExperimentalWarning"),p=!0);const{mode:b="record",snapshotPath:c=null,...e}=a;if(super(e),j(b),("playback"===b||"update"===b)&&!c)throw new h(`snapshotPath is required when mode is '${b}'`);this[l]=b,this[m]=c,this[k]=new f({snapshotPath:this[m],mode:this[l],maxSnapshots:a.maxSnapshots,autoFlush:a.autoFlush,flushInterval:a.flushInterval,matchHeaders:a.matchHeaders,ignoreHeaders:a.ignoreHeaders,excludeHeaders:a.excludeHeaders,matchBody:a.matchBody,matchQuery:a.matchQuery,caseSensitive:a.caseSensitive,shouldRecord:a.shouldRecord,shouldPlayback:a.shouldPlayback,excludeUrls:a.excludeUrls}),this[n]=!1,("record"===this[l]||"update"===this[l]||"playback"===this[l]&&a.excludeUrls&&a.excludeUrls.length>0)&&(this[o]=new d(a)),("playback"===this[l]||"update"===this[l])&&this[m]&&this.loadSnapshots().catch(()=>{})}dispatch(a,b){b=g.wrap(b);let c=this[l];if(this[k].isUrlExcluded(a))return this[o].dispatch(a,b);if("playback"===c||"update"===c){if(!this[n])return this.#by(a,b);let d=this[k].findSnapshot(a);if(d)return this.#bz(d,b);{if("update"===c)return this.#bA(a,b);let d=new i(`No snapshot found for ${a.method||"GET"} ${a.path}`);if(b.onError)return void b.onError(d);throw d}}if("record"===c)return this.#bA(a,b)}async #by(a,b){return await this.loadSnapshots(),this.dispatch(a,b)}#bA(a,b){let c={statusCode:null,headers:{},trailers:{},body:[]},d=this;return this[o].dispatch(a,{onRequestStart(a,c){return b.onRequestStart(a,{...c,history:this.history})},onRequestUpgrade:(a,c,d,e)=>b.onRequestUpgrade(a,c,d,e),onResponseStart:(a,d,e,f)=>(c.statusCode=d,c.headers=e,b.onResponseStart(a,d,e,f)),onResponseData:(a,d)=>(c.body.push(d),b.onResponseData(a,d)),onResponseEnd(e,f){c.trailers=f;let g=Buffer.concat(c.body);d[k].record(a,{statusCode:c.statusCode,headers:c.headers,body:g,trailers:c.trailers}).then(()=>b.onResponseEnd(e,f)).catch(a=>b.onResponseError(e,a))}})}#bz(a,b){try{let{response:c}=a,d={pause(){},resume(){},abort(a){this.aborted=!0,this.reason=a},aborted:!1,paused:!1};b.onRequestStart(d),b.onResponseStart(d,c.statusCode,c.headers);let e=Buffer.from(c.body,"base64");b.onResponseData(d,e),b.onResponseEnd(d,c.trailers)}catch(a){b.onError?.(a)}}async loadSnapshots(a){await this[k].loadSnapshots(a||this[m]),this[n]=!0,"playback"===this[l]&&this.#bB()}async saveSnapshots(a){return this[k].saveSnapshots(a||this[m])}#bB(){for(let a of this[k].getSnapshots()){let{request:b,responses:c,response:d}=a,e=new URL(b.url),f=this.get(e.origin),g=c?c[0]:d;g&&f.intercept({path:e.pathname+e.search,method:b.method,headers:b.headers,body:b.body}).reply(g.statusCode,g.body,{headers:g.headers,trailers:g.trailers}).persist()}}getRecorder(){return this[k]}getMode(){return this[l]}clearSnapshots(){this[k].clear()}resetCallCounts(){this[k].resetCallCounts()}deleteSnapshot(a){return this[k].deleteSnapshot(a)}getSnapshotInfo(a){return this[k].getSnapshotInfo(a)}replaceSnapshots(a){this[k].replaceSnapshots(a)}async close(){await this[k].close(),await this[o]?.close(),await super.close()}}a.exports=q},90181:(a,b,c)=>{c.d(b,{getPricingForModel:()=>g}),c(24081);let d=(0,c(58609).U)("pricing");async function e(){return await d.getAll()}function f(a,b){if(!a||!b)return null;if(a[b])return a[b];let c=String(b).toLowerCase();for(let b of Object.keys(a))if(b.toLowerCase()===c)return a[b];return null}async function g(a,b){if(!b)return null;let d=await e();if(a){let c=f(d,a);if(c){let a=f(c,b);if(a)return a}}let{getPricingForModel:g}=await c.e(7464).then(c.bind(c,87464));return g(a,b)}},90249:(a,b,c)=>{let d=c(53053),e=c(84285),f=c(32264),{normalizeHeaders:g,makeCacheKey:h,makeDeduplicationKey:i}=c(79468),j=d.channel("undici:request:pending-requests");a.exports=(a={})=>{let{methods:b=["GET"],skipHeaderNames:c=[],excludeHeaderNames:d=[],maxBufferSize:k=5242880}=a;if("object"!=typeof a||null===a)throw TypeError(`expected type of opts to be an Object, got ${null===a?"null":typeof a}`);if(!Array.isArray(b))throw TypeError(`expected opts.methods to be an array, got ${typeof b}`);for(let a of b)if(!e.safeHTTPMethods.includes(a))throw TypeError(`expected opts.methods to only contain safe HTTP methods, got ${a}`);if(!Array.isArray(c))throw TypeError(`expected opts.skipHeaderNames to be an array, got ${typeof c}`);if(!Array.isArray(d))throw TypeError(`expected opts.excludeHeaderNames to be an array, got ${typeof d}`);if(!Number.isFinite(k)||k<=0)throw TypeError(`expected opts.maxBufferSize to be a positive finite number, got ${k}`);let l=new Set(c.map(a=>a.toLowerCase())),m=new Set(d.map(a=>a.toLowerCase())),n=new Map;return a=>(c,d)=>{if(!c.origin||!1===b.includes(c.method))return a(c,d);if(c={...c,headers:g(c)},l.size>0){for(let b of Object.keys(c.headers))if(l.has(b.toLowerCase()))return a(c,d)}let e=i(h(c),m),o=n.get(e);if(o)return!!o.addWaitingHandler(d)||a(c,d);let p=new f(d,()=>{n.delete(e),j.hasSubscribers&&j.publish({size:n.size,key:e,type:"removed"})},k);return n.set(e,p),j.hasSubscribers&&j.publish({size:n.size,key:e,type:"added"}),a(c,p)}}},92216:(a,b,c)=>{c.d(b,{Mc:()=>j,getProviderConnections:()=>i,rj:()=>k});var d=c(24081),e=c(50743);function f(a){return String(a||"").trim().toLowerCase()}function g(a){return"personal"===a?"personal":"system"}function h(a){if(!a)return null;let b=(0,e.q)(a.data,{}),c=f(a.ownerUser||b.ownerUser),d=f(a.createdByUser||b.createdByUser),h=a.visibility||b.visibility||(c?"private":"system"),i="personal"===g(a.scope||b.scope)||c||"private"===h?"personal":"system";return{...b,id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive||!0===a.isActive,scope:i,ownerUser:c,createdByUser:d,visibility:h||("personal"===i?"private":"system"),createdAt:a.createdAt,updatedAt:a.updatedAt}}async function i(a={}){let b=await (0,d.c)(),c=[],e=[];a.provider&&(c.push("provider = ?"),e.push(a.provider)),void 0!==a.isActive&&(c.push("isActive = ?"),e.push(+!!a.isActive)),void 0!==a.scope&&"personal"===g(a.scope)?(c.push("(scope = ? OR visibility = ? OR length(trim(coalesce(ownerUser, ''))) > 0)"),e.push("personal","private")):(void 0!==a.scope||!0!==a.includePersonal)&&(c.push("scope = ?"),e.push("system"),c.push("coalesce(visibility, 'system') <> ?"),e.push("private"),c.push("length(trim(coalesce(ownerUser, ''))) = 0")),void 0!==a.ownerUser&&(c.push("lower(coalesce(ownerUser, '')) = ?"),e.push(f(a.ownerUser)));let j=`SELECT * FROM providerConnections${c.length?` WHERE ${c.join(" AND ")}`:""}`,k=b.all(j,e).map(h);return k.sort((a,b)=>(a.priority||999)-(b.priority||999)),k}async function j(a){return h((await (0,d.c)()).get("SELECT * FROM providerConnections WHERE id = ?",[a]))}async function k(a,b){let c,i=await (0,d.c)();return i.transaction(()=>{let d,j=i.get("SELECT * FROM providerConnections WHERE id = ?",[a]);if(!j){c=null;return}let k=h(j),l={...k,...b,updatedAt:new Date().toISOString()};d=function(a){let{id:b,provider:c,authType:d,name:h,email:i,priority:j,isActive:k,scope:l,ownerUser:m,createdByUser:n,visibility:o,createdAt:p,updatedAt:q,...r}=a,s=f(m),t=o||(s?"private":void 0),u="personal"===g(l)||s||"private"===t?"personal":"system";return{id:b,provider:c,authType:d,name:h??null,email:i??null,priority:j??null,isActive:+(!1!==k),scope:u,ownerUser:s,createdByUser:f(n),visibility:t||("personal"===u?"private":"system"),data:(0,e.s)(r),createdAt:p,updatedAt:q}}(l),i.run(`INSERT INTO providerConnections(id, provider, authType, name, email, priority, isActive, scope, ownerUser, createdByUser, visibility, data, createdAt, updatedAt)
248
248
  VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
249
249
  ON CONFLICT(id) DO UPDATE SET