@amir83nasr/10router 0.1.14 → 0.1.16

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 (846) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +4 -5
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +16 -16
  5. package/.next/routes-manifest.json +0 -6
  6. package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  7. package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  8. package/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  10. package/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  11. package/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  13. package/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  14. package/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  15. package/.next/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  16. package/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  17. package/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  19. package/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  20. package/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  21. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page.js +2 -2
  22. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page.js.nft.json +1 -1
  23. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/[id]/page_client-reference-manifest.js +1 -1
  24. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page.js +1 -1
  25. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page.js.nft.json +1 -1
  26. package/.next/server/app/(dashboard)/dashboard/media-providers/systemone/page_client-reference-manifest.js +1 -1
  27. package/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  28. package/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  29. package/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  30. package/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  31. package/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  32. package/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  33. package/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  34. package/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  35. package/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  37. package/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  38. package/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  39. package/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  40. package/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  41. package/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  42. package/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  43. package/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  44. package/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  45. package/.next/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  46. package/.next/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  47. package/.next/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  49. package/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  50. package/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  51. package/.next/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  52. package/.next/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  53. package/.next/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  54. package/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  55. package/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  56. package/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/_global-error/page.js +2 -2
  58. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/_global-error.html +1 -1
  60. package/.next/server/app/_global-error.rsc +1 -1
  61. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  62. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  63. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  64. package/.next/server/app/_not-found/page.js +1 -1
  65. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  66. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  67. package/.next/server/app/_not-found.html +1 -1
  68. package/.next/server/app/_not-found.rsc +6 -6
  69. package/.next/server/app/_not-found.segments/_full.segment.rsc +6 -6
  70. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
  71. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  72. package/.next/server/app/api/auth/login/route.js +1 -1
  73. package/.next/server/app/api/auth/logout/route.js +1 -1
  74. package/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  75. package/.next/server/app/api/auth/oidc/start/route.js +1 -1
  76. package/.next/server/app/api/auth/oidc/test/route.js +1 -1
  77. package/.next/server/app/api/auth/reset-password/route.js +1 -1
  78. package/.next/server/app/api/auth/saml/acs/route.js +1 -1
  79. package/.next/server/app/api/auth/saml/metadata/route.js +2 -2
  80. package/.next/server/app/api/auth/saml/start/route.js +1 -1
  81. package/.next/server/app/api/auth/saml/test/route.js +1 -1
  82. package/.next/server/app/api/auth/status/route.js +2 -2
  83. package/.next/server/app/api/changelog/route.js +1 -1
  84. package/.next/server/app/api/cli-tools/all-statuses/route.js +1 -1
  85. package/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  86. package/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
  87. package/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  88. package/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  89. package/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  90. package/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  91. package/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  92. package/.next/server/app/api/cli-tools/dsh-settings/route.js +1 -1
  93. package/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  94. package/.next/server/app/api/combos/[id]/route.js +1 -1
  95. package/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  96. package/.next/server/app/api/combos/route.js +1 -1
  97. package/.next/server/app/api/headroom/extras/route.js +1 -1
  98. package/.next/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  99. package/.next/server/app/api/headroom/restart/route.js +1 -1
  100. package/.next/server/app/api/headroom/start/route.js +1 -1
  101. package/.next/server/app/api/headroom/status/route.js +1 -1
  102. package/.next/server/app/api/headroom/stop/route.js +1 -1
  103. package/.next/server/app/api/health/route.js +1 -1
  104. package/.next/server/app/api/init/route.js +1 -1
  105. package/.next/server/app/api/keys/[id]/route.js +1 -1
  106. package/.next/server/app/api/keys/route.js +1 -1
  107. package/.next/server/app/api/locale/route.js +1 -1
  108. package/.next/server/app/api/mcp/[plugin]/message/route.js +1 -1
  109. package/.next/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  110. package/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  111. package/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  112. package/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  113. package/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  114. package/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  115. package/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  116. package/.next/server/app/api/models/alias/route.js +1 -1
  117. package/.next/server/app/api/models/availability/route.js +1 -1
  118. package/.next/server/app/api/models/catalog-sync/route.js +1 -1
  119. package/.next/server/app/api/models/catalog-sync/route.js.nft.json +1 -1
  120. package/.next/server/app/api/models/custom/route.js +1 -1
  121. package/.next/server/app/api/models/custom/route.js.nft.json +1 -1
  122. package/.next/server/app/api/models/disabled/route.js +1 -1
  123. package/.next/server/app/api/models/route.js +1 -1
  124. package/.next/server/app/api/models/route.js.nft.json +1 -1
  125. package/.next/server/app/api/models/test/route.js +1 -1
  126. package/.next/server/app/api/models/test/route.js.nft.json +1 -1
  127. package/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  128. package/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  129. package/.next/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  130. package/.next/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  131. package/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
  132. package/.next/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  133. package/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  134. package/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  135. package/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  136. package/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  137. package/.next/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
  138. package/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  139. package/.next/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
  140. package/.next/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +2 -2
  141. package/.next/server/app/api/pricing/route.js +1 -1
  142. package/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  143. package/.next/server/app/api/provider-nodes/route.js +1 -1
  144. package/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  145. package/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  146. package/.next/server/app/api/providers/[id]/models/route.js +1 -1
  147. package/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  148. package/.next/server/app/api/providers/[id]/route.js +1 -1
  149. package/.next/server/app/api/providers/[id]/test/route.js +1 -1
  150. package/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  151. package/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  152. package/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  153. package/.next/server/app/api/providers/client/route.js +1 -1
  154. package/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  155. package/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  156. package/.next/server/app/api/providers/route.js +1 -1
  157. package/.next/server/app/api/providers/route.js.nft.json +1 -1
  158. package/.next/server/app/api/providers/suggested-models/route.js +1 -1
  159. package/.next/server/app/api/providers/test-batch/route.js +1 -1
  160. package/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  161. package/.next/server/app/api/providers/validate/route.js +1 -1
  162. package/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  163. package/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  164. package/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  165. package/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  166. package/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  167. package/.next/server/app/api/proxy-pools/route.js +1 -1
  168. package/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  169. package/.next/server/app/api/pxpipe/health/route.js +2 -2
  170. package/.next/server/app/api/pxpipe/install/route.js +1 -1
  171. package/.next/server/app/api/pxpipe/logs/route.js +1 -1
  172. package/.next/server/app/api/pxpipe/restart/route.js +1 -1
  173. package/.next/server/app/api/pxpipe/start/route.js +2 -2
  174. package/.next/server/app/api/pxpipe/stats/route.js +1 -1
  175. package/.next/server/app/api/pxpipe/status/route.js +1 -1
  176. package/.next/server/app/api/pxpipe/stop/route.js +1 -1
  177. package/.next/server/app/api/settings/database/route.js +1 -1
  178. package/.next/server/app/api/settings/proxy-test/route.js +1 -1
  179. package/.next/server/app/api/settings/require-login/route.js +1 -1
  180. package/.next/server/app/api/settings/route.js +1 -1
  181. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  182. package/.next/server/app/api/shutdown/route.js +1 -1
  183. package/.next/server/app/api/tags/route.js +1 -1
  184. package/.next/server/app/api/translator/console-logs/route.js +1 -1
  185. package/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  186. package/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  187. package/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  188. package/.next/server/app/api/translator/load/route.js +1 -1
  189. package/.next/server/app/api/translator/save/route.js +1 -1
  190. package/.next/server/app/api/translator/send/route.js +1 -1
  191. package/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  192. package/.next/server/app/api/translator/translate/route.js +1 -1
  193. package/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  194. package/.next/server/app/api/tunnel/disable/route.js +1 -1
  195. package/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  196. package/.next/server/app/api/tunnel/enable/route.js +1 -1
  197. package/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  198. package/.next/server/app/api/tunnel/status/route.js +1 -1
  199. package/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  200. package/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  201. package/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  202. package/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  203. package/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  204. package/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  205. package/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  206. package/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  207. package/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  208. package/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  209. package/.next/server/app/api/usage/chart/route.js +1 -1
  210. package/.next/server/app/api/usage/health/route.js +1 -1
  211. package/.next/server/app/api/usage/history/route.js +1 -1
  212. package/.next/server/app/api/usage/logs/route.js +1 -1
  213. package/.next/server/app/api/usage/providers/route.js +1 -1
  214. package/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  215. package/.next/server/app/api/usage/request-details/route.js +1 -1
  216. package/.next/server/app/api/usage/request-logs/route.js +1 -1
  217. package/.next/server/app/api/usage/stats/route.js +1 -1
  218. package/.next/server/app/api/usage/stream/route.js +2 -2
  219. package/.next/server/app/api/v1/api/chat/route.js +1 -1
  220. package/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  221. package/.next/server/app/api/v1/audio/speech/route.js +1 -1
  222. package/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  223. package/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  224. package/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  225. package/.next/server/app/api/v1/audio/voices/route.js +1 -1
  226. package/.next/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  227. package/.next/server/app/api/v1/chat/completions/route.js +1 -1
  228. package/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  229. package/.next/server/app/api/v1/embeddings/route.js +1 -1
  230. package/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  231. package/.next/server/app/api/v1/images/generations/route.js +2 -2
  232. package/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  233. package/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  234. package/.next/server/app/api/v1/messages/route.js +1 -1
  235. package/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  236. package/.next/server/app/api/v1/models/[...model]/route.js +1 -1
  237. package/.next/server/app/api/v1/models/[...model]/route.js.nft.json +1 -1
  238. package/.next/server/app/api/v1/models/info/route.js +1 -1
  239. package/.next/server/app/api/v1/models/info/route.js.nft.json +1 -1
  240. package/.next/server/app/api/v1/models/route.js +1 -1
  241. package/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  242. package/.next/server/app/api/v1/responses/compact/route.js +1 -1
  243. package/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  244. package/.next/server/app/api/v1/responses/route.js +1 -1
  245. package/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  246. package/.next/server/app/api/v1/route.js +1 -1
  247. package/.next/server/app/api/v1/route.js.nft.json +1 -1
  248. package/.next/server/app/api/v1/search/route.js +1 -1
  249. package/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  250. package/.next/server/app/api/v1/systemone/route.js +1 -1
  251. package/.next/server/app/api/v1/systemone/route.js.nft.json +1 -1
  252. package/.next/server/app/api/v1/videos/[id]/route.js +1 -1
  253. package/.next/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  254. package/.next/server/app/api/v1/videos/edits/route.js +1 -1
  255. package/.next/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  256. package/.next/server/app/api/v1/videos/extensions/route.js +1 -1
  257. package/.next/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  258. package/.next/server/app/api/v1/videos/generations/route.js +1 -1
  259. package/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  260. package/.next/server/app/api/v1/web/fetch/route.js +1 -1
  261. package/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  262. package/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  263. package/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  264. package/.next/server/app/api/v1beta/models/route.js +1 -1
  265. package/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  266. package/.next/server/app/api/version/route.js +1 -1
  267. package/.next/server/app/api/version/shutdown/route.js +1 -1
  268. package/.next/server/app/api/version/update/route.js +1 -1
  269. package/.next/server/app/callback/page.js +1 -1
  270. package/.next/server/app/callback/page.js.nft.json +1 -1
  271. package/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  272. package/.next/server/app/callback.html +1 -1
  273. package/.next/server/app/callback.rsc +6 -6
  274. package/.next/server/app/callback.segments/_full.segment.rsc +6 -6
  275. package/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  276. package/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
  277. package/.next/server/app/dashboard/cli-tools.html +1 -1
  278. package/.next/server/app/dashboard/cli-tools.rsc +9 -9
  279. package/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
  280. package/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +9 -9
  281. package/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  282. package/.next/server/app/dashboard/combos.html +1 -1
  283. package/.next/server/app/dashboard/combos.rsc +8 -8
  284. package/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
  285. package/.next/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
  286. package/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  287. package/.next/server/app/dashboard/endpoint.html +1 -1
  288. package/.next/server/app/dashboard/endpoint.rsc +9 -9
  289. package/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
  290. package/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +9 -9
  291. package/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  292. package/.next/server/app/dashboard/media-providers/systemone.html +1 -1
  293. package/.next/server/app/dashboard/media-providers/systemone.rsc +8 -8
  294. package/.next/server/app/dashboard/media-providers/systemone.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/systemone/__PAGE__.segment.rsc +8 -8
  295. package/.next/server/app/dashboard/media-providers/systemone.segments/_full.segment.rsc +8 -8
  296. package/.next/server/app/dashboard/media-providers/systemone.segments/_tree.segment.rsc +2 -2
  297. package/.next/server/app/dashboard/profile.html +1 -1
  298. package/.next/server/app/dashboard/profile.rsc +8 -8
  299. package/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
  300. package/.next/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
  301. package/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  302. package/.next/server/app/dashboard/providers/new.html +1 -1
  303. package/.next/server/app/dashboard/providers/new.rsc +8 -8
  304. package/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
  305. package/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
  306. package/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  307. package/.next/server/app/dashboard/providers.html +1 -1
  308. package/.next/server/app/dashboard/providers.rsc +8 -8
  309. package/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
  310. package/.next/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
  311. package/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  312. package/.next/server/app/dashboard/proxy-pools.html +1 -1
  313. package/.next/server/app/dashboard/proxy-pools.rsc +8 -8
  314. package/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
  315. package/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
  316. package/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  317. package/.next/server/app/dashboard/pxpipe.html +1 -1
  318. package/.next/server/app/dashboard/pxpipe.rsc +7 -7
  319. package/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +7 -7
  320. package/.next/server/app/dashboard/pxpipe.segments/_full.segment.rsc +7 -7
  321. package/.next/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  322. package/.next/server/app/dashboard/quota.html +2 -2
  323. package/.next/server/app/dashboard/quota.rsc +9 -9
  324. package/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
  325. package/.next/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
  326. package/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  327. package/.next/server/app/dashboard/settings/pricing/page.js +1 -1
  328. package/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  329. package/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  330. package/.next/server/app/dashboard/settings/pricing.html +1 -1
  331. package/.next/server/app/dashboard/settings/pricing.rsc +6 -6
  332. package/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  333. package/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  334. package/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
  335. package/.next/server/app/dashboard/token-saver.html +1 -1
  336. package/.next/server/app/dashboard/token-saver.rsc +7 -7
  337. package/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +7 -7
  338. package/.next/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
  339. package/.next/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  340. package/.next/server/app/dashboard/usage.html +2 -2
  341. package/.next/server/app/dashboard/usage.rsc +8 -8
  342. package/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
  343. package/.next/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
  344. package/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  345. package/.next/server/app/dashboard.html +1 -1
  346. package/.next/server/app/dashboard.rsc +9 -9
  347. package/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
  348. package/.next/server/app/dashboard.segments/_full.segment.rsc +9 -9
  349. package/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  350. package/.next/server/app/index.html +1 -1
  351. package/.next/server/app/index.rsc +6 -6
  352. package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -6
  353. package/.next/server/app/index.segments/_full.segment.rsc +6 -6
  354. package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  355. package/.next/server/app/landing/page.js +1 -1
  356. package/.next/server/app/landing/page.js.nft.json +1 -1
  357. package/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  358. package/.next/server/app/landing.html +1 -1
  359. package/.next/server/app/landing.rsc +7 -7
  360. package/.next/server/app/landing.segments/_full.segment.rsc +7 -7
  361. package/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  362. package/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +7 -7
  363. package/.next/server/app/login/page.js +1 -1
  364. package/.next/server/app/login/page.js.nft.json +1 -1
  365. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  366. package/.next/server/app/login.html +1 -1
  367. package/.next/server/app/login.rsc +6 -6
  368. package/.next/server/app/login.segments/_full.segment.rsc +6 -6
  369. package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  370. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +6 -6
  371. package/.next/server/app/manifest.webmanifest/route.js +1 -1
  372. package/.next/server/app/page.js +1 -1
  373. package/.next/server/app/page.js.nft.json +1 -1
  374. package/.next/server/app/page_client-reference-manifest.js +1 -1
  375. package/.next/server/app-paths-manifest.json +4 -5
  376. package/.next/server/chunks/1018.js +1 -0
  377. package/.next/server/chunks/1412.js +1 -1
  378. package/.next/server/chunks/1564.js +1 -1
  379. package/.next/server/chunks/1649.js +1 -0
  380. package/.next/server/chunks/1751.js +1 -0
  381. package/.next/server/chunks/1842.js +1 -0
  382. package/.next/server/chunks/2143.js +1 -1
  383. package/.next/server/chunks/2282.js +11 -13
  384. package/.next/server/chunks/{2706.js → 2338.js} +1 -1
  385. package/.next/server/chunks/2339.js +1 -1
  386. package/.next/server/chunks/2355.js +1 -0
  387. package/.next/server/chunks/2531.js +1 -0
  388. package/.next/server/chunks/2801.js +1 -1
  389. package/.next/server/chunks/31.js +1 -0
  390. package/.next/server/chunks/3671.js +1 -0
  391. package/.next/server/chunks/4301.js +1 -1
  392. package/.next/server/chunks/4364.js +1 -1
  393. package/.next/server/chunks/4915.js +1 -1
  394. package/.next/server/chunks/537.js +5 -9
  395. package/.next/server/chunks/6343.js +6 -6
  396. package/.next/server/chunks/6617.js +9 -0
  397. package/.next/server/chunks/6823.js +1 -1
  398. package/.next/server/chunks/6971.js +1 -0
  399. package/.next/server/chunks/7019.js +2 -2
  400. package/.next/server/chunks/7156.js +1 -1
  401. package/.next/server/chunks/7314.js +1 -0
  402. package/.next/server/chunks/7337.js +1 -0
  403. package/.next/server/chunks/7459.js +3 -3
  404. package/.next/server/chunks/7591.js +1 -0
  405. package/.next/server/chunks/7904.js +1 -0
  406. package/.next/server/chunks/8567.js +1 -1
  407. package/.next/server/chunks/8923.js +1 -1
  408. package/.next/server/chunks/9287.js +1 -1
  409. package/.next/server/chunks/9429.js +1 -1
  410. package/.next/server/chunks/9603.js +1 -1
  411. package/.next/server/instrumentation.js +1 -1
  412. package/.next/server/instrumentation.js.nft.json +1 -1
  413. package/.next/server/middleware-build-manifest.js +1 -1
  414. package/.next/server/pages/404.html +1 -1
  415. package/.next/server/pages/500.html +1 -1
  416. package/.next/server/server-reference-manifest.js +1 -1
  417. package/.next/server/server-reference-manifest.json +1 -1
  418. package/.next/static/EsP8l_VAPRRfBiiJPJqQe/_buildManifest.js +1 -0
  419. package/.next/static/chunks/1278-77eb0511471e063a.js +1 -0
  420. package/.next/static/chunks/1660-c4c1cfa3cb7c9b2e.js +1 -0
  421. package/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-c913b130003c1672.js → page-dd70f2cee9c910a9.js} +3 -3
  422. package/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-361bb54d1d354b4c.js +1 -0
  423. package/.next/static/chunks/app/(dashboard)/dashboard/media-providers/systemone/[id]/{page-7340dad2b87640cf.js → page-a5e128afd334522f.js} +2 -2
  424. package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-a41e2c8e26eb5956.js +21 -0
  425. package/.next/static/chunks/app/(dashboard)/dashboard/providers/page-feb4f47de991b067.js +1 -0
  426. package/.next/static/chunks/app/(dashboard)/dashboard/quota/page-f718869c90907a6a.js +1 -0
  427. package/.next/static/chunks/app/_global-error/page-f46617319221a4f8.js +1 -0
  428. package/.next/static/chunks/app/api/auth/login/route-f46617319221a4f8.js +1 -0
  429. package/.next/static/chunks/app/api/auth/logout/route-f46617319221a4f8.js +1 -0
  430. package/.next/static/chunks/app/api/auth/oidc/callback/route-f46617319221a4f8.js +1 -0
  431. package/.next/static/chunks/app/api/auth/oidc/start/route-f46617319221a4f8.js +1 -0
  432. package/.next/static/chunks/app/api/auth/oidc/test/route-f46617319221a4f8.js +1 -0
  433. package/.next/static/chunks/app/api/auth/reset-password/route-f46617319221a4f8.js +1 -0
  434. package/.next/static/chunks/app/api/auth/saml/acs/route-f46617319221a4f8.js +1 -0
  435. package/.next/static/chunks/app/api/auth/saml/metadata/route-f46617319221a4f8.js +1 -0
  436. package/.next/static/chunks/app/api/auth/saml/start/route-f46617319221a4f8.js +1 -0
  437. package/.next/static/chunks/app/api/auth/saml/test/route-f46617319221a4f8.js +1 -0
  438. package/.next/static/chunks/app/api/auth/status/route-f46617319221a4f8.js +1 -0
  439. package/.next/static/chunks/app/api/changelog/route-f46617319221a4f8.js +1 -0
  440. package/.next/static/chunks/app/api/cli-tools/all-statuses/route-f46617319221a4f8.js +1 -0
  441. package/.next/static/chunks/app/api/cli-tools/claude-settings/route-f46617319221a4f8.js +1 -0
  442. package/.next/static/chunks/app/api/cli-tools/codex-settings/route-f46617319221a4f8.js +1 -0
  443. package/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f46617319221a4f8.js +1 -0
  444. package/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f46617319221a4f8.js +1 -0
  445. package/.next/static/chunks/app/api/cli-tools/cowork-settings/route-f46617319221a4f8.js +1 -0
  446. package/.next/static/chunks/app/api/cli-tools/dsh-settings/route-f46617319221a4f8.js +1 -0
  447. package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-f46617319221a4f8.js +1 -0
  448. package/.next/static/chunks/app/api/combos/[id]/route-f46617319221a4f8.js +1 -0
  449. package/.next/static/chunks/app/api/combos/route-f46617319221a4f8.js +1 -0
  450. package/.next/static/chunks/app/api/headroom/extras/route-f46617319221a4f8.js +1 -0
  451. package/.next/static/chunks/app/api/headroom/proxy/[...path]/route-f46617319221a4f8.js +1 -0
  452. package/.next/static/chunks/app/api/headroom/restart/route-f46617319221a4f8.js +1 -0
  453. package/.next/static/chunks/app/api/headroom/start/route-f46617319221a4f8.js +1 -0
  454. package/.next/static/chunks/app/api/headroom/status/route-f46617319221a4f8.js +1 -0
  455. package/.next/static/chunks/app/api/headroom/stop/route-f46617319221a4f8.js +1 -0
  456. package/.next/static/chunks/app/api/health/route-f46617319221a4f8.js +1 -0
  457. package/.next/static/chunks/app/api/init/route-f46617319221a4f8.js +1 -0
  458. package/.next/static/chunks/app/api/keys/[id]/route-f46617319221a4f8.js +1 -0
  459. package/.next/static/chunks/app/api/keys/route-f46617319221a4f8.js +1 -0
  460. package/.next/static/chunks/app/api/locale/route-f46617319221a4f8.js +1 -0
  461. package/.next/static/chunks/app/api/mcp/[plugin]/message/route-f46617319221a4f8.js +1 -0
  462. package/.next/static/chunks/app/api/mcp/[plugin]/sse/route-f46617319221a4f8.js +1 -0
  463. package/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f46617319221a4f8.js +1 -0
  464. package/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f46617319221a4f8.js +1 -0
  465. package/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-f46617319221a4f8.js +1 -0
  466. package/.next/static/chunks/app/api/media-providers/tts/voices/route-f46617319221a4f8.js +1 -0
  467. package/.next/static/chunks/app/api/models/alias/route-f46617319221a4f8.js +1 -0
  468. package/.next/static/chunks/app/api/models/availability/route-f46617319221a4f8.js +1 -0
  469. package/.next/static/chunks/app/api/models/catalog-sync/route-f46617319221a4f8.js +1 -0
  470. package/.next/static/chunks/app/api/models/custom/route-f46617319221a4f8.js +1 -0
  471. package/.next/static/chunks/app/api/models/disabled/route-f46617319221a4f8.js +1 -0
  472. package/.next/static/chunks/app/api/models/route-f46617319221a4f8.js +1 -0
  473. package/.next/static/chunks/app/api/models/test/route-f46617319221a4f8.js +1 -0
  474. package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-f46617319221a4f8.js +1 -0
  475. package/.next/static/chunks/app/api/oauth/codex/bulk-import/route-f46617319221a4f8.js +1 -0
  476. package/.next/static/chunks/app/api/oauth/codex/import-token/route-f46617319221a4f8.js +1 -0
  477. package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-f46617319221a4f8.js +1 -0
  478. package/.next/static/chunks/app/api/oauth/cursor/import/route-f46617319221a4f8.js +1 -0
  479. package/.next/static/chunks/app/api/oauth/gitlab/pat/route-f46617319221a4f8.js +1 -0
  480. package/.next/static/chunks/app/api/oauth/grok-cli/bulk-import/route-f46617319221a4f8.js +1 -0
  481. package/.next/static/chunks/app/api/oauth/iflow/cookie/route-f46617319221a4f8.js +1 -0
  482. package/.next/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-f46617319221a4f8.js +1 -0
  483. package/.next/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-f46617319221a4f8.js +1 -0
  484. package/.next/static/chunks/app/api/pricing/route-f46617319221a4f8.js +1 -0
  485. package/.next/static/chunks/app/api/provider-nodes/[id]/route-f46617319221a4f8.js +1 -0
  486. package/.next/static/chunks/app/api/provider-nodes/route-f46617319221a4f8.js +1 -0
  487. package/.next/static/chunks/app/api/provider-nodes/validate/route-f46617319221a4f8.js +1 -0
  488. package/.next/static/chunks/app/api/providers/[id]/models/route-f46617319221a4f8.js +1 -0
  489. package/.next/static/chunks/app/api/providers/[id]/route-f46617319221a4f8.js +1 -0
  490. package/.next/static/chunks/app/api/providers/[id]/test/route-f46617319221a4f8.js +1 -0
  491. package/.next/static/chunks/app/api/providers/[id]/test-models/route-f46617319221a4f8.js +1 -0
  492. package/.next/static/chunks/app/api/providers/client/route-f46617319221a4f8.js +1 -0
  493. package/.next/static/chunks/app/api/providers/kilo/free-models/route-f46617319221a4f8.js +1 -0
  494. package/.next/static/chunks/app/api/providers/route-f46617319221a4f8.js +1 -0
  495. package/.next/static/chunks/app/api/providers/suggested-models/route-f46617319221a4f8.js +1 -0
  496. package/.next/static/chunks/app/api/providers/test-batch/route-f46617319221a4f8.js +1 -0
  497. package/.next/static/chunks/app/api/providers/validate/route-f46617319221a4f8.js +1 -0
  498. package/.next/static/chunks/app/api/proxy-pools/[id]/route-f46617319221a4f8.js +1 -0
  499. package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-f46617319221a4f8.js +1 -0
  500. package/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f46617319221a4f8.js +1 -0
  501. package/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-f46617319221a4f8.js +1 -0
  502. package/.next/static/chunks/app/api/proxy-pools/route-f46617319221a4f8.js +1 -0
  503. package/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-f46617319221a4f8.js +1 -0
  504. package/.next/static/chunks/app/api/pxpipe/health/route-f46617319221a4f8.js +1 -0
  505. package/.next/static/chunks/app/api/pxpipe/install/route-f46617319221a4f8.js +1 -0
  506. package/.next/static/chunks/app/api/pxpipe/logs/route-f46617319221a4f8.js +1 -0
  507. package/.next/static/chunks/app/api/pxpipe/restart/route-f46617319221a4f8.js +1 -0
  508. package/.next/static/chunks/app/api/pxpipe/start/route-f46617319221a4f8.js +1 -0
  509. package/.next/static/chunks/app/api/pxpipe/stats/route-f46617319221a4f8.js +1 -0
  510. package/.next/static/chunks/app/api/pxpipe/status/route-f46617319221a4f8.js +1 -0
  511. package/.next/static/chunks/app/api/pxpipe/stop/route-f46617319221a4f8.js +1 -0
  512. package/.next/static/chunks/app/api/settings/database/route-f46617319221a4f8.js +1 -0
  513. package/.next/static/chunks/app/api/settings/proxy-test/route-f46617319221a4f8.js +1 -0
  514. package/.next/static/chunks/app/api/settings/require-login/route-f46617319221a4f8.js +1 -0
  515. package/.next/static/chunks/app/api/settings/route-f46617319221a4f8.js +1 -0
  516. package/.next/static/chunks/app/api/shutdown/route-f46617319221a4f8.js +1 -0
  517. package/.next/static/chunks/app/api/tags/route-f46617319221a4f8.js +1 -0
  518. package/.next/static/chunks/app/api/translator/console-logs/route-f46617319221a4f8.js +1 -0
  519. package/.next/static/chunks/app/api/translator/console-logs/stream/route-f46617319221a4f8.js +1 -0
  520. package/.next/static/chunks/app/api/translator/load/route-f46617319221a4f8.js +1 -0
  521. package/.next/static/chunks/app/api/translator/save/route-f46617319221a4f8.js +1 -0
  522. package/.next/static/chunks/app/api/translator/send/route-f46617319221a4f8.js +1 -0
  523. package/.next/static/chunks/app/api/translator/translate/route-f46617319221a4f8.js +1 -0
  524. package/.next/static/chunks/app/api/tunnel/disable/route-f46617319221a4f8.js +1 -0
  525. package/.next/static/chunks/app/api/tunnel/enable/route-f46617319221a4f8.js +1 -0
  526. package/.next/static/chunks/app/api/tunnel/status/route-f46617319221a4f8.js +1 -0
  527. package/.next/static/chunks/app/api/tunnel/tailscale-check/route-f46617319221a4f8.js +1 -0
  528. package/.next/static/chunks/app/api/tunnel/tailscale-disable/route-f46617319221a4f8.js +1 -0
  529. package/.next/static/chunks/app/api/tunnel/tailscale-enable/route-f46617319221a4f8.js +1 -0
  530. package/.next/static/chunks/app/api/tunnel/tailscale-install/route-f46617319221a4f8.js +1 -0
  531. package/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-f46617319221a4f8.js +1 -0
  532. package/.next/static/chunks/app/api/usage/[connectionId]/route-f46617319221a4f8.js +1 -0
  533. package/.next/static/chunks/app/api/usage/chart/route-f46617319221a4f8.js +1 -0
  534. package/.next/static/chunks/app/api/usage/health/route-f46617319221a4f8.js +1 -0
  535. package/.next/static/chunks/app/api/usage/history/route-f46617319221a4f8.js +1 -0
  536. package/.next/static/chunks/app/api/usage/logs/route-f46617319221a4f8.js +1 -0
  537. package/.next/static/chunks/app/api/usage/providers/route-f46617319221a4f8.js +1 -0
  538. package/.next/static/chunks/app/api/usage/request-details/route-f46617319221a4f8.js +1 -0
  539. package/.next/static/chunks/app/api/usage/request-logs/route-f46617319221a4f8.js +1 -0
  540. package/.next/static/chunks/app/api/usage/stats/route-f46617319221a4f8.js +1 -0
  541. package/.next/static/chunks/app/api/usage/stream/route-f46617319221a4f8.js +1 -0
  542. package/.next/static/chunks/app/api/v1/api/chat/route-f46617319221a4f8.js +1 -0
  543. package/.next/static/chunks/app/api/v1/audio/speech/route-f46617319221a4f8.js +1 -0
  544. package/.next/static/chunks/app/api/v1/audio/transcriptions/route-f46617319221a4f8.js +1 -0
  545. package/.next/static/chunks/app/api/v1/audio/voices/route-f46617319221a4f8.js +1 -0
  546. package/.next/static/chunks/app/api/v1/chat/completions/route-f46617319221a4f8.js +1 -0
  547. package/.next/static/chunks/app/api/v1/embeddings/route-f46617319221a4f8.js +1 -0
  548. package/.next/static/chunks/app/api/v1/images/generations/route-f46617319221a4f8.js +1 -0
  549. package/.next/static/chunks/app/api/v1/messages/count_tokens/route-f46617319221a4f8.js +1 -0
  550. package/.next/static/chunks/app/api/v1/messages/route-f46617319221a4f8.js +1 -0
  551. package/.next/static/chunks/app/api/v1/models/[...model]/route-f46617319221a4f8.js +1 -0
  552. package/.next/static/chunks/app/api/v1/models/info/route-f46617319221a4f8.js +1 -0
  553. package/.next/static/chunks/app/api/v1/models/route-f46617319221a4f8.js +1 -0
  554. package/.next/static/chunks/app/api/v1/responses/compact/route-f46617319221a4f8.js +1 -0
  555. package/.next/static/chunks/app/api/v1/responses/route-f46617319221a4f8.js +1 -0
  556. package/.next/static/chunks/app/api/v1/route-f46617319221a4f8.js +1 -0
  557. package/.next/static/chunks/app/api/v1/search/route-f46617319221a4f8.js +1 -0
  558. package/.next/static/chunks/app/api/v1/systemone/route-f46617319221a4f8.js +1 -0
  559. package/.next/static/chunks/app/api/v1/videos/[id]/route-f46617319221a4f8.js +1 -0
  560. package/.next/static/chunks/app/api/v1/videos/edits/route-f46617319221a4f8.js +1 -0
  561. package/.next/static/chunks/app/api/v1/videos/extensions/route-f46617319221a4f8.js +1 -0
  562. package/.next/static/chunks/app/api/v1/videos/generations/route-f46617319221a4f8.js +1 -0
  563. package/.next/static/chunks/app/api/v1/web/fetch/route-f46617319221a4f8.js +1 -0
  564. package/.next/static/chunks/app/api/v1beta/models/[...path]/route-f46617319221a4f8.js +1 -0
  565. package/.next/static/chunks/app/api/v1beta/models/route-f46617319221a4f8.js +1 -0
  566. package/.next/static/chunks/app/api/version/route-f46617319221a4f8.js +1 -0
  567. package/.next/static/chunks/app/api/version/shutdown/route-f46617319221a4f8.js +1 -0
  568. package/.next/static/chunks/app/api/version/update/route-f46617319221a4f8.js +1 -0
  569. package/.next/static/chunks/app/landing/{page-a76ba2642bd02bf5.js → page-1c5aa0e05b21c61a.js} +1 -1
  570. package/.next/static/chunks/app/manifest.webmanifest/route-f46617319221a4f8.js +1 -0
  571. package/.next/static/chunks/app/page-f46617319221a4f8.js +1 -0
  572. package/.next/static/chunks/next/dist/client/components/builtin/app-error-f46617319221a4f8.js +1 -0
  573. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-f46617319221a4f8.js +1 -0
  574. package/.next/static/chunks/next/dist/client/components/builtin/not-found-f46617319221a4f8.js +1 -0
  575. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-f46617319221a4f8.js +1 -0
  576. package/.next/static/css/e5f3812777d2d9e9.css +1 -0
  577. package/CHANGELOG.md +20 -0
  578. package/open-sse/AGENTS.md +1 -1
  579. package/open-sse/config/errorConfig.js +4 -0
  580. package/open-sse/config/opencodeErrors.js +59 -0
  581. package/open-sse/config/opencodeGo.js +34 -0
  582. package/open-sse/config/providerModels.js +13 -0
  583. package/open-sse/config/providers.js +0 -11
  584. package/open-sse/executors/base.js +4 -1
  585. package/open-sse/executors/index.js +0 -3
  586. package/open-sse/executors/opencode-go.js +28 -103
  587. package/open-sse/executors/opencode-zen.js +31 -105
  588. package/open-sse/executors/opencode.js +40 -106
  589. package/open-sse/executors/opencodeShared.js +146 -0
  590. package/open-sse/executors/zed.js +307 -70
  591. package/open-sse/handlers/chatCore/claudeMessageBody.js +357 -0
  592. package/open-sse/handlers/chatCore/nonStreamingHandler.js +36 -110
  593. package/open-sse/handlers/chatCore/sseToJsonHandler.js +147 -4
  594. package/open-sse/handlers/chatCore.js +48 -12
  595. package/open-sse/handlers/embeddingProviders/index.js +0 -1
  596. package/open-sse/handlers/imageProviders/index.js +0 -4
  597. package/open-sse/handlers/imageProviders/openai.js +1 -1
  598. package/open-sse/handlers/search/callers.js +0 -28
  599. package/open-sse/handlers/search/chatSearch.js +1 -57
  600. package/open-sse/handlers/search/normalizers.js +0 -49
  601. package/open-sse/handlers/sttCore.js +0 -17
  602. package/open-sse/handlers/ttsCore.js +1 -1
  603. package/open-sse/handlers/ttsProviders/genericFormats.js +0 -35
  604. package/open-sse/providers/registry/index.js +14 -53
  605. package/open-sse/providers/registry/opencode-go.js +15 -6
  606. package/open-sse/providers/registry/opencode-zen.js +25 -9
  607. package/open-sse/providers/registry/opencode.js +5 -3
  608. package/open-sse/services/accountFallback.js +1 -0
  609. package/open-sse/services/opencodeGoProbe.js +39 -0
  610. package/open-sse/services/usage/glm.js +6 -12
  611. package/open-sse/services/usage/misc.js +1 -92
  612. package/open-sse/services/usage/zed.js +18 -3
  613. package/open-sse/services/usage.js +2 -14
  614. package/open-sse/shared/zedAuth.js +53 -5
  615. package/open-sse/translator/concerns/classifier.js +70 -0
  616. package/open-sse/translator/concerns/thinkingUnified.js +18 -6
  617. package/open-sse/translator/formats/claude.js +47 -19
  618. package/open-sse/translator/request/claude-to-openai.js +20 -0
  619. package/open-sse/translator/request/openai-to-claude.js +11 -0
  620. package/open-sse/utils/error.js +37 -3
  621. package/open-sse/utils/opencodeErrors.js +63 -0
  622. package/open-sse/utils/opencodeFingerprint.js +122 -23
  623. package/open-sse/utils/opencodeFreeUsage.js +57 -12
  624. package/open-sse/utils/usageTracking.js +5 -3
  625. package/package.json +2 -2
  626. package/src/app/(dashboard)/dashboard/cli-tools/components/cards/ClaudeToolCard.tsx +12 -0
  627. package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.tsx +10 -0
  628. package/src/app/(dashboard)/dashboard/providers/[id]/ModelRow.tsx +14 -0
  629. package/src/app/(dashboard)/dashboard/providers/[id]/OpenCodeGoConnectionCard.tsx +113 -0
  630. package/src/app/(dashboard)/dashboard/providers/[id]/page.tsx +11 -2
  631. package/src/app/(dashboard)/dashboard/providers/components/ModelsCard.tsx +14 -5
  632. package/src/app/(dashboard)/dashboard/providers/page.tsx +33 -45
  633. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.ts +0 -33
  634. package/src/app/api/cli-tools/claude-settings/route.js +10 -0
  635. package/src/app/api/oauth/[provider]/[action]/route.js +2 -0
  636. package/src/app/api/providers/[id]/models/route.js +0 -3
  637. package/src/app/api/providers/[id]/test/testUtils.js +18 -103
  638. package/src/app/api/providers/validate/route.js +9 -37
  639. package/src/app/api/usage/[connectionId]/route.js +1 -1
  640. package/src/components/app-sidebar.tsx +1 -0
  641. package/src/lib/modelCatalog/sync.js +2 -4
  642. package/src/shared/components/EditConnectionModal.tsx +1 -1
  643. package/src/shared/constants/cliTools.js +9 -9
  644. package/src/shared/constants/models.ts +2 -0
  645. package/src/shared/constants/ttsProviders.ts +0 -21
  646. package/src/shared/utils/providerIcon.ts +0 -12
  647. package/src/sse/services/model.ts +2 -12
  648. package/.next/server/app/api/media-providers/tts/minimax/voices/route.js +0 -1
  649. package/.next/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +0 -1
  650. package/.next/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +0 -1
  651. package/.next/server/chunks/1011.js +0 -1
  652. package/.next/server/chunks/1194.js +0 -1
  653. package/.next/server/chunks/1289.js +0 -1
  654. package/.next/server/chunks/1633.js +0 -1
  655. package/.next/server/chunks/3425.js +0 -1
  656. package/.next/server/chunks/4129.js +0 -1
  657. package/.next/server/chunks/5496.js +0 -1
  658. package/.next/server/chunks/5761.js +0 -1
  659. package/.next/server/chunks/6056.js +0 -1
  660. package/.next/server/chunks/7816.js +0 -1
  661. package/.next/server/chunks/8940.js +0 -1
  662. package/.next/static/chunks/1278-1bef1ffb32ea7f41.js +0 -1
  663. package/.next/static/chunks/1660-25564899e7912146.js +0 -1
  664. package/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-58a29f3cb409597a.js +0 -1
  665. package/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-fab6f4b4cccc1a6f.js +0 -21
  666. package/.next/static/chunks/app/(dashboard)/dashboard/providers/page-9054f870a5e0f5c6.js +0 -1
  667. package/.next/static/chunks/app/(dashboard)/dashboard/quota/page-61780f0a2b494680.js +0 -1
  668. package/.next/static/chunks/app/_global-error/page-9a2a13ac6b89ba91.js +0 -1
  669. package/.next/static/chunks/app/api/auth/login/route-9a2a13ac6b89ba91.js +0 -1
  670. package/.next/static/chunks/app/api/auth/logout/route-9a2a13ac6b89ba91.js +0 -1
  671. package/.next/static/chunks/app/api/auth/oidc/callback/route-9a2a13ac6b89ba91.js +0 -1
  672. package/.next/static/chunks/app/api/auth/oidc/start/route-9a2a13ac6b89ba91.js +0 -1
  673. package/.next/static/chunks/app/api/auth/oidc/test/route-9a2a13ac6b89ba91.js +0 -1
  674. package/.next/static/chunks/app/api/auth/reset-password/route-9a2a13ac6b89ba91.js +0 -1
  675. package/.next/static/chunks/app/api/auth/saml/acs/route-9a2a13ac6b89ba91.js +0 -1
  676. package/.next/static/chunks/app/api/auth/saml/metadata/route-9a2a13ac6b89ba91.js +0 -1
  677. package/.next/static/chunks/app/api/auth/saml/start/route-9a2a13ac6b89ba91.js +0 -1
  678. package/.next/static/chunks/app/api/auth/saml/test/route-9a2a13ac6b89ba91.js +0 -1
  679. package/.next/static/chunks/app/api/auth/status/route-9a2a13ac6b89ba91.js +0 -1
  680. package/.next/static/chunks/app/api/changelog/route-9a2a13ac6b89ba91.js +0 -1
  681. package/.next/static/chunks/app/api/cli-tools/all-statuses/route-9a2a13ac6b89ba91.js +0 -1
  682. package/.next/static/chunks/app/api/cli-tools/claude-settings/route-9a2a13ac6b89ba91.js +0 -1
  683. package/.next/static/chunks/app/api/cli-tools/codex-settings/route-9a2a13ac6b89ba91.js +0 -1
  684. package/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-9a2a13ac6b89ba91.js +0 -1
  685. package/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-9a2a13ac6b89ba91.js +0 -1
  686. package/.next/static/chunks/app/api/cli-tools/cowork-settings/route-9a2a13ac6b89ba91.js +0 -1
  687. package/.next/static/chunks/app/api/cli-tools/dsh-settings/route-9a2a13ac6b89ba91.js +0 -1
  688. package/.next/static/chunks/app/api/cli-tools/opencode-settings/route-9a2a13ac6b89ba91.js +0 -1
  689. package/.next/static/chunks/app/api/combos/[id]/route-9a2a13ac6b89ba91.js +0 -1
  690. package/.next/static/chunks/app/api/combos/route-9a2a13ac6b89ba91.js +0 -1
  691. package/.next/static/chunks/app/api/headroom/extras/route-9a2a13ac6b89ba91.js +0 -1
  692. package/.next/static/chunks/app/api/headroom/proxy/[...path]/route-9a2a13ac6b89ba91.js +0 -1
  693. package/.next/static/chunks/app/api/headroom/restart/route-9a2a13ac6b89ba91.js +0 -1
  694. package/.next/static/chunks/app/api/headroom/start/route-9a2a13ac6b89ba91.js +0 -1
  695. package/.next/static/chunks/app/api/headroom/status/route-9a2a13ac6b89ba91.js +0 -1
  696. package/.next/static/chunks/app/api/headroom/stop/route-9a2a13ac6b89ba91.js +0 -1
  697. package/.next/static/chunks/app/api/health/route-9a2a13ac6b89ba91.js +0 -1
  698. package/.next/static/chunks/app/api/init/route-9a2a13ac6b89ba91.js +0 -1
  699. package/.next/static/chunks/app/api/keys/[id]/route-9a2a13ac6b89ba91.js +0 -1
  700. package/.next/static/chunks/app/api/keys/route-9a2a13ac6b89ba91.js +0 -1
  701. package/.next/static/chunks/app/api/locale/route-9a2a13ac6b89ba91.js +0 -1
  702. package/.next/static/chunks/app/api/mcp/[plugin]/message/route-9a2a13ac6b89ba91.js +0 -1
  703. package/.next/static/chunks/app/api/mcp/[plugin]/sse/route-9a2a13ac6b89ba91.js +0 -1
  704. package/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-9a2a13ac6b89ba91.js +0 -1
  705. package/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-9a2a13ac6b89ba91.js +0 -1
  706. package/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-9a2a13ac6b89ba91.js +0 -1
  707. package/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-9a2a13ac6b89ba91.js +0 -1
  708. package/.next/static/chunks/app/api/media-providers/tts/voices/route-9a2a13ac6b89ba91.js +0 -1
  709. package/.next/static/chunks/app/api/models/alias/route-9a2a13ac6b89ba91.js +0 -1
  710. package/.next/static/chunks/app/api/models/availability/route-9a2a13ac6b89ba91.js +0 -1
  711. package/.next/static/chunks/app/api/models/catalog-sync/route-9a2a13ac6b89ba91.js +0 -1
  712. package/.next/static/chunks/app/api/models/custom/route-9a2a13ac6b89ba91.js +0 -1
  713. package/.next/static/chunks/app/api/models/disabled/route-9a2a13ac6b89ba91.js +0 -1
  714. package/.next/static/chunks/app/api/models/route-9a2a13ac6b89ba91.js +0 -1
  715. package/.next/static/chunks/app/api/models/test/route-9a2a13ac6b89ba91.js +0 -1
  716. package/.next/static/chunks/app/api/oauth/[provider]/[action]/route-9a2a13ac6b89ba91.js +0 -1
  717. package/.next/static/chunks/app/api/oauth/codex/bulk-import/route-9a2a13ac6b89ba91.js +0 -1
  718. package/.next/static/chunks/app/api/oauth/codex/import-token/route-9a2a13ac6b89ba91.js +0 -1
  719. package/.next/static/chunks/app/api/oauth/cursor/auto-import/route-9a2a13ac6b89ba91.js +0 -1
  720. package/.next/static/chunks/app/api/oauth/cursor/import/route-9a2a13ac6b89ba91.js +0 -1
  721. package/.next/static/chunks/app/api/oauth/gitlab/pat/route-9a2a13ac6b89ba91.js +0 -1
  722. package/.next/static/chunks/app/api/oauth/grok-cli/bulk-import/route-9a2a13ac6b89ba91.js +0 -1
  723. package/.next/static/chunks/app/api/oauth/iflow/cookie/route-9a2a13ac6b89ba91.js +0 -1
  724. package/.next/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-9a2a13ac6b89ba91.js +0 -1
  725. package/.next/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-9a2a13ac6b89ba91.js +0 -1
  726. package/.next/static/chunks/app/api/pricing/route-9a2a13ac6b89ba91.js +0 -1
  727. package/.next/static/chunks/app/api/provider-nodes/[id]/route-9a2a13ac6b89ba91.js +0 -1
  728. package/.next/static/chunks/app/api/provider-nodes/route-9a2a13ac6b89ba91.js +0 -1
  729. package/.next/static/chunks/app/api/provider-nodes/validate/route-9a2a13ac6b89ba91.js +0 -1
  730. package/.next/static/chunks/app/api/providers/[id]/models/route-9a2a13ac6b89ba91.js +0 -1
  731. package/.next/static/chunks/app/api/providers/[id]/route-9a2a13ac6b89ba91.js +0 -1
  732. package/.next/static/chunks/app/api/providers/[id]/test/route-9a2a13ac6b89ba91.js +0 -1
  733. package/.next/static/chunks/app/api/providers/[id]/test-models/route-9a2a13ac6b89ba91.js +0 -1
  734. package/.next/static/chunks/app/api/providers/client/route-9a2a13ac6b89ba91.js +0 -1
  735. package/.next/static/chunks/app/api/providers/kilo/free-models/route-9a2a13ac6b89ba91.js +0 -1
  736. package/.next/static/chunks/app/api/providers/route-9a2a13ac6b89ba91.js +0 -1
  737. package/.next/static/chunks/app/api/providers/suggested-models/route-9a2a13ac6b89ba91.js +0 -1
  738. package/.next/static/chunks/app/api/providers/test-batch/route-9a2a13ac6b89ba91.js +0 -1
  739. package/.next/static/chunks/app/api/providers/validate/route-9a2a13ac6b89ba91.js +0 -1
  740. package/.next/static/chunks/app/api/proxy-pools/[id]/route-9a2a13ac6b89ba91.js +0 -1
  741. package/.next/static/chunks/app/api/proxy-pools/[id]/test/route-9a2a13ac6b89ba91.js +0 -1
  742. package/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-9a2a13ac6b89ba91.js +0 -1
  743. package/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-9a2a13ac6b89ba91.js +0 -1
  744. package/.next/static/chunks/app/api/proxy-pools/route-9a2a13ac6b89ba91.js +0 -1
  745. package/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-9a2a13ac6b89ba91.js +0 -1
  746. package/.next/static/chunks/app/api/pxpipe/health/route-9a2a13ac6b89ba91.js +0 -1
  747. package/.next/static/chunks/app/api/pxpipe/install/route-9a2a13ac6b89ba91.js +0 -1
  748. package/.next/static/chunks/app/api/pxpipe/logs/route-9a2a13ac6b89ba91.js +0 -1
  749. package/.next/static/chunks/app/api/pxpipe/restart/route-9a2a13ac6b89ba91.js +0 -1
  750. package/.next/static/chunks/app/api/pxpipe/start/route-9a2a13ac6b89ba91.js +0 -1
  751. package/.next/static/chunks/app/api/pxpipe/stats/route-9a2a13ac6b89ba91.js +0 -1
  752. package/.next/static/chunks/app/api/pxpipe/status/route-9a2a13ac6b89ba91.js +0 -1
  753. package/.next/static/chunks/app/api/pxpipe/stop/route-9a2a13ac6b89ba91.js +0 -1
  754. package/.next/static/chunks/app/api/settings/database/route-9a2a13ac6b89ba91.js +0 -1
  755. package/.next/static/chunks/app/api/settings/proxy-test/route-9a2a13ac6b89ba91.js +0 -1
  756. package/.next/static/chunks/app/api/settings/require-login/route-9a2a13ac6b89ba91.js +0 -1
  757. package/.next/static/chunks/app/api/settings/route-9a2a13ac6b89ba91.js +0 -1
  758. package/.next/static/chunks/app/api/shutdown/route-9a2a13ac6b89ba91.js +0 -1
  759. package/.next/static/chunks/app/api/tags/route-9a2a13ac6b89ba91.js +0 -1
  760. package/.next/static/chunks/app/api/translator/console-logs/route-9a2a13ac6b89ba91.js +0 -1
  761. package/.next/static/chunks/app/api/translator/console-logs/stream/route-9a2a13ac6b89ba91.js +0 -1
  762. package/.next/static/chunks/app/api/translator/load/route-9a2a13ac6b89ba91.js +0 -1
  763. package/.next/static/chunks/app/api/translator/save/route-9a2a13ac6b89ba91.js +0 -1
  764. package/.next/static/chunks/app/api/translator/send/route-9a2a13ac6b89ba91.js +0 -1
  765. package/.next/static/chunks/app/api/translator/translate/route-9a2a13ac6b89ba91.js +0 -1
  766. package/.next/static/chunks/app/api/tunnel/disable/route-9a2a13ac6b89ba91.js +0 -1
  767. package/.next/static/chunks/app/api/tunnel/enable/route-9a2a13ac6b89ba91.js +0 -1
  768. package/.next/static/chunks/app/api/tunnel/status/route-9a2a13ac6b89ba91.js +0 -1
  769. package/.next/static/chunks/app/api/tunnel/tailscale-check/route-9a2a13ac6b89ba91.js +0 -1
  770. package/.next/static/chunks/app/api/tunnel/tailscale-disable/route-9a2a13ac6b89ba91.js +0 -1
  771. package/.next/static/chunks/app/api/tunnel/tailscale-enable/route-9a2a13ac6b89ba91.js +0 -1
  772. package/.next/static/chunks/app/api/tunnel/tailscale-install/route-9a2a13ac6b89ba91.js +0 -1
  773. package/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-9a2a13ac6b89ba91.js +0 -1
  774. package/.next/static/chunks/app/api/usage/[connectionId]/route-9a2a13ac6b89ba91.js +0 -1
  775. package/.next/static/chunks/app/api/usage/chart/route-9a2a13ac6b89ba91.js +0 -1
  776. package/.next/static/chunks/app/api/usage/health/route-9a2a13ac6b89ba91.js +0 -1
  777. package/.next/static/chunks/app/api/usage/history/route-9a2a13ac6b89ba91.js +0 -1
  778. package/.next/static/chunks/app/api/usage/logs/route-9a2a13ac6b89ba91.js +0 -1
  779. package/.next/static/chunks/app/api/usage/providers/route-9a2a13ac6b89ba91.js +0 -1
  780. package/.next/static/chunks/app/api/usage/request-details/route-9a2a13ac6b89ba91.js +0 -1
  781. package/.next/static/chunks/app/api/usage/request-logs/route-9a2a13ac6b89ba91.js +0 -1
  782. package/.next/static/chunks/app/api/usage/stats/route-9a2a13ac6b89ba91.js +0 -1
  783. package/.next/static/chunks/app/api/usage/stream/route-9a2a13ac6b89ba91.js +0 -1
  784. package/.next/static/chunks/app/api/v1/api/chat/route-9a2a13ac6b89ba91.js +0 -1
  785. package/.next/static/chunks/app/api/v1/audio/speech/route-9a2a13ac6b89ba91.js +0 -1
  786. package/.next/static/chunks/app/api/v1/audio/transcriptions/route-9a2a13ac6b89ba91.js +0 -1
  787. package/.next/static/chunks/app/api/v1/audio/voices/route-9a2a13ac6b89ba91.js +0 -1
  788. package/.next/static/chunks/app/api/v1/chat/completions/route-9a2a13ac6b89ba91.js +0 -1
  789. package/.next/static/chunks/app/api/v1/embeddings/route-9a2a13ac6b89ba91.js +0 -1
  790. package/.next/static/chunks/app/api/v1/images/generations/route-9a2a13ac6b89ba91.js +0 -1
  791. package/.next/static/chunks/app/api/v1/messages/count_tokens/route-9a2a13ac6b89ba91.js +0 -1
  792. package/.next/static/chunks/app/api/v1/messages/route-9a2a13ac6b89ba91.js +0 -1
  793. package/.next/static/chunks/app/api/v1/models/[...model]/route-9a2a13ac6b89ba91.js +0 -1
  794. package/.next/static/chunks/app/api/v1/models/info/route-9a2a13ac6b89ba91.js +0 -1
  795. package/.next/static/chunks/app/api/v1/models/route-9a2a13ac6b89ba91.js +0 -1
  796. package/.next/static/chunks/app/api/v1/responses/compact/route-9a2a13ac6b89ba91.js +0 -1
  797. package/.next/static/chunks/app/api/v1/responses/route-9a2a13ac6b89ba91.js +0 -1
  798. package/.next/static/chunks/app/api/v1/route-9a2a13ac6b89ba91.js +0 -1
  799. package/.next/static/chunks/app/api/v1/search/route-9a2a13ac6b89ba91.js +0 -1
  800. package/.next/static/chunks/app/api/v1/systemone/route-9a2a13ac6b89ba91.js +0 -1
  801. package/.next/static/chunks/app/api/v1/videos/[id]/route-9a2a13ac6b89ba91.js +0 -1
  802. package/.next/static/chunks/app/api/v1/videos/edits/route-9a2a13ac6b89ba91.js +0 -1
  803. package/.next/static/chunks/app/api/v1/videos/extensions/route-9a2a13ac6b89ba91.js +0 -1
  804. package/.next/static/chunks/app/api/v1/videos/generations/route-9a2a13ac6b89ba91.js +0 -1
  805. package/.next/static/chunks/app/api/v1/web/fetch/route-9a2a13ac6b89ba91.js +0 -1
  806. package/.next/static/chunks/app/api/v1beta/models/[...path]/route-9a2a13ac6b89ba91.js +0 -1
  807. package/.next/static/chunks/app/api/v1beta/models/route-9a2a13ac6b89ba91.js +0 -1
  808. package/.next/static/chunks/app/api/version/route-9a2a13ac6b89ba91.js +0 -1
  809. package/.next/static/chunks/app/api/version/shutdown/route-9a2a13ac6b89ba91.js +0 -1
  810. package/.next/static/chunks/app/api/version/update/route-9a2a13ac6b89ba91.js +0 -1
  811. package/.next/static/chunks/app/manifest.webmanifest/route-9a2a13ac6b89ba91.js +0 -1
  812. package/.next/static/chunks/app/page-9a2a13ac6b89ba91.js +0 -1
  813. package/.next/static/chunks/next/dist/client/components/builtin/app-error-9a2a13ac6b89ba91.js +0 -1
  814. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-9a2a13ac6b89ba91.js +0 -1
  815. package/.next/static/chunks/next/dist/client/components/builtin/not-found-9a2a13ac6b89ba91.js +0 -1
  816. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9a2a13ac6b89ba91.js +0 -1
  817. package/.next/static/css/efaf98e3b295f727.css +0 -1
  818. package/.next/static/wBARQPScPhD6SLn7WQvI9/_buildManifest.js +0 -1
  819. package/open-sse/executors/xiaomi-tokenplan.js +0 -20
  820. package/open-sse/handlers/imageProviders/huggingface.js +0 -23
  821. package/open-sse/handlers/ttsProviders/minimax.js +0 -63
  822. package/open-sse/providers/registry/fish-audio.js +0 -31
  823. package/open-sse/providers/registry/glm-cn.js +0 -39
  824. package/open-sse/providers/registry/groq.js +0 -62
  825. package/open-sse/providers/registry/huggingface.js +0 -40
  826. package/open-sse/providers/registry/minimax-cn.js +0 -82
  827. package/open-sse/providers/registry/minimax.js +0 -94
  828. package/open-sse/providers/registry/siliconflow.js +0 -39
  829. package/open-sse/providers/registry/vercel-ai-gateway.js +0 -42
  830. package/open-sse/providers/registry/xiaomi-tokenplan.js +0 -66
  831. package/open-sse/providers/registry/xquik.js +0 -31
  832. package/open-sse/services/usage/groq.js +0 -133
  833. package/open-sse/services/usage/minimax.js +0 -297
  834. package/public/providers/fish-audio.png +0 -0
  835. package/public/providers/glm-cn.png +0 -0
  836. package/public/providers/groq.png +0 -0
  837. package/public/providers/huggingface.png +0 -0
  838. package/public/providers/minimax-cn.png +0 -0
  839. package/public/providers/minimax.png +0 -0
  840. package/public/providers/siliconflow.png +0 -0
  841. package/public/providers/vercel-ai-gateway.png +0 -0
  842. package/public/providers/vercel.png +0 -0
  843. package/public/providers/xiaomi-tokenplan.png +0 -0
  844. package/public/providers/xquik.png +0 -0
  845. package/src/app/api/media-providers/tts/minimax/voices/route.js +0 -126
  846. /package/.next/static/{wBARQPScPhD6SLn7WQvI9 → EsP8l_VAPRRfBiiJPJqQe}/_ssgManifest.js +0 -0
