n9router 0.4.20 → 0.4.21

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 (807) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +13 -11
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/routes-manifest.json +12 -0
  6. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  7. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  13. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  16. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  19. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +5 -5
  22. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  25. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/combo/[id]/page.js +2 -2
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/combo/[id]/page.js.nft.json +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/combo/[id]/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  34. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  37. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  40. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  43. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  52. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  55. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  58. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  61. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/_global-error/page.js +2 -2
  64. package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
  65. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/_global-error.html +1 -1
  67. package/app/.next/server/app/_global-error.rsc +1 -1
  68. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  69. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  70. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  71. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  72. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  73. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  74. package/app/.next/server/app/_not-found/page.js +2 -2
  75. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  76. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/_not-found.html +1 -1
  78. package/app/.next/server/app/_not-found.rsc +4 -4
  79. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  80. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  81. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  82. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  83. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  84. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  85. package/app/.next/server/app/api/antigravity-ide/route.js +1 -1
  86. package/app/.next/server/app/api/antigravity-ide/route.js.nft.json +1 -1
  87. package/app/.next/server/app/api/antigravity-tools/import/route.js +1 -1
  88. package/app/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
  89. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
  90. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
  91. package/app/.next/server/app/api/auth/login/route.js +1 -1
  92. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  93. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  94. package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  95. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  96. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  97. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  98. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  99. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  100. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  101. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +3 -3
  102. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  104. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  106. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  107. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  108. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  109. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  110. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  111. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  112. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  113. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  114. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  115. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  116. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  117. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  118. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  119. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  120. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  121. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  122. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/combos/route.js +1 -1
  124. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/health/route.js +1 -1
  126. package/app/.next/server/app/api/health/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/init/route.js +1 -1
  128. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/internal/account-health/route.js +1 -1
  130. package/app/.next/server/app/api/internal/account-health/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/internal/request-detail/route.js +1 -1
  132. package/app/.next/server/app/api/internal/request-detail/route.js.nft.json +1 -1
  133. package/app/.next/server/app/api/internal/usage/route.js +1 -1
  134. package/app/.next/server/app/api/internal/usage/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  136. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  137. package/app/.next/server/app/api/keys/route.js +1 -1
  138. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/locale/route.js +1 -1
  140. package/app/.next/server/app/api/locale/route.js.nft.json +1 -1
  141. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -0
  142. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -0
  143. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -0
  144. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  145. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  146. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -0
  147. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -0
  148. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -0
  149. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  150. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/models/alias/route.js +1 -1
  152. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/models/availability/route.js +1 -1
  154. package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/models/custom/route.js +1 -1
  156. package/app/.next/server/app/api/models/custom/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/models/route.js +1 -1
  158. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/models/test/route.js +1 -1
  160. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  161. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  162. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  163. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  164. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  165. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  166. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  167. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  168. package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  169. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  170. package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  171. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  172. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  173. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  174. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  175. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  176. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  177. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  178. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/pricing/route.js +1 -1
  180. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  181. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  182. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  183. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  184. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  186. package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  187. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  188. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  190. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  191. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  192. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  194. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/providers/client/route.js +1 -1
  196. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  198. package/app/.next/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/providers/route.js +1 -1
  200. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  202. package/app/.next/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  203. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  204. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  205. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  206. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  207. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  208. package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  210. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  212. package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  214. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/settings/database/route.js +1 -1
  216. package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  218. package/app/.next/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  220. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  221. package/app/.next/server/app/api/settings/route.js +1 -1
  222. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  223. package/app/.next/server/app/api/shutdown/route.js +1 -1
  224. package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  225. package/app/.next/server/app/api/tags/route.js +1 -1
  226. package/app/.next/server/app/api/tags/route.js.nft.json +1 -1
  227. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  228. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  229. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  230. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  231. package/app/.next/server/app/api/translator/load/route.js +1 -1
  232. package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
  233. package/app/.next/server/app/api/translator/save/route.js +1 -1
  234. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  235. package/app/.next/server/app/api/translator/send/route.js +1 -1
  236. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  237. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  238. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  239. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  240. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  241. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  242. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  243. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  244. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -4
  246. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  248. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  250. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  252. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/tunnel/tailscale-login/route.js +1 -4
  254. package/app/.next/server/app/api/tunnel/tailscale-login/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js +1 -1
  256. package/app/.next/server/app/api/tunnel/tailscale-start-daemon/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  258. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  259. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  260. package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/usage/history/route.js +1 -1
  262. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  264. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  265. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  266. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  267. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  268. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
  269. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  270. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  271. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  272. package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
  273. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  274. package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
  275. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  276. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  277. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  278. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  279. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  280. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  281. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  282. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  283. package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
  284. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  286. package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  288. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  289. package/app/.next/server/app/api/v1/models/route.js +1 -1
  290. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  291. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  292. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  293. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  294. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  295. package/app/.next/server/app/api/v1/route.js +1 -1
  296. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  297. package/app/.next/server/app/api/v1/search/route.js +1 -1
  298. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  299. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  300. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  301. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  302. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  303. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  304. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  305. package/app/.next/server/app/api/version/route.js +1 -1
  306. package/app/.next/server/app/api/version/route.js.nft.json +1 -1
  307. package/app/.next/server/app/api/version/update/route.js +1 -1
  308. package/app/.next/server/app/api/version/update/route.js.nft.json +1 -1
  309. package/app/.next/server/app/callback/page.js +2 -2
  310. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  311. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  312. package/app/.next/server/app/callback.html +1 -1
  313. package/app/.next/server/app/callback.rsc +4 -4
  314. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  315. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  316. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  317. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  318. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  319. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  320. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  321. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  322. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  323. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  324. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  325. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  326. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  327. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  328. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  329. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  330. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  331. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  332. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  333. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  334. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  335. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  336. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  337. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  338. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  339. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  340. package/app/.next/server/app/dashboard/combos.html +1 -1
  341. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  342. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  343. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  344. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  345. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  346. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  347. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  348. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  349. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  350. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  351. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  352. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  353. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  354. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  355. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  356. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  357. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  358. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  359. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  360. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  361. package/app/.next/server/app/dashboard/media-providers/web.rsc +6 -6
  362. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  363. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  364. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  365. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  366. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  367. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  368. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  369. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  370. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  371. package/app/.next/server/app/dashboard/mitm.html +1 -1
  372. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  373. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  374. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  375. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  376. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  377. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  378. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  379. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  380. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  381. package/app/.next/server/app/dashboard/profile.html +1 -1
  382. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  383. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  384. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  385. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  386. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  387. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  388. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  389. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  390. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  391. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  392. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  393. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  394. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  395. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  396. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  397. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  398. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  399. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  400. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  401. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  402. package/app/.next/server/app/dashboard/providers.html +1 -1
  403. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  404. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  405. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  406. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  407. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  408. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  409. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  410. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  411. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  412. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  413. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  414. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  415. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  416. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  417. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  418. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  419. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  420. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  421. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  422. package/app/.next/server/app/dashboard/quota.html +2 -2
  423. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  424. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  425. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  426. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  427. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  428. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  429. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  430. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  431. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  432. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  433. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  434. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  435. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  436. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  437. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  438. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  439. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  440. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  441. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  442. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  443. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  444. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  445. package/app/.next/server/app/dashboard/translator.html +1 -1
  446. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  447. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  448. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  449. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  450. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  451. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  452. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  453. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  454. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  455. package/app/.next/server/app/dashboard/usage.html +1 -1
  456. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  457. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  458. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  459. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  460. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  461. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  462. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  463. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  464. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  465. package/app/.next/server/app/dashboard.html +1 -1
  466. package/app/.next/server/app/dashboard.rsc +6 -6
  467. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  468. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  469. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  470. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  471. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  472. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  473. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  474. package/app/.next/server/app/favicon.ico/route.js +1 -1
  475. package/app/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  476. package/app/.next/server/app/index.html +1 -1
  477. package/app/.next/server/app/index.rsc +4 -4
  478. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  479. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  480. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  481. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  482. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  483. package/app/.next/server/app/landing/page.js +2 -2
  484. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  485. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  486. package/app/.next/server/app/landing.html +1 -1
  487. package/app/.next/server/app/landing.rsc +4 -4
  488. package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  489. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  490. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  491. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  492. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  493. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  494. package/app/.next/server/app/login/page.js +2 -2
  495. package/app/.next/server/app/login/page.js.nft.json +1 -1
  496. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  497. package/app/.next/server/app/login.html +1 -1
  498. package/app/.next/server/app/login.rsc +5 -5
  499. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  500. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  501. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  502. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  503. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  504. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  505. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  506. package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  507. package/app/.next/server/app/page.js +2 -2
  508. package/app/.next/server/app/page.js.nft.json +1 -1
  509. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  510. package/app/.next/server/app-paths-manifest.json +13 -11
  511. package/app/.next/server/chunks/2549.js +1 -0
  512. package/app/.next/server/chunks/318.js +3 -3
  513. package/app/.next/server/chunks/3245.js +1 -0
  514. package/app/.next/server/chunks/3646.js +1 -1
  515. package/app/.next/server/chunks/3855.js +1 -1
  516. package/app/.next/server/chunks/3913.js +2 -2
  517. package/app/.next/server/chunks/412.js +1 -1
  518. package/app/.next/server/chunks/5627.js +23 -0
  519. package/app/.next/server/chunks/5681.js +1 -0
  520. package/app/.next/server/chunks/5787.js +2 -2
  521. package/app/.next/server/chunks/6182.js +15 -0
  522. package/app/.next/server/chunks/6555.js +1 -0
  523. package/app/.next/server/chunks/7595.js +1 -1
  524. package/app/.next/server/chunks/7774.js +2 -2
  525. package/app/.next/server/chunks/7994.js +1 -1
  526. package/app/.next/server/chunks/8760.js +1 -0
  527. package/app/.next/server/chunks/9718.js +1 -1
  528. package/app/.next/server/middleware-build-manifest.js +1 -1
  529. package/app/.next/server/middleware.js +1 -1
  530. package/app/.next/server/pages/404.html +1 -1
  531. package/app/.next/server/pages/500.html +1 -1
  532. package/app/.next/server/server-reference-manifest.js +1 -1
  533. package/app/.next/server/server-reference-manifest.json +1 -1
  534. package/app/.next/static/chunks/1321-758994bc249e4966.js +1 -0
  535. package/app/.next/static/chunks/{5497-317e948dba6de9f4.js → 5497-dc001333990a942c.js} +1 -1
  536. package/app/.next/static/chunks/{6309-109da4b11a3dda16.js → 6309-a7e57611cfcbe5fa.js} +3 -3
  537. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-753926e0f08dce1f.js → page-88171c9a70b02d07.js} +10 -10
  538. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-cf73f6db045a7e2d.js +1 -0
  539. package/app/.next/static/chunks/app/_global-error/{page-f6ca658d538ef9d3.js → page-35a97d1d3c44665b.js} +1 -1
  540. package/app/.next/static/chunks/app/api/antigravity-ide/{route-f6ca658d538ef9d3.js → route-35a97d1d3c44665b.js} +1 -1
  541. package/app/.next/static/chunks/app/api/antigravity-tools/import/{route-f6ca658d538ef9d3.js → route-35a97d1d3c44665b.js} +1 -1
  542. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/{route-f6ca658d538ef9d3.js → route-35a97d1d3c44665b.js} +1 -1
  543. package/app/.next/static/chunks/app/api/auth/login/route-35a97d1d3c44665b.js +1 -0
  544. package/app/.next/static/chunks/app/api/auth/logout/route-35a97d1d3c44665b.js +1 -0
  545. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-35a97d1d3c44665b.js +1 -0
  546. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-35a97d1d3c44665b.js +1 -0
  547. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-35a97d1d3c44665b.js +1 -0
  548. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-35a97d1d3c44665b.js +1 -0
  549. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-35a97d1d3c44665b.js +1 -0
  550. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-35a97d1d3c44665b.js +1 -0
  551. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-35a97d1d3c44665b.js +1 -0
  552. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-35a97d1d3c44665b.js +1 -0
  553. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-35a97d1d3c44665b.js +1 -0
  554. package/app/.next/static/chunks/app/api/cloud/auth/route-35a97d1d3c44665b.js +1 -0
  555. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-35a97d1d3c44665b.js +1 -0
  556. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-35a97d1d3c44665b.js +1 -0
  557. package/app/.next/static/chunks/app/api/cloud/models/alias/route-35a97d1d3c44665b.js +1 -0
  558. package/app/.next/static/chunks/app/api/combos/[id]/route-35a97d1d3c44665b.js +1 -0
  559. package/app/.next/static/chunks/app/api/combos/route-35a97d1d3c44665b.js +1 -0
  560. package/app/.next/static/chunks/app/api/health/route-35a97d1d3c44665b.js +1 -0
  561. package/app/.next/static/chunks/app/api/init/route-35a97d1d3c44665b.js +1 -0
  562. package/app/.next/static/chunks/app/api/internal/account-health/route-35a97d1d3c44665b.js +1 -0
  563. package/app/.next/static/chunks/app/api/internal/request-detail/route-35a97d1d3c44665b.js +1 -0
  564. package/app/.next/static/chunks/app/api/internal/usage/route-35a97d1d3c44665b.js +1 -0
  565. package/app/.next/static/chunks/app/api/keys/[id]/route-35a97d1d3c44665b.js +1 -0
  566. package/app/.next/static/chunks/app/api/keys/route-35a97d1d3c44665b.js +1 -0
  567. package/app/.next/static/chunks/app/api/locale/route-35a97d1d3c44665b.js +1 -0
  568. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-35a97d1d3c44665b.js +1 -0
  569. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-35a97d1d3c44665b.js +1 -0
  570. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-35a97d1d3c44665b.js +1 -0
  571. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-35a97d1d3c44665b.js +1 -0
  572. package/app/.next/static/chunks/app/api/models/alias/route-35a97d1d3c44665b.js +1 -0
  573. package/app/.next/static/chunks/app/api/models/availability/route-35a97d1d3c44665b.js +1 -0
  574. package/app/.next/static/chunks/app/api/models/custom/route-35a97d1d3c44665b.js +1 -0
  575. package/app/.next/static/chunks/app/api/models/route-35a97d1d3c44665b.js +1 -0
  576. package/app/.next/static/chunks/app/api/models/test/route-35a97d1d3c44665b.js +1 -0
  577. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-35a97d1d3c44665b.js +1 -0
  578. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-35a97d1d3c44665b.js +1 -0
  579. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-35a97d1d3c44665b.js +1 -0
  580. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-35a97d1d3c44665b.js +1 -0
  581. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-35a97d1d3c44665b.js +1 -0
  582. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-35a97d1d3c44665b.js +1 -0
  583. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-35a97d1d3c44665b.js +1 -0
  584. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-35a97d1d3c44665b.js +1 -0
  585. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-35a97d1d3c44665b.js +1 -0
  586. package/app/.next/static/chunks/app/api/pricing/route-35a97d1d3c44665b.js +1 -0
  587. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-35a97d1d3c44665b.js +1 -0
  588. package/app/.next/static/chunks/app/api/provider-nodes/route-35a97d1d3c44665b.js +1 -0
  589. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-35a97d1d3c44665b.js +1 -0
  590. package/app/.next/static/chunks/app/api/providers/[id]/models/route-35a97d1d3c44665b.js +1 -0
  591. package/app/.next/static/chunks/app/api/providers/[id]/route-35a97d1d3c44665b.js +1 -0
  592. package/app/.next/static/chunks/app/api/providers/[id]/test/route-35a97d1d3c44665b.js +1 -0
  593. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-35a97d1d3c44665b.js +1 -0
  594. package/app/.next/static/chunks/app/api/providers/client/route-35a97d1d3c44665b.js +1 -0
  595. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-35a97d1d3c44665b.js +1 -0
  596. package/app/.next/static/chunks/app/api/providers/route-35a97d1d3c44665b.js +1 -0
  597. package/app/.next/static/chunks/app/api/providers/suggested-models/route-35a97d1d3c44665b.js +1 -0
  598. package/app/.next/static/chunks/app/api/providers/test-batch/route-35a97d1d3c44665b.js +1 -0
  599. package/app/.next/static/chunks/app/api/providers/validate/route-35a97d1d3c44665b.js +1 -0
  600. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-35a97d1d3c44665b.js +1 -0
  601. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-35a97d1d3c44665b.js +1 -0
  602. package/app/.next/static/chunks/app/api/proxy-pools/route-35a97d1d3c44665b.js +1 -0
  603. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-35a97d1d3c44665b.js +1 -0
  604. package/app/.next/static/chunks/app/api/settings/database/route-35a97d1d3c44665b.js +1 -0
  605. package/app/.next/static/chunks/app/api/settings/proxy-test/route-35a97d1d3c44665b.js +1 -0
  606. package/app/.next/static/chunks/app/api/settings/require-login/route-35a97d1d3c44665b.js +1 -0
  607. package/app/.next/static/chunks/app/api/settings/route-35a97d1d3c44665b.js +1 -0
  608. package/app/.next/static/chunks/app/api/shutdown/route-35a97d1d3c44665b.js +1 -0
  609. package/app/.next/static/chunks/app/api/tags/route-35a97d1d3c44665b.js +1 -0
  610. package/app/.next/static/chunks/app/api/translator/console-logs/route-35a97d1d3c44665b.js +1 -0
  611. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-35a97d1d3c44665b.js +1 -0
  612. package/app/.next/static/chunks/app/api/translator/load/route-35a97d1d3c44665b.js +1 -0
  613. package/app/.next/static/chunks/app/api/translator/save/route-35a97d1d3c44665b.js +1 -0
  614. package/app/.next/static/chunks/app/api/translator/send/route-35a97d1d3c44665b.js +1 -0
  615. package/app/.next/static/chunks/app/api/translator/translate/route-35a97d1d3c44665b.js +1 -0
  616. package/app/.next/static/chunks/app/api/tunnel/disable/route-35a97d1d3c44665b.js +1 -0
  617. package/app/.next/static/chunks/app/api/tunnel/enable/route-35a97d1d3c44665b.js +1 -0
  618. package/app/.next/static/chunks/app/api/tunnel/status/route-35a97d1d3c44665b.js +1 -0
  619. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-35a97d1d3c44665b.js +1 -0
  620. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-35a97d1d3c44665b.js +1 -0
  621. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-35a97d1d3c44665b.js +1 -0
  622. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-35a97d1d3c44665b.js +1 -0
  623. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-35a97d1d3c44665b.js +1 -0
  624. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-35a97d1d3c44665b.js +1 -0
  625. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-35a97d1d3c44665b.js +1 -0
  626. package/app/.next/static/chunks/app/api/usage/chart/route-35a97d1d3c44665b.js +1 -0
  627. package/app/.next/static/chunks/app/api/usage/history/route-35a97d1d3c44665b.js +1 -0
  628. package/app/.next/static/chunks/app/api/usage/logs/route-35a97d1d3c44665b.js +1 -0
  629. package/app/.next/static/chunks/app/api/usage/providers/route-35a97d1d3c44665b.js +1 -0
  630. package/app/.next/static/chunks/app/api/usage/request-details/route-35a97d1d3c44665b.js +1 -0
  631. package/app/.next/static/chunks/app/api/usage/request-logs/route-35a97d1d3c44665b.js +1 -0
  632. package/app/.next/static/chunks/app/api/usage/stats/route-35a97d1d3c44665b.js +1 -0
  633. package/app/.next/static/chunks/app/api/usage/stream/route-35a97d1d3c44665b.js +1 -0
  634. package/app/.next/static/chunks/app/api/v1/api/chat/route-35a97d1d3c44665b.js +1 -0
  635. package/app/.next/static/chunks/app/api/v1/audio/speech/route-35a97d1d3c44665b.js +1 -0
  636. package/app/.next/static/chunks/app/api/v1/chat/completions/route-35a97d1d3c44665b.js +1 -0
  637. package/app/.next/static/chunks/app/api/v1/embeddings/route-35a97d1d3c44665b.js +1 -0
  638. package/app/.next/static/chunks/app/api/v1/images/generations/route-35a97d1d3c44665b.js +1 -0
  639. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-35a97d1d3c44665b.js +1 -0
  640. package/app/.next/static/chunks/app/api/v1/messages/route-35a97d1d3c44665b.js +1 -0
  641. package/app/.next/static/chunks/app/api/v1/models/route-35a97d1d3c44665b.js +1 -0
  642. package/app/.next/static/chunks/app/api/v1/responses/compact/route-35a97d1d3c44665b.js +1 -0
  643. package/app/.next/static/chunks/app/api/v1/responses/route-35a97d1d3c44665b.js +1 -0
  644. package/app/.next/static/chunks/app/api/v1/route-35a97d1d3c44665b.js +1 -0
  645. package/app/.next/static/chunks/app/api/v1/search/route-35a97d1d3c44665b.js +1 -0
  646. package/app/.next/static/chunks/app/api/v1/web/fetch/route-35a97d1d3c44665b.js +1 -0
  647. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-35a97d1d3c44665b.js +1 -0
  648. package/app/.next/static/chunks/app/api/v1beta/models/route-35a97d1d3c44665b.js +1 -0
  649. package/app/.next/static/chunks/app/api/version/route-35a97d1d3c44665b.js +1 -0
  650. package/app/.next/static/chunks/app/api/version/update/route-35a97d1d3c44665b.js +1 -0
  651. package/app/.next/static/chunks/app/manifest.webmanifest/route-35a97d1d3c44665b.js +1 -0
  652. package/app/.next/static/chunks/app/page-35a97d1d3c44665b.js +1 -0
  653. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-35a97d1d3c44665b.js +1 -0
  654. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-35a97d1d3c44665b.js +1 -0
  655. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-35a97d1d3c44665b.js +1 -0
  656. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-35a97d1d3c44665b.js +1 -0
  657. package/app/.next/static/css/{e645c03072faabe4.css → 34a45bfcb212973d.css} +1 -1
  658. package/app/.next/static/wozf5GL2edkjzl9Gac_lV/_buildManifest.js +1 -0
  659. package/app/open-sse/config/providerModels.js +18 -0
  660. package/app/open-sse/executors/default.js +5 -0
  661. package/app/open-sse/executors/opencode-go.js +2 -12
  662. package/app/open-sse/handlers/embeddingsCore.js +22 -15
  663. package/app/open-sse/handlers/ttsCore.js +232 -24
  664. package/app/open-sse/utils/reasoningContentInjector.js +37 -0
  665. package/app/package.json +1 -1
  666. package/app/public/providers/coqui.png +0 -0
  667. package/app/public/providers/inworld.png +0 -0
  668. package/app/public/providers/tortoise.png +0 -0
  669. package/app/public/providers/voyage-ai.png +0 -0
  670. package/app/src/mitm/antigravityIdeVersion.js +10 -25
  671. package/app/src/mitm/cert/install.js +48 -19
  672. package/app/src/mitm/config.js +16 -2
  673. package/app/src/mitm/dns/dnsConfig.js +21 -12
  674. package/app/src/mitm/handlers/antigravity.js +26 -4
  675. package/app/src/mitm/handlers/base.js +5 -7
  676. package/app/src/mitm/logger.js +89 -1
  677. package/app/src/mitm/manager.js +22 -5
  678. package/app/src/mitm/mitmSettings.js +104 -0
  679. package/app/src/mitm/modelMapping.js +1 -1
  680. package/app/src/mitm/server.js +32 -11
  681. package/app/src/mitm/winElevated.js +79 -0
  682. package/app/src/shared/constants/cliTools.js +1 -1
  683. package/app/src/shared/constants/providers.js +26 -22
  684. package/app/src/shared/constants/ttsProviders.js +61 -0
  685. package/package.json +1 -1
  686. package/app/.next/server/chunks/2409.js +0 -1
  687. package/app/.next/server/chunks/4404.js +0 -1
  688. package/app/.next/server/chunks/5259.js +0 -1
  689. package/app/.next/server/chunks/541.js +0 -1
  690. package/app/.next/server/chunks/6143.js +0 -1
  691. package/app/.next/server/chunks/9501.js +0 -5
  692. package/app/.next/static/4AyWeY4rlSixJyKSdoCHv/_buildManifest.js +0 -1
  693. package/app/.next/static/chunks/1321-f5366f7f4a2e6583.js +0 -1
  694. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-995356f99216f908.js +0 -1
  695. package/app/.next/static/chunks/app/api/auth/login/route-f6ca658d538ef9d3.js +0 -1
  696. package/app/.next/static/chunks/app/api/auth/logout/route-f6ca658d538ef9d3.js +0 -1
  697. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f6ca658d538ef9d3.js +0 -1
  698. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-f6ca658d538ef9d3.js +0 -1
  699. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-f6ca658d538ef9d3.js +0 -1
  700. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-f6ca658d538ef9d3.js +0 -1
  701. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-f6ca658d538ef9d3.js +0 -1
  702. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-f6ca658d538ef9d3.js +0 -1
  703. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-f6ca658d538ef9d3.js +0 -1
  704. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-f6ca658d538ef9d3.js +0 -1
  705. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-f6ca658d538ef9d3.js +0 -1
  706. package/app/.next/static/chunks/app/api/cloud/auth/route-f6ca658d538ef9d3.js +0 -1
  707. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-f6ca658d538ef9d3.js +0 -1
  708. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-f6ca658d538ef9d3.js +0 -1
  709. package/app/.next/static/chunks/app/api/cloud/models/alias/route-f6ca658d538ef9d3.js +0 -1
  710. package/app/.next/static/chunks/app/api/combos/[id]/route-f6ca658d538ef9d3.js +0 -1
  711. package/app/.next/static/chunks/app/api/combos/route-f6ca658d538ef9d3.js +0 -1
  712. package/app/.next/static/chunks/app/api/health/route-f6ca658d538ef9d3.js +0 -1
  713. package/app/.next/static/chunks/app/api/init/route-f6ca658d538ef9d3.js +0 -1
  714. package/app/.next/static/chunks/app/api/internal/account-health/route-f6ca658d538ef9d3.js +0 -1
  715. package/app/.next/static/chunks/app/api/internal/request-detail/route-f6ca658d538ef9d3.js +0 -1
  716. package/app/.next/static/chunks/app/api/internal/usage/route-f6ca658d538ef9d3.js +0 -1
  717. package/app/.next/static/chunks/app/api/keys/[id]/route-f6ca658d538ef9d3.js +0 -1
  718. package/app/.next/static/chunks/app/api/keys/route-f6ca658d538ef9d3.js +0 -1
  719. package/app/.next/static/chunks/app/api/locale/route-f6ca658d538ef9d3.js +0 -1
  720. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f6ca658d538ef9d3.js +0 -1
  721. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-f6ca658d538ef9d3.js +0 -1
  722. package/app/.next/static/chunks/app/api/models/alias/route-f6ca658d538ef9d3.js +0 -1
  723. package/app/.next/static/chunks/app/api/models/availability/route-f6ca658d538ef9d3.js +0 -1
  724. package/app/.next/static/chunks/app/api/models/custom/route-f6ca658d538ef9d3.js +0 -1
  725. package/app/.next/static/chunks/app/api/models/route-f6ca658d538ef9d3.js +0 -1
  726. package/app/.next/static/chunks/app/api/models/test/route-f6ca658d538ef9d3.js +0 -1
  727. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-f6ca658d538ef9d3.js +0 -1
  728. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-f6ca658d538ef9d3.js +0 -1
  729. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-f6ca658d538ef9d3.js +0 -1
  730. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-f6ca658d538ef9d3.js +0 -1
  731. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-f6ca658d538ef9d3.js +0 -1
  732. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-f6ca658d538ef9d3.js +0 -1
  733. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-f6ca658d538ef9d3.js +0 -1
  734. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-f6ca658d538ef9d3.js +0 -1
  735. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-f6ca658d538ef9d3.js +0 -1
  736. package/app/.next/static/chunks/app/api/pricing/route-f6ca658d538ef9d3.js +0 -1
  737. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-f6ca658d538ef9d3.js +0 -1
  738. package/app/.next/static/chunks/app/api/provider-nodes/route-f6ca658d538ef9d3.js +0 -1
  739. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-f6ca658d538ef9d3.js +0 -1
  740. package/app/.next/static/chunks/app/api/providers/[id]/models/route-f6ca658d538ef9d3.js +0 -1
  741. package/app/.next/static/chunks/app/api/providers/[id]/route-f6ca658d538ef9d3.js +0 -1
  742. package/app/.next/static/chunks/app/api/providers/[id]/test/route-f6ca658d538ef9d3.js +0 -1
  743. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-f6ca658d538ef9d3.js +0 -1
  744. package/app/.next/static/chunks/app/api/providers/client/route-f6ca658d538ef9d3.js +0 -1
  745. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-f6ca658d538ef9d3.js +0 -1
  746. package/app/.next/static/chunks/app/api/providers/route-f6ca658d538ef9d3.js +0 -1
  747. package/app/.next/static/chunks/app/api/providers/suggested-models/route-f6ca658d538ef9d3.js +0 -1
  748. package/app/.next/static/chunks/app/api/providers/test-batch/route-f6ca658d538ef9d3.js +0 -1
  749. package/app/.next/static/chunks/app/api/providers/validate/route-f6ca658d538ef9d3.js +0 -1
  750. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-f6ca658d538ef9d3.js +0 -1
  751. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-f6ca658d538ef9d3.js +0 -1
  752. package/app/.next/static/chunks/app/api/proxy-pools/route-f6ca658d538ef9d3.js +0 -1
  753. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-f6ca658d538ef9d3.js +0 -1
  754. package/app/.next/static/chunks/app/api/settings/database/route-f6ca658d538ef9d3.js +0 -1
  755. package/app/.next/static/chunks/app/api/settings/proxy-test/route-f6ca658d538ef9d3.js +0 -1
  756. package/app/.next/static/chunks/app/api/settings/require-login/route-f6ca658d538ef9d3.js +0 -1
  757. package/app/.next/static/chunks/app/api/settings/route-f6ca658d538ef9d3.js +0 -1
  758. package/app/.next/static/chunks/app/api/shutdown/route-f6ca658d538ef9d3.js +0 -1
  759. package/app/.next/static/chunks/app/api/tags/route-f6ca658d538ef9d3.js +0 -1
  760. package/app/.next/static/chunks/app/api/translator/console-logs/route-f6ca658d538ef9d3.js +0 -1
  761. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-f6ca658d538ef9d3.js +0 -1
  762. package/app/.next/static/chunks/app/api/translator/load/route-f6ca658d538ef9d3.js +0 -1
  763. package/app/.next/static/chunks/app/api/translator/save/route-f6ca658d538ef9d3.js +0 -1
  764. package/app/.next/static/chunks/app/api/translator/send/route-f6ca658d538ef9d3.js +0 -1
  765. package/app/.next/static/chunks/app/api/translator/translate/route-f6ca658d538ef9d3.js +0 -1
  766. package/app/.next/static/chunks/app/api/tunnel/disable/route-f6ca658d538ef9d3.js +0 -1
  767. package/app/.next/static/chunks/app/api/tunnel/enable/route-f6ca658d538ef9d3.js +0 -1
  768. package/app/.next/static/chunks/app/api/tunnel/status/route-f6ca658d538ef9d3.js +0 -1
  769. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-f6ca658d538ef9d3.js +0 -1
  770. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-f6ca658d538ef9d3.js +0 -1
  771. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-f6ca658d538ef9d3.js +0 -1
  772. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-f6ca658d538ef9d3.js +0 -1
  773. package/app/.next/static/chunks/app/api/tunnel/tailscale-login/route-f6ca658d538ef9d3.js +0 -1
  774. package/app/.next/static/chunks/app/api/tunnel/tailscale-start-daemon/route-f6ca658d538ef9d3.js +0 -1
  775. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-f6ca658d538ef9d3.js +0 -1
  776. package/app/.next/static/chunks/app/api/usage/chart/route-f6ca658d538ef9d3.js +0 -1
  777. package/app/.next/static/chunks/app/api/usage/history/route-f6ca658d538ef9d3.js +0 -1
  778. package/app/.next/static/chunks/app/api/usage/logs/route-f6ca658d538ef9d3.js +0 -1
  779. package/app/.next/static/chunks/app/api/usage/providers/route-f6ca658d538ef9d3.js +0 -1
  780. package/app/.next/static/chunks/app/api/usage/request-details/route-f6ca658d538ef9d3.js +0 -1
  781. package/app/.next/static/chunks/app/api/usage/request-logs/route-f6ca658d538ef9d3.js +0 -1
  782. package/app/.next/static/chunks/app/api/usage/stats/route-f6ca658d538ef9d3.js +0 -1
  783. package/app/.next/static/chunks/app/api/usage/stream/route-f6ca658d538ef9d3.js +0 -1
  784. package/app/.next/static/chunks/app/api/v1/api/chat/route-f6ca658d538ef9d3.js +0 -1
  785. package/app/.next/static/chunks/app/api/v1/audio/speech/route-f6ca658d538ef9d3.js +0 -1
  786. package/app/.next/static/chunks/app/api/v1/chat/completions/route-f6ca658d538ef9d3.js +0 -1
  787. package/app/.next/static/chunks/app/api/v1/embeddings/route-f6ca658d538ef9d3.js +0 -1
  788. package/app/.next/static/chunks/app/api/v1/images/generations/route-f6ca658d538ef9d3.js +0 -1
  789. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-f6ca658d538ef9d3.js +0 -1
  790. package/app/.next/static/chunks/app/api/v1/messages/route-f6ca658d538ef9d3.js +0 -1
  791. package/app/.next/static/chunks/app/api/v1/models/route-f6ca658d538ef9d3.js +0 -1
  792. package/app/.next/static/chunks/app/api/v1/responses/compact/route-f6ca658d538ef9d3.js +0 -1
  793. package/app/.next/static/chunks/app/api/v1/responses/route-f6ca658d538ef9d3.js +0 -1
  794. package/app/.next/static/chunks/app/api/v1/route-f6ca658d538ef9d3.js +0 -1
  795. package/app/.next/static/chunks/app/api/v1/search/route-f6ca658d538ef9d3.js +0 -1
  796. package/app/.next/static/chunks/app/api/v1/web/fetch/route-f6ca658d538ef9d3.js +0 -1
  797. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-f6ca658d538ef9d3.js +0 -1
  798. package/app/.next/static/chunks/app/api/v1beta/models/route-f6ca658d538ef9d3.js +0 -1
  799. package/app/.next/static/chunks/app/api/version/route-f6ca658d538ef9d3.js +0 -1
  800. package/app/.next/static/chunks/app/api/version/update/route-f6ca658d538ef9d3.js +0 -1
  801. package/app/.next/static/chunks/app/manifest.webmanifest/route-f6ca658d538ef9d3.js +0 -1
  802. package/app/.next/static/chunks/app/page-f6ca658d538ef9d3.js +0 -1
  803. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-f6ca658d538ef9d3.js +0 -1
  804. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-f6ca658d538ef9d3.js +0 -1
  805. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-f6ca658d538ef9d3.js +0 -1
  806. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f6ca658d538ef9d3.js +0 -1
  807. /package/app/.next/static/{4AyWeY4rlSixJyKSdoCHv → wozf5GL2edkjzl9Gac_lV}/_ssgManifest.js +0 -0
