n9router 0.4.43 → 0.4.45

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 (1378) hide show
  1. package/README.md +1 -1
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +23 -13
  4. package/app/.next/build-manifest.json +3 -3
  5. package/app/.next/prerender-manifest.json +27 -3
  6. package/app/.next/required-server-files.json +13 -1
  7. package/app/.next/routes-manifest.json +77 -0
  8. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  9. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  12. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  18. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  21. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  24. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +30 -30
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  33. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  36. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  39. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  42. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +10 -6
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  57. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  60. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  63. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page.js +2 -0
  66. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -0
  67. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -0
  68. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  69. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +3 -3
  72. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/_global-error/page.js +3 -3
  75. package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
  76. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/_global-error.html +1 -1
  78. package/app/.next/server/app/_global-error.rsc +1 -1
  79. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  80. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  81. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  82. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  83. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  84. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  85. package/app/.next/server/app/_not-found/page.js +2 -2
  86. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  87. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/_not-found.html +1 -1
  89. package/app/.next/server/app/_not-found.rsc +6 -6
  90. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +6 -6
  91. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  92. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +5 -5
  93. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  94. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  95. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +4 -4
  96. package/app/.next/server/app/api/antigravity-app/route.js +1 -1
  97. package/app/.next/server/app/api/antigravity-app/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/antigravity-app-v2/route.js +1 -1
  99. package/app/.next/server/app/api/antigravity-app-v2/route.js.nft.json +1 -1
  100. package/app/.next/server/app/api/antigravity-ide/route.js +1 -1
  101. package/app/.next/server/app/api/antigravity-ide/route.js.nft.json +1 -1
  102. package/app/.next/server/app/api/antigravity-targets/route.js +1 -1
  103. package/app/.next/server/app/api/antigravity-targets/route.js.nft.json +1 -1
  104. package/app/.next/server/app/api/antigravity-tools/import/route.js +1 -1
  105. package/app/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
  106. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
  107. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
  108. package/app/.next/server/app/api/auth/login/route.js +1 -1
  109. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  110. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  111. package/app/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  112. package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  113. package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/auth/oidc/start/route.js +1 -1
  115. package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/auth/oidc/test/route.js +1 -1
  117. package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/auth/reset-password/route.js +1 -0
  119. package/app/.next/server/app/api/auth/reset-password/route.js.nft.json +1 -0
  120. package/app/.next/server/app/api/auth/reset-password/route_client-reference-manifest.js +1 -0
  121. package/app/.next/server/app/api/auth/status/route.js +1 -1
  122. package/app/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +4 -4
  124. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  126. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  128. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  130. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  132. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  133. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  134. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  136. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  137. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  138. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  140. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  141. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  142. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  143. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  144. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  146. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  147. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  148. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  149. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  150. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  152. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  154. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  156. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  158. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/combos/route.js +1 -1
  160. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  161. package/app/.next/server/app/api/donate/route.js +1 -1
  162. package/app/.next/server/app/api/donate/route.js.nft.json +1 -1
  163. package/app/.next/server/app/api/headroom/start/route.js +1 -0
  164. package/app/.next/server/app/api/headroom/start/route.js.nft.json +1 -0
  165. package/app/.next/server/app/api/headroom/start/route_client-reference-manifest.js +1 -0
  166. package/app/.next/server/app/api/headroom/status/route.js +1 -0
  167. package/app/.next/server/app/api/headroom/status/route.js.nft.json +1 -0
  168. package/app/.next/server/app/api/headroom/status/route_client-reference-manifest.js +1 -0
  169. package/app/.next/server/app/api/headroom/stop/route.js +1 -0
  170. package/app/.next/server/app/api/headroom/stop/route.js.nft.json +1 -0
  171. package/app/.next/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -0
  172. package/app/.next/server/app/api/health/route.js +1 -1
  173. package/app/.next/server/app/api/health/route.js.nft.json +1 -1
  174. package/app/.next/server/app/api/init/route.js +1 -1
  175. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  176. package/app/.next/server/app/api/internal/account-health/route.js +1 -1
  177. package/app/.next/server/app/api/internal/account-health/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/internal/request-detail/route.js +1 -1
  179. package/app/.next/server/app/api/internal/request-detail/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/internal/usage/route.js +1 -1
  181. package/app/.next/server/app/api/internal/usage/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/keys/[id]/reset-usage/route.js +1 -1
  183. package/app/.next/server/app/api/keys/[id]/reset-usage/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  185. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/keys/[id]/usage/route.js +1 -1
  187. package/app/.next/server/app/api/keys/[id]/usage/route.js.nft.json +1 -1
  188. package/app/.next/server/app/api/keys/route.js +1 -1
  189. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/locale/route.js +1 -1
  191. package/app/.next/server/app/api/locale/route.js.nft.json +1 -1
  192. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +3 -3
  193. package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  194. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +6 -3
  195. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  196. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  197. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  198. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  199. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  200. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  201. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  202. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  203. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  204. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  205. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  206. package/app/.next/server/app/api/models/alias/route.js +1 -1
  207. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  208. package/app/.next/server/app/api/models/availability/route.js +1 -1
  209. package/app/.next/server/app/api/models/availability/route.js.nft.json +1 -1
  210. package/app/.next/server/app/api/models/custom/route.js +1 -1
  211. package/app/.next/server/app/api/models/custom/route.js.nft.json +1 -1
  212. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  213. package/app/.next/server/app/api/models/disabled/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/models/route.js +1 -1
  215. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  216. package/app/.next/server/app/api/models/test/route.js +1 -1
  217. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  218. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  219. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  220. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js +1 -0
  221. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -0
  222. package/app/.next/server/app/api/oauth/codex/bulk-import/route_client-reference-manifest.js +1 -0
  223. package/app/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
  224. package/app/.next/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  225. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  226. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  227. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  228. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  229. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  230. package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  231. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  232. package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  233. package/app/.next/server/app/api/oauth/kiro/api-key/route.js +1 -0
  234. package/app/.next/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -0
  235. package/app/.next/server/app/api/oauth/kiro/api-key/route_client-reference-manifest.js +1 -0
  236. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  237. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  239. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  240. package/app/.next/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -0
  241. package/app/.next/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -0
  242. package/app/.next/server/app/api/oauth/kiro/import-cli-proxy/route_client-reference-manifest.js +1 -0
  243. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  244. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  246. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/pricing/route.js +1 -1
  248. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  250. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  252. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  254. package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  256. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  258. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  259. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  260. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  262. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/providers/client/route.js +1 -1
  264. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  265. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  266. package/app/.next/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  267. package/app/.next/server/app/api/providers/route.js +1 -1
  268. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  269. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  270. package/app/.next/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  271. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  272. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  273. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  274. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  275. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  276. package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  277. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  278. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  279. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  280. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  281. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  282. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  283. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  284. package/app/.next/server/app/api/proxy-pools/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  286. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/settings/database/route.js +1 -1
  288. package/app/.next/server/app/api/settings/database/route.js.nft.json +1 -1
  289. package/app/.next/server/app/api/settings/database/selective/route.js +1 -0
  290. package/app/.next/server/app/api/settings/database/selective/route.js.nft.json +1 -0
  291. package/app/.next/server/app/api/settings/database/selective/route_client-reference-manifest.js +1 -0
  292. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  293. package/app/.next/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  294. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  295. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  296. package/app/.next/server/app/api/settings/route.js +1 -1
  297. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  298. package/app/.next/server/app/api/shutdown/route.js +1 -1
  299. package/app/.next/server/app/api/shutdown/route.js.nft.json +1 -1
  300. package/app/.next/server/app/api/tags/route.js +1 -1
  301. package/app/.next/server/app/api/tags/route.js.nft.json +1 -1
  302. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  303. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  304. package/app/.next/server/app/api/translator/console-logs/stream/route.js +4 -2
  305. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/translator/load/route.js +1 -1
  307. package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
  308. package/app/.next/server/app/api/translator/save/route.js +1 -1
  309. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  310. package/app/.next/server/app/api/translator/send/route.js +1 -1
  311. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  312. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  313. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  314. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  315. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  316. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  317. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  318. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  319. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  320. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  321. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  322. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  323. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  324. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  325. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  326. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  327. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  328. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -0
  329. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -0
  330. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route_client-reference-manifest.js +1 -0
  331. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  332. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  333. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  334. package/app/.next/server/app/api/usage/chart/route.js.nft.json +1 -1
  335. package/app/.next/server/app/api/usage/history/route.js +1 -1
  336. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  337. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  338. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  339. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  340. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  341. package/app/.next/server/app/api/usage/report/route.js +1 -1
  342. package/app/.next/server/app/api/usage/report/route.js.nft.json +1 -1
  343. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  344. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +1 -1
  345. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  346. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  347. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  348. package/app/.next/server/app/api/usage/stats/route.js.nft.json +1 -1
  349. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  350. package/app/.next/server/app/api/usage/stream/route.js.nft.json +1 -1
  351. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  352. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  353. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  354. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  355. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  356. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  357. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  358. package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  359. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  360. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  361. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  362. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  363. package/app/.next/server/app/api/v1/images/generations/route.js +2 -2
  364. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  365. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  366. package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  367. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  368. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  369. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  370. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  371. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  372. package/app/.next/server/app/api/v1/models/info/route.js.nft.json +1 -1
  373. package/app/.next/server/app/api/v1/models/route.js +1 -1
  374. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  375. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  376. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  377. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  378. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  379. package/app/.next/server/app/api/v1/route.js +1 -1
  380. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  381. package/app/.next/server/app/api/v1/search/route.js +1 -1
  382. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  383. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  384. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  385. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  386. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  387. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  388. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  389. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  390. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  391. package/app/.next/server/app/api/version/route.js +1 -1
  392. package/app/.next/server/app/api/version/route.js.nft.json +1 -1
  393. package/app/.next/server/app/api/version/shutdown/route.js +1 -1
  394. package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -1
  395. package/app/.next/server/app/api/version/update/route.js +1 -1
  396. package/app/.next/server/app/api/version/update/route.js.nft.json +1 -1
  397. package/app/.next/server/app/callback/page.js +2 -2
  398. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  399. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  400. package/app/.next/server/app/callback.html +1 -1
  401. package/app/.next/server/app/callback.rsc +7 -7
  402. package/app/.next/server/app/callback.segments/_full.segment.rsc +7 -7
  403. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  404. package/app/.next/server/app/callback.segments/_index.segment.rsc +5 -5
  405. package/app/.next/server/app/callback.segments/_tree.segment.rsc +4 -4
  406. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +2 -2
  407. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  408. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  409. package/app/.next/server/app/dashboard/basic-chat.rsc +8 -8
  410. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  411. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  412. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  413. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  414. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
  415. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  416. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +5 -5
  417. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +4 -4
  418. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  419. package/app/.next/server/app/dashboard/cli-tools.rsc +8 -8
  420. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  421. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  422. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  423. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  424. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
  425. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  426. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -5
  427. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +4 -4
  428. package/app/.next/server/app/dashboard/combos.html +1 -1
  429. package/app/.next/server/app/dashboard/combos.rsc +8 -8
  430. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  431. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  432. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  433. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  434. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
  435. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  436. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +5 -5
  437. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +4 -4
  438. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  439. package/app/.next/server/app/dashboard/endpoint.rsc +8 -8
  440. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  441. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  442. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  443. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  444. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  445. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  446. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -5
  447. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +4 -4
  448. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  449. package/app/.next/server/app/dashboard/media-providers/web.rsc +8 -8
  450. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  451. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  452. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  453. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  454. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  455. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
  456. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  457. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +5 -5
  458. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +4 -4
  459. package/app/.next/server/app/dashboard/mitm.html +1 -1
  460. package/app/.next/server/app/dashboard/mitm.rsc +8 -8
  461. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  462. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  463. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  464. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  465. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
  466. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  467. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +5 -5
  468. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +4 -4
  469. package/app/.next/server/app/dashboard/profile.html +1 -1
  470. package/app/.next/server/app/dashboard/profile.rsc +8 -8
  471. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  472. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  473. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  474. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  475. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
  476. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  477. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +5 -5
  478. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +4 -4
  479. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  480. package/app/.next/server/app/dashboard/providers/new.rsc +8 -8
  481. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  482. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  483. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  484. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  485. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  486. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
  487. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  488. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -5
  489. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +4 -4
  490. package/app/.next/server/app/dashboard/providers.html +1 -1
  491. package/app/.next/server/app/dashboard/providers.rsc +8 -8
  492. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  493. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  494. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  495. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  496. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
  497. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  498. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +5 -5
  499. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +4 -4
  500. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  501. package/app/.next/server/app/dashboard/proxy-pools.rsc +8 -8
  502. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  503. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  504. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  505. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  506. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
  507. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  508. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -5
  509. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +4 -4
  510. package/app/.next/server/app/dashboard/quota.html +2 -2
  511. package/app/.next/server/app/dashboard/quota.rsc +9 -9
  512. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  513. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  514. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  515. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  516. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
  517. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  518. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +5 -5
  519. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +4 -4
  520. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  521. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  522. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  523. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  524. package/app/.next/server/app/dashboard/settings/pricing.rsc +7 -7
  525. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +7 -7
  526. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  527. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -5
  528. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +4 -4
  529. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +2 -2
  530. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  531. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  532. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  533. package/app/.next/server/app/dashboard/skills.html +1 -1
  534. package/app/.next/server/app/dashboard/skills.rsc +8 -8
  535. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  536. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  537. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  538. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  539. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
  540. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  541. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +5 -5
  542. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +4 -4
  543. package/app/.next/server/app/dashboard/token-saver.html +1 -0
  544. package/app/.next/server/app/dashboard/token-saver.meta +17 -0
  545. package/app/.next/server/app/dashboard/token-saver.rsc +23 -0
  546. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +6 -0
  547. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +5 -0
  548. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +5 -0
  549. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +6 -0
  550. package/app/.next/server/app/dashboard/token-saver.segments/_full.segment.rsc +23 -0
  551. package/app/.next/server/app/dashboard/token-saver.segments/_head.segment.rsc +6 -0
  552. package/app/.next/server/app/dashboard/token-saver.segments/_index.segment.rsc +8 -0
  553. package/app/.next/server/app/dashboard/token-saver.segments/_tree.segment.rsc +5 -0
  554. package/app/.next/server/app/dashboard/translator.html +1 -1
  555. package/app/.next/server/app/dashboard/translator.rsc +8 -8
  556. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  557. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  558. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  559. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  560. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
  561. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  562. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +5 -5
  563. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +4 -4
  564. package/app/.next/server/app/dashboard/usage.html +1 -1
  565. package/app/.next/server/app/dashboard/usage.rsc +8 -8
  566. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  567. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  568. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  569. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  570. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
  571. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  572. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +5 -5
  573. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +4 -4
  574. package/app/.next/server/app/dashboard.html +1 -1
  575. package/app/.next/server/app/dashboard.rsc +8 -8
  576. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  577. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  578. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  579. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +8 -8
  580. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  581. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +5 -5
  582. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +4 -4
  583. package/app/.next/server/app/favicon.ico/route.js +1 -1
  584. package/app/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  585. package/app/.next/server/app/index.html +1 -1
  586. package/app/.next/server/app/index.rsc +6 -6
  587. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  588. package/app/.next/server/app/index.segments/_full.segment.rsc +6 -6
  589. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  590. package/app/.next/server/app/index.segments/_index.segment.rsc +5 -5
  591. package/app/.next/server/app/index.segments/_tree.segment.rsc +4 -4
  592. package/app/.next/server/app/landing/page.js +2 -2
  593. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  594. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  595. package/app/.next/server/app/landing.html +1 -1
  596. package/app/.next/server/app/landing.rsc +6 -6
  597. package/app/.next/server/app/landing.segments/_full.segment.rsc +6 -6
  598. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  599. package/app/.next/server/app/landing.segments/_index.segment.rsc +5 -5
  600. package/app/.next/server/app/landing.segments/_tree.segment.rsc +4 -4
  601. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  602. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  603. package/app/.next/server/app/login/page.js +2 -2
  604. package/app/.next/server/app/login/page.js.nft.json +1 -1
  605. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  606. package/app/.next/server/app/login.html +1 -1
  607. package/app/.next/server/app/login.rsc +7 -7
  608. package/app/.next/server/app/login.segments/_full.segment.rsc +7 -7
  609. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  610. package/app/.next/server/app/login.segments/_index.segment.rsc +5 -5
  611. package/app/.next/server/app/login.segments/_tree.segment.rsc +4 -4
  612. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  613. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  614. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  615. package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  616. package/app/.next/server/app/page.js +2 -2
  617. package/app/.next/server/app/page.js.nft.json +1 -1
  618. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  619. package/app/.next/server/app-paths-manifest.json +23 -13
  620. package/app/.next/server/chunks/1051.js +1 -1
  621. package/app/.next/server/chunks/1241.js +1 -0
  622. package/app/.next/server/chunks/1350.js +1 -0
  623. package/app/.next/server/chunks/1470.js +1 -0
  624. package/app/.next/server/chunks/1719.js +1 -0
  625. package/app/.next/server/chunks/2041.js +1 -0
  626. package/app/.next/server/chunks/220.js +1 -0
  627. package/app/.next/server/chunks/2701.js +10 -0
  628. package/app/.next/server/chunks/318.js +21 -44
  629. package/app/.next/server/chunks/3535.js +1 -0
  630. package/app/.next/server/chunks/{1531.js → 3546.js} +1 -1
  631. package/app/.next/server/chunks/365.js +1 -1
  632. package/app/.next/server/chunks/3955.js +1 -0
  633. package/app/.next/server/chunks/412.js +5 -5
  634. package/app/.next/server/chunks/4250.js +2 -2
  635. package/app/.next/server/chunks/4306.js +1 -0
  636. package/app/.next/server/chunks/4334.js +1 -1
  637. package/app/.next/server/chunks/4632.js +1 -0
  638. package/app/.next/server/chunks/4989.js +2 -2
  639. package/app/.next/server/chunks/5612.js +1 -0
  640. package/app/.next/server/chunks/5615.js +43 -0
  641. package/app/.next/server/chunks/5699.js +1 -0
  642. package/app/.next/server/chunks/5961.js +1 -0
  643. package/app/.next/server/chunks/5995.js +3 -3
  644. package/app/.next/server/chunks/6070.js +1 -0
  645. package/app/.next/server/chunks/6114.js +1 -0
  646. package/app/.next/server/chunks/615.js +1 -0
  647. package/app/.next/server/chunks/6182.js +6 -6
  648. package/app/.next/server/chunks/6292.js +1 -0
  649. package/app/.next/server/chunks/63.js +3 -3
  650. package/app/.next/server/chunks/6306.js +1 -0
  651. package/app/.next/server/chunks/6328.js +1 -0
  652. package/app/.next/server/chunks/6457.js +4 -4
  653. package/app/.next/server/chunks/{5433.js → 6630.js} +1 -1
  654. package/app/.next/server/chunks/6763.js +1 -0
  655. package/app/.next/server/chunks/6777.js +1 -0
  656. package/app/.next/server/chunks/7186.js +1 -0
  657. package/app/.next/server/chunks/7774.js +2 -2
  658. package/app/.next/server/chunks/7886.js +1 -0
  659. package/app/.next/server/chunks/7994.js +2 -2
  660. package/app/.next/server/chunks/8056.js +1 -0
  661. package/app/.next/server/chunks/8238.js +1 -0
  662. package/app/.next/server/chunks/8271.js +1 -0
  663. package/app/.next/server/chunks/8473.js +2 -2
  664. package/app/.next/server/chunks/8833.js +75 -0
  665. package/app/.next/server/chunks/8838.js +1 -0
  666. package/app/.next/server/chunks/8895.js +53 -5
  667. package/app/.next/server/chunks/8910.js +2 -0
  668. package/app/.next/server/chunks/8920.js +1 -0
  669. package/app/.next/server/chunks/9718.js +1 -1
  670. package/app/.next/server/middleware-build-manifest.js +1 -1
  671. package/app/.next/server/middleware.js +2 -2
  672. package/app/.next/server/next-font-manifest.js +1 -1
  673. package/app/.next/server/next-font-manifest.json +1 -1
  674. package/app/.next/server/pages/404.html +1 -1
  675. package/app/.next/server/pages/500.html +1 -1
  676. package/app/.next/server/server-reference-manifest.js +1 -1
  677. package/app/.next/server/server-reference-manifest.json +1 -1
  678. package/app/.next/static/T8rvyAbbOSQ8MIHxo1_4X/_buildManifest.js +1 -0
  679. package/app/.next/static/chunks/1321-691c34899090d436.js +1 -0
  680. package/app/.next/static/chunks/2589-89684df31938c4c7.js +3 -0
  681. package/app/.next/static/chunks/4406-7c91480ba4750afb.js +53 -0
  682. package/app/.next/static/chunks/5497-5cecb2d0cc54a0f8.js +7 -0
  683. package/app/.next/static/chunks/705-979ff3eb195b9023.js +1 -0
  684. package/app/.next/static/chunks/8198-78a2e809aa3deb41.js +1 -0
  685. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/{page-068dda6eab2b9c36.js → page-32d43003bf779725.js} +1 -1
  686. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-67d36bbaeb6af871.js → page-15778114f19494f8.js} +1 -1
  687. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-51957200aaa0e0f7.js → page-925d6a9314cf0c45.js} +1 -1
  688. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-4bb3df15dc91fcb2.js +1 -0
  689. package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-f60417f258999845.js +1 -0
  690. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-74bfeda48c347058.js +1 -0
  691. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-73b10fa11c40c00c.js +59 -0
  692. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/{page-af17247a74fa851d.js → page-0f5128a45c7624cc.js} +1 -1
  693. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/{page-2db8cc9e18677705.js → page-ff27d7416104ba6f.js} +2 -2
  694. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/web/{page-3dda3de79f6783b9.js → page-e95e43c710b79a65.js} +1 -1
  695. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-8cb9c569a7822a0a.js → page-7c06afe89ff9c503.js} +1 -1
  696. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-89ea8a0102dcfaa6.js +1 -0
  697. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-ddac36832067712f.js +1 -0
  698. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-658bcd33b491d685.js +10 -0
  699. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/{page-90c4c56b239fd343.js → page-01642ff508f9e4da.js} +1 -1
  700. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-cf238376512e0f73.js +1 -0
  701. package/app/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/{page-b9da35538f423062.js → page-5d746bc98c25d89d.js} +1 -1
  702. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-c38f42b5a56fb89a.js +1 -0
  703. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/{page-00d80332b8940cff.js → page-78cef8869d7870c1.js} +1 -1
  704. package/app/.next/static/chunks/app/(dashboard)/dashboard/token-saver/page-74ebd1e0d5566f44.js +1 -0
  705. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-216b24f865b63695.js → page-260de68ca87258e3.js} +1 -1
  706. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-40fda9a4c08e7bd5.js +3 -0
  707. package/app/.next/static/chunks/app/(dashboard)/layout-9e8819851f57b3cb.js +1 -0
  708. package/app/.next/static/chunks/app/_global-error/page-270635328efa0901.js +1 -0
  709. package/app/.next/static/chunks/app/api/antigravity-app/route-270635328efa0901.js +1 -0
  710. package/app/.next/static/chunks/app/api/antigravity-app-v2/route-270635328efa0901.js +1 -0
  711. package/app/.next/static/chunks/app/api/antigravity-ide/route-270635328efa0901.js +1 -0
  712. package/app/.next/static/chunks/app/api/antigravity-targets/route-270635328efa0901.js +1 -0
  713. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-270635328efa0901.js +1 -0
  714. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-270635328efa0901.js +1 -0
  715. package/app/.next/static/chunks/app/api/auth/login/route-270635328efa0901.js +1 -0
  716. package/app/.next/static/chunks/app/api/auth/logout/route-270635328efa0901.js +1 -0
  717. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-270635328efa0901.js +1 -0
  718. package/app/.next/static/chunks/app/api/auth/oidc/start/route-270635328efa0901.js +1 -0
  719. package/app/.next/static/chunks/app/api/auth/oidc/test/route-270635328efa0901.js +1 -0
  720. package/app/.next/static/chunks/app/api/auth/reset-password/route-270635328efa0901.js +1 -0
  721. package/app/.next/static/chunks/app/api/auth/status/route-270635328efa0901.js +1 -0
  722. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-270635328efa0901.js +1 -0
  723. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-270635328efa0901.js +1 -0
  724. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-270635328efa0901.js +1 -0
  725. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-270635328efa0901.js +1 -0
  726. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-270635328efa0901.js +1 -0
  727. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-270635328efa0901.js +1 -0
  728. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-270635328efa0901.js +1 -0
  729. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-270635328efa0901.js +1 -0
  730. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-270635328efa0901.js +1 -0
  731. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-270635328efa0901.js +1 -0
  732. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-270635328efa0901.js +1 -0
  733. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-270635328efa0901.js +1 -0
  734. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-270635328efa0901.js +1 -0
  735. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-270635328efa0901.js +1 -0
  736. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-270635328efa0901.js +1 -0
  737. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-270635328efa0901.js +1 -0
  738. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-270635328efa0901.js +1 -0
  739. package/app/.next/static/chunks/app/api/combos/[id]/route-270635328efa0901.js +1 -0
  740. package/app/.next/static/chunks/app/api/combos/route-270635328efa0901.js +1 -0
  741. package/app/.next/static/chunks/app/api/donate/route-270635328efa0901.js +1 -0
  742. package/app/.next/static/chunks/app/api/headroom/start/route-270635328efa0901.js +1 -0
  743. package/app/.next/static/chunks/app/api/headroom/status/route-270635328efa0901.js +1 -0
  744. package/app/.next/static/chunks/app/api/headroom/stop/route-270635328efa0901.js +1 -0
  745. package/app/.next/static/chunks/app/api/health/route-270635328efa0901.js +1 -0
  746. package/app/.next/static/chunks/app/api/init/route-270635328efa0901.js +1 -0
  747. package/app/.next/static/chunks/app/api/internal/account-health/route-270635328efa0901.js +1 -0
  748. package/app/.next/static/chunks/app/api/internal/request-detail/route-270635328efa0901.js +1 -0
  749. package/app/.next/static/chunks/app/api/internal/usage/route-270635328efa0901.js +1 -0
  750. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-270635328efa0901.js +1 -0
  751. package/app/.next/static/chunks/app/api/keys/[id]/route-270635328efa0901.js +1 -0
  752. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-270635328efa0901.js +1 -0
  753. package/app/.next/static/chunks/app/api/keys/route-270635328efa0901.js +1 -0
  754. package/app/.next/static/chunks/app/api/locale/route-270635328efa0901.js +1 -0
  755. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-270635328efa0901.js +1 -0
  756. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-270635328efa0901.js +1 -0
  757. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-270635328efa0901.js +1 -0
  758. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-270635328efa0901.js +1 -0
  759. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-270635328efa0901.js +1 -0
  760. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-270635328efa0901.js +1 -0
  761. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-270635328efa0901.js +1 -0
  762. package/app/.next/static/chunks/app/api/models/alias/route-270635328efa0901.js +1 -0
  763. package/app/.next/static/chunks/app/api/models/availability/route-270635328efa0901.js +1 -0
  764. package/app/.next/static/chunks/app/api/models/custom/route-270635328efa0901.js +1 -0
  765. package/app/.next/static/chunks/app/api/models/disabled/route-270635328efa0901.js +1 -0
  766. package/app/.next/static/chunks/app/api/models/route-270635328efa0901.js +1 -0
  767. package/app/.next/static/chunks/app/api/models/test/route-270635328efa0901.js +1 -0
  768. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-270635328efa0901.js +1 -0
  769. package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-270635328efa0901.js +1 -0
  770. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-270635328efa0901.js +1 -0
  771. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-270635328efa0901.js +1 -0
  772. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-270635328efa0901.js +1 -0
  773. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-270635328efa0901.js +1 -0
  774. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-270635328efa0901.js +1 -0
  775. package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-270635328efa0901.js +1 -0
  776. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-270635328efa0901.js +1 -0
  777. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-270635328efa0901.js +1 -0
  778. package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-270635328efa0901.js +1 -0
  779. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-270635328efa0901.js +1 -0
  780. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-270635328efa0901.js +1 -0
  781. package/app/.next/static/chunks/app/api/pricing/route-270635328efa0901.js +1 -0
  782. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-270635328efa0901.js +1 -0
  783. package/app/.next/static/chunks/app/api/provider-nodes/route-270635328efa0901.js +1 -0
  784. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-270635328efa0901.js +1 -0
  785. package/app/.next/static/chunks/app/api/providers/[id]/models/route-270635328efa0901.js +1 -0
  786. package/app/.next/static/chunks/app/api/providers/[id]/route-270635328efa0901.js +1 -0
  787. package/app/.next/static/chunks/app/api/providers/[id]/test/route-270635328efa0901.js +1 -0
  788. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-270635328efa0901.js +1 -0
  789. package/app/.next/static/chunks/app/api/providers/client/route-270635328efa0901.js +1 -0
  790. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-270635328efa0901.js +1 -0
  791. package/app/.next/static/chunks/app/api/providers/route-270635328efa0901.js +1 -0
  792. package/app/.next/static/chunks/app/api/providers/suggested-models/route-270635328efa0901.js +1 -0
  793. package/app/.next/static/chunks/app/api/providers/test-batch/route-270635328efa0901.js +1 -0
  794. package/app/.next/static/chunks/app/api/providers/validate/route-270635328efa0901.js +1 -0
  795. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-270635328efa0901.js +1 -0
  796. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-270635328efa0901.js +1 -0
  797. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-270635328efa0901.js +1 -0
  798. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-270635328efa0901.js +1 -0
  799. package/app/.next/static/chunks/app/api/proxy-pools/route-270635328efa0901.js +1 -0
  800. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-270635328efa0901.js +1 -0
  801. package/app/.next/static/chunks/app/api/settings/database/route-270635328efa0901.js +1 -0
  802. package/app/.next/static/chunks/app/api/settings/database/selective/route-270635328efa0901.js +1 -0
  803. package/app/.next/static/chunks/app/api/settings/proxy-test/route-270635328efa0901.js +1 -0
  804. package/app/.next/static/chunks/app/api/settings/require-login/route-270635328efa0901.js +1 -0
  805. package/app/.next/static/chunks/app/api/settings/route-270635328efa0901.js +1 -0
  806. package/app/.next/static/chunks/app/api/shutdown/route-270635328efa0901.js +1 -0
  807. package/app/.next/static/chunks/app/api/tags/route-270635328efa0901.js +1 -0
  808. package/app/.next/static/chunks/app/api/translator/console-logs/route-270635328efa0901.js +1 -0
  809. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-270635328efa0901.js +1 -0
  810. package/app/.next/static/chunks/app/api/translator/load/route-270635328efa0901.js +1 -0
  811. package/app/.next/static/chunks/app/api/translator/save/route-270635328efa0901.js +1 -0
  812. package/app/.next/static/chunks/app/api/translator/send/route-270635328efa0901.js +1 -0
  813. package/app/.next/static/chunks/app/api/translator/translate/route-270635328efa0901.js +1 -0
  814. package/app/.next/static/chunks/app/api/tunnel/disable/route-270635328efa0901.js +1 -0
  815. package/app/.next/static/chunks/app/api/tunnel/enable/route-270635328efa0901.js +1 -0
  816. package/app/.next/static/chunks/app/api/tunnel/status/route-270635328efa0901.js +1 -0
  817. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-270635328efa0901.js +1 -0
  818. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-270635328efa0901.js +1 -0
  819. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-270635328efa0901.js +1 -0
  820. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-270635328efa0901.js +1 -0
  821. package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-270635328efa0901.js +1 -0
  822. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-270635328efa0901.js +1 -0
  823. package/app/.next/static/chunks/app/api/usage/chart/route-270635328efa0901.js +1 -0
  824. package/app/.next/static/chunks/app/api/usage/history/route-270635328efa0901.js +1 -0
  825. package/app/.next/static/chunks/app/api/usage/logs/route-270635328efa0901.js +1 -0
  826. package/app/.next/static/chunks/app/api/usage/providers/route-270635328efa0901.js +1 -0
  827. package/app/.next/static/chunks/app/api/usage/report/route-270635328efa0901.js +1 -0
  828. package/app/.next/static/chunks/app/api/usage/request-details/route-270635328efa0901.js +1 -0
  829. package/app/.next/static/chunks/app/api/usage/request-logs/route-270635328efa0901.js +1 -0
  830. package/app/.next/static/chunks/app/api/usage/stats/route-270635328efa0901.js +1 -0
  831. package/app/.next/static/chunks/app/api/usage/stream/route-270635328efa0901.js +1 -0
  832. package/app/.next/static/chunks/app/api/v1/api/chat/route-270635328efa0901.js +1 -0
  833. package/app/.next/static/chunks/app/api/v1/audio/speech/route-270635328efa0901.js +1 -0
  834. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-270635328efa0901.js +1 -0
  835. package/app/.next/static/chunks/app/api/v1/audio/voices/route-270635328efa0901.js +1 -0
  836. package/app/.next/static/chunks/app/api/v1/chat/completions/route-270635328efa0901.js +1 -0
  837. package/app/.next/static/chunks/app/api/v1/embeddings/route-270635328efa0901.js +1 -0
  838. package/app/.next/static/chunks/app/api/v1/images/generations/route-270635328efa0901.js +1 -0
  839. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-270635328efa0901.js +1 -0
  840. package/app/.next/static/chunks/app/api/v1/messages/route-270635328efa0901.js +1 -0
  841. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-270635328efa0901.js +1 -0
  842. package/app/.next/static/chunks/app/api/v1/models/info/route-270635328efa0901.js +1 -0
  843. package/app/.next/static/chunks/app/api/v1/models/route-270635328efa0901.js +1 -0
  844. package/app/.next/static/chunks/app/api/v1/responses/compact/route-270635328efa0901.js +1 -0
  845. package/app/.next/static/chunks/app/api/v1/responses/route-270635328efa0901.js +1 -0
  846. package/app/.next/static/chunks/app/api/v1/route-270635328efa0901.js +1 -0
  847. package/app/.next/static/chunks/app/api/v1/search/route-270635328efa0901.js +1 -0
  848. package/app/.next/static/chunks/app/api/v1/web/fetch/route-270635328efa0901.js +1 -0
  849. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-270635328efa0901.js +1 -0
  850. package/app/.next/static/chunks/app/api/v1beta/models/route-270635328efa0901.js +1 -0
  851. package/app/.next/static/chunks/app/api/version/route-270635328efa0901.js +1 -0
  852. package/app/.next/static/chunks/app/api/version/shutdown/route-270635328efa0901.js +1 -0
  853. package/app/.next/static/chunks/app/api/version/update/route-270635328efa0901.js +1 -0
  854. package/app/.next/static/chunks/app/callback/page-b12814e445464090.js +1 -0
  855. package/app/.next/static/chunks/app/dashboard/settings/pricing/page-71c6f6edfe7b111f.js +1 -0
  856. package/app/.next/static/chunks/app/layout-c8d22221de81bd88.js +1 -0
  857. package/app/.next/static/chunks/app/login/page-1b46e625d19cb04a.js +1 -0
  858. package/app/.next/static/chunks/app/manifest.webmanifest/route-270635328efa0901.js +1 -0
  859. package/app/.next/static/chunks/app/page-270635328efa0901.js +1 -0
  860. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-270635328efa0901.js +1 -0
  861. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-270635328efa0901.js +1 -0
  862. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-270635328efa0901.js +1 -0
  863. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-270635328efa0901.js +1 -0
  864. package/app/.next/static/chunks/{webpack-c2bac8d80aa27536.js → webpack-3c02ff02ae0645c5.js} +1 -1
  865. package/app/.next/static/css/7eb3c00f858e3692.css +1 -0
  866. package/app/.next/static/css/aadc31e0cf060839.css +1 -0
  867. package/app/.next/static/media/6c596dfcddeca1e9-s.p.woff2 +0 -0
  868. package/app/open-sse/AGENTS.md +39 -0
  869. package/app/open-sse/config/appConstants.js +20 -41
  870. package/app/open-sse/config/kiroConstants.js +55 -40
  871. package/app/open-sse/config/mediaConfig.js +27 -0
  872. package/app/open-sse/config/providerModels.js +20 -845
  873. package/app/open-sse/config/providers.js +6 -444
  874. package/app/open-sse/config/runtimeConfig.js +18 -3
  875. package/app/open-sse/config/ttsModels.js +2 -0
  876. package/app/open-sse/executors/antigravity.js +211 -125
  877. package/app/open-sse/executors/base.js +24 -14
  878. package/app/open-sse/executors/codebuddy-cn.js +40 -0
  879. package/app/open-sse/executors/codex.js +34 -89
  880. package/app/open-sse/executors/commandcode.js +10 -4
  881. package/app/open-sse/executors/cursor.js +96 -203
  882. package/app/open-sse/executors/default.js +148 -133
  883. package/app/open-sse/executors/github.js +5 -39
  884. package/app/open-sse/executors/grok-web.js +5 -7
  885. package/app/open-sse/executors/index.js +13 -0
  886. package/app/open-sse/executors/kimchi.js +123 -0
  887. package/app/open-sse/executors/kiro.js +126 -25
  888. package/app/open-sse/executors/mimo-free.js +167 -0
  889. package/app/open-sse/executors/opencode-go.js +12 -4
  890. package/app/open-sse/executors/opencode.js +1 -1
  891. package/app/open-sse/executors/perplexity-web.js +5 -7
  892. package/app/open-sse/executors/qoder.js +24 -16
  893. package/app/open-sse/executors/vertex.js +53 -7
  894. package/app/open-sse/executors/xiaomi-tokenplan.js +20 -0
  895. package/app/open-sse/handlers/chatCore/nonStreamingHandler.js +97 -13
  896. package/app/open-sse/handlers/chatCore/requestDetail.js +6 -10
  897. package/app/open-sse/handlers/chatCore/sseToJsonHandler.js +8 -3
  898. package/app/open-sse/handlers/chatCore/streamingHandler.js +56 -15
  899. package/app/open-sse/handlers/chatCore.js +69 -9
  900. package/app/open-sse/handlers/embeddingProviders/index.js +1 -0
  901. package/app/open-sse/handlers/embeddingProviders/openai.js +8 -16
  902. package/app/open-sse/handlers/imageGenerationCore.js +66 -6
  903. package/app/open-sse/handlers/imageProviders/antigravity.js +73 -0
  904. package/app/open-sse/handlers/imageProviders/blackForestLabs.js +2 -1
  905. package/app/open-sse/handlers/imageProviders/cloudflareAi.js +2 -1
  906. package/app/open-sse/handlers/imageProviders/codex.js +4 -3
  907. package/app/open-sse/handlers/imageProviders/comfyui.js +5 -1
  908. package/app/open-sse/handlers/imageProviders/falAi.js +2 -1
  909. package/app/open-sse/handlers/imageProviders/gemini.js +2 -1
  910. package/app/open-sse/handlers/imageProviders/huggingface.js +2 -1
  911. package/app/open-sse/handlers/imageProviders/index.js +5 -0
  912. package/app/open-sse/handlers/imageProviders/nanobanana.js +4 -2
  913. package/app/open-sse/handlers/imageProviders/openai.js +15 -22
  914. package/app/open-sse/handlers/imageProviders/runwayml.js +2 -1
  915. package/app/open-sse/handlers/imageProviders/sdwebui.js +4 -1
  916. package/app/open-sse/handlers/imageProviders/stabilityAi.js +2 -1
  917. package/app/open-sse/handlers/responsesHandler.js +3 -7
  918. package/app/open-sse/handlers/search/chatSearch.js +13 -14
  919. package/app/open-sse/handlers/sttCore.js +2 -3
  920. package/app/open-sse/handlers/ttsProviders/gemini.js +14 -3
  921. package/app/open-sse/handlers/ttsProviders/index.js +4 -2
  922. package/app/open-sse/handlers/ttsProviders/openai.js +4 -1
  923. package/app/open-sse/handlers/ttsProviders/openrouter.js +7 -4
  924. package/app/open-sse/index.js +8 -3
  925. package/app/open-sse/providers/REGISTRY_TEMPLATE.js +98 -0
  926. package/app/open-sse/providers/capabilities.js +291 -0
  927. package/app/open-sse/providers/index.js +51 -0
  928. package/app/open-sse/providers/models/helpers.js +20 -0
  929. package/app/open-sse/providers/models/namePatterns.js +33 -0
  930. package/app/open-sse/providers/models/schema.js +31 -0
  931. package/app/{src/shared/constants → open-sse/providers}/pricing.js +10 -5
  932. package/app/open-sse/providers/registry/alicode-intl.js +30 -0
  933. package/app/open-sse/providers/registry/alicode.js +31 -0
  934. package/app/open-sse/providers/registry/anthropic.js +32 -0
  935. package/app/open-sse/providers/registry/antigravity.js +85 -0
  936. package/app/open-sse/providers/registry/assemblyai.js +38 -0
  937. package/app/open-sse/providers/registry/aws-polly.js +45 -0
  938. package/app/open-sse/providers/registry/azure.js +21 -0
  939. package/app/open-sse/providers/registry/black-forest-labs.js +32 -0
  940. package/app/open-sse/providers/registry/blackbox.js +41 -0
  941. package/app/open-sse/providers/registry/brave-search.js +35 -0
  942. package/app/open-sse/providers/registry/byteplus.js +35 -0
  943. package/app/open-sse/providers/registry/cartesia.js +36 -0
  944. package/app/open-sse/providers/registry/cerebras.js +31 -0
  945. package/app/open-sse/providers/registry/chutes.js +24 -0
  946. package/app/open-sse/providers/registry/claude.js +89 -0
  947. package/app/open-sse/providers/registry/cline.js +51 -0
  948. package/app/open-sse/providers/registry/clinepass.js +57 -0
  949. package/app/open-sse/providers/registry/cloudflare-ai.js +55 -0
  950. package/app/open-sse/providers/registry/codebuddy-cn.js +77 -0
  951. package/app/open-sse/providers/registry/codex.js +95 -0
  952. package/app/open-sse/providers/registry/cohere.js +25 -0
  953. package/app/open-sse/providers/registry/comfyui.js +20 -0
  954. package/app/open-sse/providers/registry/commandcode.js +43 -0
  955. package/app/open-sse/providers/registry/coqui.js +30 -0
  956. package/app/open-sse/providers/registry/cursor.js +58 -0
  957. package/app/open-sse/providers/registry/deepgram.js +33 -0
  958. package/app/open-sse/providers/registry/deepseek.js +51 -0
  959. package/app/open-sse/providers/registry/edge-tts.js +24 -0
  960. package/app/open-sse/providers/registry/elevenlabs.js +35 -0
  961. package/app/open-sse/providers/registry/exa.js +50 -0
  962. package/app/open-sse/providers/registry/fal-ai.js +34 -0
  963. package/app/open-sse/providers/registry/firecrawl.js +34 -0
  964. package/app/open-sse/providers/registry/fireworks.js +29 -0
  965. package/app/open-sse/providers/registry/gemini-cli.js +58 -0
  966. package/app/open-sse/providers/registry/gemini.js +81 -0
  967. package/app/open-sse/providers/registry/github.js +82 -0
  968. package/app/open-sse/providers/registry/gitlab.js +32 -0
  969. package/app/open-sse/providers/registry/glm-cn.js +35 -0
  970. package/app/open-sse/providers/registry/glm.js +58 -0
  971. package/app/open-sse/providers/registry/google-pse.js +35 -0
  972. package/app/open-sse/providers/registry/google-tts.js +24 -0
  973. package/app/open-sse/providers/registry/grok-web.js +39 -0
  974. package/app/open-sse/providers/registry/groq.js +37 -0
  975. package/app/open-sse/providers/registry/huggingface.js +34 -0
  976. package/app/open-sse/providers/registry/hyperbolic.js +35 -0
  977. package/app/open-sse/providers/registry/iflow.js +52 -0
  978. package/app/open-sse/providers/registry/index.js +198 -0
  979. package/app/open-sse/providers/registry/inworld.js +36 -0
  980. package/app/open-sse/providers/registry/jina-ai.js +42 -0
  981. package/app/open-sse/providers/registry/jina-reader.js +34 -0
  982. package/app/open-sse/providers/registry/kilocode.js +51 -0
  983. package/app/open-sse/providers/registry/kimchi.js +49 -0
  984. package/app/open-sse/providers/registry/kimi-coding.js +65 -0
  985. package/app/open-sse/providers/registry/kimi.js +56 -0
  986. package/app/open-sse/providers/registry/kiro.js +96 -0
  987. package/app/open-sse/providers/registry/linkup.js +34 -0
  988. package/app/open-sse/providers/registry/local-device.js +24 -0
  989. package/app/open-sse/providers/registry/mimo-free.js +24 -0
  990. package/app/open-sse/providers/registry/minimax-cn.js +76 -0
  991. package/app/open-sse/providers/registry/minimax.js +83 -0
  992. package/app/open-sse/providers/registry/mistral.js +31 -0
  993. package/app/open-sse/providers/registry/mmf.js +19 -0
  994. package/app/open-sse/providers/registry/nanobanana.js +35 -0
  995. package/app/open-sse/providers/registry/nebius.js +27 -0
  996. package/app/open-sse/providers/registry/nvidia.js +43 -0
  997. package/app/open-sse/providers/registry/ollama-local.js +19 -0
  998. package/app/open-sse/providers/registry/ollama.js +36 -0
  999. package/app/open-sse/providers/registry/openai.js +81 -0
  1000. package/app/open-sse/providers/registry/opencode-go.js +41 -0
  1001. package/app/open-sse/providers/registry/opencode.js +25 -0
  1002. package/app/open-sse/providers/registry/openrouter.js +60 -0
  1003. package/app/open-sse/providers/registry/perplexity-web.js +33 -0
  1004. package/app/open-sse/providers/registry/perplexity.js +35 -0
  1005. package/app/open-sse/providers/registry/playht.js +36 -0
  1006. package/app/open-sse/providers/registry/qoder.js +54 -0
  1007. package/app/open-sse/providers/registry/qwen.js +33 -0
  1008. package/app/open-sse/providers/registry/recraft.js +24 -0
  1009. package/app/open-sse/providers/registry/runwayml.js +30 -0
  1010. package/app/open-sse/providers/registry/sdwebui.js +20 -0
  1011. package/app/open-sse/providers/registry/searchapi.js +35 -0
  1012. package/app/open-sse/providers/registry/searxng.js +33 -0
  1013. package/app/open-sse/providers/registry/serper.js +35 -0
  1014. package/app/open-sse/providers/registry/siliconflow.js +39 -0
  1015. package/app/open-sse/providers/registry/stability-ai.js +31 -0
  1016. package/app/open-sse/providers/registry/tavily.js +50 -0
  1017. package/app/open-sse/providers/registry/together.js +31 -0
  1018. package/app/open-sse/providers/registry/topaz.js +19 -0
  1019. package/app/open-sse/providers/registry/tortoise.js +30 -0
  1020. package/app/open-sse/providers/registry/venice.js +56 -0
  1021. package/app/open-sse/providers/registry/vercel-ai-gateway.js +41 -0
  1022. package/app/open-sse/providers/registry/vertex-partner.js +29 -0
  1023. package/app/open-sse/providers/registry/vertex.js +32 -0
  1024. package/app/open-sse/providers/registry/volcengine-ark.js +35 -0
  1025. package/app/open-sse/providers/registry/voyage-ai.js +30 -0
  1026. package/app/open-sse/providers/registry/xai.js +43 -0
  1027. package/app/open-sse/providers/registry/xiaomi-mimo.js +46 -0
  1028. package/app/open-sse/providers/registry/xiaomi-tokenplan.js +63 -0
  1029. package/app/open-sse/providers/registry/youcom.js +35 -0
  1030. package/app/open-sse/providers/schema.js +76 -0
  1031. package/app/open-sse/providers/shared.js +67 -0
  1032. package/app/open-sse/rtk/caveman.js +2 -93
  1033. package/app/open-sse/rtk/cavemanPrompts.js +46 -3
  1034. package/app/open-sse/rtk/constants.js +6 -2
  1035. package/app/open-sse/rtk/filters/find.js +2 -3
  1036. package/app/open-sse/rtk/headroom.js +215 -0
  1037. package/app/open-sse/rtk/ponytail.js +9 -0
  1038. package/app/open-sse/rtk/ponytailPrompt.js +52 -0
  1039. package/app/open-sse/rtk/systemInject.js +98 -0
  1040. package/app/open-sse/services/clinepassModels.js +63 -0
  1041. package/app/open-sse/services/combo.js +375 -2
  1042. package/app/open-sse/services/copilotModels.js +155 -0
  1043. package/app/open-sse/services/kimchiModels.js +176 -0
  1044. package/app/open-sse/services/model.js +22 -143
  1045. package/app/open-sse/services/oauthCredentialManager.js +156 -0
  1046. package/app/open-sse/services/provider.js +17 -204
  1047. package/app/open-sse/services/qoderModels.js +2 -2
  1048. package/app/open-sse/services/tokenRefresh/dedup.js +31 -0
  1049. package/app/open-sse/services/tokenRefresh/providers.js +624 -0
  1050. package/app/open-sse/services/tokenRefresh.js +97 -723
  1051. package/app/open-sse/services/usage/claude.js +147 -0
  1052. package/app/open-sse/services/usage/codebuddy-cn.js +138 -0
  1053. package/app/open-sse/services/usage/codex.js +201 -0
  1054. package/app/open-sse/services/usage/github.js +100 -0
  1055. package/app/open-sse/services/usage/google.js +279 -0
  1056. package/app/open-sse/services/usage/kiro.js +188 -0
  1057. package/app/open-sse/services/usage/minimax.js +234 -0
  1058. package/app/open-sse/services/usage/misc.js +269 -0
  1059. package/app/open-sse/services/usage/shared.js +70 -0
  1060. package/app/open-sse/services/usage.js +40 -1295
  1061. package/app/open-sse/shared/clineAuth.js +37 -0
  1062. package/app/open-sse/shared/machineId.js +19 -0
  1063. package/app/open-sse/shared/qoder/constants.js +64 -0
  1064. package/app/open-sse/shared/qoder/cosy.js +175 -0
  1065. package/app/open-sse/shared/qoder/encoding.js +55 -0
  1066. package/app/open-sse/transformer/streamToJsonConverter.js +1 -1
  1067. package/app/open-sse/translator/concerns/chunk.js +11 -0
  1068. package/app/open-sse/translator/concerns/finishReason.js +63 -0
  1069. package/app/open-sse/translator/concerns/image.js +124 -0
  1070. package/app/open-sse/translator/concerns/json.js +5 -0
  1071. package/app/open-sse/translator/concerns/message.js +7 -0
  1072. package/app/open-sse/translator/concerns/modality.js +155 -0
  1073. package/app/open-sse/translator/concerns/paramSupport.js +44 -0
  1074. package/app/open-sse/translator/concerns/prefetch.js +96 -0
  1075. package/app/open-sse/translator/concerns/reasoning.js +24 -0
  1076. package/app/open-sse/translator/concerns/thinking.js +53 -0
  1077. package/app/open-sse/translator/concerns/thinkingUnified.js +271 -0
  1078. package/app/open-sse/translator/{helpers/toolCallHelper.js → concerns/toolCall.js} +5 -0
  1079. package/app/open-sse/translator/concerns/usage.js +69 -0
  1080. package/app/open-sse/translator/formats/claude.js +351 -0
  1081. package/app/open-sse/translator/{helpers/geminiHelper.js → formats/gemini.js} +24 -16
  1082. package/app/open-sse/translator/{helpers/maxTokensHelper.js → formats/maxTokens.js} +4 -1
  1083. package/app/open-sse/translator/{helpers/openaiHelper.js → formats/openai.js} +35 -31
  1084. package/app/open-sse/translator/{helpers/responsesApiHelper.js → formats/responsesApi.js} +17 -15
  1085. package/app/open-sse/translator/index.js +89 -56
  1086. package/app/open-sse/translator/request/antigravity-to-openai.js +40 -27
  1087. package/app/open-sse/translator/request/claude-to-kiro.js +466 -0
  1088. package/app/open-sse/translator/request/claude-to-openai.js +61 -33
  1089. package/app/open-sse/translator/request/gemini-to-openai.js +18 -13
  1090. package/app/open-sse/translator/request/openai-responses.js +39 -30
  1091. package/app/open-sse/translator/request/openai-to-claude.js +83 -94
  1092. package/app/open-sse/translator/request/openai-to-commandcode.js +23 -21
  1093. package/app/open-sse/translator/request/openai-to-cursor.js +25 -23
  1094. package/app/open-sse/translator/request/openai-to-gemini.js +42 -46
  1095. package/app/open-sse/translator/request/openai-to-kiro.js +290 -64
  1096. package/app/open-sse/translator/request/openai-to-ollama.js +16 -13
  1097. package/app/open-sse/translator/response/claude-to-openai.js +51 -80
  1098. package/app/open-sse/translator/response/commandcode-to-openai.js +25 -38
  1099. package/app/open-sse/translator/response/cursor-to-openai.js +2 -2
  1100. package/app/open-sse/translator/response/gemini-to-openai.js +66 -164
  1101. package/app/open-sse/translator/response/kiro-to-claude.js +261 -0
  1102. package/app/open-sse/translator/response/kiro-to-openai.js +37 -72
  1103. package/app/open-sse/translator/response/ollama-to-openai.js +21 -39
  1104. package/app/open-sse/translator/response/openai-responses.js +69 -124
  1105. package/app/open-sse/translator/response/openai-to-antigravity.js +7 -6
  1106. package/app/open-sse/translator/response/openai-to-claude.js +18 -19
  1107. package/app/open-sse/translator/schema/blocks.js +43 -0
  1108. package/app/open-sse/translator/schema/defaults.js +7 -0
  1109. package/app/open-sse/translator/schema/finishReasons.js +27 -0
  1110. package/app/open-sse/translator/schema/index.js +8 -0
  1111. package/app/open-sse/translator/schema/roles.js +16 -0
  1112. package/app/open-sse/utils/bypassHandler.js +18 -3
  1113. package/app/open-sse/utils/claudeCloaking.js +36 -13
  1114. package/app/open-sse/utils/claudeSignature.js +41 -0
  1115. package/app/open-sse/utils/reasoningContentInjector.js +5 -6
  1116. package/app/open-sse/utils/responsesStreamHelpers.js +50 -0
  1117. package/app/open-sse/utils/sessionManager.js +149 -0
  1118. package/app/open-sse/utils/sse.js +14 -0
  1119. package/app/open-sse/utils/sseConstants.js +23 -0
  1120. package/app/open-sse/utils/stream.js +106 -40
  1121. package/app/open-sse/utils/streamHandler.js +33 -21
  1122. package/app/open-sse/utils/usageTracking.js +93 -18
  1123. package/app/package.json +5 -2
  1124. package/app/public/i18n/literals/ar.json +2 -1
  1125. package/app/public/i18n/literals/bn.json +2 -1
  1126. package/app/public/i18n/literals/cs.json +2 -1
  1127. package/app/public/i18n/literals/da.json +2 -1
  1128. package/app/public/i18n/literals/de.json +2 -1
  1129. package/app/public/i18n/literals/el.json +2 -1
  1130. package/app/public/i18n/literals/es.json +2 -1
  1131. package/app/public/i18n/literals/fi.json +2 -1
  1132. package/app/public/i18n/literals/fr.json +2 -1
  1133. package/app/public/i18n/literals/he.json +2 -1
  1134. package/app/public/i18n/literals/hi.json +2 -1
  1135. package/app/public/i18n/literals/hu.json +2 -1
  1136. package/app/public/i18n/literals/id.json +2 -1
  1137. package/app/public/i18n/literals/it.json +2 -1
  1138. package/app/public/i18n/literals/ja.json +2 -1
  1139. package/app/public/i18n/literals/ko.json +2 -1
  1140. package/app/public/i18n/literals/nl.json +2 -1
  1141. package/app/public/i18n/literals/no.json +2 -1
  1142. package/app/public/i18n/literals/pl.json +2 -1
  1143. package/app/public/i18n/literals/pt-BR.json +2 -1
  1144. package/app/public/i18n/literals/pt-PT.json +2 -1
  1145. package/app/public/i18n/literals/ro.json +2 -1
  1146. package/app/public/i18n/literals/ru.json +2 -1
  1147. package/app/public/i18n/literals/sv.json +2 -1
  1148. package/app/public/i18n/literals/th.json +2 -1
  1149. package/app/public/i18n/literals/tl.json +2 -1
  1150. package/app/public/i18n/literals/tr.json +2 -1
  1151. package/app/public/i18n/literals/uk.json +2 -1
  1152. package/app/public/i18n/literals/ur.json +2 -1
  1153. package/app/public/i18n/literals/vi.json +2 -1
  1154. package/app/public/i18n/literals/zh-CN.json +6 -1
  1155. package/app/public/i18n/literals/zh-TW.json +2 -1
  1156. package/app/public/providers/clinepass.png +0 -0
  1157. package/app/public/providers/codebuddy-cn.png +0 -0
  1158. package/app/public/providers/kimchi.png +0 -0
  1159. package/app/public/providers/kimchi.svg +4 -0
  1160. package/app/public/providers/mimo-free.png +0 -0
  1161. package/app/server.js +1 -1
  1162. package/app/src/mitm/cert/generate.js +2 -2
  1163. package/app/src/mitm/cert/rootCA.js +1 -1
  1164. package/app/src/mitm/config.js +19 -3
  1165. package/app/src/mitm/handlers/base.js +159 -1
  1166. package/app/src/mitm/manager.js +29 -2
  1167. package/app/src/mitm/tokenPool.js +206 -81
  1168. package/app/src/shared/constants/cliTools.js +23 -12
  1169. package/app/src/shared/constants/config.js +28 -18
  1170. package/app/src/shared/constants/coworkPlugins.js +1 -4
  1171. package/app/src/shared/constants/locales.js +36 -0
  1172. package/app/src/shared/constants/mitmToolHosts.js +1 -1
  1173. package/app/src/shared/constants/models.js +9 -0
  1174. package/app/src/shared/constants/providers.js +65 -180
  1175. package/app/src/shared/constants/providersDisplay.js +12 -0
  1176. package/package.json +1 -1
  1177. package/app/.next/server/chunks/1476.js +0 -1
  1178. package/app/.next/server/chunks/1498.js +0 -1
  1179. package/app/.next/server/chunks/1569.js +0 -1
  1180. package/app/.next/server/chunks/1699.js +0 -1
  1181. package/app/.next/server/chunks/3104.js +0 -43
  1182. package/app/.next/server/chunks/3110.js +0 -65
  1183. package/app/.next/server/chunks/3245.js +0 -1
  1184. package/app/.next/server/chunks/3588.js +0 -1
  1185. package/app/.next/server/chunks/4013.js +0 -1
  1186. package/app/.next/server/chunks/4177.js +0 -1
  1187. package/app/.next/server/chunks/4389.js +0 -1
  1188. package/app/.next/server/chunks/4404.js +0 -1
  1189. package/app/.next/server/chunks/5221.js +0 -1
  1190. package/app/.next/server/chunks/5681.js +0 -1
  1191. package/app/.next/server/chunks/6108.js +0 -1
  1192. package/app/.next/server/chunks/6251.js +0 -1
  1193. package/app/.next/server/chunks/6811.js +0 -1
  1194. package/app/.next/server/chunks/7341.js +0 -1
  1195. package/app/.next/server/chunks/7828.js +0 -1
  1196. package/app/.next/server/chunks/7879.js +0 -10
  1197. package/app/.next/server/chunks/8255.js +0 -1
  1198. package/app/.next/server/chunks/8590.js +0 -1
  1199. package/app/.next/server/chunks/9396.js +0 -44
  1200. package/app/.next/server/chunks/9489.js +0 -1
  1201. package/app/.next/server/chunks/9609.js +0 -1
  1202. package/app/.next/server/chunks/9807.js +0 -7
  1203. package/app/.next/static/chunks/1321-03808de72db0a766.js +0 -1
  1204. package/app/.next/static/chunks/2589-d4f1afc5e9f94887.js +0 -3
  1205. package/app/.next/static/chunks/4406-abc51cf55210026c.js +0 -53
  1206. package/app/.next/static/chunks/5497-6693628388854075.js +0 -7
  1207. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-1271df5d411ef013.js +0 -1
  1208. package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-56d9eac21ab09df1.js +0 -1
  1209. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-770486eb0371891f.js +0 -1
  1210. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-e680a27ecacbfd49.js +0 -59
  1211. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-68288fb612a60026.js +0 -1
  1212. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-ff34887f020e7a37.js +0 -1
  1213. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-90eac92387b41cd4.js +0 -6
  1214. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-de08b6b9ad238de4.js +0 -1
  1215. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-1389351bfdd842f9.js +0 -1
  1216. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-d6fce7b8e1d3fdec.js +0 -3
  1217. package/app/.next/static/chunks/app/(dashboard)/layout-1244fdc593309aa9.js +0 -1
  1218. package/app/.next/static/chunks/app/_global-error/page-9e73c1f718efb820.js +0 -1
  1219. package/app/.next/static/chunks/app/api/antigravity-app/route-9e73c1f718efb820.js +0 -1
  1220. package/app/.next/static/chunks/app/api/antigravity-app-v2/route-9e73c1f718efb820.js +0 -1
  1221. package/app/.next/static/chunks/app/api/antigravity-ide/route-9e73c1f718efb820.js +0 -1
  1222. package/app/.next/static/chunks/app/api/antigravity-targets/route-9e73c1f718efb820.js +0 -1
  1223. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-9e73c1f718efb820.js +0 -1
  1224. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-9e73c1f718efb820.js +0 -1
  1225. package/app/.next/static/chunks/app/api/auth/login/route-9e73c1f718efb820.js +0 -1
  1226. package/app/.next/static/chunks/app/api/auth/logout/route-9e73c1f718efb820.js +0 -1
  1227. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-9e73c1f718efb820.js +0 -1
  1228. package/app/.next/static/chunks/app/api/auth/oidc/start/route-9e73c1f718efb820.js +0 -1
  1229. package/app/.next/static/chunks/app/api/auth/oidc/test/route-9e73c1f718efb820.js +0 -1
  1230. package/app/.next/static/chunks/app/api/auth/status/route-9e73c1f718efb820.js +0 -1
  1231. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-9e73c1f718efb820.js +0 -1
  1232. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-9e73c1f718efb820.js +0 -1
  1233. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-9e73c1f718efb820.js +0 -1
  1234. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-9e73c1f718efb820.js +0 -1
  1235. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-9e73c1f718efb820.js +0 -1
  1236. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-9e73c1f718efb820.js +0 -1
  1237. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-9e73c1f718efb820.js +0 -1
  1238. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-9e73c1f718efb820.js +0 -1
  1239. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-9e73c1f718efb820.js +0 -1
  1240. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-9e73c1f718efb820.js +0 -1
  1241. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-9e73c1f718efb820.js +0 -1
  1242. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-9e73c1f718efb820.js +0 -1
  1243. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-9e73c1f718efb820.js +0 -1
  1244. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-9e73c1f718efb820.js +0 -1
  1245. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-9e73c1f718efb820.js +0 -1
  1246. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-9e73c1f718efb820.js +0 -1
  1247. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-9e73c1f718efb820.js +0 -1
  1248. package/app/.next/static/chunks/app/api/combos/[id]/route-9e73c1f718efb820.js +0 -1
  1249. package/app/.next/static/chunks/app/api/combos/route-9e73c1f718efb820.js +0 -1
  1250. package/app/.next/static/chunks/app/api/donate/route-9e73c1f718efb820.js +0 -1
  1251. package/app/.next/static/chunks/app/api/health/route-9e73c1f718efb820.js +0 -1
  1252. package/app/.next/static/chunks/app/api/init/route-9e73c1f718efb820.js +0 -1
  1253. package/app/.next/static/chunks/app/api/internal/account-health/route-9e73c1f718efb820.js +0 -1
  1254. package/app/.next/static/chunks/app/api/internal/request-detail/route-9e73c1f718efb820.js +0 -1
  1255. package/app/.next/static/chunks/app/api/internal/usage/route-9e73c1f718efb820.js +0 -1
  1256. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-9e73c1f718efb820.js +0 -1
  1257. package/app/.next/static/chunks/app/api/keys/[id]/route-9e73c1f718efb820.js +0 -1
  1258. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-9e73c1f718efb820.js +0 -1
  1259. package/app/.next/static/chunks/app/api/keys/route-9e73c1f718efb820.js +0 -1
  1260. package/app/.next/static/chunks/app/api/locale/route-9e73c1f718efb820.js +0 -1
  1261. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-9e73c1f718efb820.js +0 -1
  1262. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-9e73c1f718efb820.js +0 -1
  1263. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-9e73c1f718efb820.js +0 -1
  1264. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-9e73c1f718efb820.js +0 -1
  1265. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-9e73c1f718efb820.js +0 -1
  1266. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-9e73c1f718efb820.js +0 -1
  1267. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-9e73c1f718efb820.js +0 -1
  1268. package/app/.next/static/chunks/app/api/models/alias/route-9e73c1f718efb820.js +0 -1
  1269. package/app/.next/static/chunks/app/api/models/availability/route-9e73c1f718efb820.js +0 -1
  1270. package/app/.next/static/chunks/app/api/models/custom/route-9e73c1f718efb820.js +0 -1
  1271. package/app/.next/static/chunks/app/api/models/disabled/route-9e73c1f718efb820.js +0 -1
  1272. package/app/.next/static/chunks/app/api/models/route-9e73c1f718efb820.js +0 -1
  1273. package/app/.next/static/chunks/app/api/models/test/route-9e73c1f718efb820.js +0 -1
  1274. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-9e73c1f718efb820.js +0 -1
  1275. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-9e73c1f718efb820.js +0 -1
  1276. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-9e73c1f718efb820.js +0 -1
  1277. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-9e73c1f718efb820.js +0 -1
  1278. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-9e73c1f718efb820.js +0 -1
  1279. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-9e73c1f718efb820.js +0 -1
  1280. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-9e73c1f718efb820.js +0 -1
  1281. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-9e73c1f718efb820.js +0 -1
  1282. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-9e73c1f718efb820.js +0 -1
  1283. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-9e73c1f718efb820.js +0 -1
  1284. package/app/.next/static/chunks/app/api/pricing/route-9e73c1f718efb820.js +0 -1
  1285. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-9e73c1f718efb820.js +0 -1
  1286. package/app/.next/static/chunks/app/api/provider-nodes/route-9e73c1f718efb820.js +0 -1
  1287. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-9e73c1f718efb820.js +0 -1
  1288. package/app/.next/static/chunks/app/api/providers/[id]/models/route-9e73c1f718efb820.js +0 -1
  1289. package/app/.next/static/chunks/app/api/providers/[id]/route-9e73c1f718efb820.js +0 -1
  1290. package/app/.next/static/chunks/app/api/providers/[id]/test/route-9e73c1f718efb820.js +0 -1
  1291. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-9e73c1f718efb820.js +0 -1
  1292. package/app/.next/static/chunks/app/api/providers/client/route-9e73c1f718efb820.js +0 -1
  1293. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-9e73c1f718efb820.js +0 -1
  1294. package/app/.next/static/chunks/app/api/providers/route-9e73c1f718efb820.js +0 -1
  1295. package/app/.next/static/chunks/app/api/providers/suggested-models/route-9e73c1f718efb820.js +0 -1
  1296. package/app/.next/static/chunks/app/api/providers/test-batch/route-9e73c1f718efb820.js +0 -1
  1297. package/app/.next/static/chunks/app/api/providers/validate/route-9e73c1f718efb820.js +0 -1
  1298. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-9e73c1f718efb820.js +0 -1
  1299. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-9e73c1f718efb820.js +0 -1
  1300. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-9e73c1f718efb820.js +0 -1
  1301. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-9e73c1f718efb820.js +0 -1
  1302. package/app/.next/static/chunks/app/api/proxy-pools/route-9e73c1f718efb820.js +0 -1
  1303. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-9e73c1f718efb820.js +0 -1
  1304. package/app/.next/static/chunks/app/api/settings/database/route-9e73c1f718efb820.js +0 -1
  1305. package/app/.next/static/chunks/app/api/settings/proxy-test/route-9e73c1f718efb820.js +0 -1
  1306. package/app/.next/static/chunks/app/api/settings/require-login/route-9e73c1f718efb820.js +0 -1
  1307. package/app/.next/static/chunks/app/api/settings/route-9e73c1f718efb820.js +0 -1
  1308. package/app/.next/static/chunks/app/api/shutdown/route-9e73c1f718efb820.js +0 -1
  1309. package/app/.next/static/chunks/app/api/tags/route-9e73c1f718efb820.js +0 -1
  1310. package/app/.next/static/chunks/app/api/translator/console-logs/route-9e73c1f718efb820.js +0 -1
  1311. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-9e73c1f718efb820.js +0 -1
  1312. package/app/.next/static/chunks/app/api/translator/load/route-9e73c1f718efb820.js +0 -1
  1313. package/app/.next/static/chunks/app/api/translator/save/route-9e73c1f718efb820.js +0 -1
  1314. package/app/.next/static/chunks/app/api/translator/send/route-9e73c1f718efb820.js +0 -1
  1315. package/app/.next/static/chunks/app/api/translator/translate/route-9e73c1f718efb820.js +0 -1
  1316. package/app/.next/static/chunks/app/api/tunnel/disable/route-9e73c1f718efb820.js +0 -1
  1317. package/app/.next/static/chunks/app/api/tunnel/enable/route-9e73c1f718efb820.js +0 -1
  1318. package/app/.next/static/chunks/app/api/tunnel/status/route-9e73c1f718efb820.js +0 -1
  1319. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-9e73c1f718efb820.js +0 -1
  1320. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-9e73c1f718efb820.js +0 -1
  1321. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-9e73c1f718efb820.js +0 -1
  1322. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-9e73c1f718efb820.js +0 -1
  1323. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-9e73c1f718efb820.js +0 -1
  1324. package/app/.next/static/chunks/app/api/usage/chart/route-9e73c1f718efb820.js +0 -1
  1325. package/app/.next/static/chunks/app/api/usage/history/route-9e73c1f718efb820.js +0 -1
  1326. package/app/.next/static/chunks/app/api/usage/logs/route-9e73c1f718efb820.js +0 -1
  1327. package/app/.next/static/chunks/app/api/usage/providers/route-9e73c1f718efb820.js +0 -1
  1328. package/app/.next/static/chunks/app/api/usage/report/route-9e73c1f718efb820.js +0 -1
  1329. package/app/.next/static/chunks/app/api/usage/request-details/route-9e73c1f718efb820.js +0 -1
  1330. package/app/.next/static/chunks/app/api/usage/request-logs/route-9e73c1f718efb820.js +0 -1
  1331. package/app/.next/static/chunks/app/api/usage/stats/route-9e73c1f718efb820.js +0 -1
  1332. package/app/.next/static/chunks/app/api/usage/stream/route-9e73c1f718efb820.js +0 -1
  1333. package/app/.next/static/chunks/app/api/v1/api/chat/route-9e73c1f718efb820.js +0 -1
  1334. package/app/.next/static/chunks/app/api/v1/audio/speech/route-9e73c1f718efb820.js +0 -1
  1335. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-9e73c1f718efb820.js +0 -1
  1336. package/app/.next/static/chunks/app/api/v1/audio/voices/route-9e73c1f718efb820.js +0 -1
  1337. package/app/.next/static/chunks/app/api/v1/chat/completions/route-9e73c1f718efb820.js +0 -1
  1338. package/app/.next/static/chunks/app/api/v1/embeddings/route-9e73c1f718efb820.js +0 -1
  1339. package/app/.next/static/chunks/app/api/v1/images/generations/route-9e73c1f718efb820.js +0 -1
  1340. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-9e73c1f718efb820.js +0 -1
  1341. package/app/.next/static/chunks/app/api/v1/messages/route-9e73c1f718efb820.js +0 -1
  1342. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-9e73c1f718efb820.js +0 -1
  1343. package/app/.next/static/chunks/app/api/v1/models/info/route-9e73c1f718efb820.js +0 -1
  1344. package/app/.next/static/chunks/app/api/v1/models/route-9e73c1f718efb820.js +0 -1
  1345. package/app/.next/static/chunks/app/api/v1/responses/compact/route-9e73c1f718efb820.js +0 -1
  1346. package/app/.next/static/chunks/app/api/v1/responses/route-9e73c1f718efb820.js +0 -1
  1347. package/app/.next/static/chunks/app/api/v1/route-9e73c1f718efb820.js +0 -1
  1348. package/app/.next/static/chunks/app/api/v1/search/route-9e73c1f718efb820.js +0 -1
  1349. package/app/.next/static/chunks/app/api/v1/web/fetch/route-9e73c1f718efb820.js +0 -1
  1350. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-9e73c1f718efb820.js +0 -1
  1351. package/app/.next/static/chunks/app/api/v1beta/models/route-9e73c1f718efb820.js +0 -1
  1352. package/app/.next/static/chunks/app/api/version/route-9e73c1f718efb820.js +0 -1
  1353. package/app/.next/static/chunks/app/api/version/shutdown/route-9e73c1f718efb820.js +0 -1
  1354. package/app/.next/static/chunks/app/api/version/update/route-9e73c1f718efb820.js +0 -1
  1355. package/app/.next/static/chunks/app/callback/page-1ac4b69a5de26857.js +0 -1
  1356. package/app/.next/static/chunks/app/dashboard/settings/pricing/page-29c50a560c8c4d2b.js +0 -1
  1357. package/app/.next/static/chunks/app/layout-35b23f7e08fe3978.js +0 -1
  1358. package/app/.next/static/chunks/app/login/page-98aaabbf53ef75f6.js +0 -1
  1359. package/app/.next/static/chunks/app/manifest.webmanifest/route-9e73c1f718efb820.js +0 -1
  1360. package/app/.next/static/chunks/app/page-9e73c1f718efb820.js +0 -1
  1361. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-9e73c1f718efb820.js +0 -1
  1362. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-9e73c1f718efb820.js +0 -1
  1363. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-9e73c1f718efb820.js +0 -1
  1364. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9e73c1f718efb820.js +0 -1
  1365. package/app/.next/static/css/0f03023a765dc337.css +0 -1
  1366. package/app/.next/static/css/958bcd529c8d4b7c.css +0 -1
  1367. package/app/.next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  1368. package/app/.next/static/media/21350d82a1f187e9-s.woff2 +0 -0
  1369. package/app/.next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  1370. package/app/.next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  1371. package/app/.next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  1372. package/app/.next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  1373. package/app/.next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  1374. package/app/.next/static/p_zZZ7bGM2zUCztNMVhuB/_buildManifest.js +0 -1
  1375. package/app/open-sse/translator/helpers/claudeHelper.js +0 -216
  1376. package/app/open-sse/translator/helpers/imageHelper.js +0 -34
  1377. package/app/open-sse/translator/request/openai-to-kiro.old.js +0 -278
  1378. /package/app/.next/static/{p_zZZ7bGM2zUCztNMVhuB → T8rvyAbbOSQ8MIHxo1_4X}/_ssgManifest.js +0 -0