@@ -4,56 +4,17 @@ import p1 from "./claude.js";
4
4
  import p2 from "./codex.js";
5
5
  import p3 from "./cursor.js";
6
6
  import p4 from "./deepseek.js";
7
- import p5 from "./fish-audio.js";
8
- import p6 from "./gemini.js";
9
- import p7 from "./glm-cn.js";
10
- import p8 from "./glm.js";
11
- import p9 from "./groq.js";
12
- import p10 from "./huggingface.js";
13
- import p11 from "./iflow.js";
14
- import p12 from "./minimax-cn.js";
15
- import p13 from "./minimax.js";
16
- import p14 from "./openai.js";
17
- import p15 from "./opencode-go.js";
18
- import p16 from "./opencode.js";
19
- import p17 from "./openrouter.js";
20
- import p18 from "./siliconflow.js";
21
- import p19 from "./vercel-ai-gateway.js";
22
- import p20 from "./xai.js";
23
- import p21 from "./xquik.js";
24
- import p22 from "./xiaomi-mimo.js";
25
- import p23 from "./xiaomi-tokenplan.js";
26
- import p24 from "./zed.js";
27
- import p25 from "./mimo-free.js";
28
- import p26 from "./opencode-zen.js";
29
- import p27 from "./qoder.js";
30
- export default [
31
- p0,
32
- p1,
33
- p2,
34
- p3,
35
- p4,
36
- p5,
37
- p6,
38
- p7,
39
- p8,
40
- p9,
41
- p10,
42
- p11,
43
- p12,
44
- p13,
45
- p14,
46
- p15,
47
- p16,
48
- p17,
49
- p18,
50
- p19,
51
- p20,
52
- p21,
53
- p22,
54
- p23,
55
- p24,
56
- p25,
57
- p26,
58
- p27,
59
- ];
7
+ import p5 from "./gemini.js";
8
+ import p6 from "./glm.js";
9
+ import p7 from "./iflow.js";
10
+ import p8 from "./openai.js";
11
+ import p9 from "./opencode-go.js";
12
+ import p10 from "./opencode.js";
13
+ import p11 from "./openrouter.js";
14
+ import p12 from "./xai.js";
15
+ import p13 from "./xiaomi-mimo.js";
16
+ import p14 from "./zed.js";
17
+ import p15 from "./mimo-free.js";
18
+ import p16 from "./opencode-zen.js";
19
+ import p17 from "./qoder.js";
20
+ export default [p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17];
@@ -17,7 +17,7 @@ export default {
17
17
  },