@@ -3,7 +3,7 @@
3
3
  // Free Providers (kiro first, iflow last)
4
4
  export const FREE_PROVIDERS = {
5
5
  kiro: { id: "kiro", alias: "kr", name: "Kiro AI", icon: "psychology_alt", color: "#FF6B35" },
6
- qwen: { id: "qwen", alias: "qw", name: "Qwen Code", icon: "psychology", color: "#10B981", deprecated: true, deprecationNotice: "Qwen OAuth free tier was discontinued by Alibaba on 2026-04-15. New connections will not work." },
6
+ qwen: { id: "qwen", alias: "qw", name: "Qwen Code", icon: "psychology", color: "#10B981", deprecated: true, deprecationNotice: "Qwen OAuth free tier was discontinued by Alibaba on 2026-04-15. New connections will not work.", serviceKinds: ["llm", "tts", "stt"], ttsConfig: { baseUrl: "http://localhost:8000/v1/audio/speech", authType: "none", authHeader: "none", format: "openai", models: [{ id: "qwen3-tts", name: "Qwen3 TTS" }] } },
7
7
  "gemini-cli": { id: "gemini-cli", alias: "gc", name: "Gemini CLI", icon: "terminal", color: "#4285F4", deprecated: true, deprecationNotice: "Gemini CLI is designed exclusively for Gemini CLI. Using it with other tools (OpenClaw, Claude, Codex...) may result in account restrictions or bans." },
8
8
  // gitlab: { id: "gitlab", alias: "gl", name: "GitLab Duo", icon: "code", color: "#FC6D26" },
9
9
  // codebuddy: { id: "codebuddy", alias: "cb", name: "CodeBuddy", icon: "smart_toy", color: "#006EFF" },
@@ -14,11 +14,11 @@ export const FREE_PROVIDERS = {
14
14
 
15
15
  // Free Tier Providers (has free access but may require account/API key)
16
16
  export const FREE_TIER_PROVIDERS = {
17
- 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: true, serviceKinds: ["llm", "embedding", "tts", "imageToText"] },
18
- 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" } },
17
+ 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: true, 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 }] } },
18
+ 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", "stt"], 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 }] } },
19
19
  ollama: { id: "ollama", alias: "ollama", name: "Ollama Cloud", icon: "cloud", color: "#ffffffff", textIcon: "OL", website: "https://ollama.com", notice: { text: "Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo · Max $100/mo.", apiKeyUrl: "https://ollama.com/settings/keys" } },