@@ -1,11 +1,33 @@
1
1
  import { BaseExecutor } from "./base.js";
2
2
  import { PROVIDERS } from "../config/providers.js";
3
- import { parseVertexSaJson, refreshVertexToken } from "../services/tokenRefresh.js";
3
+ import { parseVertexSaJson, refreshVertexToken, refreshGoogleToken } from "../services/tokenRefresh.js";
4
4
  import { proxyAwareFetch } from "../utils/proxyFetch.js";
5
5
 
6
6
  // Cache project IDs resolved from raw API keys { apiKey → projectId }
7
7
  const projectIdCache = new Map();
8
8
 
9
+ /**
10
+ * Parse Google ADC user credential JSON from apiKey string.
11
+ * This is the format produced by `gcloud auth application-default login`.
12
+ */
13
+ function parseVertexAdcJson(apiKey) {
14
+ if (typeof apiKey !== "string") return null;
15
+ try {
16
+ const parsed = JSON.parse(apiKey);
17
+ if (
18
+ parsed.type === "authorized_user" &&
19
+ parsed.client_id &&
20
+ parsed.client_secret &&
21
+ parsed.refresh_token
22
+ ) {
23
+ return parsed;
24
+ }
25
+ return null;
26
+ } catch {
27
+ return null;
28
+ }
29
+ }
30
+
9
31
  /**
10
32
  * Resolve GCP project ID from a raw Vertex API key.
11
33
  * Sends a dummy 404 request and parses "projects/{id}" from the error message.
@@ -43,8 +65,13 @@ export class VertexExecutor extends BaseExecutor {
43
65
 
44
66
  buildUrl(model, stream, urlIndex = 0, credentials = null) {
45
67
  const saJson = parseVertexSaJson(credentials?.apiKey);
46
- const rawKey = !saJson ? credentials?.apiKey : null;
47
- const projectId = saJson?.project_id || credentials?.providerSpecificData?.projectId;
68
+ const adcJson = parseVertexAdcJson(credentials?.apiKey);
69
+ const usesOAuth = !!saJson || !!adcJson || !!credentials?.accessToken;
70
+ const rawKey = !usesOAuth ? credentials?.apiKey : null;
71
+ const projectId =
72
+ saJson?.project_id ||
73
+ adcJson?.quota_project_id ||
74
+ credentials?.providerSpecificData?.projectId;
48
75
 
49
76
  if (this.provider === "vertex-partner") {
50
77
  // Partner models require project_id in path regardless of auth method
@@ -56,8 +83,14 @@ export class VertexExecutor extends BaseExecutor {
56
83
  // Gemini on Vertex
57
84
  const action = stream ? "streamGenerateContent" : "generateContent";
58
85
 
59
- if (saJson) {
60
- // SA JSON + Bearer token: must use project-scoped path to avoid RESOURCE_PROJECT_INVALID
86
+ if (usesOAuth) {
87
+ // SA JSON / ADC / pre-set accessToken: must use project-scoped path to avoid RESOURCE_PROJECT_INVALID
88
+ if (!projectId) {
89
+ throw new Error(
90
+ "Vertex OAuth/ADC requires a project_id. " +
91
+ "Add quota_project_id to your ADC JSON or set providerSpecificData.projectId."
92
+ );
93
+ }
61
94
  const location = credentials?.providerSpecificData?.location || "us-central1";
62
95
  let url = `https://aiplatform.googleapis.com/v1/projects/${projectId}/locations/${location}/publishers/google/models/${model}:${action}`;
63
96
  if (stream) url += "?alt=sse";
@@ -97,16 +130,29 @@ export class VertexExecutor extends BaseExecutor {
97
130
 
98
131
  async execute({ model, body, stream, credentials, signal, log, proxyOptions = null }) {
99
132
  const saJson = parseVertexSaJson(credentials?.apiKey);
133
+ const adcJson = parseVertexAdcJson(credentials?.apiKey);
100
134
 
101
- // SA JSON flow: mint Bearer token (cached)
135
+ // SA JSON flow: mint Bearer token via JWT assertion (cached)
102
136
  if (saJson) {
103
137
  const result = await refreshVertexToken(saJson, log);
104
138
  if (!result?.accessToken) throw new Error("Vertex: failed to mint access token from Service Account JSON");
105
139
  credentials.accessToken = result.accessToken;
106
140
  }
107
141
 
142
+ // ADC user credential flow: refresh Bearer token via Google OAuth2 token endpoint
143
+ if (adcJson) {
144
+ const result = await refreshGoogleToken(
145
+ adcJson.refresh_token,
146
+ adcJson.client_id,
147
+ adcJson.client_secret,
148
+ log
149
+ );
150
+ if (!result?.accessToken) throw new Error("Vertex: failed to refresh access token from ADC JSON (authorized_user)");
151
+ credentials.accessToken = result.accessToken;
152
+ }
153
+
108
154
  // vertex-partner with raw key: auto-resolve project_id if not provided
109
- if (this.provider === "vertex-partner" && !saJson && !credentials?.providerSpecificData?.projectId) {
155
+ if (this.provider === "vertex-partner" && !saJson && !adcJson && !credentials?.providerSpecificData?.projectId) {
110
156
  const projectId = await resolveProjectId(credentials.apiKey);
111
157
  if (!projectId) throw new Error("Vertex: could not resolve project_id from API key. Please add it manually in provider settings.");
112
158
  log?.debug?.("VERTEX", `Resolved project_id: ${projectId}`);
@@ -0,0 +1,20 @@
1
+ import { DefaultExecutor } from "./default.js";
2
+ import { resolveXiaomiTokenplanBaseUrl } from "../config/providers.js";
3
+ // import { getModelTargetFormat } from "../config/providerModels.js";
4
+ // import { FORMATS } from "../translator/formats.js";
5
+
6
+ export class XiaomiTokenplanExecutor extends DefaultExecutor {
7
+ constructor() {
8
+ super("xiaomi-tokenplan");
9
+ }
10
+
11
+ // Token Plan keys are region-specific. Route per sourceFormat-matched transport:
12
+ // claude → Anthropic /anthropic/v1/messages, openai → /chat/completions.
13
+ buildUrl(model, stream, urlIndex = 0, credentials = null) {
14
+ const baseUrl = resolveXiaomiTokenplanBaseUrl(credentials);
15
+ if (credentials?.runtimeTransport?.format === "claude") {
16
+ return `${baseUrl.replace(/\/v1\/?$/, "")}/anthropic/v1/messages`;
17
+ }
18
+ return `${baseUrl}/chat/completions`;
19
+ }
20
+ }
@@ -1,5 +1,6 @@
1
1
  import { FORMATS } from "../../translator/formats.js";
2
2
  import { needsTranslation } from "../../translator/index.js";
3
+ import { fromOpenAIFinish } from "../../translator/concerns/finishReason.js";
3
4
  import { ollamaBodyToOpenAI } from "../../translator/response/ollama-to-openai.js";
4
5
  import { addBufferToUsage, filterUsageForFormat } from "../../utils/usageTracking.js";
5
6
  import { createErrorResult } from "../../utils/error.js";
@@ -9,11 +10,65 @@ import { buildRequestDetail, extractRequestConfig, extractUsageFromResponse, sav
9
10
  import { appendRequestLog, saveRequestDetail } from "@/lib/usageDb.js";
10
11
  import { decloakToolNames } from "../../utils/claudeCloaking.js";
11
12
 
13
+ function parseToolArguments(value) {
14
+ if (!value) return {};
15
+ if (typeof value === "object") return value;
16
+ try {
17
+ return JSON.parse(value);
18
+ } catch {
19
+ return {};
20
+ }
21
+ }
22
+
23
+ function openAICompletionToClaudeMessage(responseBody) {
24
+ if (!responseBody?.choices?.[0]) return responseBody;
25
+ const choice = responseBody.choices[0];
26
+ const message = choice.message || {};
27
+ const content = [];
28
+
29
+ const reasoning = message.reasoning_content || message.provider_specific_fields?.reasoning_content || "";
30
+ if (reasoning) {
31
+ content.push({ type: "thinking", thinking: reasoning });
32
+ }
33
+ if (typeof message.content === "string" && message.content.length > 0) {
34
+ content.push({ type: "text", text: message.content });
35
+ }
36
+ for (const toolCall of message.tool_calls || []) {
37
+ const fn = toolCall.function || {};
38
+ content.push({
39
+ type: "tool_use",
40
+ id: toolCall.id || `toolu_${Date.now()}_${content.length}`,
41
+ name: fn.name || toolCall.name || "",
42
+ input: parseToolArguments(fn.arguments || toolCall.arguments),
43
+ });
44
+ }
45
+ if (content.length === 0) content.push({ type: "text", text: "" });
46
+
47
+ const usage = responseBody.usage || {};
48
+ return {
49
+ id: String(responseBody.id || `msg_${Date.now()}`).replace(/^chatcmpl-/, ""),
50
+ type: "message",
51
+ role: "assistant",
52
+ model: responseBody.model || "unknown",
53
+ content,
54
+ stop_reason: fromOpenAIFinish(choice.finish_reason, FORMATS.CLAUDE),
55
+ stop_sequence: null,
56
+ usage: {
57
+ input_tokens: usage.prompt_tokens || usage.input_tokens || 0,
58
+ output_tokens: usage.completion_tokens || usage.output_tokens || 0,
59
+ },
60
+ };
61
+ }
62
+
12
63
  /**
13
64
  * Translate non-streaming response body from provider format → OpenAI format.
14
65
  */