18
18
  category: "apikey",
19
19
  transport: {
20
- baseUrl: "https://opencode.ai/inference/go/v1/chat/completions",
20
+ baseUrl: "https://opencode.ai/inference/go/openai/v1/chat/completions",
21
21
  headers: {},
22
22
  usage: {
23
23
  url: "https://opencode.ai/inference/go/v1/usage",
@@ -29,7 +29,7 @@ export default {
29
29
  transports: [
30
30
  {
31
31
  format: "openai",
32
- baseUrl: "https://opencode.ai/inference/go/v1/chat/completions",
32
+ baseUrl: "https://opencode.ai/inference/go/openai/v1/chat/completions",
33
33
  auth: { combined: true, header: "Authorization", scheme: "bearer" },
34
34
  // OpenAI dialect only: the gateway rejects `thinking`/`enable_thinking`
35
35
  // (400 unknown field "thinking"), so normalize reasoning to reasoning_effort.
@@ -37,12 +37,12 @@ export default {
37
37
  },
38
38
  {
39
39
  format: "claude",
40
- baseUrl: "https://opencode.ai/inference/go/v1/messages",
40
+ baseUrl: "https://opencode.ai/inference/go/anthropic/v1/messages",
41
41
  auth: { combined: true, header: "x-api-key", scheme: "raw", anthropicVersion: true },
42
42
  },
43
43
  {
44
44
  format: "openai-responses",
45
- baseUrl: "https://opencode.ai/inference/go/v1/responses",
45
+ baseUrl: "https://opencode.ai/inference/go/openai/v1/responses",
46
46
  auth: { combined: true, header: "Authorization", scheme: "bearer" },
47
47
  thinkingFormat: "openai",
48
48
  },
@@ -57,6 +57,7 @@ export default {
57
57
  { id: "kimi-k2.7-code", name: "Kimi K2.7 Code", supportedFormats: ["openai"] },
58
58
  { id: "kimi-k2.6", name: "Kimi K2.6", supportedFormats: ["openai"] },
59
59
  { id: "kimi-k3", name: "Kimi K3", supportedFormats: ["openai"] },
60
+ { id: "kimi-k3.1-pro", name: "Kimi K3.1 Pro", supportedFormats: ["openai"] },
60
61
  {
61
62
  id: "deepseek-v4-pro",
62
63
  name: "DeepSeek V4 Pro",
@@ -78,19 +79,27 @@ export default {
78
79
  { id: "mimo-v2.5", name: "MiMo V2.5", supportedFormats: ["openai"] },
79
80
  { id: "mimo-v2.5-pro", name: "MiMo V2.5 Pro", supportedFormats: ["openai"] },
80
81
  { id: "minimax-m3", name: "MiniMax M3", supportedFormats: ["openai", "claude"] },
82
+ { id: "minimax-m3.1-flash", name: "MiniMax M3.1 Flash", supportedFormats: ["openai"] },
81
83
  { id: "minimax-m2.7", name: "MiniMax M2.7", supportedFormats: ["openai", "claude"] },
84
+ { id: "claude-haiku-5-5", name: "Claude Haiku 5.5", supportedFormats: ["claude"] },
82
85
  { id: "qwen3.8-max", name: "Qwen 3.8 Max", supportedFormats: ["openai", "claude"] },
83
86
  { id: "qwen3.8-flash", name: "Qwen 3.8 Flash", supportedFormats: ["openai", "claude"] },
84
87
  { id: "qwen3.7-plus", name: "Qwen 3.7 Plus", supportedFormats: ["openai", "claude"] },
85
88
  { id: "hy4-preview", name: "Hy4 Preview", supportedFormats: ["openai"] },
86
89
  { id: "hy3", name: "Hy3", supportedFormats: ["openai"] },
87
- { id: "space-bunny-free", name: "Space Bunny Free", supportedFormats: ["openai"] },
90
+ {
91
+ id: "space-bunny-free",
92
+ name: "Space Bunny Free",
93
+ supportedFormats: ["openai"],
94
+ tier: "free",
95
+ },
88
96
  {
89
97
  id: "longcat-2.5-preview-free",
90
98
  name: "LongCat 2.5 Preview Free",
91
99
  supportedFormats: ["openai"],
100
+ tier: "free",
92
101
  },
93
- // Served by /inference/go/v1/responses only — the responses-only entry forces chatCore
102
+ // Served by /inference/go/openai/v1/responses only — the responses-only entry forces chatCore
94
103
  // past the sourceFormat-matched transports into translation (see chatCore guard).
95
104
  {
96
105
  id: "grok-4.7",
@@ -19,9 +19,6 @@ export default {
19
19
  transport: {
20
20
  baseUrl: "https://opencode.ai/inference/openai/v1/chat/completions",
21
21
  headers: {},
22
- usage: {
23
- url: "https://opencode.ai/zen/v1/usage",
24
- },
25
22
  },
26
23
  // Multi-endpoint: pick the transport matching the client sourceFormat to skip
27
24
  // translation. Mirrors opencode-go, pointed at /inference (endpoint families per
@@ -254,19 +251,36 @@ export default {
254
251
  { id: "big-pickle", name: "Big Pickle", supportedFormats: ["openai"] },
255
252
  { id: "union-alpha", name: "Union Alpha", supportedFormats: ["claude"] },
256
253
  // Free tier on the keyed lane (chat completions)
257
- { id: "deepseek-v4-flash-free", name: "DeepSeek V4 Flash Free", supportedFormats: ["openai"] },
258
- { id: "mimo-v2.6-flash-free", name: "MiMo V2.6 Flash Free", supportedFormats: ["openai"] },
259
- { id: "mimo-v2.5-free", name: "MiMo V2.5 Free", supportedFormats: ["openai"] },
254
+ {
255
+ id: "deepseek-v4-flash-free",
256
+ name: "DeepSeek V4 Flash Free",
257
+ supportedFormats: ["openai"],
258
+ tier: "free",
259
+ },
260
+ {
261
+ id: "mimo-v2.6-flash-free",
262
+ name: "MiMo V2.6 Flash Free",
263
+ supportedFormats: ["openai"],
264
+ tier: "free",
265
+ },
266
+ { id: "mimo-v2.5-free", name: "MiMo V2.5 Free", supportedFormats: ["openai"], tier: "free" },
260
267
  {
261
268
  id: "ling-3.0-flash-fin-free",
262
269
  name: "Ling 3.0 Flash Fin Free",
263
270
  supportedFormats: ["openai"],
271
+ tier: "free",
272
+ },
273
+ {
274
+ id: "nemotron-3-ultra-free",
275
+ name: "Nemotron 3 Ultra Free",
276
+ supportedFormats: ["openai"],
277
+ tier: "free",
264
278
  },
265
- { id: "nemotron-3-ultra-free", name: "Nemotron 3 Ultra Free", supportedFormats: ["openai"] },
266
279
  {
267
280
  id: "nemotron-3.5-lightning-free",
268
281
  name: "Nemotron 3.5 Lightning Free",
269
282
  supportedFormats: ["openai"],
283
+ tier: "free",
270
284
  },
271
285
  // Free tier on the keyed lane (responses)
272
286
  {
@@ -274,20 +288,22 @@ export default {
274
288
  name: "Muse Spark 1.3 Contributor Free",
275
289
  targetFormat: "openai-responses",
276
290
  supportedFormats: ["openai-responses"],
291
+ tier: "free",
277
292
  },
278
293
  {
279
294
  id: "muse-spark-1.2-contributor-free",
280
295
  name: "Muse Spark 1.2 Contributor Free",
281
296
  targetFormat: "openai-responses",
282
297
  supportedFormats: ["openai-responses"],
298
+ tier: "free",
283
299
  },
284
300
  // System One (Jev) decision models on the native /systemone endpoint
285
301
  { id: "jev-1.13", name: "Jev 1.13", kind: "systemone" },
286
- { id: "jev-1.13-free", name: "Jev 1.13 Free", kind: "systemone" },
302
+ { id: "jev-1.13-free", name: "Jev 1.13 Free", kind: "systemone", tier: "free" },
287
303
  ],
288
304
  serviceKinds: ["llm", "systemone"],
289
305
  systemoneConfig: {
290
- baseUrl: "https://opencode.ai/inference/v1/systemone",
306
+ baseUrl: "https://opencode.ai/inference/systemone/v1/systemone",
291
307
  headers: {
292
308
  "x-opencode-client": "cli",
293
309
  "User-Agent": "opencode/latest/2.0.26/cli",
@@ -35,18 +35,20 @@ export default {
35
35
  id: "muse-spark-1.2-contributor-free",
36
36
  name: "Muse Spark 1.2 Contributor Free",
37
37
  targetFormat: "openai-responses",
38
+ tier: "free",
38
39
  },
39
40
  {
40
41
  id: "muse-spark-1.3-contributor-free",
41
42
  name: "Muse Spark 1.3 Contributor Free",
42
43
  targetFormat: "openai-responses",
44
+ tier: "free",
43
45
  },
44
- { id: "union-alpha", name: "Union Alpha Free", targetFormat: "claude" },
45
- { id: "jev-1.13-free", name: "Jev 1.13 Free", kind: "systemone" },
46
+ { id: "union-alpha", name: "Union Alpha Free", targetFormat: "claude", tier: "free" },
47
+ { id: "jev-1.13-free", name: "Jev 1.13 Free", kind: "systemone", tier: "free" },
46
48
  ],
47
49
  serviceKinds: ["llm", "systemone"],
48
50
  systemoneConfig: {
49
- baseUrl: "https://opencode.ai/inference/v1/systemone",
51
+ baseUrl: "https://opencode.ai/inference/systemone/v1/systemone",
50
52
  headers: {
51
53
  "x-opencode-client": "cli",
52
54
  "User-Agent": "opencode/latest/2.0.26/cli",
@@ -28,6 +28,7 @@ export function checkFallbackError(status, errorText, backoffLevel = 0) {
28
28
  for (const rule of ERROR_RULES) {
29
29
  // Text-based rule: match substring in error message
30
30
  if (rule.text && lowerError && lowerError.includes(rule.text)) {
31
+ if (rule.noFallback) return { shouldFallback: false, cooldownMs: 0 };
31
32
  if (rule.backoff) {
32
33
  const newLevel = Math.min(backoffLevel + 1, BACKOFF_CONFIG.maxLevel);
33
34
  return {
@@ -0,0 +1,39 @@
1
+ import { getProviderModels } from "../config/providerModels.js";
2
+ import { OPENCODE_GO_ENDPOINTS } from "../config/opencodeGo.js";
3
+ import { OpenCodeGoExecutor } from "../executors/opencode-go.js";
4
+ import { resolveTransport } from "./provider.js";
5
+
6
+ const OPENCODE_GO = "opencode-go";
7
+
8
+ // Connection probe for one OpenCode Go endpoint. The transport, URL, auth and the
9
+ // x-opencode-session header come from the executor, so the probe sends what real
10
+ // traffic sends. A hand-built request to /inference/go/* is rejected with MissingSessionID.
11
+ export function buildOpenCodeGoProbe(apiKey, format = "openai") {
12
+ const transport = resolveTransport(OPENCODE_GO, format);
13
+ const model = getProviderModels(OPENCODE_GO).find((m) =>
14
+ m.supportedFormats?.includes(format),
15
+ )?.id;
16
+ if (!transport || !model) throw new Error(`OpenCode Go has no ${format} endpoint`);
17
+
18
+ const executor = new OpenCodeGoExecutor();
19
+ const credentials = executor.prepareRequestCredentials({
20
+ credentials: { apiKey, runtimeTransport: transport },
21
+ });
22
+ const url = executor.buildUrl(model, false, 0, credentials);
23
+
24
+ return {
25
+ url,
26
+ headers: executor.buildHeaders(credentials, false, url, model),
27
+ body: JSON.stringify({
28
+ model,
29
+ messages: [{ role: "user", content: "ping" }],
30
+ max_tokens: 1,
31
+ stream: false,
32
+ }),
33
+ };
34
+ }
35
+
36
+ // One probe per endpoint in OPENCODE_GO_ENDPOINTS.
37
+ export function buildOpenCodeGoProbes(apiKey) {
38
+ return OPENCODE_GO_ENDPOINTS.map(({ format }) => buildOpenCodeGoProbe(apiKey, format));
39
+ }
@@ -1,31 +1,25 @@
1
1
  /**
2
- * GLM Coding Plan usage (international + China regions)
2
+ * GLM Coding Plan usage
3
3
  */
4
4
 
5
5
  import { proxyAwareFetch } from "../../utils/proxyFetch.js";
6
6
  import { U } from "./shared.js";
7
7
 
8
- // GLM quota endpoints (region-aware) — url from registry transport.usage
9
- const GLM_QUOTA_URLS = {
10
- international: U("glm").url,
11
- china: U("glm-cn").url,
12
- };
8
+ // GLM quota endpoint — url from registry transport.usage
9
+ const GLM_QUOTA_URL = U("glm").url;
13
10
 
14
11
  /**
15
- * GLM Coding Plan usage (international + China regions)
12
+ * GLM Coding Plan usage
16
13
  * Supports both TOKENS_LIMIT and CREDIT_LIMIT and dynamic intervals (e.g. session 5h, weekly 7d).
17
14
  */
18
- export async function getGlmUsage(apiKey, provider, proxyOptions = null) {
15
+ export async function getGlmUsage(apiKey, proxyOptions = null) {
19
16
  if (!apiKey) {
20
17
  return { message: "GLM API key not available." };
21
18
  }
22
19
 
23
- const region = provider === "glm-cn" ? "china" : "international";
24
- const quotaUrl = GLM_QUOTA_URLS[region];
25
-
26
20
  try {
27
21
  const response = await proxyAwareFetch(
28
- quotaUrl,
22
+ GLM_QUOTA_URL,
29
23
  {
30
24
  headers: {
31
25
  Authorization: `Bearer ${apiKey}`,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Misc usage handlers (iFlow, Ollama, GLM, Vercel AI Gateway, Qoder)
2
+ * Misc usage handlers (iFlow, Ollama, GLM, Qoder)
3
3
  */
4
4
 
5
5
  import { proxyAwareFetch } from "../../utils/proxyFetch.js";
@@ -7,10 +7,6 @@ import { U } from "./shared.js";
7
7
 
8
8
  export { getGlmUsage } from "./glm.js";
9
9
 
10
- // Vercel AI Gateway credits endpoint
11
- // Returns { balance: "95.50", total_used: "4.50" } (USD as decimal strings).
12
- const VERCEL_AI_GATEWAY_CREDITS_URL = U("vercel-ai-gateway").url;
13
-
14
10
  /**
15
11
  * iFlow Usage
16
12
  */
@@ -124,93 +120,6 @@ export async function getOllamaUsage(apiKey, providerSpecificData, proxyOptions
124
120
  }
125
121
  }
126
122
 
127
- /**
128
- * Vercel AI Gateway usage — credit balance for the API key
129
- *
130
- * Calls GET /v1/credits which returns:
131
- * { "balance": "95.50", "total_used": "4.50" } (USD as decimal strings)
132
- *
133
- * We surface this as a single "Balance ($)" quota row so the existing
134
- * QuotaTable / progress-bar UI can render it. used = total_used,
135
- * total = balance + total_used (the original credit allotment), so the
136
- * remaining percentage equals balance / total.
137
- *
138
- * Docs: https://vercel.com/docs/ai-gateway/usage
139
- */
140
- export async function getVercelAiGatewayUsage(apiKey, proxyOptions = null) {
141
- if (!apiKey) {
142
- return { message: "Vercel AI Gateway API key not available." };
143
- }
144
-
145
- try {
146
- const response = await proxyAwareFetch(
147
- VERCEL_AI_GATEWAY_CREDITS_URL,
148
- {
149
- method: "GET",
150
- headers: {
151
- Authorization: `Bearer ${apiKey}`,
152
- Accept: "application/json",
153
- },
154
- },
155
- proxyOptions,
156
- );
157
-
158
- if (response.status === 401 || response.status === 403) {
159
- return { message: "Vercel AI Gateway API key invalid or expired." };
160
- }
161
-
162
- if (!response.ok) {
163
- const errorText = await response.text().catch(() => "");
164
- const trimmed = errorText ? `: ${errorText.slice(0, 200)}` : "";
165
- return { message: `Vercel AI Gateway credits API error (${response.status})${trimmed}` };
166
- }
167
-
168
- const data = await response.json();
169
-
170
- // Vercel returns numeric strings; coerce safely.
171
- const balance = Number(data?.balance) || 0;
172
- const totalUsed = Number(data?.total_used) || 0;
173
-
174
- // Vercel gives $5/month free credit. The API doesn't return the
175
- // monthly allocation so we use the known constant as the denominator.
176
- const MONTHLY_CREDIT = 5;
177
- const remainingPercentage = (balance / MONTHLY_CREDIT) * 100;
178
-
179
- if (balance <= 0 && totalUsed <= 0) {
180
- return {
181
- plan: "Pay-as-you-go",
182
- message:
183
- "Vercel AI Gateway connected. No credit allocation found (BYOK or unfunded account).",
184
- quotas: {},
185
- };
186
- }
187
-
188
- // "Used (USD)": how much has been spent this month (no fixed cap → unlimited).
189
- // "Remaining (USD)": balance remaining out of the $5 monthly allocation.
190
- return {
191
- plan: "Pay-as-you-go",
192
- quotas: {
193
- "Used (USD)": {
194
- used: totalUsed,
195
- total: 0,
196
- remaining: 0,
197
- remainingPercentage: 100,
198
- unlimited: true,
199
- },
200
- "Remaining (USD)": {
201
- used: balance,
202
- total: MONTHLY_CREDIT,
203
- remaining: balance,
204
- remainingPercentage,
205
- unlimited: false,
206
- },
207
- },
208
- };
209
- } catch (error) {
210
- return { message: `Vercel AI Gateway error: ${error.message}` };
211
- }
212
- }
213
-
214
123
  export async function getQoderUsage(accessToken, proxyOptions = null) {
215
124
  if (!accessToken) {
216
125
  return { message: "Qoder usage unavailable: no access token" };
@@ -125,11 +125,24 @@ export function parseZedAuthenticatedUserUsage(userInfo) {
125
125
  const usage = plan.usage || {};
126
126
 
127
127
  const editPredictions = usage.edit_predictions || usage.editPredictions;
128
- if (editPredictions) {
128
+ // `{ limited: 0 }` is the token-billed shape, not a zero-cap quota. Emitting a
129
+ // 0%-remaining row here made the auth pre-filter skip the connection for the
130
+ // whole billing cycle even though nothing was exhausted.
131
+ const editPredictionsLimitInfo = editPredictions
132
+ ? parseZedUsageLimit(
133
+ editPredictions.limit != null
134
+ ? editPredictions.limit
135
+ : usageBucketLimit(editPredictions)?.limit,
136
+ )
137
+ : null;
138
+ const hasEditPredictionsQuota =
139
+ !!editPredictionsLimitInfo &&
140
+ (editPredictionsLimitInfo.unlimited || editPredictionsLimitInfo.total > 0);
141
+ if (hasEditPredictionsQuota) {
129
142
  quotas["Edit Predictions"] = makeZedQuotaRow(
130
143
  "Edit Predictions",
131
144
  editPredictions.used,
132
- editPredictions.limit,
145
+ editPredictions.limit ?? usageBucketLimit(editPredictions)?.limit,
133
146
  resetAt,
134
147
  );
135
148
  }
@@ -155,7 +168,9 @@ export function parseZedAuthenticatedUserUsage(userInfo) {
155
168
  isZedTokenBillingModelRequestsLimit(
156
169
  modelRequests.limit ?? usageBucketLimit(modelRequests)?.limit,
157
170
  )
158
- ? "Hosted AI models are billed per token (not request count). Edit Predictions are tracked below. Token spend is on dashboard.zed.dev."
171
+ ? hasEditPredictionsQuota
172
+ ? "Hosted AI models are billed per token (not request count). Edit Predictions are tracked below. Token spend is on dashboard.zed.dev."
173
+ : "Hosted AI models are billed per token (not request count). Token spend is on dashboard.zed.dev."
159
174
  : null;
160
175
 
161
176
  let planLabel = formatZedPlanLabel(planId);
@@ -12,23 +12,16 @@ import {
12
12
  } from "./usage/codex.js";
13
13
 
14
14
  export { consumeCodexRateLimitResetCredit, getCodexRateLimitResetCredits };
15
- import { getMiniMaxUsage } from "./usage/minimax.js";
16
15
  import { getCodeBuddyCnUsage, getCodeBuddyIntlUsage } from "./usage/codebuddy-cn.js";
17
16
  import { getGrokCliUsage } from "./usage/grok-cli.js";
18
17
  import { getDeepseekUsage } from "./usage/deepseek.js";
19
18
  import { getOpenCodeGoUsage } from "./usage/opencode-go.js";
20
- import { getGroqUsage } from "./usage/groq.js";
21
19
  import { getZedUsage } from "./usage/zed.js";
22
20
  import { getXiaomiMimoUsage } from "./usage/xiaomi-mimo.js";
23
21
  import { resolveQoderCredentials } from "./qoderModels.js";
24
22
  import { getGlmUsage } from "./usage/glm.js";
25
23
  import { getCommandCodeUsage } from "./usage/commandcode.js";
26
- import {
27
- getIflowUsage,
28
- getOllamaUsage,
29
- getVercelAiGatewayUsage,
30
- getQoderUsage,
31
- } from "./usage/misc.js";
24
+ import { getIflowUsage, getOllamaUsage, getQoderUsage } from "./usage/misc.js";
32
25
 
33
26
  /**
34
27
  * Get usage data for a provider connection
@@ -49,11 +42,7 @@ const USAGE_HANDLERS = {
49
42
  },
50
43
  iflow: (c) => getIflowUsage(c.accessToken),
51
44
  ollama: (c) => getOllamaUsage(c.apiKey, c.providerSpecificData, c.proxyOptions),
52
- glm: (c) => getGlmUsage(c.apiKey, c.provider, c.proxyOptions),
53
- "glm-cn": (c) => getGlmUsage(c.apiKey, c.provider, c.proxyOptions),
54
- minimax: (c) => getMiniMaxUsage(c.apiKey, c.provider, c.proxyOptions),
55
- "minimax-cn": (c) => getMiniMaxUsage(c.apiKey, c.provider, c.proxyOptions),
56
- "vercel-ai-gateway": (c) => getVercelAiGatewayUsage(c.apiKey, c.proxyOptions),
45
+ glm: (c) => getGlmUsage(c.apiKey, c.proxyOptions),
57
46
  "codebuddy-cn": (c) =>
58
47
  getCodeBuddyCnUsage(c.accessToken, c.apiKey, c.providerSpecificData, c.proxyOptions),
59
48
  "codebuddy-intl": (c) =>
@@ -61,7 +50,6 @@ const USAGE_HANDLERS = {
61
50
  "grok-cli": (c) => getGrokCliUsage(c.accessToken, c.providerSpecificData, c.proxyOptions),
62
51
  "opencode-go": (c) => getOpenCodeGoUsage(c.apiKey, c.proxyOptions),
63
52
  deepseek: (c) => getDeepseekUsage(c.apiKey, c.proxyOptions),
64
- groq: (c) => getGroqUsage(c.apiKey, c.proxyOptions),
65
53
  zed: (c) => getZedUsage(c.accessToken, c.providerSpecificData, c.proxyOptions),
66
54
  "xiaomi-mimo": (c) => getXiaomiMimoUsage(c.accessToken, c.providerSpecificData, c.proxyOptions),
67
55
  commandcode: (c) => getCommandCodeUsage(c.apiKey, c.proxyOptions),
@@ -11,7 +11,11 @@
11
11
 
12
12
  import crypto from "node:crypto";
13
13
  import { proxyAwareFetch } from "../utils/proxyFetch.js";
14
- import { DEFAULT_RETRY_CONFIG, resolveRetryEntry } from "../config/runtimeConfig.js";
14
+ import {
15
+ DEFAULT_RETRY_CONFIG,
16
+ FETCH_CONNECT_TIMEOUT_MS,
17
+ resolveRetryEntry,
18
+ } from "../config/runtimeConfig.js";
15
19
 
16
20
  export const ZED_WEB_BASE_URL = "https://zed.dev";
17
21
  export const ZED_CLOUD_BASE_URL = "https://cloud.zed.dev";
@@ -208,20 +212,61 @@ function isTransientNetError(error) {
208
212
  return /socket hang up|ECONNRESET|other side closed/i.test(String(error.message || ""));
209
213
  }
210
214
 
211
- async function zedFetchWithRetry(url, options, proxyOptions = null, statusKey = 502) {
215
+ // Abort an upstream call whose response headers never arrive. A hung socket
216
+ // otherwise blocks the request until the client gives up (Zed rides the same
217
+ // BaseExecutor pipeline, whose executors all bound the connect phase).
218
+ function withConnectTimeout(options, connectTimeoutMs) {
219
+ const { signal, ...rest } = options || {};
220
+ const timeoutCtrl = new AbortController();
221
+ const timer = setTimeout(
222
+ () => timeoutCtrl.abort(new Error("fetch connect timeout")),
223
+ connectTimeoutMs,
224
+ );
225
+ const merged = signal ? AbortSignal.any([signal, timeoutCtrl.signal]) : timeoutCtrl.signal;
226
+ return {
227
+ options: { ...rest, signal: merged },
228
+ clear: () => clearTimeout(timer),
229
+ timedOut: () => timeoutCtrl.signal.aborted,
230
+ };
231
+ }
232
+
233
+ async function zedFetchWithRetry(
234
+ url,
235
+ options,
236
+ proxyOptions = null,
237
+ { statusKey = 502, connectTimeoutMs = FETCH_CONNECT_TIMEOUT_MS } = {},
238
+ ) {
212
239
  const { attempts, delayMs } = resolveRetryEntry(DEFAULT_RETRY_CONFIG[statusKey]);
213
240
  for (let attempt = 0; ; attempt++) {
241
+ const attemptOptions = withConnectTimeout(options, connectTimeoutMs);
214
242
  try {
215
- return await proxyAwareFetch(url, options, proxyOptions);
243
+ return await proxyAwareFetch(url, attemptOptions.options, proxyOptions);
216
244
  } catch (error) {
245
+ // A connect timeout is an internal deadline, not a caller abort: treat it
246
+ // like a transient socket failure so the retry/fallback path can act.
247
+ if (attemptOptions.timedOut()) {
248
+ if (attempt >= attempts) {
249
+ throw new Error(`Zed request timed out after ${connectTimeoutMs}ms (no response)`);
250
+ }
251
+ await sleep(delayMs);
252
+ continue;
253
+ }
217
254
  if (!isTransientNetError(error) || attempt >= attempts) throw error;
218
255
  await sleep(delayMs);
256
+ } finally {
257
+ attemptOptions.clear();
219
258
  }
220
259
  }
221
260
  }
222
261
 
223
- async function fetchJson(url, options, proxyOptions = null) {
224
- const res = await zedFetchWithRetry(url, options, proxyOptions);
262
+ /** Only override the connect deadline when the caller set one (a bare
263
+ * `undefined` would reach setTimeout and fire immediately). */
264
+ function timeoutOption(connectTimeoutMs) {
265
+ return connectTimeoutMs == null ? {} : { connectTimeoutMs };
266
+ }
267
+
268
+ async function fetchJson(url, options, proxyOptions = null, timeouts = {}) {
269
+ const res = await zedFetchWithRetry(url, options, proxyOptions, timeouts);
225
270
  const text = await res.text();
226
271
  let data = null;
227
272
  if (text) {
@@ -259,6 +304,7 @@ export async function fetchZedAuthenticatedUser(credentials, options = {}) {
259
304
  signal: options.signal ?? undefined,
260
305
  },
261
306
  options.proxyOptions ?? null,
307
+ timeoutOption(options.connectTimeoutMs),
262
308
  );
263
309
  }
264
310
 
@@ -329,6 +375,7 @@ export async function fetchZedLlmToken(credentials, options = {}) {
329
375
  signal: options.signal ?? undefined,
330
376
  },
331
377
  options.proxyOptions ?? null,
378
+ timeoutOption(options.connectTimeoutMs),
332
379
  );
333
380
  const token =
334
381
  typeof data?.token === "string" ? data.token : data?.token?.[0] || data?.token?.value;
@@ -361,6 +408,7 @@ export async function zedLlmFetch(credentials, path, options = {}) {
361
408
  signal: options.signal ?? undefined,
362
409
  },
363
410
  options.proxyOptions ?? null,
411
+ { connectTimeoutMs: options.connectTimeoutMs },
364
412
  );
365
413
  };
366
414