20
20
  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" } },
21
- gemini: { id: "gemini", alias: "gemini", name: "Gemini", icon: "diamond", color: "#4285F4", textIcon: "GE", website: "https://ai.google.dev", serviceKinds: ["llm", "embedding", "image", "imageToText", "webSearch"], searchViaChat: { defaultModel: "gemini-2.5-flash" } },
21
+ gemini: { id: "gemini", alias: "gemini", name: "Gemini", icon: "diamond", color: "#4285F4", textIcon: "GE", website: "https://ai.google.dev", serviceKinds: ["llm", "embedding", "image", "imageToText", "webSearch"], 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 }] } },
22
22
  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"] },
23
23
  };
24
24
 
@@ -44,7 +44,7 @@ export const OAUTH_PROVIDERS = {
44
44
  claude: { id: "claude", alias: "cc", name: "Claude Code", icon: "smart_toy", color: "#D97757" },
45
45
  antigravity: { id: "antigravity", alias: "ag", name: "Antigravity", icon: "rocket_launch", color: "#F59E0B", deprecated: true, deprecationNotice: "AG is designed exclusively for Antigravity IDE. Using it with other tools (OpenClaw, Claude, Codex...) may result in account restrictions or bans." },
46
46
  codex: { id: "codex", alias: "cx", name: "OpenAI Codex", icon: "code", color: "#3B82F6", thinkingConfig: THINKING_CONFIG.effort, serviceKinds: ["llm", "image"], kindNotice: { image: "Requires a ChatGPT Plus (or higher) account. Free accounts are not supported for image generation." } },
47
- github: { id: "github", alias: "gh", name: "GitHub Copilot", icon: "code", color: "#333333" },
47
+ github: { id: "github", alias: "gh", name: "GitHub Copilot", icon: "code", color: "#333333", 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 }] } },
48
48
  cursor: { id: "cursor", alias: "cu", name: "Cursor IDE", icon: "edit_note", color: "#00D4AA" },
49
49
  // "kimi-coding": { id: "kimi-coding", alias: "kmc", name: "Kimi Coding", icon: "psychology", color: "#1E40AF", textIcon: "KC" },
50
50
  kilocode: { id: "kilocode", alias: "kc", name: "Kilo Code", icon: "code", color: "#FF6B35", textIcon: "KC" },