15
66
  export function translateNonStreamingResponse(responseBody, targetFormat, sourceFormat) {
16
- if (targetFormat === sourceFormat || targetFormat === FORMATS.OPENAI) return responseBody;
67
+ if (targetFormat === sourceFormat) return responseBody;
68
+ if (targetFormat === FORMATS.OPENAI && sourceFormat === FORMATS.CLAUDE) {
69
+ return openAICompletionToClaudeMessage(responseBody);
70
+ }
71
+ if (targetFormat === FORMATS.OPENAI) return responseBody;
17
72
 
18
73
  // Gemini / Antigravity
19
74
  if (targetFormat === FORMATS.GEMINI || targetFormat === FORMATS.ANTIGRAVITY || targetFormat === FORMATS.GEMINI_CLI || targetFormat === FORMATS.VERTEX) {
@@ -37,6 +92,12 @@ export function translateNonStreamingResponse(responseBody, targetFormat, source
37
92
  function: { name: part.functionCall.name, arguments: JSON.stringify(part.functionCall.args || {}) }
38
93
  });
39
94
  }
95
+ // Handle inline image data (from image generation models)
96
+ const inlineData = part.inlineData || part.inline_data;
97
+ if (inlineData?.data) {
98
+ const mimeType = inlineData.mimeType || inlineData.mime_type || "image/png";
99
+ textContent += `\n![image](data:${mimeType};base64,${inlineData.data})\n`;
100
+ }
40
101
  }