@@ -55,41 +55,45 @@ export const OAUTH_PROVIDERS = {
55
55
  export const APIKEY_PROVIDERS = {
56
56
  glm: { id: "glm", alias: "glm", name: "GLM Coding", icon: "code", color: "#2563EB", textIcon: "GL", website: "https://open.bigmodel.cn" },
57
57
  "glm-cn": { id: "glm-cn", alias: "glm-cn", name: "GLM (China)", icon: "code", color: "#DC2626", textIcon: "GC", website: "https://open.bigmodel.cn" },
58
- kimi: { id: "kimi", alias: "kimi", name: "Kimi", icon: "psychology", color: "#1E3A8A", textIcon: "KM", website: "https://kimi.moonshot.cn", serviceKinds: ["llm", "webSearch"], searchViaChat: { defaultModel: "kimi-k2.5" } },
59
- minimax: { id: "minimax", alias: "minimax", name: "Minimax Coding", icon: "memory", color: "#7C3AED", textIcon: "MM", website: "https://www.minimaxi.com", serviceKinds: ["llm", "image", "imageToText", "webSearch"], searchViaChat: { defaultModel: "MiniMax-M2.7" } },
58
+ kimi: { id: "kimi", alias: "kimi", name: "Kimi", icon: "psychology", color: "#1E3A8A", textIcon: "KM", website: "https://kimi.moonshot.cn", serviceKinds: ["llm", "webSearch"], searchViaChat: { defaultModel: "kimi-k2.5", pricingUrl: "https://platform.moonshot.ai/docs/pricing/chat" } },
59
+ minimax: { id: "minimax", alias: "minimax", name: "Minimax Coding", icon: "memory", color: "#7C3AED", textIcon: "MM", website: "https://www.minimaxi.com", serviceKinds: ["llm", "image", "imageToText", "webSearch"], searchViaChat: { defaultModel: "MiniMax-M2.7", pricingUrl: "https://www.minimaxi.com/document/price" } },
60
60
  "minimax-cn": { id: "minimax-cn", alias: "minimax-cn", name: "Minimax (China)", icon: "memory", color: "#DC2626", textIcon: "MC", website: "https://www.minimaxi.com" },
61
61
  alicode: { id: "alicode", alias: "alicode", name: "Alibaba", icon: "cloud", color: "#FF6A00", textIcon: "ALi" },
62
62
  "alicode-intl": { id: "alicode-intl", alias: "alicode-intl", name: "Alibaba Intl", icon: "cloud", color: "#FF6A00", textIcon: "ALi" },
63
63
  "volcengine-ark": { id: "volcengine-ark", alias: "ark", name: "Volcengine Ark", icon: "cloud", color: "#1677FF", textIcon: "ARK", website: "https://ark.cn-beijing.volces.com" },
64
- openai: { id: "openai", alias: "openai", name: "OpenAI", icon: "auto_awesome", color: "#10A37F", textIcon: "OA", website: "https://platform.openai.com", serviceKinds: ["llm", "embedding", "tts", "image", "imageToText", "webSearch"], thinkingConfig: THINKING_CONFIG.effort, searchViaChat: { defaultModel: "gpt-4o-mini" } },
64
+ openai: { id: "openai", alias: "openai", name: "OpenAI", icon: "auto_awesome", color: "#10A37F", textIcon: "OA", website: "https://platform.openai.com", serviceKinds: ["llm", "embedding", "tts", "image", "imageToText", "webSearch"], thinkingConfig: THINKING_CONFIG.effort, 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" }] }, 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 }] } },
65
65
  anthropic: { id: "anthropic", alias: "anthropic", name: "Anthropic", icon: "smart_toy", color: "#D97757", textIcon: "AN", website: "https://console.anthropic.com", serviceKinds: ["llm", "imageToText"] },
66
66
  "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" } },
67
67
  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", hasProviderSpecificData: true },
68
68
 
69
69
  deepseek: { id: "deepseek", alias: "ds", name: "DeepSeek", icon: "bolt", color: "#4D6BFE", textIcon: "DS", website: "https://deepseek.com" },
70
70
  groq: { id: "groq", alias: "groq", name: "Groq", icon: "speed", color: "#F55036", textIcon: "GQ", website: "https://groq.com", serviceKinds: ["llm", "imageToText"] },
71
- xai: { id: "xai", alias: "xai", name: "xAI (Grok)", icon: "auto_awesome", color: "#1DA1F2", textIcon: "XA", website: "https://x.ai", serviceKinds: ["llm", "imageToText", "webSearch"], searchViaChat: { defaultModel: "grok-4.20-reasoning" } },
72
- mistral: { id: "mistral", alias: "mistral", name: "Mistral", icon: "air", color: "#FF7000", textIcon: "MI", website: "https://mistral.ai", serviceKinds: ["llm", "imageToText"] },
71
+ xai: { id: "xai", alias: "xai", name: "xAI (Grok)", icon: "auto_awesome", color: "#1DA1F2", textIcon: "XA", website: "https://x.ai", serviceKinds: ["llm", "imageToText", "webSearch"], searchViaChat: { defaultModel: "grok-4.20-reasoning", pricingUrl: "https://x.ai/api#pricing" } },
72
+ mistral: { id: "mistral", alias: "mistral", name: "Mistral", icon: "air", color: "#FF7000", textIcon: "MI", website: "https://mistral.ai", 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 }] } },
73
73
  perplexity: { id: "perplexity", alias: "pplx", name: "Perplexity", icon: "search", color: "#20808D", textIcon: "PP", website: "https://www.perplexity.ai", serviceKinds: ["llm", "webSearch"], searchConfig: { baseUrl: "https://api.perplexity.ai/search", method: "POST", authType: "apikey", authHeader: "bearer", costPerQuery: 0.005, freeMonthlyQuota: 0, searchTypes: ["web"], defaultMaxResults: 5, maxMaxResults: 20, timeoutMs: 10000, cacheTTLMs: 300000 } },
74
- together: { id: "together", alias: "together", name: "Together AI", icon: "group_work", color: "#0F6FFF", textIcon: "TG", website: "https://www.together.ai" },
75
- fireworks: { id: "fireworks", alias: "fireworks", name: "Fireworks AI", icon: "local_fire_department", color: "#7B2EF2", textIcon: "FW", website: "https://fireworks.ai" },
74
+ together: { id: "together", alias: "together", name: "Together AI", icon: "group_work", color: "#0F6FFF", textIcon: "TG", website: "https://www.together.ai", 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 }] } },
75
+ fireworks: { id: "fireworks", alias: "fireworks", name: "Fireworks AI", icon: "local_fire_department", color: "#7B2EF2", textIcon: "FW", website: "https://fireworks.ai", 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 }] } },
76
76
  cerebras: { id: "cerebras", alias: "cerebras", name: "Cerebras", icon: "memory", color: "#FF4F00", textIcon: "CB", website: "https://www.cerebras.ai" },
77
77
  cohere: { id: "cohere", alias: "cohere", name: "Cohere", icon: "hub", color: "#39594D", textIcon: "CO", website: "https://cohere.com" },
78
- nebius: { id: "nebius", alias: "nebius", name: "Nebius AI", icon: "cloud", color: "#6C5CE7", textIcon: "NB", website: "https://nebius.com" },
78
+ nebius: { id: "nebius", alias: "nebius", name: "Nebius AI", icon: "cloud", color: "#6C5CE7", textIcon: "NB", website: "https://nebius.com", 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 }] } },
79
79
  siliconflow: { id: "siliconflow", alias: "siliconflow", name: "SiliconFlow", icon: "cloud_queue", color: "#5B6EF5", textIcon: "SF", website: "https://cloud.siliconflow.com" },
80
- hyperbolic: { id: "hyperbolic", alias: "hyp", name: "Hyperbolic", icon: "bolt", color: "#00D4FF", textIcon: "HY", website: "https://hyperbolic.xyz" },
81
- deepgram: { id: "deepgram", alias: "dg", name: "Deepgram", icon: "mic", color: "#13EF93", textIcon: "DG", website: "https://deepgram.com", serviceKinds: ["stt", "imageToText"] },
80
+ hyperbolic: { id: "hyperbolic", alias: "hyp", name: "Hyperbolic", icon: "bolt", color: "#00D4FF", textIcon: "HY", website: "https://hyperbolic.xyz", 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" }] } },
81
+ 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: [] } },
82
82
  assemblyai: { id: "assemblyai", alias: "aai", name: "AssemblyAI", icon: "record_voice_over", color: "#0062FF", textIcon: "AA", website: "https://assemblyai.com", serviceKinds: ["stt"] },
83
83
  nanobanana: { id: "nanobanana", alias: "nb", name: "NanoBanana", icon: "image", color: "#FFD700", textIcon: "NB", website: "https://nanobananaapi.ai", serviceKinds: ["image"] },
84
- elevenlabs: { id: "elevenlabs", alias: "el", name: "ElevenLabs", icon: "record_voice_over", color: "#6C47FF", textIcon: "EL", website: "https://elevenlabs.io", serviceKinds: ["tts"] },
85
- cartesia: { id: "cartesia", alias: "cartesia", name: "Cartesia", icon: "spatial_audio", color: "#FF4F8B", textIcon: "CA", website: "https://cartesia.ai", serviceKinds: ["tts"], hidden: true },
86
- playht: { id: "playht", alias: "playht", name: "PlayHT", icon: "play_circle", color: "#00B4D8", textIcon: "PH", website: "https://play.ht", serviceKinds: ["tts"], hidden: true },
87
- "local-device": { id: "local-device", alias: "local-device", name: "Local Device", icon: "speaker", color: "#64748B", textIcon: "LD", serviceKinds: ["tts"], noAuth: true },
88
- "google-tts": { id: "google-tts", alias: "google-tts", name: "Google TTS", icon: "record_voice_over", color: "#4285F4", textIcon: "GT", serviceKinds: ["tts"], noAuth: true },
89
- "edge-tts": { id: "edge-tts", alias: "edge-tts", name: "Edge TTS", icon: "record_voice_over", color: "#0078D4", textIcon: "ET", serviceKinds: ["tts"], noAuth: true },
84
+ elevenlabs: { id: "elevenlabs", alias: "el", name: "ElevenLabs", icon: "record_voice_over", color: "#6C47FF", textIcon: "EL", website: "https://elevenlabs.io", 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" }] } },
85
+ cartesia: { id: "cartesia", alias: "cartesia", name: "Cartesia", icon: "spatial_audio", color: "#FF4F8B", textIcon: "CA", website: "https://cartesia.ai", serviceKinds: ["tts"], hidden: true, 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" }] } },
86
+ playht: { id: "playht", alias: "playht", name: "PlayHT", icon: "play_circle", color: "#00B4D8", textIcon: "PH", website: "https://play.ht", serviceKinds: ["tts"], hidden: true, 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" }] } },
87
+ "local-device": { id: "local-device", alias: "local-device", name: "Local Device", icon: "speaker", color: "#64748B", textIcon: "LD", serviceKinds: ["tts"], noAuth: true, ttsConfig: { baseUrl: "local-device", authType: "none", authHeader: "none", format: "local-device", models: [] } },
88
+ "google-tts": { id: "google-tts", alias: "google-tts", name: "Google TTS", icon: "record_voice_over", color: "#4285F4", textIcon: "GT", serviceKinds: ["tts"], noAuth: true, ttsConfig: { baseUrl: "google-tts", authType: "none", authHeader: "none", format: "google-tts", models: [] } },
89
+ "edge-tts": { id: "edge-tts", alias: "edge-tts", name: "Edge TTS", icon: "record_voice_over", color: "#0078D4", textIcon: "ET", serviceKinds: ["tts"], noAuth: true, ttsConfig: { baseUrl: "edge-tts", authType: "none", authHeader: "none", format: "edge-tts", models: [] } },
90
+ 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: true, noAuth: true, 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)" }] } },
91
+ 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: true, noAuth: true, ttsConfig: { baseUrl: "http://localhost:5000/api/tts", authType: "none", authHeader: "none", format: "tortoise", models: [{ id: "tortoise-v2", name: "Tortoise v2" }] } },
92
+ 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)" }] } },
93
+ "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 }] } },
90
94
  sdwebui: { id: "sdwebui", alias: "sdwebui", name: "SD WebUI", icon: "brush", color: "#FF7043", textIcon: "SD", website: "https://github.com/AUTOMATIC1111/stable-diffusion-webui", serviceKinds: ["image"] },
91
95
  comfyui: { id: "comfyui", alias: "comfyui", name: "ComfyUI", icon: "account_tree", color: "#4CAF50", textIcon: "CF", website: "https://github.com/comfyanonymous/ComfyUI", serviceKinds: ["image"] },
92
- huggingface: { id: "huggingface", alias: "hf", name: "HuggingFace", icon: "face", color: "#FFD21E", textIcon: "HF", website: "https://huggingface.co", serviceKinds: ["image", "imageToText", "tts"], hiddenKinds: ["tts"] },
96
+ huggingface: { id: "huggingface", alias: "hf", name: "HuggingFace", icon: "face", color: "#FFD21E", textIcon: "HF", website: "https://huggingface.co", serviceKinds: ["image", "imageToText", "tts"], 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" }] } },
93
97
  blackbox: { id: "blackbox", alias: "bb", name: "Blackbox AI", icon: "smart_toy", color: "#5B5FEF", textIcon: "BB", website: "https://blackbox.ai", serviceKinds: ["llm"] },
94
98
  chutes: { id: "chutes", alias: "ch", name: "Chutes AI", icon: "water_drop", color: "#ffffffff", textIcon: "CH", website: "https://chutes.ai" },
95
99
  "ollama-local": { id: "ollama-local", alias: "ollama-local", name: "Ollama Local", icon: "cloud", color: "#ffffffff", textIcon: "OL", website: "https://ollama.com" },
@@ -48,4 +48,65 @@ export const TTS_PROVIDER_CONFIG = {
48
48
  hasBrowseButton: true,
49
49
  voiceSource: "api-language", // from API with language picker
50
50
  },
51
+ // ── Config-driven providers (load models from providers.js → ttsConfig.models) ──
52
+ "nvidia": {
53
+ hasModelSelector: true,
54
+ hasBrowseButton: false,
55
+ hasVoiceIdInput: true,
56
+ voiceSource: "config",
57
+ },
58
+ "hyperbolic": {
59
+ hasModelSelector: true,
60
+ hasBrowseButton: false,
61
+ voiceSource: "config",
62
+ },
63
+ "deepgram": {
64
+ hasModelSelector: false,
65
+ hasBrowseButton: true,
66
+ voiceSource: "api-language",
67
+ apiEndpoint: "/api/media-providers/tts/deepgram/voices",
68
+ },
69
+ "huggingface": {
70
+ hasModelSelector: true,
71
+ hasBrowseButton: false,
72
+ voiceSource: "config",
73
+ },
74
+ "cartesia": {
75
+ hasModelSelector: true,
76
+ hasBrowseButton: false,
77
+ hasVoiceIdInput: true,
78
+ voiceSource: "config",
79
+ },
80
+ "playht": {
81
+ hasModelSelector: true,
82
+ hasBrowseButton: false,
83
+ hasVoiceIdInput: true,
84
+ voiceSource: "config",
85
+ },
86
+ "coqui": {
87
+ hasModelSelector: true,
88
+ hasBrowseButton: false,
89
+ hasVoiceIdInput: true,
90
+ voiceSource: "config",
91
+ },
92
+ "tortoise": {
93
+ hasModelSelector: true,
94
+ hasBrowseButton: false,
95
+ hasVoiceIdInput: true,
96
+ voiceSource: "config",
97
+ },
98
+ "inworld": {
99
+ hasModelSelector: true,
100
+ hasBrowseButton: true,
101
+ hasVoiceIdInput: true,
102
+ voiceSource: "api-language",
103
+ modelKey: "inworld-tts-models",
104
+ apiEndpoint: "/api/media-providers/tts/inworld/voices",
105
+ },
106
+ "qwen": {
107
+ hasModelSelector: true,
108
+ hasBrowseButton: false,
109
+ hasVoiceIdInput: true,
110
+ voiceSource: "config",
111
+ },
51
112
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n9router",
3
- "version": "0.4.20",
3
+ "version": "0.4.21",
4
4
  "description": "Self-hosted AI routing gateway — local proxy for Claude, Gemini, OpenAI and 40+ providers",
5
5
  "keywords": [
6
6
  "ai",
@@ -1 +0,0 @@
1
- "use strict";exports.id=2409,exports.ids=[2409],exports.modules={62409:(a,b,c)=>{c.d(b,{v:()=>f});var d=c(92990);let e="https://prod.us-east-1.auth.desktop.kiro.dev";class f{async registerClient(a="us-east-1"){let b=`https://oidc.${a}.amazonaws.com/client/register`,c=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientName:d.Tx.clientName,clientType:d.Tx.clientType,scopes:d.Tx.scopes,grantTypes:d.Tx.grantTypes,issuerUrl:d.Tx.issuerUrl})});if(!c.ok){let a=await c.text();throw Error(`Failed to register client: ${a}`)}let e=await c.json();return{clientId:e.clientId,clientSecret:e.clientSecret,clientSecretExpiresAt:e.clientSecretExpiresAt}}async startDeviceAuthorization(a,b,c,d="us-east-1"){let e=`https://oidc.${d}.amazonaws.com/device_authorization`,f=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:a,clientSecret:b,startUrl:c})});if(!f.ok){let a=await f.text();throw Error(`Failed to start device authorization: ${a}`)}let g=await f.json();return{deviceCode:g.deviceCode,userCode:g.userCode,verificationUri:g.verificationUri,verificationUriComplete:g.verificationUriComplete,expiresIn:g.expiresIn,interval:g.interval||5}}async pollDeviceToken(a,b,c,d="us-east-1"){let e=`https://oidc.${d}.amazonaws.com/token`,f=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:a,clientSecret:b,deviceCode:c,grantType:"urn:ietf:params:oauth:grant-type:device_code"})}),g=await f.json();return!f.ok||g.error?{success:!1,error:g.error,errorDescription:g.error_description,pending:"authorization_pending"===g.error||"slow_down"===g.error}:{success:!0,tokens:{accessToken:g.accessToken,refreshToken:g.refreshToken,expiresIn:g.expiresIn,tokenType:g.tokenType}}}buildSocialLoginUrl(a,b,c){return`${e}/login?idp=${"google"===a?"Google":"Github"}&redirect_uri=${encodeURIComponent("kiro://kiro.kiroAgent/authenticate-success")}&code_challenge=${b}&code_challenge_method=S256&state=${c}&prompt=select_account`}async exchangeSocialCode(a,b){let c=await fetch(`${e}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:a,code_verifier:b,redirect_uri:"kiro://kiro.kiroAgent/authenticate-success"})});if(!c.ok){let a=await c.text();throw Error(`Token exchange failed: ${a}`)}let d=await c.json();return{accessToken:d.accessToken,refreshToken:d.refreshToken,profileArn:d.profileArn,expiresIn:d.expiresIn||3600}}async refreshToken(a,b={}){let{authMethod:c,clientId:d,clientSecret:f,region:g}=b;if(d&&f){let b=`https://oidc.${g||"us-east-1"}.amazonaws.com/token`,c=await fetch(b,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:f,refreshToken:a,grantType:"refresh_token"})});if(!c.ok){let a=await c.text();throw Error(`Token refresh failed: ${a}`)}let e=await c.json();return{accessToken:e.accessToken,refreshToken:e.refreshToken||a,expiresIn:e.expiresIn}}let h=await fetch(`${e}/refreshToken`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:a})});if(!h.ok){let a=await h.text();throw Error(`Token refresh failed: ${a}`)}let i=await h.json();return{accessToken:i.accessToken,refreshToken:i.refreshToken||a,profileArn:i.profileArn,expiresIn:i.expiresIn||3600}}async validateImportToken(a){if(!a.startsWith("aorAAAAAG"))throw Error("Invalid token format. Token should start with aorAAAAAG...");try{let b=await this.refreshToken(a);return{accessToken:b.accessToken,refreshToken:b.refreshToken||a,profileArn:b.profileArn,expiresIn:b.expiresIn,authMethod:"imported"}}catch(a){throw Error(`Token validation failed: ${a.message}`)}}async listAvailableModels(a,b){let c=await fetch("https://codewhisperer.us-east-1.amazonaws.com",{method:"POST",headers:{"Content-Type":"application/x-amz-json-1.0","x-amz-target":"AmazonCodeWhispererService.ListAvailableModels",Authorization:`Bearer ${a}`,Accept:"application/json"},body:JSON.stringify({origin:"AI_EDITOR",profileArn:b})});if(!c.ok){let a=await c.text();throw Error(`Failed to list models: ${a}`)}return((await c.json()).models||[]).map(a=>({id:a.modelId,name:a.modelName||a.modelId,description:a.description,rateMultiplier:a.rateMultiplier,rateUnit:a.rateUnit,maxInputTokens:a.tokenLimits?.maxInputTokens||0}))}extractEmailFromJWT(a){try{let b=a.split(".");if(3!==b.length)return null;let c=b[1];for(;c.length%4;)c+="=";let d=JSON.parse(atob(c.replace(/-/g,"+").replace(/_/g,"/")));return d.email||d.preferred_username||d.sub}catch{return null}}}},92990:(a,b,c)=>{c.d(b,{DI:()=>e,Hp:()=>g,LT:()=>f,MZ:()=>o,Nl:()=>r,Nu:()=>k,OV:()=>d,Tx:()=>l,WN:()=>m,YT:()=>j,ZL:()=>i,f7:()=>q,hF:()=>h,lB:()=>p,t:()=>n}),c(21820);let d={clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256"},e={clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},f={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"]},g={clientId:"f0304373b74a44d2b584a3fb70ca9e56",deviceCodeUrl:"https://qwen.ai/api/v1/oauth2/device/code",tokenUrl:"https://qwen.ai/api/v1/oauth2/token",scope:"openid profile email model.completion",codeChallengeMethod:"S256"},h={apiBaseUrl:"https://api2.qoder.sh",deviceTokenUrl:"https://api2.qoder.sh/api/v1/deviceToken/poll",deviceRefreshUrl:"https://api2.qoder.sh/api/v1/deviceToken/refresh",refreshUrl:"https://api2.qoder.sh/api/v3/user/refresh_token",userInfoUrl:"https://api2.qoder.sh/api/v1/userinfo",statusUrl:"https://api2.qoder.sh/api/v3/user/status",loginUrl:"https://qoder.com/login"},i={clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"}},j={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:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},k={clientId:"Iv1.b507a08c87ecfe98",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},l={ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},m={apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/aiserver.v1.AiService/GetDefaultModelNudgeData",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"3.1.0",clientType:"ide",tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"},dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},n={clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token"},o={apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},p={appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},q={defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},r={baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3}}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=4404,exports.ids=[4404],exports.modules={35024:(a,b,c)=>{c.d(b,{Ak:()=>h,xq:()=>g});var d=c(21820);let e={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},f="https://api.kimi.com/coding/v1/messages",g={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{"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,d.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,d.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,d.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,d.platform)()}`}}(),"X-Stainless-Timeout":"600"},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,d.platform)()}/${(0,d.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"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...e}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:f,format:"claude",headers:{...e}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...e}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...e}},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:f,format:"claude",headers:{...e},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:{...e}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",format:"openai"},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"}};function h(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}},44404:(a,b,c)=>{c.d(b,{Xg:()=>o,vq:()=>j,fZ:()=>l,cY:()=>p,ux:()=>m,SM:()=>k});var d=c(35024);let e={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"}},f=(...a)=>a.map(a=>({...e[a],type:"tts"})),g=f("alloy","ash","coral","echo","fable","nova","onyx","sage","shimmer"),h=f("alloy","ash","ballad","cedar","coral","echo","fable","marin","nova","onyx","sage","shimmer","verse"),i={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":h,"tts-1":g,"tts-1-hd":g},allVoices:h},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":h,"openai/tts-1":g,"openai/tts-1-hd":g},allVoices:h},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"}]}},j={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.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"]}],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.1-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash",name:"Gemini 3 Flash",thinking:!1},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}],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"}],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"}],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.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:"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:[]}],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.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/moonshotai/kimi-k2.6",name:"Kimi K2.6"},{id:"@cf/zai-org/glm-4.7-flash",name:"GLM 4.7 Flash"}],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-flash",name:"DeepSeek V4 Flash"},{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],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"}],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"}],mistral:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}],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"}],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"}],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:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"}],nebius:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}],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"}],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(i))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"]=i.openai.allVoices,a["openrouter-tts-voices"]=i.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:[]}]};function k(a){return j[a]||[]}function l(a){let b=j[a];return b?.[0]?.id||null}function m(a,b){let c=j[a];if(!c)return null;let d=c.find(a=>a.id===b);return d?.targetFormat||null}let n={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"},o=Object.fromEntries(Object.keys(d.xq).map(a=>[a,n[a]||a]));function p(a,b){let c=j[a]?.find(a=>a.id===b);return c?.strip||[]}}};
@@ -1 +0,0 @@
1
- exports.id=5259,exports.ids=[5259],exports.modules={12557:(a,b,c)=>{"use strict";c.d(b,{Bl:()=>j,Qo:()=>f,S5:()=>l,hk:()=>e,kJ:()=>k});var d=c(3662);function e(a,b,c=0){let f=b?("string"==typeof b?b:JSON.stringify(b)).toLowerCase():"";for(let b of d.t2)if(b.text&&f&&f.includes(b.text)||b.status&&b.status===a){if(b.backoff){let a=Math.min(c+1,d.EQ.maxLevel);return{shouldFallback:!0,cooldownMs:function(a=0){let b=Math.max(0,a-1);return Math.min(d.EQ.base*Math.pow(2,b),d.EQ.max)}(a),newBackoffLevel:a}}return{shouldFallback:!0,cooldownMs:b.cooldownMs}}return{shouldFallback:!0,cooldownMs:d.wf}}function f(a){if(!a)return"";let b=new Date(a).getTime()-Date.now();if(b<=0)return"reset after 0s";let c=Math.ceil(b/1e3),d=Math.floor(c/3600),e=Math.floor(c%3600/60),f=c%60,g=[];return d>0&&g.push(`${d}h`),e>0&&g.push(`${e}m`),(f>0||0===g.length)&&g.push(`${f}s`),`reset after ${g.join(" ")}`}let g="modelLock_",h=`${g}__all`;function i(a){return a?`${g}${a}`:h}function j(a,b){let c=a[i(b)]||a[h];return!!c&&new Date(c).getTime()>Date.now()}function k(a){if(!a)return null;let b=null,c=Date.now();for(let[d,e]of Object.entries(a)){if(!d.startsWith(g)||!e)continue;let a=new Date(e).getTime();a<=c||(!b||a<b)&&(b=a)}return b?new Date(b).toISOString():null}function l(a,b){return{[i(a)]:new Date(Date.now()+b).toISOString()}}},13808:(a,b,c)=>{"use strict";c.d(b,{lz:()=>f});var d=c(55511),e=c.n(d);function f(){let a=e().randomBytes(32).toString("base64url"),b=e().createHash("sha256").update(a).digest("base64url");return{codeVerifier:a,codeChallenge:b,state:e().randomBytes(32).toString("base64url")}}},43659:(a,b,c)=>{"use strict";c.d(b,{A1:()=>g,lR:()=>i,wO:()=>h,yj:()=>e,zL:()=>f});var d=c(3662);function e(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}async function f(a,b=null){let c="";try{c=await a.text()}catch{c=""}if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:e.status||a.status,message:b,resetsAtMs:e.resetsAtMs}}}catch{}let e="";try{let a=JSON.parse(c);e=a.error?.message||a.message||a.error||c}catch{e=c}let g=("string"==typeof e?e:JSON.stringify(e))||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:g}}function g(a,b,c){return{success:!1,status:a,error:b,resetsAtMs:c,response:e(a,b)}}function h(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function i(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}},74177:(a,b,c)=>{"use strict";c.a(a,async(a,d)=>{try{c.d(b,{Gj:()=>m,PY:()=>p,Re:()=>n,Su:()=>o,kP:()=>l,sO:()=>k});var e=c(48895),f=c(13808),g=c(92990),h=a([e]);function i(a){try{if(!a||"string"!=typeof a)return null;let b=a.split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=(4-c.length%4)%4,e=c+"=".repeat(d);return JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{return null}}function j(a){let b=i(a);if(!b)return{};let c=b["https://api.openai.com/auth"]||{};return{email:b.email,chatgptAccountId:c.chatgpt_account_id,chatgptPlanType:c.chatgpt_plan_type}}e=(h.then?(await h)():h)[0];let q={claude:{config:g.OV,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d)=>{let e=new URLSearchParams({code:"true",client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c});return`${a.authorizeUrl}?${e.toString()}`},exchangeToken:async(a,b,c,d,e)=>{let f=b,g="";if(f.includes("#")){let a=f.split("#");f=a[0],g=a[1]||""}let h=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({code:f,state:g||e,grant_type:"authorization_code",client_id:a.clientId,redirect_uri:c,code_verifier:d})});if(!h.ok){let a=await h.text();throw Error(`Token exchange failed: ${a}`)}return await h.json()},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope})},codex:{config:g.DI,flowType:"authorization_code_pkce",fixedPort:1455,callbackPath:"/auth/callback",buildAuthUrl:(a,b,c,d)=>{let e={response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,...a.extraParams,state:c},f=Object.entries(e).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${f}`},exchangeToken:async(a,b,c,d)=>{let e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b=j(a.id_token),c={accessToken:a.access_token,refreshToken:a.refresh_token,idToken:a.id_token,expiresIn:a.expires_in};return b.email&&(c.email=b.email),(b.chatgptAccountId||b.chatgptPlanType)&&(c.providerSpecificData={chatgptAccountId:b.chatgptAccountId,chatgptPlanType:b.chatgptPlanType}),c}},"gemini-cli":{config:g.LT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b=await fetch(`${g.LT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`}}),c=b.ok?await b.json():{},d="";try{let b=await fetch("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:getOAuthClientMetadata(),mode:1})});if(b.ok){let a=await b.json();d=a.cloudaicompanionProject?.id||a.cloudaicompanionProject||""}}catch(a){console.log("Failed to fetch project ID:",a)}return{userInfo:c,projectId:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},antigravity:{config:g.YT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b={Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json","User-Agent":g.YT.loadCodeAssistUserAgent,"X-Goog-Api-Client":g.YT.loadCodeAssistApiClient,"Client-Metadata":g.YT.loadCodeAssistClientMetadata,"x-request-source":"local"},c={ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"},d=await fetch(`${g.YT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`,"x-request-source":"local"}}),e=d.ok?await d.json():{},f="",h="legacy-tier";try{let a=await fetch(g.YT.loadCodeAssistEndpoint,{method:"POST",headers:b,body:JSON.stringify({metadata:c})});if(a.ok){let b=await a.json();if(f=b.cloudaicompanionProject?.id||b.cloudaicompanionProject||"",Array.isArray(b.allowedTiers)){for(let a of b.allowedTiers)if(a.isDefault&&a.id){h=a.id.trim();break}}}}catch(a){console.log("Failed to load code assist:",a)}return f&&(async()=>{for(let a=0;a<10;a++){try{let a=await fetch(g.YT.onboardUserEndpoint,{method:"POST",headers:b,body:JSON.stringify({tierId:h,metadata:c})});if(a.ok){let b=await a.json();if(!0===b.done)break}}catch(a){break}await new Promise(a=>setTimeout(a,5e3))}})().catch(()=>{}),{userInfo:e,projectId:f}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},iflow:{config:g.ZL,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({loginMethod:a.extraParams.loginMethod,type:a.extraParams.type,redirect:b,state:c,client_id:a.clientId});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=Buffer.from(`${a.clientId}:${a.clientSecret}`).toString("base64"),e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:new URLSearchParams({grant_type:"authorization_code",code:b,redirect_uri:c,client_id:a.clientId,client_secret:a.clientSecret})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},postExchange:async a=>{let b=await fetch(`${g.ZL.userInfoUrl}?accessToken=${encodeURIComponent(a.access_token)}`,{headers:{Accept:"application/json"}});if(!b.ok){let a=await b.text();throw Error(`Failed to fetch user info: ${a}`)}let c=await b.json();if(!c.success)throw Error(`User info request failed: ${c.message||"Unknown error"}`);let d=c.data||{};if(!d.apiKey||""===d.apiKey.trim())throw Error("Empty API key returned from iFlow");if(!(d.email?.trim()||d.phone?.trim()))throw Error("Missing account email/phone in user info");return{userInfo:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,apiKey:b?.userInfo?.apiKey,email:b?.userInfo?.email||b?.userInfo?.phone,displayName:b?.userInfo?.nickname||b?.userInfo?.name})},qoder:{config:g.hF,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,state:c});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=Buffer.from(`${a.clientId}:${a.clientSecret}`).toString("base64"),e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:new URLSearchParams({grant_type:"authorization_code",code:b,redirect_uri:c,client_id:a.clientId,client_secret:a.clientSecret})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},postExchange:async a=>{let b=await fetch(`${g.hF.userInfoUrl}?accessToken=${encodeURIComponent(a.access_token)}`,{headers:{Accept:"application/json"}});if(!b.ok){let a=await b.text();throw Error(`Failed to fetch user info: ${a}`)}let c=await b.json();if(!c.success)throw Error(`User info request failed: ${c.message||"Unknown error"}`);let d=c.data||{};if(!d.apiKey||""===d.apiKey.trim())throw Error("Empty API key returned from Qoder");if(!(d.email?.trim()||d.phone?.trim()))throw Error("Missing account email/phone in user info");return{userInfo:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,apiKey:b?.userInfo?.apiKey,email:b?.userInfo?.email||b?.userInfo?.phone,displayName:b?.userInfo?.nickname||b?.userInfo?.name})},qwen:{config:g.Hp,flowType:"device_code",requestDeviceCode:async(a,b)=>{let c=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scope,code_challenge:b,code_challenge_method:a.codeChallengeMethod})});if(!c.ok){let a=await c.text();throw Error(`Device code request failed: ${a}`)}return await c.json()},pollToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b,code_verifier:c})});return{ok:d.ok,data:await d.json()}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{resourceUrl:a.resource_url}})},github:{config:g.Nu,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scopes})});if(!b.ok){let a=await b.text();throw Error(`Device code request failed: ${a}`)}return await b.json()},pollToken:async(a,b)=>{let c,d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,device_code:b,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})});try{c=await d.json()}catch(b){let a=await d.text();c={error:"invalid_response",error_description:a}}return{ok:d.ok,data:c}},postExchange:async a=>{let b=await fetch(g.Nu.copilotTokenUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":g.Nu.apiVersion,"User-Agent":g.Nu.userAgent}}),c=b.ok?await b.json():{},d=await fetch(g.Nu.userInfoUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":g.Nu.apiVersion,"User-Agent":g.Nu.userAgent}}),e=d.ok?await d.json():{};return{copilotToken:c,userInfo:e}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{copilotToken:b?.copilotToken?.token,copilotTokenExpiresAt:b?.copilotToken?.expires_at,githubUserId:b?.userInfo?.id,githubLogin:b?.userInfo?.login,githubName:b?.userInfo?.name,githubEmail:b?.userInfo?.email}})},kiro:{config:g.Tx,flowType:"device_code",requestDeviceCode:async(a,b,c={})=>{let d=("string"==typeof c.region?c.region.trim():"")||"us-east-1",e=("string"==typeof c.startUrl?c.startUrl.trim():"")||a.startUrl,f="idc"===c.authMethod?"idc":"builder-id",g=`https://oidc.${d}.amazonaws.com/client/register`,h=`https://oidc.${d}.amazonaws.com/device_authorization`,i=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientName:a.clientName,clientType:a.clientType,scopes:a.scopes,grantTypes:a.grantTypes,issuerUrl:a.issuerUrl})});if(!i.ok){let a=await i.text();throw Error(`Client registration failed: ${a}`)}let j=await i.json(),k=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:j.clientId,clientSecret:j.clientSecret,startUrl:e})});if(!k.ok){let a=await k.text();throw Error(`Device authorization failed: ${a}`)}let l=await k.json();return{device_code:l.deviceCode,user_code:l.userCode,verification_uri:l.verificationUri,verification_uri_complete:l.verificationUriComplete,expires_in:l.expiresIn,interval:l.interval||5,_clientId:j.clientId,_clientSecret:j.clientSecret,_region:d,_authMethod:f,_startUrl:e}},pollToken:async(a,b,c,d)=>{let e,f=d?._region||"us-east-1",g=`https://oidc.${f}.amazonaws.com/token`,h=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:d?._clientId,clientSecret:d?._clientSecret,deviceCode:b,grantType:"urn:ietf:params:oauth:grant-type:device_code"})});try{e=await h.json()}catch(b){let a=await h.text();e={error:"invalid_response",error_description:a}}return e.accessToken?{ok:!0,data:{access_token:e.accessToken,refresh_token:e.refreshToken,expires_in:e.expiresIn,profile_arn:e?.profileArn||null,_clientId:d?._clientId,_clientSecret:d?._clientSecret,_region:d?._region,_authMethod:d?._authMethod,_startUrl:d?._startUrl}}:{ok:!1,data:{error:e.error||"authorization_pending",error_description:e.error_description||e.message}}},mapTokens:a=>{let b=function(a){let b=i(a);if(b)return b.email||b.preferred_username||b.sub||void 0}(a.access_token);return{accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,email:b,providerSpecificData:{profileArn:a?.profile_arn||null,clientId:a._clientId,clientSecret:a._clientSecret,region:a._region||"us-east-1",authMethod:a._authMethod||"builder-id",startUrl:a._startUrl||g.Tx.startUrl}}}},cursor:{config:g.WN,flowType:"import_token",mapTokens:a=>({accessToken:a.accessToken,refreshToken:null,expiresIn:a.expiresIn||86400,providerSpecificData:{machineId:a.machineId,authMethod:"imported"}})},"kimi-coding":{config:g.t,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId})});if(!b.ok){let a=await b.text();throw Error(`Device code request failed: ${a}`)}let c=await b.json();return{device_code:c.device_code,user_code:c.user_code,verification_uri:c.verification_uri||"https://www.kimi.com/code/authorize_device",verification_uri_complete:c.verification_uri_complete||`https://www.kimi.com/code/authorize_device?user_code=${c.user_code}`,expires_in:c.expires_in,interval:c.interval||5}},pollToken:async(a,b)=>{let c,d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b})});try{c=await d.json()}catch(b){let a=await d.text();c={error:"invalid_response",error_description:a}}return{ok:d.ok,data:c}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in})},kilocode:{config:g.MZ,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.initiateUrl,{method:"POST",headers:{"Content-Type":"application/json"}});if(!b.ok){if(429===b.status)throw Error("Too many pending authorization requests. Please try again later.");let a=await b.text();throw Error(`Device auth initiation failed: ${a}`)}let c=await b.json();return{device_code:c.code,user_code:c.code,verification_uri:c.verificationUrl,verification_uri_complete:c.verificationUrl,expires_in:c.expiresIn||300,interval:3}},pollToken:async(a,b)=>{let c=await fetch(`${a.pollUrlBase}/${b}`);if(202===c.status)return{ok:!1,data:{error:"authorization_pending"}};if(403===c.status)return{ok:!1,data:{error:"access_denied",error_description:"Authorization denied by user"}};if(410===c.status)return{ok:!1,data:{error:"expired_token",error_description:"Authorization code expired"}};if(!c.ok)return{ok:!1,data:{error:"poll_failed",error_description:`Poll failed: ${c.status}`}};let d=await c.json();if("approved"===d.status&&d.token){let b=null;try{let c=await fetch(`${a.apiBaseUrl}/api/profile`,{headers:{Authorization:`Bearer ${d.token}`}});if(c.ok){let a=await c.json();b=a.organizations?.[0]?.id||null}}catch{}return{ok:!0,data:{access_token:d.token,_userEmail:d.userEmail,_orgId:b}}}return{ok:!1,data:{error:"authorization_pending"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:null,expiresIn:null,email:a._userEmail,...a._orgId?{providerSpecificData:{orgId:a._orgId}}:{}})},cline:{config:g.lB,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(f){let d=await fetch(a.tokenExchangeUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Cline token exchange failed: ${a}`)}let e=await d.json();return{access_token:e.data?.accessToken||e.accessToken,refresh_token:e.data?.refreshToken||e.refreshToken,email:e.data?.userInfo?.email||"",expires_at:e.data?.expiresAt||e.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})},gitlab:{config:g.f7,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d,e={})=>{let f=e.baseUrl||a.defaultBaseUrl,g=e.clientId||"",h=new URLSearchParams({client_id:g,redirect_uri:b,response_type:"code",state:c,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod});return`${f}${a.authorizeUrlPath}?${h.toString()}`},exchangeToken:async(a,b,c,d,e,f={})=>{let g=f.baseUrl||a.defaultBaseUrl,h=f.clientId||"",i=f.clientSecret||"",j=new URLSearchParams({client_id:h,grant_type:"authorization_code",code:b,redirect_uri:c,code_verifier:d});i&&j.set("client_secret",i);let k=await fetch(`${g}${a.tokenUrlPath}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:j.toString()});if(!k.ok)throw Error(`GitLab token exchange failed: ${await k.text()}`);let l=await k.json(),m=await fetch(`${g}${a.userInfoUrlPath}`,{headers:{Authorization:`Bearer ${l.access_token}`}}),n=m.ok?await m.json():{};return{...l,_user:n,_baseUrl:g,_clientId:h}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,providerSpecificData:{username:a._user?.username||"",email:a._user?.email||a._user?.public_email||"",name:a._user?.name||"",baseUrl:a._baseUrl,clientId:a._clientId,authKind:"oauth"}})},codebuddy:{config:g.Nl,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(`${a.stateUrl}?platform=${a.platform}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-Product":"SaaS"},body:"{}"});if(!b.ok)throw Error(`CodeBuddy state request failed: ${await b.text()}`);let c=await b.json();if(0!==c.code||!c.data?.state||!c.data?.authUrl)throw Error(`CodeBuddy state error: ${c.msg||"missing state/authUrl"}`);return{device_code:c.data.state,verification_uri:c.data.authUrl,user_code:"",interval:a.pollInterval/1e3,_isCodeBuddy:!0}},pollToken:async(a,b)=>{let c=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-No-Authorization":"true","X-No-User-Id":"true","X-Product":"SaaS"},body:JSON.stringify({state:b})});if(!c.ok)return{ok:!1,data:{error:"request_failed"}};let d=await c.json();return 0===d.code&&d.data?.accessToken?{ok:!0,data:{access_token:d.data.accessToken,refresh_token:d.data.refreshToken||"",token_type:d.data.tokenType||"Bearer"}}:11217===d.code?{ok:!0,data:{error:"authorization_pending"}}:{ok:!1,data:{error:d.msg||"unknown_error"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:86400,providerSpecificData:{}})}};function k(a){let b=q[a];if(!b)throw Error(`Unknown provider: ${a}`);return b}function l(a,b,c){let d=k(a),{codeVerifier:e,codeChallenge:g,state:h}=(0,f.lz)();return{authUrl:"device_code"===d.flowType?null:"authorization_code_pkce"===d.flowType?d.buildAuthUrl(d.config,b,h,g,c||{}):d.buildAuthUrl(d.config,b,h,void 0,c||{}),state:h,codeVerifier:e,codeChallenge:g,redirectUri:b,flowType:d.flowType,fixedPort:d.fixedPort,callbackPath:d.callbackPath||"/callback"}}async function m(a,b,c,d,e,f){let g=k(a),h=await g.exchangeToken(g.config,b,c,d,e,f||{}),i=null;return g.postExchange&&(i=await g.postExchange(h)),g.mapTokens(h,i)}async function n(a,b,c){let d=k(a);if("device_code"!==d.flowType)throw Error(`Provider ${a} does not support device code flow`);return await d.requestDeviceCode(d.config,b,c||{})}async function o(a,b,c,d){let e=k(a);if("device_code"!==e.flowType)throw Error(`Provider ${a} does not support device code flow`);let f=await e.pollToken(e.config,b,c,d);if(f.ok)if(f.data.access_token){let a=null;return e.postExchange&&(a=await e.postExchange(f.data)),{success:!0,tokens:e.mapTokens(f.data,a)}}else if("authorization_pending"===f.data.error||"slow_down"===f.data.error)return{success:!1,error:f.data.error,errorDescription:f.data.error_description||f.data.message,pending:"authorization_pending"===f.data.error};else return{success:!1,error:f.data.error||"no_access_token",errorDescription:f.data.error_description||f.data.message||"No access token received"};return{success:!1,error:f.data.error,errorDescription:f.data.error_description}}let r=!1;async function p(){if(!r){r=!0;try{let{getProviderConnections:a,updateProviderConnection:b}=await Promise.resolve().then(c.bind(c,89718));for(let c of(await a()).filter(a=>{if("codex"!==a.provider||"oauth"!==a.authType||!a.idToken)return!1;let b=!!a.email,c=!!a.providerSpecificData?.chatgptAccountId;return!b||!c})){let a=j(c.idToken);if(!a.email&&!a.chatgptAccountId)continue;let d={};!c.email&&a.email&&(d.email=a.email),(a.chatgptAccountId||a.chatgptPlanType)&&(d.providerSpecificData={...c.providerSpecificData||{},chatgptAccountId:a.chatgptAccountId,chatgptPlanType:a.chatgptPlanType}),Object.keys(d).length&&await b(c.id,d)}}catch(a){r=!1,console.log("backfillCodexEmails failed:",a?.message||a)}}}d()}catch(a){d(a)}})},78335:()=>{},92990:(a,b,c)=>{"use strict";c.d(b,{DI:()=>e,Hp:()=>g,LT:()=>f,MZ:()=>o,Nl:()=>r,Nu:()=>k,OV:()=>d,Tx:()=>l,WN:()=>m,YT:()=>j,ZL:()=>i,f7:()=>q,hF:()=>h,lB:()=>p,t:()=>n}),c(21820);let d={clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",authorizeUrl:"https://claude.ai/oauth/authorize",tokenUrl:"https://api.anthropic.com/v1/oauth/token",scopes:["org:create_api_key","user:profile","user:inference"],codeChallengeMethod:"S256"},e={clientId:"app_EMoamEEZ73f0CkXaXp7hrann",authorizeUrl:"https://auth.openai.com/oauth/authorize",tokenUrl:"https://auth.openai.com/oauth/token",scope:"openid profile email offline_access",codeChallengeMethod:"S256",extraParams:{id_token_add_organizations:"true",codex_cli_simplified_flow:"true",originator:"codex_cli_rs"}},f={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"]},g={clientId:"f0304373b74a44d2b584a3fb70ca9e56",deviceCodeUrl:"https://qwen.ai/api/v1/oauth2/device/code",tokenUrl:"https://qwen.ai/api/v1/oauth2/token",scope:"openid profile email model.completion",codeChallengeMethod:"S256"},h={apiBaseUrl:"https://api2.qoder.sh",deviceTokenUrl:"https://api2.qoder.sh/api/v1/deviceToken/poll",deviceRefreshUrl:"https://api2.qoder.sh/api/v1/deviceToken/refresh",refreshUrl:"https://api2.qoder.sh/api/v3/user/refresh_token",userInfoUrl:"https://api2.qoder.sh/api/v1/userinfo",statusUrl:"https://api2.qoder.sh/api/v3/user/status",loginUrl:"https://qoder.com/login"},i={clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",authorizeUrl:"https://iflow.cn/oauth",tokenUrl:"https://iflow.cn/oauth/token",userInfoUrl:"https://iflow.cn/api/oauth/getUserInfo",extraParams:{loginMethod:"phone",type:"phone"}},j={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:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},k={clientId:"Iv1.b507a08c87ecfe98",deviceCodeUrl:"https://github.com/login/device/code",tokenUrl:"https://github.com/login/oauth/access_token",userInfoUrl:"https://api.github.com/user",scopes:"read:user",apiVersion:"2022-11-28",copilotTokenUrl:"https://api.github.com/copilot_internal/v2/token",userAgent:"GitHubCopilotChat/0.26.7",editorVersion:"vscode/1.85.0",editorPluginVersion:"copilot-chat/0.26.7"},l={ssoOidcEndpoint:"https://oidc.us-east-1.amazonaws.com",registerClientUrl:"https://oidc.us-east-1.amazonaws.com/client/register",deviceAuthUrl:"https://oidc.us-east-1.amazonaws.com/device_authorization",tokenUrl:"https://oidc.us-east-1.amazonaws.com/token",startUrl:"https://view.awsapps.com/start",clientName:"kiro-oauth-client",clientType:"public",scopes:["codewhisperer:completions","codewhisperer:analysis","codewhisperer:conversations"],grantTypes:["urn:ietf:params:oauth:grant-type:device_code","refresh_token"],issuerUrl:"https://identitycenter.amazonaws.com/ssoins-722374e8c3c8e6c6",socialAuthEndpoint:"https://prod.us-east-1.auth.desktop.kiro.dev",socialLoginUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/login",socialTokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/oauth/token",socialRefreshUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authMethods:["builder-id","idc","google","github","import"]},m={apiEndpoint:"https://api2.cursor.sh",chatEndpoint:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",modelsEndpoint:"/aiserver.v1.AiService/GetDefaultModelNudgeData",api3Endpoint:"https://api3.cursor.sh",agentEndpoint:"https://agent.api5.cursor.sh",agentNonPrivacyEndpoint:"https://agentn.api5.cursor.sh",clientVersion:"3.1.0",clientType:"ide",tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"},dbKeys:{accessToken:"cursorAuth/accessToken",machineId:"storage.serviceMachineId"}},n={clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||"17e5f671-d194-4dfb-9706-5516cb48c098",deviceCodeUrl:"https://auth.kimi.com/api/oauth/device_authorization",tokenUrl:"https://auth.kimi.com/api/oauth/token"},o={apiBaseUrl:"https://api.kilo.ai",initiateUrl:"https://api.kilo.ai/api/device-auth/codes",pollUrlBase:"https://api.kilo.ai/api/device-auth/codes"},p={appBaseUrl:"https://app.cline.bot",apiBaseUrl:"https://api.cline.bot",authorizeUrl:"https://api.cline.bot/api/v1/auth/authorize",tokenExchangeUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},q={defaultBaseUrl:"https://gitlab.com",authorizeUrlPath:"/oauth/authorize",tokenUrlPath:"/oauth/token",userInfoUrlPath:"/api/v4/user",scope:"api read_user",codeChallengeMethod:"S256"},r={baseUrl:"https://copilot.tencent.com",stateUrl:"https://copilot.tencent.com/v2/plugin/auth/state",tokenUrl:"https://copilot.tencent.com/v2/plugin/auth/token",refreshUrl:"https://copilot.tencent.com/v2/plugin/auth/token/refresh",userAgent:"CLI/2.63.2 CodeBuddy/2.63.2",platform:"CLI",pollInterval:5e3}},96487:()=>{}};
@@ -1 +0,0 @@
1
- exports.id=541,exports.ids=[541],exports.modules={75681:(a,b,c)=>{"use strict";c.d(b,{DI:()=>k,IS:()=>d,JH:()=>j,Pd:()=>l,Q2:()=>p,br:()=>i,fg:()=>h,gC:()=>o,gb:()=>n,mq:()=>m,nJ:()=>e,rs:()=>r,wG:()=>s,zN:()=>g,zt:()=>q});let d={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981",deprecated:!0,deprecationNotice:"Qwen OAuth free tier was discontinued by Alibaba on 2026-04-15. New connections will not work."},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationNotice:"Gemini CLI is designed exclusively for Gemini CLI. Using it with other tools (OpenClaw, Claude, Codex...) may result in account restrictions or bans."},iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},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"}}},e={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"]},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo \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",website:"https://ai.google.dev",serviceKinds:["llm","embedding","image","imageToText","webSearch"],searchViaChat:{defaultModel:"gemini-2.5-flash"}},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"]}},f={options:["auto","none","low","medium","high"],defaultMode:"auto"},g={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B",deprecated:!0,deprecationNotice:"AG is designed exclusively for Antigravity IDE. Using it with other tools (OpenClaw, Claude, Codex...) may result in account restrictions or bans."},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6",thinkingConfig:f,serviceKinds:["llm","image"],kindNotice:{image:"Requires a ChatGPT Plus (or higher) account. Free accounts are not supported for image generation."}},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},h={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn",serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"kimi-k2.5"}},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com",serviceKinds:["llm","image","imageToText","webSearch"],searchViaChat:{defaultModel:"MiniMax-M2.7"}},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},"volcengine-ark":{id:"volcengine-ark",alias:"ark",name:"Volcengine Ark",icon:"cloud",color:"#1677FF",textIcon:"ARK",website:"https://ark.cn-beijing.volces.com"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com",serviceKinds:["llm","embedding","tts","image","imageToText","webSearch"],thinkingConfig:f,searchViaChat:{defaultModel:"gpt-4o-mini"}},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com",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",hasProviderSpecificData:!0},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",serviceKinds:["llm","imageToText"]},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",serviceKinds:["llm","imageToText","webSearch"],searchViaChat:{defaultModel:"grok-4.20-reasoning"}},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai",serviceKinds:["llm","imageToText"]},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai",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"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com",serviceKinds:["stt","imageToText"]},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com",serviceKinds:["stt"]},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai",serviceKinds:["image"]},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io",serviceKinds:["tts"]},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai",serviceKinds:["tts"],hidden:!0},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht",serviceKinds:["tts"],hidden:!0},"local-device":{id:"local-device",alias:"local-device",name:"Local Device",icon:"speaker",color:"#64748B",textIcon:"LD",serviceKinds:["tts"],noAuth:!0},"google-tts":{id:"google-tts",alias:"google-tts",name:"Google TTS",icon:"record_voice_over",color:"#4285F4",textIcon:"GT",serviceKinds:["tts"],noAuth:!0},"edge-tts":{id:"edge-tts",alias:"edge-tts",name:"Edge TTS",icon:"record_voice_over",color:"#0078D4",textIcon:"ET",serviceKinds:["tts"],noAuth:!0},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",serviceKinds:["image","imageToText","tts"],hiddenKinds:["tts"]},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"smart_toy",color:"#5B5FEF",textIcon:"BB",website:"https://blackbox.ai",serviceKinds:["llm"]},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"},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}},"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}}},i={"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"]}},j="openai-compatible-",k="anthropic-compatible-",l="custom-embedding-";function m(a){return"string"==typeof a&&a.startsWith(j)}function n(a){return"string"==typeof a&&a.startsWith(k)}function o(a){return"string"==typeof a&&a.startsWith(l)}let p={...d,...e,...g,...h,...i};function q(a){for(let b of Object.values(p))if(b.alias===a||b.id===a)return b;return null}function r(a){let b=q(a);return b?.id||a}function s(a){let b=p[a];return b?.alias||a}Object.values(p).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(p).reduce((a,b)=>(a[b.id]=b.alias,a),{})},78335:()=>{},96487:()=>{}};
@@ -1 +0,0 @@
1
- "use strict";exports.id=6143,exports.ids=[6143],exports.modules={3662:(a,b,c)=>{c.d(b,{EQ:()=>f,LY:()=>d,O:()=>e,fh:()=>h,t2:()=>i,wf:()=>g});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Model not found",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=[{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"improperly formed request",cooldownMs:12e4},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}]},41004:(a,b,c)=>{c.d(b,{C8:()=>k,DR:()=>j,Uc:()=>f,cI:()=>h,eo:()=>g,gx:()=>d,nQ:()=>i,v1:()=>e}),c(3662);let d={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},e={sessionTtlMs:72e5,sessionCleanupIntervalMs:18e5,dnsCacheTtlMs:3e5,proxyDispatchersMaxSize:20},f=64e3,g=32e3,h={429:{attempts:0,delayMs:0},502:{attempts:3,delayMs:3e3},503:{attempts:3,delayMs:2e3},504:{attempts:2,delayMs:3e3}},i=3;function j(a){return null==a?{attempts:0,delayMs:2e3}:"number"==typeof a?{attempts:a,delayMs:2e3}:{attempts:a.attempts||0,delayMs:null!=a.delayMs?a.delayMs:2e3}}let k=["Please write a 5-10 word title for the following conversation:"]},86143:(a,b,c)=>{c.d(b,{Nq:()=>E,Op:()=>G,PE:()=>K});var d=c(43659),e=c(41004),f=c(79646),g=c(28354),h=c(79748),i=c(21820),j=c(33873);let k=(0,g.promisify)(f.execFile);function l(a,b,c){let d=Buffer.from(a,"base64");return"json"===c?{success:!0,response:new Response(JSON.stringify({audio:a,format:b}),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}:{success:!0,response:new Response(d,{headers:{"Content-Type":`audio/${b}`,"Content-Length":String(d.length),"Access-Control-Allow-Origin":"*"}})}}let m={token:null,tokenTime:0},n={token:null,tokenTime:0},o="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";async function p(){let a=Date.now();if(m.token&&a-m.tokenTime<66e4)return m.token;let b=await fetch("https://translate.google.com/",{headers:{"User-Agent":o}});if(!b.ok)throw Error(`Google translate fetch failed: ${b.status}`);let c=await b.text(),d=c.match(/"FdrFJe":"(.*?)"/)?.[1],e=c.match(/"cfb2h":"(.*?)"/)?.[1];if(!d||!e)throw Error("Failed to parse Google token");return m.token={"f.sid":d,bl:e},m.tokenTime=a,m.token}let q=0;async function r(a,b){let c=await p(),d=a.replace(/[@^*()\\/\-_+=><"'\u201c\u201d\u3010\u3011]/g," ").replaceAll(", ",". "),e="jQ1olc",f=1e5*++q+Math.floor(1e3+9e3*Math.random()),g=new URLSearchParams({rpcids:e,"f.sid":c["f.sid"],bl:c.bl,hl:b,"soc-app":1,"soc-platform":1,"soc-device":1,_reqid:f,rt:"c"}),h=[d,b,null,"undefined",[0]],i=new URLSearchParams;i.append("f.req",JSON.stringify([[[e,JSON.stringify(h),null,"generic"]]]));let j=await fetch(`https://translate.google.com/_/TranslateWebserverUi/data/batchexecute?${g}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Referer:"https://translate.google.com/"},body:i.toString()});if(!j.ok)throw Error(`Google TTS failed: ${j.status}`);let k=JSON.parse(JSON.parse((await j.text()).split("\n")[3])[0][2])[0];if(!k||k.length<100)throw Error("Google TTS returned empty audio");return k}async function s(){let a=Date.now();if(n.token&&a-n.tokenTime<3e5)return n.token;let b=await fetch("https://www.bing.com/translator",{headers:{"User-Agent":o,"Accept-Language":"vi,en-US;q=0.9,en;q=0.8"}});if(!b.ok)throw Error(`Bing translator fetch failed: ${b.status}`);let c=(b.headers.getSetCookie?.()||[]).map(a=>a.split(";")[0]).join("; "),d=(await b.text()).match(/params_AbusePreventionHelper\s*=\s*\[([^,]+),([^,]+),/);if(!d)throw Error("Failed to parse Bing token");return n.token={key:d[1],token:d[2].replace(/"/g,""),cookie:c},n.tokenTime=a,n.token}async function t(a,b,c){let d=b.split("-").slice(0,2).join("-"),e=b.toLowerCase().includes("male")?"Male":"Female",f=`<speak version='1.0' xml:lang='${d}'><voice xml:lang='${d}' xml:gender='${e}' name='${b}'><prosody rate='0.00%'>${a}</prosody></voice></speak>`,g=new URLSearchParams;return g.append("ssml",f),g.append("token",c.token),g.append("key",c.key),fetch("https://www.bing.com/tfettts?isVertical=1&&IG=1&IID=translator.5023&SFX=1",{method:"POST",body:g.toString(),headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"*/*",Origin:"https://www.bing.com",Referer:"https://www.bing.com/translator","User-Agent":o,...c.cookie?{Cookie:c.cookie}:{}}})}async function u(a,b){let c=await s(),d=await t(a,b,c);if((429===d.status||403===d.status)&&(n.token=null,n.tokenTime=0,c=await s(),d=await t(a,b,c)),!d.ok){let a=await d.text().catch(()=>"");throw Error(`Bing TTS failed: ${d.status}${a?" - "+a:""}`)}let e=await d.arrayBuffer();if(e.byteLength<1024)throw Error("Bing TTS returned empty audio");return Buffer.from(e).toString("base64")}let v=null;async function w(){let{stdout:a}=await k("say",["-v","?"]),b=[];for(let c of a.split("\n")){let a=c.match(/^([^\s].*?)\s{2,}([a-z]{2}_[A-Z]{2})/);if(!a)continue;let d=a[1].trim(),e=a[2].trim(),f=e.split("_")[0],g=e.split("_")[1];b.push({id:d,name:d,locale:e,lang:f,country:g,gender:""})}return b}async function x(){let{stdout:a}=await k("powershell.exe",["-NoProfile","-NonInteractive","-WindowStyle","Hidden","-Command","Add-Type -AssemblyName System.Speech; $s = New-Object System.Speech.Synthesis.SpeechSynthesizer; $s.GetInstalledVoices() | ForEach-Object { $v = $_.VoiceInfo; [PSCustomObject]@{ Name=$v.Name; Culture=$v.Culture.Name; Gender=$v.Gender } } | ConvertTo-Json -Compress"],{windowsHide:!0}),b=JSON.parse(a.trim()||"[]");return(Array.isArray(b)?b:[b]).map(a=>{let b=a.Culture||"en-US",[c,d=""]=b.split("-");return{id:a.Name,name:a.Name,locale:b.replace("-","_"),lang:c,country:d,gender:({1:"Male",2:"Female",Male:"Male",Female:"Female"})[a.Gender]||""}})}async function y(){if(v)return v;try{let a="win32"===process.platform?await x():await w();return v=a,a}catch{return[]}}async function z(a,b){let c=await (0,h.mkdtemp)((0,j.join)((0,i.tmpdir)(),"tts-")),d=(0,j.join)(c,"out.aiff"),e=(0,j.join)(c,"out.mp3");try{let c=b?["-v",b,"-o",d,a]:["-o",d,a];return await k("say",c),await k("ffmpeg",["-y","-i",d,"-codec:a","libmp3lame","-qscale:a","4",e]),(await (0,h.readFile)(e)).toString("base64")}finally{await (0,h.rm)(c,{recursive:!0,force:!0})}}let A=null,B=0;async function C(){let a=Date.now();if(A&&a-B<864e5)return A;let b=await fetch("https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list?trustedclienttoken=6A5AA1D4EAFF4E9FB37E23D68491D6F4",{headers:{"User-Agent":o}});if(!b.ok)throw Error(`Edge TTS voices fetch failed: ${b.status}`);let c=await b.json();return A=c,B=a,c}let D=new Map;async function E(a){if(!a)throw Error("ElevenLabs API key required");let b=Date.now(),c=D.get(a);if(c&&b-c.time<864e5)return c.voices;let d=await fetch("https://api.elevenlabs.io/v1/voices",{headers:{"xi-api-key":a,"Content-Type":"application/json"}});if(!d.ok)throw Error(`ElevenLabs voices fetch failed: ${d.status}`);let e=((await d.json()).voices||[]).map(a=>({...a,lang:a.labels?.language||"en"}));return D.set(a,{voices:e,time:b}),e}async function F(a,b,c,d="eleven_flash_v2_5"){let e=await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${b}`,{method:"POST",headers:{"xi-api-key":c,"Content-Type":"application/json"},body:JSON.stringify({text:a,model_id:d,voice_settings:{stability:.5,similarity_boost:.75}})});if(!e.ok){let a=await e.json().catch(()=>({}));throw Error(a?.detail?.message||`ElevenLabs TTS failed: ${e.status}`)}let f=await e.arrayBuffer();if(f.byteLength<1024)throw Error("ElevenLabs TTS returned empty audio");return Buffer.from(f).toString("base64")}let G={"edge-tts":C,"local-device":y,elevenlabs:E};async function H({model:a,input:b,credentials:c,responseFormat:f="mp3"}){if(!c?.apiKey)return(0,d.A1)(e.gx.UNAUTHORIZED,"No OpenRouter API key configured");let g="openai/gpt-4o-mini-tts",h="alloy";if(a&&a.includes("/")){let b=a.lastIndexOf("/"),c=a.slice(b+1),d=a.slice(0,b);d.includes("/")?(g=d,h=c):h=a}else a&&(h=a);let i=await fetch("https://openrouter.ai/api/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`,"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"},body:JSON.stringify({model:g,modalities:["text","audio"],audio:{voice:h,format:"wav"},stream:!0,messages:[{role:"user",content:b}]})});if(!i.ok){let a=await i.json().catch(()=>({}));return(0,d.A1)(i.status,a?.error?.message||`OpenRouter TTS failed: ${i.status}`)}let j=[],k=i.body.getReader(),m=new TextDecoder,n="";for(;;){let{done:a,value:b}=await k.read();if(a)break;let c=(n+=m.decode(b,{stream:!0})).split("\n");for(let a of(n=c.pop(),c))if(a.startsWith("data: ")&&"data: [DONE]"!==a)try{let b=JSON.parse(a.slice(6)),c=b.choices?.[0]?.delta?.audio?.data;c&&j.push(c)}catch{}}return 0===j.length?(0,d.A1)(e.gx.BAD_GATEWAY,"OpenRouter TTS returned no audio data"):l(j.join(""),"wav",f)}async function I({model:a,input:b,credentials:c,responseFormat:f="mp3"}){if(!c?.apiKey)return(0,d.A1)(e.gx.UNAUTHORIZED,"No OpenAI API key configured");let g="gpt-4o-mini-tts",h="alloy";if(a&&a.includes("/")){let b=a.split("/");2===b.length&&([g,h]=b)}else a&&(h=a);let i=(c.baseUrl||"https://api.openai.com").replace(/\/+$/,""),j=await fetch(`${i}/v1/audio/speech`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c.apiKey}`},body:JSON.stringify({model:g,voice:h,input:b})});if(!j.ok){let a=await j.json().catch(()=>({}));return(0,d.A1)(j.status,a?.error?.message||`OpenAI TTS failed: ${j.status}`)}let k=await j.arrayBuffer();return l(Buffer.from(k).toString("base64"),"mp3",f)}let J={"google-tts":{synthesize:async(a,b)=>({base64:await r(a,b||"en"),format:"mp3"}),requiresCredentials:!1},"edge-tts":{synthesize:async(a,b)=>({base64:await u(a,b||"vi-VN-HoaiMyNeural"),format:"mp3"}),requiresCredentials:!1},"local-device":{synthesize:async(a,b)=>({base64:await z(a,b),format:"mp3"}),requiresCredentials:!1},elevenlabs:{synthesize:async(a,b,c)=>{if(!c?.apiKey)throw Error("ElevenLabs API key required");let d="eleven_flash_v2_5",e=b;return b&&b.includes("/")&&([d,e]=b.split("/")),{base64:await F(a,e,c.apiKey,d),format:"mp3"}},requiresCredentials:!0},openai:{synthesize:async(a,b,c,d)=>await I({model:b,input:a,credentials:c,responseFormat:d}),requiresCredentials:!0},openrouter:{synthesize:async(a,b,c,d)=>await H({model:b,input:a,credentials:c,responseFormat:d}),requiresCredentials:!0}};async function K({provider:a,model:b,input:c,credentials:f,responseFormat:g="mp3"}){if(!c?.trim())return(0,d.A1)(e.gx.BAD_REQUEST,"Missing required field: input");let h=J[a];if(!h)return(0,d.A1)(e.gx.BAD_REQUEST,`Provider '${a}' does not support TTS via this route.`);try{let a=await h.synthesize(c.trim(),b,f,g);if(void 0!==a.success)return a;return l(a.base64,a.format,g)}catch(a){return(0,d.A1)(e.gx.BAD_GATEWAY,a.message||"TTS synthesis failed")}}}};