41
102
  }
42
103
 
@@ -72,12 +133,21 @@ export function translateNonStreamingResponse(responseBody, targetFormat, source
72
133
 
73
134
  // Claude
74
135
  if (targetFormat === FORMATS.CLAUDE) {
75
- if (!responseBody.content) return responseBody;
136
+ // Always translate a Claude-format body to OpenAI, even if `content` is
137
+ // missing/null (e.g. M3 with max_tokens:1 spends the budget on thinking
138
+ // and returns `content: null`). Returning the raw body would leave the
139
+ // OpenAI client without a `choices` array and surface as a UI test error.
140
+ // Early return if the response is already in OpenAI format (has choices array)
141
+ // or if it has content as a non-array value (likely a different non-Claude format).
142
+ // Some providers (e.g. xiaomi-tokenplan) return OpenAI-format responses even when
143
+ // the request was translated to Claude format — the targetFormat is Claude but the
144
+ // actual response is OpenAI-native and needs no further translation.
145
+ if (responseBody.choices || (responseBody.content && !Array.isArray(responseBody.content))) return responseBody;
76
146
 
77
147
  let textContent = "", thinkingContent = "";
78
148
  const toolCalls = [];
79
149
 
80
- for (const block of responseBody.content) {
150
+ for (const block of (responseBody.content || [])) {
81
151
  if (block.type === "text") {
82
152
  // Strip markdown code block markers (e.g. kimi wraps JSON in ```json...```)
83
153
  const raw = block.text ?? "";
@@ -152,7 +222,13 @@ export async function handleNonStreamingResponse({ providerResponse, provider, m
152
222
  }
153
223
 
154
224
  reqLogger.logProviderResponse(providerResponse.status, providerResponse.statusText, providerResponse.headers, responseBody);
155
- if (onRequestSuccess) await onRequestSuccess();
225
+ if (onRequestSuccess) {
226
+ Promise.resolve()
227
+ .then(onRequestSuccess)
228
+ .catch(err => {
229
+ console.error("[ChatCore] onRequestSuccess failed:", err?.message || err);
230
+ });
231
+ }
156
232
 
157
233
  // Decloak tool_use names once on raw Claude body, before any translation (INPUT side)
158
234
  responseBody = decloakToolNames(responseBody, toolNameMap);
@@ -164,6 +240,7 @@ export async function handleNonStreamingResponse({ providerResponse, provider, m
164
240
  const translatedResponse = needsTranslation(targetFormat, sourceFormat)
165
241
  ? translateNonStreamingResponse(responseBody, targetFormat, sourceFormat)
166
242
  : responseBody;
243
+ const isClaudeMessageResponse = sourceFormat === FORMATS.CLAUDE && translatedResponse?.type === "message";
167
244
 
168
245
  // Fix finish_reason for tool_calls: some providers return non-standard values (e.g. "other")
169
246
  if (translatedResponse?.choices?.[0]) {
@@ -176,24 +253,31 @@ export async function handleNonStreamingResponse({ providerResponse, provider, m
176
253
  }
177
254
 
178
255
  // Ensure OpenAI-required fields
179
- if (!translatedResponse.object) translatedResponse.object = "chat.completion";
180
- if (!translatedResponse.created) translatedResponse.created = Math.floor(Date.now() / 1000);
256
+ if (!isClaudeMessageResponse) {
257
+ if (!translatedResponse.object) translatedResponse.object = "chat.completion";
258
+ if (!translatedResponse.created) translatedResponse.created = Math.floor(Date.now() / 1000);
259
+ }
181
260
 
182
261
  // Strip Azure-specific fields
183
- delete translatedResponse.prompt_filter_results;
184
- if (translatedResponse?.choices) {
185
- for (const choice of translatedResponse.choices) delete choice.content_filter_results;
262
+ if (!isClaudeMessageResponse) {
263
+ delete translatedResponse.prompt_filter_results;
264
+ if (translatedResponse?.choices) {
265
+ for (const choice of translatedResponse.choices) delete choice.content_filter_results;
266
+ }
186
267
  }
187
268
 
188
269
  if (translatedResponse?.usage) {
189
270
  translatedResponse.usage = filterUsageForFormat(addBufferToUsage(translatedResponse.usage), sourceFormat);
190
271
  }
191
272
 
192
- // Strip reasoning_content some clients (e.g. Firecrawl AI SDK) have JSON parsers that
193
- // break on this non-standard field, even though OpenAI allows it in extensions.
194
- if (translatedResponse?.choices) {
273
+ // Strip reasoning_content only when content is non-empty.
274
+ // When content is empty (e.g. thinking models that used all tokens for reasoning),
275
+ // reasoning_content is the only useful output and must be preserved.
276
+ if (!isClaudeMessageResponse && translatedResponse?.choices) {
195
277
  for (const choice of translatedResponse.choices) {
196
- if (choice?.message) delete choice.message.reasoning_content;
278
+ if (choice?.message?.reasoning_content && choice.message.content) {
279
+ delete choice.message.reasoning_content;
280
+ }
197
281
  }
198
282
  }
199
283
 
@@ -1,5 +1,6 @@
1
1
  import { saveRequestUsage, appendRequestLog, saveRequestDetail } from "@/lib/usageDb.js";
2
2
  import { COLORS } from "../../utils/stream.js";
3
+ import { canonicalizeUsage } from "../../utils/usageTracking.js";
3
4
 
4
5
  const OPTIONAL_PARAMS = [
5
6
  "temperature", "top_p", "top_k",
@@ -48,8 +49,8 @@ export function extractUsageFromResponse(responseBody) {
48
49
  return {
49
50
  prompt_tokens: responseBody.usageMetadata.promptTokenCount || 0,
50
51
  completion_tokens: responseBody.usageMetadata.candidatesTokenCount || 0,
51
- cached_tokens: responseBody.usageMetadata.cachedContentTokenCount,
52
- reasoning_tokens: responseBody.usageMetadata.thoughtsTokenCount
52
+ cached_tokens: responseBody.usageMetadata.cachedContentTokenCount || 0,
53
+ reasoning_tokens: responseBody.usageMetadata.thoughtsTokenCount || 0
53
54
  };
54
55
  }
55
56
 
@@ -86,16 +87,11 @@ export function saveUsageStats({ provider, model, tokens, connectionId, apiKey,
86
87
  const accountSuffix = connectionId ? ` | account=${connectionId.slice(0, 8)}...` : "";
87
88
  console.log(`${COLORS.green}[${time}] 📊 [${label}] ${provider.toUpperCase()} | in=${inTokens} | out=${outTokens}${accountSuffix}${COLORS.reset}`);
88
89
 
89
- // Normalize to OpenAI token shape for storage
90
- const cacheRead = tokens.cache_read_input_tokens || tokens.cached_tokens || tokens.prompt_tokens_details?.cached_tokens || 0;
91
- const cacheCreation = tokens.cache_creation_input_tokens || 0;
92
- const reasoning = tokens.reasoning_tokens || tokens.completion_tokens_details?.reasoning_tokens || 0;
93
- const normalized = {
90
+ // Canonicalize to one storage convention (prompt_tokens cache-inclusive) so
91
+ // cached/cache-creation tokens survive to cost calc + stats. See canonicalizeUsage.
92
+ const normalized = canonicalizeUsage(tokens) || {
94
93
  prompt_tokens: tokens.prompt_tokens ?? tokens.input_tokens ?? 0,
95
94
  completion_tokens: tokens.completion_tokens ?? tokens.output_tokens ?? 0,
96
- ...(cacheRead > 0 && { cache_read_input_tokens: cacheRead }),
97
- ...(cacheCreation > 0 && { cache_creation_input_tokens: cacheCreation }),
98
- ...(reasoning > 0 && { reasoning_tokens: reasoning }),
99
95
  };
100
96
 
101
97
  saveRequestUsage({
@@ -2,7 +2,11 @@ import { convertResponsesStreamToJson } from "../../transformer/streamToJsonConv
2
2
  import { createErrorResult } from "../../utils/error.js";
3
3
  import { HTTP_STATUS } from "../../config/runtimeConfig.js";
4
4
  import { FORMATS } from "../../translator/formats.js";
5
+ import { PROVIDERS } from "../../config/providers.js";
5
6
  import { buildRequestDetail, extractRequestConfig, saveUsageStats } from "./requestDetail.js";
7
+
8
+ // Responses-API providers (e.g. codex) may emit SSE without content-type + use Responses output shape
9
+ const isResponsesProvider = (p) => PROVIDERS[p]?.format === FORMATS.OPENAI_RESPONSES;
6
10
  import { saveRequestDetail, appendRequestLog } from "@/lib/usageDb.js";
7
11
 
8
12
  function textFromResponsesMessageItem(item) {
@@ -100,7 +104,7 @@ export function parseSSEToOpenAIResponse(rawSSE, fallbackModel) {
100
104
  */
101
105
  export async function handleForcedSSEToJson({ providerResponse, sourceFormat, provider, model, body, stream, translatedBody, finalBody, requestStartTime, connectionId, apiKey, clientRawRequest, onRequestSuccess, trackDone, appendLog }) {
102
106
  const contentType = providerResponse.headers.get("content-type") || "";
103
- const isSSE = contentType.includes("text/event-stream") || (contentType === "" && provider === "codex");
107
+ const isSSE = contentType.includes("text/event-stream") || (contentType === "" && isResponsesProvider(provider));
104
108
  if (!isSSE) return null; // not handled here
105
109
 
106
110
  trackDone();
@@ -112,7 +116,7 @@ export async function handleForcedSSEToJson({ providerResponse, sourceFormat, pr
112
116
  };
113
117
 
114
118
  // Codex/Responses API SSE path
115
- const isCodexResponsesApi = provider === "codex" || sourceFormat === FORMATS.OPENAI_RESPONSES;
119
+ const isCodexResponsesApi = isResponsesProvider(provider) || sourceFormat === FORMATS.OPENAI_RESPONSES;
116
120
  if (isCodexResponsesApi) {
117
121
  try {
118
122
  const jsonResponse = await convertResponsesStreamToJson(providerResponse.body);
@@ -175,7 +179,8 @@ export async function handleForcedSSEToJson({ providerResponse, sourceFormat, pr
175
179
  } else {
176
180
  const message = { role: "assistant", content: textContent || (hasToolCalls ? null : "") };
177
181
  if (hasToolCalls) message.tool_calls = toolCalls;
178
- const finishReason = hasToolCalls ? "tool_calls" : (jsonResponse.status === "completed" ? "stop" : (jsonResponse.status || "stop"));
182
+ const responseDone = jsonResponse.status === "completed" || jsonResponse.status === "done";
183
+ const finishReason = hasToolCalls ? "tool_calls" : (responseDone ? "stop" : (jsonResponse.status || "stop"));
179
184
  finalResp = {
180
185
  id: jsonResponse.id || `chatcmpl-${Date.now()}`,
181
186
  object: "chat.completion",
@@ -2,14 +2,21 @@ import { FORMATS } from "../../translator/formats.js";
2
2
  import { needsTranslation } from "../../translator/index.js";
3
3
  import { createSSETransformStreamWithLogger, createPassthroughStreamWithLogger } from "../../utils/stream.js";
4
4
  import { pipeWithDisconnect } from "../../utils/streamHandler.js";
5
+ import { PROVIDERS } from "../../config/providers.js";
6
+ import { STREAM_STALL_TIMEOUT_MS } from "../../config/runtimeConfig.js";
7
+ import { buildAbortedResponsesTerminalBytes } from "../../utils/responsesStreamHelpers.js";
5
8
  import { buildRequestDetail, extractRequestConfig, saveUsageStats } from "./requestDetail.js";
6
9
  import { saveRequestDetail } from "@/lib/usageDb.js";
10
+ import { SSE_HEADERS_CORS as SSE_HEADERS } from "../../utils/sseConstants.js";
7
11
 
8
- const SSE_HEADERS = {
9
- "Content-Type": "text/event-stream",
10
- "Cache-Control": "no-cache",
11
- "Connection": "keep-alive",
12
- "Access-Control-Allow-Origin": "*"
12
+ // Codex returns Responses API SSE → which client format to translate INTO, by request sourceFormat.
13
+ // Gemini-family all map to ANTIGRAVITY decoder; unknown sources fall back to OPENAI.
14
+ const CODEX_SOURCE_TO_TARGET = {
15
+ [FORMATS.OPENAI_RESPONSES]: FORMATS.OPENAI_RESPONSES,
16
+ [FORMATS.CLAUDE]: FORMATS.CLAUDE,
17
+ [FORMATS.ANTIGRAVITY]: FORMATS.ANTIGRAVITY,
18
+ [FORMATS.GEMINI]: FORMATS.ANTIGRAVITY,
19
+ [FORMATS.GEMINI_CLI]: FORMATS.ANTIGRAVITY,
13
20
  };
14
21
 
15
22
  /**
@@ -17,15 +24,12 @@ const SSE_HEADERS = {
17
24
  */
18
25
  function buildTransformStream({ provider, sourceFormat, targetFormat, userAgent, reqLogger, toolNameMap, model, connectionId, body, onStreamComplete, apiKey }) {
19
26
  const isDroidCLI = userAgent?.toLowerCase().includes("droid") || userAgent?.toLowerCase().includes("codex-cli");
20
- const needsCodexTranslation = provider === "codex" && targetFormat === FORMATS.OPENAI_RESPONSES && !isDroidCLI;
27
+ // Responses-API providers (e.g. codex) emit Responses SSE translate into client format
28
+ const isResponsesProvider = PROVIDERS[provider]?.format === FORMATS.OPENAI_RESPONSES;
29
+ const needsCodexTranslation = isResponsesProvider && targetFormat === FORMATS.OPENAI_RESPONSES && !isDroidCLI;
21
30
 
22
31
  if (needsCodexTranslation) {
23
- // Codex returns Responses API SSE → translate to client format
24
- let codexTarget;
25
- if (sourceFormat === FORMATS.OPENAI_RESPONSES) codexTarget = FORMATS.OPENAI_RESPONSES;
26
- else if (sourceFormat === FORMATS.CLAUDE) codexTarget = FORMATS.CLAUDE;
27
- else if (sourceFormat === FORMATS.ANTIGRAVITY || sourceFormat === FORMATS.GEMINI || sourceFormat === FORMATS.GEMINI_CLI) codexTarget = FORMATS.ANTIGRAVITY;
28
- else codexTarget = FORMATS.OPENAI;
32
+ const codexTarget = CODEX_SOURCE_TO_TARGET[sourceFormat] || FORMATS.OPENAI;
29
33
  return createSSETransformStreamWithLogger(FORMATS.OPENAI_RESPONSES, codexTarget, provider, reqLogger, toolNameMap, model, connectionId, body, onStreamComplete, apiKey);
30
34
  }
31
35
 
@@ -39,11 +43,48 @@ function buildTransformStream({ provider, sourceFormat, targetFormat, userAgent,
39
43
  /**
40
44
  * Handle streaming response — pipe provider SSE through transform stream to client.
41
45
  */
42
- export function handleStreamingResponse({ providerResponse, provider, model, sourceFormat, targetFormat, userAgent, body, stream, translatedBody, finalBody, requestStartTime, connectionId, apiKey, clientRawRequest, onRequestSuccess, reqLogger, toolNameMap, streamController, onStreamComplete, streamDetailId, streamWatchdogEnabled = true }) {
43
- if (onRequestSuccess) onRequestSuccess();
46
+ export async function handleStreamingResponse({ providerResponse, provider, model, sourceFormat, targetFormat, userAgent, body, stream, translatedBody, finalBody, requestStartTime, connectionId, apiKey, clientRawRequest, onRequestSuccess, reqLogger, toolNameMap, streamController, onStreamComplete, streamDetailId, streamWatchdogEnabled = true }) {
47
+ if (onRequestSuccess) {
48
+ Promise.resolve()
49
+ .then(onRequestSuccess)
50
+ .catch(err => {
51
+ console.error("[ChatCore] onRequestSuccess failed:", err?.message || err);
52
+ });
53
+ }
54
+
55
+ // When upstream returns HTML/text instead of SSE (e.g. Cloudflare 5xx error
56
+ // page), piping it through the SSE transform stream causes Next.js
57
+ // "failed to pipe response" and crashes the chat router. Read the body,
58
+ // pull a short human-readable message from the <title>, sanitize it, and
59
+ // return a clean JSON error instead. The message is stripped of HTML tags
60
+ // and clamped so untrusted upstream text never reaches the client verbatim
61
+ // (the UI may render error.message as HTML).
62
+ const upstreamContentType = (providerResponse.headers.get('content-type') || '').toLowerCase();
63
+ if (upstreamContentType && !upstreamContentType.includes('text/event-stream') && !upstreamContentType.includes('application/json')) {
64
+ const bodyText = await providerResponse.text().catch(() => '');
65
+ const titleMatch = bodyText.match(/<title>([^<]+)<\/title>/i);
66
+ const sanitizedTitle = (titleMatch?.[1] || '').replace(/<[^>]*>/g, '').replace(/[\r\n]+/g, ' ').trim().slice(0, 160);
67
+ const shortMsg = sanitizedTitle
68
+ || (bodyText.length < 200 ? bodyText.replace(/<[^>]*>/g, '').trim().slice(0, 160) : `Upstream returned non-SSE response (${upstreamContentType})`);
69
+ const status = providerResponse.status || 502;
70
+ console.warn(`[STREAM] ${provider} | ${model} | blocked pipe: ${shortMsg} [${status}]`);
71
+ streamController?.handleError?.(new Error(`upstream non-SSE: ${status}`));
72
+ return {
73
+ success: false,
74
+ response: new Response(JSON.stringify({ error: { message: `[${status}]: ${shortMsg}` } }), {
75
+ status,
76
+ headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' },
77
+ }),
78
+ };
79
+ }
44
80
 
45
81
  const transformStream = buildTransformStream({ provider, sourceFormat, targetFormat, userAgent, reqLogger, toolNameMap, model, connectionId, body, onStreamComplete, apiKey });
46
- const transformedBody = pipeWithDisconnect(providerResponse, transformStream, streamController, streamWatchdogEnabled);
82
+
83
+ // Responses passthrough: synthesize response.failed + [DONE] if the stream aborts/stalls before a terminal event
84
+ const isResponsesPassthrough = sourceFormat === FORMATS.OPENAI_RESPONSES && targetFormat === FORMATS.OPENAI_RESPONSES;
85
+ const onAbortTerminal = isResponsesPassthrough ? buildAbortedResponsesTerminalBytes : null;
86
+ const stallTimeoutMs = PROVIDERS[provider]?.stallTimeoutMs || STREAM_STALL_TIMEOUT_MS;
87
+ const transformedBody = pipeWithDisconnect(providerResponse, transformStream, streamController, streamWatchdogEnabled, onAbortTerminal, stallTimeoutMs);
47
88
 
48
89
  saveRequestDetail(buildRequestDetail({
49
90
  provider, model, connectionId, apiKey,
@@ -1,11 +1,13 @@
1
- import { detectFormat, getTargetFormat } from "../services/provider.js";
1
+ import { detectFormat, getTargetFormat, resolveTransport } from "../services/provider.js";
2
2
  import { translateRequest } from "../translator/index.js";
3
3
  import { FORMATS } from "../translator/formats.js";
4
+ import { normalizeClaudePassthrough } from "../translator/formats/claude.js";
4
5
  import { COLORS } from "../utils/stream.js";
5
6
  import { createStreamController } from "../utils/streamHandler.js";
6
7
  import { refreshWithRetry } from "../services/tokenRefresh.js";
7
8
  import { createRequestLogger } from "../utils/requestLogger.js";
8
- import { getModelTargetFormat, getModelStrip, PROVIDER_ID_TO_ALIAS } from "../config/providerModels.js";
9
+ import { getModelTargetFormat, getModelStrip, getModelUpstreamId, getModelType, PROVIDER_ID_TO_ALIAS } from "../config/providerModels.js";
10
+ import { PROVIDERS } from "../config/providers.js";
9
11
  import { createErrorResult, parseUpstreamError, formatProviderError } from "../utils/error.js";
10
12
  import { HTTP_STATUS } from "../config/runtimeConfig.js";
11
13
  import { handleBypassRequest } from "../utils/bypassHandler.js";
@@ -18,7 +20,12 @@ import { handleStreamingResponse, buildOnStreamComplete } from "./chatCore/strea
18
20
  import { detectClientTool, isNativePassthrough } from "../utils/clientDetector.js";
19
21
  import { dedupeTools } from "../utils/toolDeduper.js";
20
22
  import { injectCaveman } from "../rtk/caveman.js";
23
+ import { injectPonytail } from "../rtk/ponytail.js";
21
24
  import { compressMessages, formatRtkLog } from "../rtk/index.js";
25
+ import { compressWithHeadroom, formatHeadroomLog, formatHeadroomSizeLog, isHeadroomPhantomSavings } from "../rtk/headroom.js";
26
+ import { getCapabilitiesForModel } from "../providers/capabilities.js";
27
+ import { stripUnsupportedModalities } from "../translator/concerns/modality.js";
28
+ import { prefetchRemoteImages } from "../translator/concerns/prefetch.js";
22
29
 
23
30
  /**
24
31
  * Core chat handler - shared between SSE and Worker
@@ -27,7 +34,7 @@ import { compressMessages, formatRtkLog } from "../rtk/index.js";
27
34
  * @param {object} options.credentials - Provider credentials
28
35
  * @param {string} options.sourceFormatOverride - Override detected source format (e.g. "openai-responses")
29
36
  */
30
- export async function handleChatCore({ body, modelInfo, credentials, log, onCredentialsRefreshed, onRequestSuccess, onDisconnect, clientRawRequest, connectionId, userAgent, apiKey, ccFilterNaming, rtkEnabled, cavemanEnabled, cavemanLevel, sourceFormatOverride, providerThinking, streamWatchdogEnabled = true }) {
37
+ export async function handleChatCore({ body, modelInfo, credentials, log, onCredentialsRefreshed, onRequestSuccess, onDisconnect, clientRawRequest, connectionId, userAgent, apiKey, ccFilterNaming, rtkEnabled, headroomEnabled, headroomUrl, headroomCompressUserMessages, cavemanEnabled, cavemanLevel, ponytailEnabled, ponytailLevel, sourceFormatOverride, providerThinking, streamWatchdogEnabled = true }) {
31
38
  const { provider, model } = modelInfo;
32
39
  const requestStartTime = Date.now();
33
40
 
@@ -39,8 +46,12 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
39
46
 
40
47
  const alias = PROVIDER_ID_TO_ALIAS[provider] || provider;
41
48
  const modelTargetFormat = getModelTargetFormat(alias, model);
42
- const targetFormat = modelTargetFormat || getTargetFormat(provider);
49
+ // Multi-endpoint providers: pick transport matching sourceFormat → zero translation
50
+ const runtimeTransport = resolveTransport(provider, sourceFormat);
51
+ const targetFormat = modelTargetFormat || runtimeTransport?.format || getTargetFormat(provider);
52
+ if (runtimeTransport && credentials) credentials.runtimeTransport = runtimeTransport;
43
53
  const stripList = getModelStrip(alias, model);
54
+ const upstreamModel = getModelUpstreamId(alias, model);
44
55
 
45
56
  // Inject provider-level thinking config override (only if client hasn't set)
46
57
  // on/off → extended type (body.thinking), none/low/medium/high → effort type (body.reasoning_effort)
@@ -57,9 +68,16 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
57
68
  }
58
69
 
59
70
  const clientRequestedStreaming = body.stream === true || sourceFormat === FORMATS.ANTIGRAVITY || sourceFormat === FORMATS.GEMINI || sourceFormat === FORMATS.GEMINI_CLI;
60
- const providerRequiresStreaming = provider === "openai" || provider === "codex" || provider === "commandcode";
71
+ const providerRequiresStreaming = PROVIDERS[provider]?.forceStream === true;
61
72
  let stream = providerRequiresStreaming ? true : (body.stream !== false);
62
73
 
74
+ // Image generation models require non-streaming (Google v1internal:generateContent)
75
+ const modelType = getModelType(alias, model);
76
+ const isImageGenModel = modelType === "imageGen" || /image|imagen|image-generation/i.test(model);
77
+ if (isImageGenModel && (provider === "antigravity" || provider === "gemini-cli")) {
78
+ stream = false;
79
+ }
80
+
63
81
  // DeepSeek-TUI: interactive TUI panel sends stream:true and needs SSE.
64
82
  // Non-interactive mode (-p flag) sends without stream and can't parse SSE.
65
83
  // Only force non-streaming when client didn't explicitly request it.
@@ -71,7 +89,7 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
71
89
  const acceptHeader = clientRawRequest?.headers?.accept || "";
72
90
  const clientPrefersJson = acceptHeader.includes("application/json");
73
91
  const clientPrefersSSE = acceptHeader.includes("text/event-stream");
74
- if (clientPrefersJson && !clientPrefersSSE && body.stream !== true) {
92
+ if (clientPrefersJson && !clientPrefersSSE && body.stream !== true && !providerRequiresStreaming) {
75
93
  stream = false;
76
94
  }
77
95
 
@@ -85,20 +103,38 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
85
103
  const clientTool = detectClientTool(clientRawRequest?.headers || {}, body);
86
104
  const passthrough = isNativePassthrough(clientTool, provider);
87
105
 
106
+ // Expose raw client headers to translators/executors for session-id resolution
107
+ if (credentials) credentials.rawHeaders = clientRawRequest?.headers || {};
108
+
109
+ // Auto-strip media blocks the model can't read (vision/audio/pdf) before translation.
110
+ if (!passthrough) {
111
+ const caps = getCapabilitiesForModel(provider, model);
112
+ if (stripUnsupportedModalities(body, sourceFormat, caps)) {
113
+ log?.debug?.("MODALITY", `stripped unsupported media for ${provider}/${model}`);
114
+ }
115
+ // Convert remote image URLs to base64 for targets that can't fetch URLs.
116
+ try {
117
+ const n = await prefetchRemoteImages(body, sourceFormat, targetFormat, { signal: undefined });
118
+ if (n > 0) log?.debug?.("MODALITY", `prefetched ${n} remote image(s) for ${targetFormat}`);
119
+ } catch (e) { log?.warn?.("MODALITY", `image prefetch failed: ${e.message}`); }
120
+ }
121
+
88
122
  let translatedBody;
89
123
  let toolNameMap;
90
124
  if (passthrough) {
91
125
  log?.debug?.("PASSTHROUGH", `${clientTool} → ${provider} | native lossless`);
92
- translatedBody = { ...body, model };
126
+ translatedBody = { ...body, model: upstreamModel };
127
+ // Normalize newer Cowork/CC beta shapes (adaptive thinking, mid-conversation system) the API rejects
128
+ if (clientTool === "claude") normalizeClaudePassthrough(translatedBody, upstreamModel);
93
129
  } else {
94
- translatedBody = translateRequest(sourceFormat, targetFormat, model, body, stream, credentials, provider, reqLogger, stripList, connectionId, clientTool);
130
+ translatedBody = translateRequest(sourceFormat, targetFormat, upstreamModel, body, stream, credentials, provider, reqLogger, stripList, connectionId, clientTool);
95
131
  if (!translatedBody) {
96
132
  trackPendingRequest(model, provider, connectionId, false, true);
97
133
  return createErrorResult(HTTP_STATUS.BAD_REQUEST, `Failed to translate request for ${sourceFormat} → ${targetFormat}`);
98
134
  }
99
135
  toolNameMap = translatedBody._toolNameMap;
100
136
  delete translatedBody._toolNameMap;
101
- translatedBody.model = model;
137
+ translatedBody.model = upstreamModel;
102
138
  }
103
139
 
104
140
  // Dedupe duplicate built-in tools when equivalent MCP tools are present (Claude clients only).
@@ -114,17 +150,41 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
114
150
  // Covers both passthrough (source shape) and translated (target shape) flows
115
151
  const finalFormat = passthrough ? sourceFormat : targetFormat;
116
152
 
153
+ // TTS models don't support tool messages/function calling
154
+ if (getModelType(alias, model) === "tts" && translatedBody.messages) {
155
+ translatedBody.messages = translatedBody.messages.filter(msg => msg.role !== "tool");
156
+ delete translatedBody.tools;
157
+ }
158
+
117
159
  // RTK: compress tool_result content
118
160
  const rtkStats = compressMessages(translatedBody, rtkEnabled);
119
161
  const rtkLine = formatRtkLog(rtkStats);
120
162
  if (rtkLine) console.log(rtkLine);
121
163
 
164
+ // Headroom: optional external proxy compression; fail open if proxy is absent.
165
+ const headroomDiagnostics = {};
166
+ const headroomStats = await compressWithHeadroom(translatedBody, { enabled: headroomEnabled, url: headroomUrl, model: upstreamModel, format: finalFormat, compressUserMessages: headroomCompressUserMessages, diagnostics: headroomDiagnostics });
167
+ const headroomLine = formatHeadroomLog(headroomStats);
168
+ const headroomSizeLine = formatHeadroomSizeLog(headroomDiagnostics);
169
+ if (headroomLine) {
170
+ log?.info?.("HEADROOM", `${headroomLine}${headroomSizeLine ? ` | ${headroomSizeLine}` : ""}`);
171
+ if (isHeadroomPhantomSavings(headroomStats, headroomDiagnostics)) {
172
+ log?.warn?.("HEADROOM", `reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${headroomSizeLine}`);
173
+ }
174
+ } else if (headroomEnabled) log?.warn?.("HEADROOM", `skipped: ${headroomDiagnostics.reason || "compression unavailable"}${headroomDiagnostics.endpoint ? ` (${headroomDiagnostics.endpoint})` : ""}`);
175
+
122
176
  // Caveman: inject terse-style system prompt
123
177
  if (cavemanEnabled && cavemanLevel) {
124
178
  injectCaveman(translatedBody, finalFormat, cavemanLevel);
125
179
  log?.debug?.("CAVEMAN", `${cavemanLevel} | ${finalFormat}`);
126
180
  }
127
181
 
182
+ // Ponytail: inject lazy-senior-dev system prompt
183
+ if (ponytailEnabled && ponytailLevel) {
184
+ injectPonytail(translatedBody, finalFormat, ponytailLevel);
185
+ log?.debug?.("PONYTAIL", `${ponytailLevel} | ${finalFormat}`);
186
+ }
187
+
128
188
  const executor = getExecutor(provider);
129
189
  trackPendingRequest(model, provider, connectionId, true);
130
190
  appendRequestLog({ model, provider, connectionId, status: "PENDING" }).catch(() => { });
@@ -6,6 +6,7 @@ import openaiCompatNode from "./openaiCompatNode.js";
6
6
  const OPENAI_COMPAT_PROVIDERS = [
7
7
  "openai", "openrouter", "mistral", "voyage-ai", "fireworks",
8
8
  "together", "nebius", "github", "nvidia", "jina-ai",
9
+ "vercel-ai-gateway",
9
10
  ];
10
11
 
11
12
  const ADAPTERS = {